🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@microsoft/teams.apps

Package Overview
Dependencies
Maintainers
5
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@microsoft/teams.apps - npm Package Compare versions

Comparing version
2.0.12
to
2.0.13
+1
-22
dist/app.d.ts

@@ -5,3 +5,3 @@ import { ActivityLike, ApiClientSettings, ChannelID, CloudEnvironment, InvokeResponse, StripMentionsTextOptions, TokenCredentials } from '@microsoft/teams.api';

import { ApiClient, GraphClient } from './api';
import { configTab, func, tab } from './app.embed';
import { func, tab } from './app.embed';
import { event, onActivityResponse, onActivitySent, onError } from './app.events';

@@ -16,3 +16,2 @@ import { onSignInFailure, onTokenExchange, onVerifyState } from './app.oauth';

import { HttpServer } from './http/http-server';
import * as manifest from './manifest';
import * as middleware from './middleware';

@@ -92,6 +91,2 @@ import { OAuthSettings } from './oauth';

/**
* The apps manifest
*/
readonly manifest?: Partial<manifest.Manifest>;
/**
* Activity Options

@@ -166,15 +161,5 @@ */

get id(): string | undefined;
/**
* the apps name
* @deprecated Name will be removed in the near future. Please remove dependencies from it.
*/
get name(): string | undefined;
get oauth(): {
defaultConnectionName: string;
};
/**
* the apps manifest
*/
get manifest(): Partial<manifest.Manifest>;
protected readonly _manifest: Partial<manifest.Manifest>;
protected container: Container;

@@ -285,8 +270,2 @@ protected plugins: Array<TPlugin>;

/**
* add a configurable tab
* @remark scopes defaults to `team`
* @param url The url to use when configuring the tab.
*/
configTab: typeof configTab;
/**
* activity handler called when an inbound activity is received

@@ -293,0 +272,0 @@ * @param sender the plugin to use for sending activities

import { App } from './app';
import { IFunctionContext } from './contexts';
import * as manifest from './manifest';
import { IPlugin } from './types';

@@ -19,8 +18,2 @@ /**

*/
export declare function tab<TPlugin extends IPlugin>(this: App<TPlugin>, name: string, path: string, options?: Partial<Omit<manifest.StaticTab, 'contentUrl' | 'entityId'>>): App<TPlugin>;
/**
* add a configurable tab
* @remark scopes defaults to `team`
* @param url The url to use when configuring the tab.
*/
export declare function configTab<TPlugin extends IPlugin>(this: App<TPlugin>, url: string, options?: Partial<Omit<manifest.ConfigurableTab, 'configurationUrl'>>): App<TPlugin>;
export declare function tab<TPlugin extends IPlugin>(this: App<TPlugin>, name: string, path: string): App<TPlugin>;

@@ -5,3 +5,2 @@ "use strict";

exports.tab = tab;
exports.configTab = configTab;
const remote_function_validator_1 = require("./middleware/auth/remote-function-validator");

@@ -59,38 +58,6 @@ const utils_1 = require("./utils");

*/
function tab(name, path, options) {
if (!this._manifest.staticTabs) {
this._manifest.staticTabs = [];
}
const i = this._manifest.staticTabs.findIndex((t) => t.entityId === name);
const tab = {
entityId: name,
contentUrl: `https://\${{BOT_DOMAIN}}/tabs/${name}`,
scopes: ['personal'],
...options,
};
if (i > -1) {
this._manifest.staticTabs[i] = tab;
}
else {
this._manifest.staticTabs.push(tab);
}
function tab(name, path) {
this.server.serveStatic(`/tabs/${name}`, path);
return this;
}
/**
* add a configurable tab
* @remark scopes defaults to `team`
* @param url The url to use when configuring the tab.
*/
function configTab(url, options) {
if (!this._manifest.configurableTabs) {
this._manifest.configurableTabs = [];
}
this._manifest.configurableTabs.push({
configurationUrl: url,
scopes: ['team'],
...options,
});
return this;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVtYmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC5lbWJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLG9CQXFEQztBQVVELGtCQTJCQztBQU9ELDhCQWdCQztBQTFIRCwyRkFBc0Y7QUFFdEYsbUNBQTBDO0FBRTFDOzs7O0dBSUc7QUFDSCxTQUFnQixJQUFJLENBRWxCLElBQVksRUFDWixFQUE0RDtJQUU1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFFckQsNENBQTRDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLG1CQUFtQjtRQUNuQyxDQUFDLENBQUMsSUFBSSxtREFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUM7UUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVULElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7UUFDdEYseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLEdBQUcsQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztZQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUVELE1BQU0sd0JBQXdCLEdBQzVCLHVCQUFlLENBQUMseUJBQXlCLENBQ3ZDLElBQUksRUFDSixHQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEVBQ3JDLE9BQU8sQ0FDUixDQUFDO1FBRUosTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLFFBQXNCLEVBQUUsRUFBRTtZQUM1QyxNQUFNLGNBQWMsR0FBRyxNQUFNLHdCQUF3QixFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLGNBQWM7Z0JBQ3BCLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLEdBQUcsT0FBTztZQUNWLEdBQUc7WUFDSCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDcEIsSUFBSSxFQUFFLElBQWE7WUFDbkIsd0JBQXdCO1lBQ3hCLElBQUk7U0FDTCxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsR0FBRyxDQUVqQixJQUFZLEVBQ1osSUFBWSxFQUNaLE9BQXNFO0lBRXRFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzFFLE1BQU0sR0FBRyxHQUF1QjtRQUM5QixRQUFRLEVBQUUsSUFBSTtRQUNkLFVBQVUsRUFBRSxpQ0FBaUMsSUFBSSxFQUFFO1FBQ25ELE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUNwQixHQUFHLE9BQU87S0FDWCxDQUFDO0lBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNyQyxDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUvQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsU0FBUyxDQUV2QixHQUFXLEVBQ1gsT0FBcUU7SUFFckUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDbkMsZ0JBQWdCLEVBQUUsR0FBRztRQUNyQixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEIsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVtYmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC5lbWJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQXFEQztBQVVELGtCQVFDO0FBaEZELDJGQUFzRjtBQUV0RixtQ0FBMEM7QUFFMUM7Ozs7R0FJRztBQUNILFNBQWdCLElBQUksQ0FFbEIsSUFBWSxFQUNaLEVBQTREO0lBRTVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUVyRCw0Q0FBNEM7SUFDNUMsTUFBTSxTQUFTLEdBQUcsbUJBQW1CO1FBQ25DLENBQUMsQ0FBQyxJQUFJLG1EQUF1QixDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQztRQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRVQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGtCQUFrQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUN0Rix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsR0FBRyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1lBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsTUFBTSx3QkFBd0IsR0FDNUIsdUJBQWUsQ0FBQyx5QkFBeUIsQ0FDdkMsSUFBSSxFQUNKLEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsRUFDckMsT0FBTyxDQUNSLENBQUM7UUFFSixNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsUUFBc0IsRUFBRSxFQUFFO1lBQzVDLE1BQU0sY0FBYyxHQUFHLE1BQU0sd0JBQXdCLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsY0FBYztnQkFDcEIsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDcEIsR0FBRyxPQUFPO1lBQ1YsR0FBRztZQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNwQixJQUFJLEVBQUUsSUFBYTtZQUNuQix3QkFBd0I7WUFDeEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixHQUFHLENBRWpCLElBQVksRUFDWixJQUFZO0lBRVosSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUvQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==

@@ -94,9 +94,2 @@ "use strict";

}
/**
* the apps name
* @deprecated Name will be removed in the near future. Please remove dependencies from it.
*/
get name() {
return this._manifest.name?.full;
}
get oauth() {

@@ -108,27 +101,2 @@ return {

}
/**
* the apps manifest
*/
get manifest() {
return {
id: this.id,
name: {
short: this._manifest.name?.short || '??',
full: this._manifest.name?.full || '??',
},
bots: [
{
botId: this.id || '??',
scopes: ['personal'],
},
],
webApplicationInfo: {
id: this.credentials?.clientId || '??',
resource: `api://\${{BOT_DOMAIN}}/${this.credentials?.clientId || '??'}`,
...this._manifest.webApplicationInfo,
},
...this._manifest,
};
}
_manifest;
container = new container_1.Container();

@@ -147,3 +115,2 @@ plugins = [];

this.storage = this.options.storage || new teams_common_1.LocalStorage();
this._manifest = this.options.manifest || {};
// Resolve cloud environment from options or CLOUD env var

@@ -247,12 +214,4 @@ const cloudEnvName = typeof process !== 'undefined' ? process.env.CLOUD : undefined;

// add injectable items to container
this.container.register('id', { useValue: this.id });
this.container.register('name', { useValue: this.name });
this.container.register('manifest', { useValue: this.manifest });
this.container.register('credentials', { useValue: this.credentials });
this.container.register('botToken', { useValue: () => this.getBotToken() });
this.container.register('ILogger', { useValue: this.log });
this.container.register('IStorage', { useValue: this.storage });
this.container.register(this.client.constructor.name, {
useFactory: () => this.client,
});
// Register HTTP server for plugins that need HTTP capabilities

@@ -377,3 +336,2 @@ this.container.register('IHttpServer', { useValue: server });

id: this.id,
name: this.name || this.id,
role: 'bot',

@@ -442,8 +400,2 @@ },

/**
* add a configurable tab
* @remark scopes defaults to `team`
* @param url The url to use when configuring the tab.
*/
configTab = app_embed_1.configTab; // eslint-disable-line @typescript-eslint/member-ordering
/**
* activity handler called when an inbound activity is received

@@ -494,2 +446,2 @@ * @param sender the plugin to use for sending activities

exports.App = App;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBbUM7QUFFbkMsb0RBWThCO0FBQzlCLDBEQVFpQztBQUVqQyxtRUFBa0M7QUFFbEMsdURBQW1EO0FBQ25ELCtCQUErQztBQUUvQywyQ0FBbUQ7QUFDbkQsNkNBS3NCO0FBQ3RCLDJDQUlxQjtBQUNyQiwrQ0FBdUU7QUFDdkUsK0NBQXlDO0FBQ3pDLCtDQUFpRDtBQUNqRCwyQ0FBd0M7QUFFeEMsaUNBQTREO0FBQzVELG9EQUFnRDtBQUVoRCx5REFBMkM7QUFDM0MsbUNBQWdFO0FBRWhFLHFDQUFrQztBQUNsQyxtREFBK0M7QUFHL0MsMkNBQTBEO0FBb0kxRDs7R0FFRztBQUNILE1BQWEsR0FBRztJQXVGTztJQXRGWixHQUFHLENBQVk7SUFDZixLQUFLLENBQW1CO0lBQ3hCLEtBQUssQ0FBYztJQUNuQixHQUFHLENBQVU7SUFDYixNQUFNLENBQWE7SUFDbkIsSUFBSSxDQUFjO0lBQ2xCLE1BQU0sQ0FBYTtJQUNuQixPQUFPLENBQVc7SUFDbEIsbUJBQW1CLENBQTJCO0lBQzlDLFlBQVksQ0FBZTtJQUVwQzs7Ozs7T0FLRztJQUNNLFlBQVksQ0FBVTtJQUUvQjs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU87WUFDTCxHQUFHLDhC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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBbUM7QUFFbkMsb0RBWThCO0FBQzlCLDBEQVFpQztBQUVqQyxtRUFBa0M7QUFFbEMsdURBQW1EO0FBQ25ELCtCQUErQztBQUUvQywyQ0FBd0M7QUFDeEMsNkNBS3NCO0FBQ3RCLDJDQUlxQjtBQUNyQiwrQ0FBdUU7QUFDdkUsK0NBQXlDO0FBQ3pDLCtDQUFpRDtBQUNqRCwyQ0FBd0M7QUFFeEMsaUNBQTREO0FBQzVELG9EQUFnRDtBQUNoRCx5REFBMkM7QUFDM0MsbUNBQWdFO0FBRWhFLHFDQUFrQztBQUNsQyxtREFBK0M7QUFHL0MsMkNBQTBEO0FBK0gxRDs7R0FFRztBQUNILE1BQWEsR0FBRztJQW9ETztJQW5EWixHQUFHLENBQVk7SUFDZixLQUFLLENBQW1CO0lBQ3hCLEtBQUssQ0FBYztJQUNuQixHQUFHLENBQVU7SUFDYixNQUFNLENBQWE7SUFDbkIsSUFBSSxDQUFjO0lBQ2xCLE1BQU0sQ0FBYTtJQUNuQixPQUFPLENBQVc7SUFDbEIsbUJBQW1CLENBQTJCO0lBQzlDLFlBQVksQ0FBZTtJQUVwQzs7Ozs7T0FLRztJQUNNLFlBQVksQ0FBVTtJQUUvQjs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTztZQUNMLEdBQUcsOEJBQXNCO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRVMsU0FBUyxHQUFHLElBQUkscUJBQVMs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
+11
-5

@@ -62,2 +62,5 @@ "use strict";

this.cloud = deps.cloud;
if (!this.credentials && !this.skipAuth) {
this.logger.warn('No credentials configured and skipAuth is not enabled. All incoming requests will be rejected. Configure client authentication to securely receive messages, or set skipAuth: true for local development.');
}
// Initialize service token validator if credentials provided and auth not skipped

@@ -68,5 +71,5 @@ if (this.credentials && !this.skipAuth) {

}
else if (!this.credentials) {
this.logger.warn('No credentials configured (CLIENT_ID / CLIENT_SECRET / TENANT_ID). ' +
`Bot will accept unauthenticated requests on ${this._messagingEndpoint}.`);
else if (!this.credentials && this.skipAuth) {
this.logger.warn('No credentials configured (CLIENT_ID / CLIENT_SECRET / TENANT_ID), ' +
`but skipAuth is enabled. Bot will accept unauthenticated requests on ${this._messagingEndpoint}.`);
}

@@ -144,3 +147,3 @@ // Register Teams bot endpoint (POST only)

async authorize(headers, body) {
if (this.skipAuth || !this.credentials) {
if (this.skipAuth) {
const serviceUrl = body.serviceUrl || '';

@@ -158,2 +161,5 @@ return {

}
if (!this.credentials) {
return { success: false, error: 'Authentication not configured' };
}
const raw = headers['authorization'];

@@ -179,2 +185,2 @@ const authHeader = Array.isArray(raw) ? raw[0] : raw;

exports.HttpServer = HttpServer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9odHRwLXNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSwwREFBaUU7QUFHakUsd0ZBQW1GO0FBUW5GOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLENBQVU7SUFDOUIsNENBQTRDO0lBQzVDLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBb0JEOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBQ3JCOzs7T0FHRztJQUNILFNBQVMsQ0FBc0Q7SUFFckQsTUFBTSxDQUFVO0lBQ2hCLFdBQVcsQ0FBZTtJQUMxQixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFvQjtJQUN6QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHFCQUFxQixDQUF5QjtJQUVoRCxRQUFRLENBQXFCO0lBQzdCLGtCQUFrQixDQUFTO0lBRW5DOzs7T0FHRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxPQUEyQixFQUFFLE9BQTBCO1FBQ2pFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksNEJBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxD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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9odHRwLXNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSwwREFBaUU7QUFHakUsd0ZBQW1GO0FBUW5GOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLENBQVU7SUFDOUIsNENBQTRDO0lBQzVDLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBb0JEOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBQ3JCOzs7T0FHRztJQUNILFNBQVMsQ0FBc0Q7SUFFckQsTUFBTSxDQUFVO0lBQ2hCLFdBQVcsQ0FBZTtJQUMxQixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFvQjtJQUN6QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHFCQUFxQixDQUF5QjtJQUVoRCxRQUFRLENBQXFCO0lBQzdCLGtCQUFrQixDQUFTO0lBRW5DOzs7T0FHRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxPQUEyQixFQUFFLE9BQTBCO1FBQ2pFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksNEJBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxD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

@@ -7,4 +7,3 @@ export * from './app';

export * from './events';
export * as manifest from './manifest';
export * from './http';
export { toThreadedConversationId } from './utils/thread';

@@ -13,29 +13,7 @@ "use strict";

}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.toThreadedConversationId = exports.manifest = void 0;
exports.toThreadedConversationId = void 0;
__exportStar(require("./app"), exports);

@@ -47,3 +25,2 @@ __exportStar(require("./plugins"), exports);

__exportStar(require("./events"), exports);
exports.manifest = __importStar(require("./manifest"));
// HTTP infrastructure - public API

@@ -54,2 +31,2 @@ __exportStar(require("./http"), exports);

Object.defineProperty(exports, "toThreadedConversationId", { enumerable: true, get: function () { return thread_1.toThreadedConversationId; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCO0FBQ3RCLDRDQUEwQjtBQUMxQiwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsdURBQXVDO0FBRXZDLG1DQUFtQztBQUNuQyx5Q0FBdUI7QUFFdkIsc0JBQXNCO0FBQ3RCLHlDQUEwRDtBQUFqRCxrSEFBQSx3QkFBd0IsT0FBQSJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBc0I7QUFDdEIsNENBQTBCO0FBQzFCLDBDQUF3QjtBQUN4Qiw2Q0FBMkI7QUFDM0IsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUV6QixtQ0FBbUM7QUFDbkMseUNBQXVCO0FBRXZCLHNCQUFzQjtBQUN0Qix5Q0FBMEQ7QUFBakQsa0hBQUEsd0JBQXdCLE9BQUEifQ==

@@ -20,4 +20,3 @@ "use strict";

if (!validator) {
logger.debug('No service token validator configured, skipping validation');
next();
res.status(401).send('Authentication not configured');
return;

@@ -44,2 +43,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZhbGlkYXRpb24tbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2p3dC12YWxpZGF0aW9uLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsOENBaURDO0FBL0RELDBEQUFpRTtBQUVqRSw0RUFBdUU7QUFZdkUsU0FBZ0IsaUJBQWlCLENBQUMsTUFBMkI7SUFDM0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSSw0QkFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFakgsNkRBQTZEO0lBQzdELElBQUksU0FBdUMsQ0FBQztJQUM1QyxJQUFJLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQixTQUFTLEdBQUcsSUFBSSwrQ0FBcUIsQ0FDbkMsV0FBVyxDQUFDLFFBQVEsRUFDcEIsV0FBVyxDQUFDLFFBQVEsRUFDcEIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQzNFLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sS0FBSyxFQUNWLEdBQXdCLEVBQ3hCLEdBQXFCLEVBQ3JCLElBQTBCLEVBQzFCLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7WUFDM0UsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFcEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxRCxNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRSwwRUFBMEU7WUFDMUUsR0FBRyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZhbGlkYXRpb24tbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2p3dC12YWxpZGF0aW9uLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsOENBZ0RDO0FBOURELDBEQUFpRTtBQUVqRSw0RUFBdUU7QUFZdkUsU0FBZ0IsaUJBQWlCLENBQUMsTUFBMkI7SUFDM0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSSw0QkFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFakgsNkRBQTZEO0lBQzdELElBQUksU0FBdUMsQ0FBQztJQUM1QyxJQUFJLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQixTQUFTLEdBQUcsSUFBSSwrQ0FBcUIsQ0FDbkMsV0FBVyxDQUFDLFFBQVEsRUFDcEIsV0FBVyxDQUFDLFFBQVEsRUFDcEIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQzNFLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sS0FBSyxFQUNWLEdBQXdCLEVBQ3hCLEdBQXFCLEVBQ3JCLElBQTBCLEVBQzFCLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ3RELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQWEsR0FBRyxDQUFDLElBQUksQ0FBQztRQUVwQyxJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLDBFQUEwRTtZQUMxRSxHQUFHLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9

@@ -17,2 +17,3 @@ import { CloudEnvironment, Credentials, IToken, TokenCredentials } from '@microsoft/teams.api';

private confidentialClientsByTenantId;
private federatedIdentityClientsByTenantId;
private managedIdentityClient;

@@ -30,2 +31,3 @@ constructor(options: TokenManagerOptions, logger: ILogger);

private getConfidentialClient;
private getFederatedIdentityClient;
private getManagedIdentityClient;

@@ -32,0 +34,0 @@ private handleTokenResponse;

@@ -38,2 +38,3 @@ "use strict";

confidentialClientsByTenantId = {};
federatedIdentityClientsByTenantId = {};
managedIdentityClient = null;

@@ -135,14 +136,3 @@ constructor(options, logger) {

async getTokenWithFederatedCredentials(credentials, scope, tenantId) {
const managedIdentityClient = this.getManagedIdentityClient(credentials);
const managedIdentityTokenRes = await managedIdentityClient.acquireToken({ resource: 'api://AzureADTokenExchange' });
const confidentialClient = new msal_node_1.ConfidentialClientApplication({
auth: {
clientId: credentials.clientId,
clientAssertion: managedIdentityTokenRes.accessToken,
authority: `${this.cloud.loginEndpoint}/${tenantId}`
},
system: {
loggerOptions: this.buildLoggerOptions()
}
});
const confidentialClient = this.getFederatedIdentityClient(credentials, tenantId);
const result = await confidentialClient.acquireTokenByClientCredential({ scopes: [scope] });

@@ -172,2 +162,26 @@ return this.handleTokenResponse(result);

}
getFederatedIdentityClient(credentials, tenantId) {
const cachedClient = this.federatedIdentityClientsByTenantId[tenantId];
if (cachedClient) {
return cachedClient;
}
const client = new msal_node_1.ConfidentialClientApplication({
auth: {
clientId: credentials.clientId,
clientAssertion: async () => {
const managedIdentityTokenRes = await this.getManagedIdentityClient(credentials).acquireToken({ resource: 'api://AzureADTokenExchange' });
if (!managedIdentityTokenRes) {
throw new Error('Failed to acquire managed identity exchange token for federated identity credential');
}
return managedIdentityTokenRes.accessToken;
},
authority: `${this.cloud.loginEndpoint}/${tenantId}`
},
system: {
loggerOptions: this.buildLoggerOptions()
}
});
this.federatedIdentityClientsByTenantId[tenantId] = client;
return client;
}
getManagedIdentityClient(credentials) {

@@ -231,2 +245,2 @@ if (this.managedIdentityClient) {

exports.TokenManager = TokenManager;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGdEQUFnSztBQUVoSyxvREFBc007QUFDdE0sMERBQTJFO0FBRTNFLE1BQU0sOEJBQThCLEdBQUcsUUFBUSxDQUFDO0FBRWhELE1BQU0sMkJBQTJCLEdBQW1DO0lBQ2xFLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQzdCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO0lBQzlCLENBQUMsb0JBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQzNCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPO0lBQy9CLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0NBQzlCLENBQUM7QUFDRixNQUFNLDJCQUEyQixHQUFtQztJQUNsRSxPQUFPLEVBQUUsb0JBQVksQ0FBQyxLQUFLO0lBQzNCLE1BQU0sRUFBRSxvQkFBWSxDQUFDLE9BQU87SUFDNUIsTUFBTSxFQUFFLG9CQUFZLENBQUMsSUFBSTtJQUN6QixPQUFPLEVBQUUsb0JBQVksQ0FBQyxPQUFPO0lBQzdCLE9BQU8sRUFBRSxvQkFBWSxDQUFDLEtBQUs7Q0FDNUIsQ0FBQztBQUlGLHVCQUF1QjtBQUN2QixTQUFTLG1CQUFtQixDQUFDLFdBQXdCO0lBQ25ELE9BQU8sY0FBYyxJQUFJLFdBQVcsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxXQUF3QjtJQUNsRCxPQUFPLE9BQU8sSUFBSSxXQUFXLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsOEJBQThCLENBQUMsV0FBd0I7SUFDOUQsT0FBTyxxQkFBcUIsSUFBSSxXQUFXLENBQUM7QUFDOUMsQ0FBQztBQVlELE1BQWEsWUFBWTtJQUNkLFdBQVcsQ0FBZTtJQUMzQixNQUFNLENBQVU7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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGdEQUFnSztBQUVoSyxvREFBc007QUFDdE0sMERBQTJFO0FBRTNFLE1BQU0sOEJBQThCLEdBQUcsUUFBUSxDQUFDO0FBRWhELE1BQU0sMkJBQTJCLEdBQW1DO0lBQ2xFLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQzdCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO0lBQzlCLENBQUMsb0JBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQzNCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPO0lBQy9CLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0NBQzlCLENBQUM7QUFDRixNQUFNLDJCQUEyQixHQUFtQztJQUNsRSxPQUFPLEVBQUUsb0JBQVksQ0FBQyxLQUFLO0lBQzNCLE1BQU0sRUFBRSxvQkFBWSxDQUFDLE9BQU87SUFDNUIsTUFBTSxFQUFFLG9CQUFZLENBQUMsSUFBSTtJQUN6QixPQUFPLEVBQUUsb0JBQVksQ0FBQyxPQUFPO0lBQzdCLE9BQU8sRUFBRSxvQkFBWSxDQUFDLEtBQUs7Q0FDNUIsQ0FBQztBQUlGLHVCQUF1QjtBQUN2QixTQUFTLG1CQUFtQixDQUFDLFdBQXdCO0lBQ25ELE9BQU8sY0FBYyxJQUFJLFdBQVcsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxXQUF3QjtJQUNsRCxPQUFPLE9BQU8sSUFBSSxXQUFXLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsOEJBQThCLENBQUMsV0FBd0I7SUFDOUQsT0FBTyxxQkFBcUIsSUFBSSxXQUFXLENBQUM7QUFDOUMsQ0FBQztBQVlELE1BQWEsWUFBWTtJQUNkLFdBQVcsQ0FBZTtJQUMzQixNQUFNLENBQVU7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

@@ -33,2 +33,3 @@ import 'reflect-metadata';

* inject the `App` `IHttpServer` instance
* @deprecated Server injection is best-effort and may be unavailable for custom runtimes.
*/

@@ -41,69 +42,3 @@ export declare function HttpServer(): (target: any, propertyKey: string | ClassFieldDecoratorContext) => void;

*/
export type DependencyOptions = IdDependencyOptions | NameDependencyOptions | ManifestDependencyOptions | CredentialsDependencyOptions | BotTokenDependencyOptions | GraphTokenDependencyOptions | LoggerDependencyOptions | StorageDependencyOptions | HttpServerDependencyOptions | PluginDependencyOptions;
export type IdDependencyOptions = {
/**
* the name used to resolve the dependency
*/
readonly name: 'id';
/**
* if optional, the app will not throw
* if the dependency is not found
*/
readonly optional: true;
};
export type NameDependencyOptions = {
/**
* the name used to resolve the dependency
*/
readonly name: 'name';
/**
* if optional, the app will not throw
* if the dependency is not found
*/
readonly optional: true;
};
export type ManifestDependencyOptions = {
/**
* the name used to resolve the dependency
*/
readonly name: 'manifest';
/**
* if optional, the app will not throw
* if the dependency is not found
*/
readonly optional?: false;
};
export type CredentialsDependencyOptions = {
/**
* the name used to resolve the dependency
*/
readonly name: 'credentials';
/**
* if optional, the app will not throw
* if the dependency is not found
*/
readonly optional: true;
};
export type BotTokenDependencyOptions = {
/**
* the name used to resolve the dependency
*/
readonly name: 'botToken';
/**
* if optional, the app will not throw
* if the dependency is not found
*/
readonly optional: true;
};
export type GraphTokenDependencyOptions = {
/**
* the name used to resolve the dependency
*/
readonly name: 'graphToken';
/**
* if optional, the app will not throw
* if the dependency is not found
*/
readonly optional: true;
};
export type DependencyOptions = LoggerDependencyOptions | StorageDependencyOptions | HttpServerDependencyOptions | PluginDependencyOptions;
export type LoggerDependencyOptions = {

@@ -146,3 +81,3 @@ /**

*/
readonly name?: Omit<string, 'id' | 'name' | 'manifest' | 'credentials' | 'botToken' | 'graphToken' | 'ILogger' | 'IStorage' | 'IHttpServer'>;
readonly name?: Omit<string, 'ILogger' | 'IStorage' | 'IHttpServer'>;
/**

@@ -149,0 +84,0 @@ * if optional, the app will not throw

@@ -52,2 +52,3 @@ "use strict";

* inject the `App` `IHttpServer` instance
* @deprecated Server injection is best-effort and may be unavailable for custom runtimes.
*/

@@ -57,2 +58,2 @@ function HttpServer() {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlcy9wbHVnaW4vZGVjb3JhdG9ycy9kZXBlbmRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJCQSxnQ0E0QkM7QUFLRCx3QkFFQztBQUtELDBCQUVDO0FBS0QsZ0NBRUM7QUE1RUQsNEJBQTBCO0FBQzFCLHFDQUE4RDtBQUVqRCxRQUFBLGdDQUFnQyxHQUFHLDJCQUEyQixDQUFDO0FBb0I1RTs7O0dBR0c7QUFDSCxTQUFnQixVQUFVLENBQUMsVUFBNkIsRUFBRTtJQUN4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBRTNDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBZ0QsRUFBRSxFQUFFO1FBQ3ZFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDMUUsSUFBSSxZQUFZLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFFMUMsNENBQTRDO1lBQzVDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLElBQUksR0FBa0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEYsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztZQUVELE1BQU0sb0JBQW9CLEdBQ3hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsd0NBQWdDLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTdFLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDeEIsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLElBQUksRUFBRSxZQUFZO2dCQUNsQixRQUFRO2FBQ1QsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLGNBQWMsQ0FBQyx3Q0FBZ0MsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTTtJQUNwQixPQUFPLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE9BQU87SUFDckIsT0FBTyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixVQUFVO0lBQ3hCLE9BQU8sVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDN0MsQ0FBQyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlcy9wbHVnaW4vZGVjb3JhdG9ycy9kZXBlbmRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJCQSxnQ0E0QkM7QUFLRCx3QkFFQztBQUtELDBCQUVDO0FBTUQsZ0NBRUM7QUE3RUQsNEJBQTBCO0FBQzFCLHFDQUE4RDtBQUVqRCxRQUFBLGdDQUFnQyxHQUFHLDJCQUEyQixDQUFDO0FBb0I1RTs7O0dBR0c7QUFDSCxTQUFnQixVQUFVLENBQUMsVUFBNkIsRUFBRTtJQUN4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBRTNDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBZ0QsRUFBRSxFQUFFO1FBQ3ZFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDMUUsSUFBSSxZQUFZLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFFMUMsNENBQTRDO1lBQzVDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLElBQUksR0FBa0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEYsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztZQUVELE1BQU0sb0JBQW9CLEdBQ3hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsd0NBQWdDLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTdFLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDeEIsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLElBQUksRUFBRSxZQUFZO2dCQUNsQixRQUFRO2FBQ1QsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLGNBQWMsQ0FBQyx3Q0FBZ0MsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTTtJQUNwQixPQUFPLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE9BQU87SUFDckIsT0FBTyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsVUFBVTtJQUN4QixPQUFPLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUMifQ==
{
"name": "@microsoft/teams.apps",
"version": "2.0.12",
"version": "2.0.13",
"license": "MIT",

@@ -37,10 +37,9 @@ "main": "./dist/index.js",

"build": "npx tsc",
"test": "npx jest",
"generate": "npx quicktype -s schema -l typescript ./manifest.schema.json -o ./src/manifest.ts --prefer-unions --prefer-types --just-types"
"test": "npx jest"
},
"dependencies": {
"@azure/msal-node": "^3.8.1",
"@microsoft/teams.api": "2.0.12",
"@microsoft/teams.common": "2.0.12",
"@microsoft/teams.graph": "2.0.12",
"@azure/msal-node": "^5.2.2",
"@microsoft/teams.api": "2.0.13",
"@microsoft/teams.common": "2.0.13",
"@microsoft/teams.graph": "2.0.13",
"axios": "^1.15.2",

@@ -54,3 +53,3 @@ "cors": "^2.8.5",

"devDependencies": {
"@microsoft/teams.config": "2.0.12",
"@microsoft/teams.config": "2.0.13",
"@types/cors": "^2.8.17",

@@ -57,0 +56,0 @@ "@types/express": "^5.0.0",

@@ -1,2 +0,2 @@

# Teams: Apps
# @microsoft/teams.apps

@@ -16,3 +16,3 @@ <p>

</a>
<a href="https://microsoft.github.io/teams-sdk" target="_blank">
<a href="https://aka.ms/teams-sdk-ts" target="_blank">
<img src="https://img.shields.io/badge/📖 docs-open-blue" />

@@ -22,16 +22,66 @@ </a>

A package used to create apps/bots that can send/receive activities.
Build Microsoft Teams agents, tabs, message extensions, and proactive notification services in TypeScript.
<a href="https://microsoft.github.io/teams-sdk" target="_blank">
<img src="https://img.shields.io/badge/📖 Getting Started-blue?style=for-the-badge" />
</a>
`@microsoft/teams.apps` handles Teams activity routing, request auth, replies, proactive sends, Graph access, OAuth sign-in, plugins, and HTTP hosting so you can focus on your app behavior.
Read the full docs at [aka.ms/teams-sdk-ts](https://aka.ms/teams-sdk-ts).
## Install
```bash
$: npm install @microsoft/teams.apps
npm install @microsoft/teams.apps
```
## Dependencies
## Hello Teams agent
- [`express`](https://www.npmjs.com/package/express)
```ts
import { App } from '@microsoft/teams.apps';
const app = new App();
app.on('message', async ({ activity, reply }) => {
await reply(`You said: ${activity.text}`);
});
app.start().catch(console.error);
```
By default, the app receives Teams activities at `/api/messages`.
## Use your existing server
`@microsoft/teams.apps` can start its own HTTP server, or plug into an existing server/framework with an HTTP adapter.
```ts
import express from 'express';
import { App, ExpressAdapter } from '@microsoft/teams.apps';
async function main() {
const server = express();
server.get('/health', (_req, res) => {
res.json({ status: 'ok' });
});
const app = new App({
httpServerAdapter: new ExpressAdapter(server),
});
app.on('message', async ({ activity, reply }) => {
await reply(`You said: ${activity.text}`);
});
await app.initialize(); // registers /api/messages on your server
server.listen(process.env.PORT || 3978);
}
main().catch(console.error);
```
See the [HTTP adapter examples](https://github.com/microsoft/teams.ts/tree/main/examples/http-adapters) for framework integration samples.
## Examples
See the [examples folder](https://github.com/microsoft/teams.ts/tree/main/examples) for agents, tabs, message extensions, proactive messaging, Graph, AI/MCP, A2A, and more.
export type Manifest = {
$schema?: string;
/**
* A color to use in conjunction with the icon. The value must be a valid HTML color code
* starting with '#', for example `#4464ee`.
*/
accentColor: string;
activities?: Activities;
/**
* Specify and consolidates authorization related information for the App.
*/
authorization?: ManifestAuthorization;
/**
* The set of bots for this app. Currently only one bot per app is supported.
*/
bots?: Bot[];
/**
* The set of compose extensions for this app. Currently only one compose extension per app
* is supported.
*/
composeExtensions?: ComposeExtension[];
/**
* A list of tenant configured properties for an app
*/
configurableProperties?: ConfigurableProperty[];
/**
* These are tabs users can optionally add to their channels and 1:1 or group chats and
* require extra configuration before they are added. Configurable tabs are not supported in
* the personal scope. Currently only one configurable tab per app is supported.
*/
configurableTabs?: ConfigurableTab[];
/**
* The set of Office365 connectors for this app. Currently only one connector per app is
* supported.
*/
connectors?: Connector[];
copilotAgents?: CopilotAgents;
/**
* Defines the list of cards which could be pinned to dashboards that can provide summarized
* view of information relevant to user.
*/
dashboardCards?: DashboardCard[];
/**
* A value indicating whether an app is blocked by default until admin allows it
*/
defaultBlockUntilAdminAction?: boolean;
/**
* When a group install scope is selected, this will define the default capability when the
* user installs the app
*/
defaultGroupCapability?: DefaultGroupCapability;
/**
* The install scope defined for this app by default. This will be the option displayed on
* the button when a user tries to add the app
*/
defaultInstallScope?: DefaultInstallScope;
description: Description;
developer: Developer;
/**
* Specify the native features on a user's device that your app may request access to.
*/
devicePermissions?: DevicePermission[];
extensions?: ElementExtension[];
/**
* Specify the app's Graph connector configuration. If this is present then
* webApplicationInfo.id must also be specified.
*/
graphConnector?: GraphConnector;
icons: Icons;
/**
* A unique identifier for this app. This id must be a GUID.
*/
id: string;
/**
* A value indicating whether a personal app is rendered without a tab header-bar
*/
isFullScreen?: boolean;
localizationInfo?: LocalizationInfo;
/**
* The version of the schema this manifest is using. This schema version supports extending
* Teams apps to other parts of the Microsoft 365 ecosystem. More info at
* https://aka.ms/extendteamsapps.
*/
manifestVersion: ManifestVersion;
/**
* Specify meeting extension definition.
*/
meetingExtensionDefinition?: MeetingExtensionDefinition;
name: Name;
/**
* Specifies the permissions the app requests from users.
*/
permissions?: Permission[];
/**
* The url to the page that provides additional app information for the admins
*/
publisherDocsUrl?: string;
/**
* A value indicating whether or not show loading indicator when app/tab is loading
*/
showLoadingIndicator?: boolean;
/**
* A set of tabs that may be 'pinned' by default, without the user adding them manually.
* Static tabs declared in personal scope are always pinned to the app's personal
* experience. Static tabs do not currently support the 'teams' scope.
*/
staticTabs?: StaticTab[];
/**
* Subscription offer associated with this app.
*/
subscriptionOffer?: SubscriptionOffer;
/**
* List of 'non-standard' channel types that the app supports. Note: Channels of standard
* type are supported by default if the app supports team scope.
*/
supportedChannelTypes?: SupportedChannelType[];
/**
* A list of valid domains from which the tabs expect to load any content. Domain listings
* can include wildcards, for example `*.example.com`. If your tab configuration or content
* UI needs to navigate to any other domain besides the one use for tab configuration, that
* domain must be specified here.
*/
validDomains?: string[];
/**
* The version of the app. Changes to your manifest should cause a version change. This
* version string must follow the semver standard (http://semver.org).
*/
version: string;
/**
* Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD
* app.
*/
webApplicationInfo?: WebApplicationInfo;
};
export type Activities = {
/**
* Specify the types of activites that your app can post to a users activity feed
*/
activityTypes?: ActivityType[];
};
export type ActivityType = {
description: string;
templateText: string;
type: string;
};
/**
* Specify and consolidates authorization related information for the App.
*/
export type ManifestAuthorization = {
/**
* List of permissions that the app needs to function.
*/
permissions?: Permissions;
};
/**
* List of permissions that the app needs to function.
*/
export type Permissions = {
/**
* Permissions that must be granted on a per resource instance basis.
*/
resourceSpecific?: ResourceSpecific[];
};
export type ResourceSpecific = {
/**
* The name of the resource-specific permission.
*/
name: string;
/**
* The type of the resource-specific permission: delegated vs application.
*/
type: ResourceSpecificType;
};
/**
* The type of the resource-specific permission: delegated vs application.
*/
export type ResourceSpecificType = 'Application' | 'Delegated';
export type Bot = {
/**
* The Microsoft App ID specified for the bot in the Bot Framework portal
* (https://dev.botframework.com/bots)
*/
botId: string;
/**
* The list of commands that the bot supplies, including their usage, description, and the
* scope for which the commands are valid. A separate command list should be used for each
* scope.
*/
commandLists?: CommandList[];
configuration?: Configuration;
/**
* A value indicating whether or not the bot is a one-way notification only bot, as opposed
* to a conversational bot.
*/
isNotificationOnly?: boolean;
/**
* This value describes whether or not the bot utilizes a user hint to add the bot to a
* specific channel.
*/
needsChannelSelector?: boolean;
/**
* Specifies whether the bot offers an experience in the context of a channel in a team, in
* a 1:1 or group chat, or in an experience scoped to an individual user alone. These
* options are non-exclusive.
*/
scopes: CommandListScope[];
/**
* A value indicating whether the bot supports audio calling.
*/
supportsCalling?: boolean;
/**
* A value indicating whether the bot supports uploading/downloading of files.
*/
supportsFiles?: boolean;
/**
* A value indicating whether the bot supports video calling.
*/
supportsVideo?: boolean;
};
export type CommandList = {
commands: CommandListCommand[];
/**
* Specifies the scopes for which the command list is valid
*/
scopes: CommandListScope[];
};
export type CommandListCommand = {
/**
* A simple text description or an example of the command syntax and its arguments.
*/
description: string;
/**
* The bot command name
*/
title: string;
};
export type CommandListScope = 'team' | 'personal' | 'groupChat';
export type Configuration = {
groupChat?: GroupChat;
team?: GroupChat;
};
export type GroupChat = {
fetchTask?: boolean;
taskInfo?: TaskInfo;
};
export type TaskInfo = {
/**
* Dialog height - either a number in pixels or default layout such as 'large', 'medium', or
* 'small'
*/
height?: string;
/**
* Initial dialog title
*/
title?: string;
/**
* Initial webview URL
*/
url?: string;
/**
* Dialog width - either a number in pixels or default layout such as 'large', 'medium', or
* 'small'
*/
width?: string;
};
export type ComposeExtension = {
/**
* A relative file path to the api specification file in the manifest package.
*/
apiSpecificationFile?: string;
/**
* Object capturing authorization information.
*/
authorization?: ComposeExtensionAuthorization;
/**
* The Microsoft App ID specified for the bot powering the compose extension in the Bot
* Framework portal (https://dev.botframework.com/bots)
*/
botId?: string;
/**
* A value indicating whether the configuration of a compose extension can be updated by the
* user.
*/
canUpdateConfiguration?: boolean | null;
commands?: ComposeExtensionCommand[];
/**
* Type of the compose extension.
*/
composeExtensionType?: ComposeExtensionType;
/**
* A list of handlers that allow apps to be invoked when certain conditions are met
*/
messageHandlers?: MessageHandler[];
};
/**
* Object capturing authorization information.
*/
export type ComposeExtensionAuthorization = {
/**
* Object capturing details needed to do service auth. It will be only present when auth
* type is apiSecretServiceAuth.
*/
apiSecretServiceAuthConfiguration?: APISecretServiceAuthConfiguration;
/**
* Enum of possible authentication types.
*/
authType?: AuthType;
/**
* Object capturing details needed to do single aad auth flow. It will be only present when
* auth type is entraId.
*/
microsoftEntraConfiguration?: MicrosoftEntraConfiguration;
};
/**
* Object capturing details needed to do service auth. It will be only present when auth
* type is apiSecretServiceAuth.
*/
export type APISecretServiceAuthConfiguration = {
/**
* Registration id returned when developer submits the api key through Developer Portal.
*/
apiSecretRegistrationId?: string;
};
/**
* Enum of possible authentication types.
*/
export type AuthType = 'none' | 'apiSecretServiceAuth' | 'microsoftEntra';
/**
* Object capturing details needed to do single aad auth flow. It will be only present when
* auth type is entraId.
*/
export type MicrosoftEntraConfiguration = {
/**
* Boolean indicating whether single sign on is configured for the app.
*/
supportsSingleSignOn?: boolean;
};
export type ComposeExtensionCommand = {
/**
* A relative file path for api response rendering template file.
*/
apiResponseRenderingTemplateFile?: string;
/**
* Context where the command would apply
*/
context?: CommandContext[];
/**
* Description of the command.
*/
description?: string;
/**
* A boolean value that indicates if it should fetch task module dynamically
*/
fetchTask?: boolean;
/**
* Id of the command.
*/
id: string;
/**
* A boolean value that indicates if the command should be run once initially with no
* parameter.
*/
initialRun?: boolean;
parameters?: Parameter[];
samplePrompts?: SamplePrompt[];
/**
* Semantic description for the command.
*/
semanticDescription?: string;
taskInfo?: TaskInfo;
/**
* Title of the command.
*/
title: string;
/**
* Type of the command
*/
type?: CommandType;
};
export type CommandContext = 'compose' | 'commandBox' | 'message';
export type Parameter = {
/**
* The choice options for the parameter
*/
choices?: Choice[];
/**
* Description of the parameter.
*/
description?: string;
/**
* Type of the parameter
*/
inputType?: InputType;
/**
* The value indicates if this parameter is a required field.
*/
isRequired?: boolean;
/**
* Name of the parameter.
*/
name: string;
/**
* Semantic description for the parameter.
*/
semanticDescription?: string;
/**
* Title of the parameter.
*/
title: string;
/**
* Initial value for the parameter
*/
value?: string;
};
export type Choice = {
/**
* Title of the choice
*/
title: string;
/**
* Value of the choice
*/
value: string;
};
/**
* Type of the parameter
*/
export type InputType = 'text' | 'textarea' | 'number' | 'date' | 'time' | 'toggle' | 'choiceset';
export type SamplePrompt = {
/**
* This string will hold the sample prompt
*/
text: string;
};
/**
* Type of the command
*/
export type CommandType = 'query' | 'action';
/**
* Type of the compose extension.
*/
export type ComposeExtensionType = 'botBased' | 'apiBased';
export type MessageHandler = {
/**
* Type of the message handler
*/
type: MessageHandlerType;
value: Value;
};
/**
* Type of the message handler
*/
export type MessageHandlerType = 'link';
export type Value = {
/**
* A list of domains that the link message handler can register for, and when they are
* matched the app will be invoked
*/
domains?: string[];
/**
* A boolean that indicates whether the app's link message handler supports anonymous invoke
* flow.
*/
supportsAnonymizedPayloads?: boolean;
[property: string]: any;
};
export type ConfigurableProperty = 'name' | 'shortDescription' | 'longDescription' | 'smallImageUrl' | 'largeImageUrl' | 'accentColor' | 'developerUrl' | 'privacyUrl' | 'termsOfUseUrl';
export type ConfigurableTab = {
/**
* A value indicating whether an instance of the tab's configuration can be updated by the
* user after creation.
*/
canUpdateConfiguration?: boolean;
/**
* The url to use when configuring the tab.
*/
configurationUrl: string;
/**
* The set of contextItem scopes that a tab belong to
*/
context?: ConfigurableTabContext[];
/**
* The set of meetingSurfaceItem scopes that a tab belong to
*/
meetingSurfaces?: MeetingSurface[];
/**
* Specifies whether the tab offers an experience in the context of a channel in a team, in
* a 1:1 or group chat, or in an experience scoped to an individual user alone. These
* options are non-exclusive. Currently, configurable tabs are only supported in the teams
* and groupchats scopes.
*/
scopes: ConfigurableTabScope[];
/**
* A relative file path to a tab preview image for use in SharePoint. Size 1024x768.
*/
sharePointPreviewImage?: string;
/**
* Defines how your tab will be made available in SharePoint.
*/
supportedSharePointHosts?: SupportedSharePointHost[];
};
export type ConfigurableTabContext = 'personalTab' | 'channelTab' | 'privateChatTab' | 'meetingChatTab' | 'meetingDetailsTab' | 'meetingSidePanel' | 'meetingStage';
export type MeetingSurface = 'sidePanel' | 'stage';
export type ConfigurableTabScope = 'team' | 'groupChat';
export type SupportedSharePointHost = 'sharePointFullPage' | 'sharePointWebPart';
export type Connector = {
/**
* The url to use for configuring the connector using the inline configuration experience.
*/
configurationUrl?: string;
/**
* A unique identifier for the connector which matches its ID in the Connectors Developer
* Portal.
*/
connectorId: string;
/**
* Specifies whether the connector offers an experience in the context of a channel in a
* team, or an experience scoped to an individual user alone. Currently, only the team scope
* is supported.
*/
scopes: ConnectorScope[];
};
export type ConnectorScope = 'team';
export type CopilotAgents = {
/**
* An array of declarative agent elements references. Currently, only one declarative agent
* per application is supported.
*/
declarativeAgents: DeclarativeAgentRef[];
};
/**
* A reference to a declarative agent element. The element's definition is in a separate
* file.
*/
export type DeclarativeAgentRef = {
/**
* Relative file path to this declarative agent element file in the application package.
*/
file: string;
/**
* A unique identifier for this declarative agent element.
*/
id: string;
};
/**
* Cards wich could be pinned to dashboard providing summarized view of information relevant
* to user.
*/
export type DashboardCard = {
contentSource: DashboardCardContentSource;
/**
* Rendering Size for dashboard card.
*/
defaultSize: DefaultSize;
/**
* Description of the card.Maximum length is 255 characters.
*/
description: string;
/**
* Represents the name of the card. Maximum length is 255 characters.
*/
displayName: string;
icon?: DashboardCardIcon;
/**
* Unique Id for the card. Must be unique inside the app.
*/
id: string;
/**
* Id of the group in the card picker. This must be guid.
*/
pickerGroupId: string;
};
/**
* Represents a configuration for the source of the card’s content.
*/
export type DashboardCardContentSource = {
/**
* The configuration for the bot source. Required if sourceType is set to bot.
*/
botConfiguration?: BotConfiguration;
/**
* The content of the dashboard card is sourced from a bot.
*/
sourceType?: SourceType;
};
/**
* The configuration for the bot source. Required if sourceType is set to bot.
*/
export type BotConfiguration = {
/**
* The unique Microsoft app ID for the bot as registered with the Bot Framework.
*/
botId?: string;
};
/**
* The content of the dashboard card is sourced from a bot.
*/
export type SourceType = 'bot';
/**
* Rendering Size for dashboard card.
*/
export type DefaultSize = 'medium' | 'large';
/**
* Represents a configuration for the source of the card’s content
*/
export type DashboardCardIcon = {
/**
* The icon for the card, to be displayed in the toolbox and card bar, represented as URL.
*/
iconUrl?: string;
/**
* Office UI Fabric/Fluent UI icon friendly name for the card. This value will be used if
* ‘iconUrl’ is not specified.
*/
officeUIFabricIconName?: string;
};
/**
* When a group install scope is selected, this will define the default capability when the
* user installs the app
*/
export type DefaultGroupCapability = {
/**
* When the install scope selected is GroupChat, this field specifies the default capability
* available
*/
groupchat?: Groupchat;
/**
* When the install scope selected is Meetings, this field specifies the default capability
* available
*/
meetings?: Groupchat;
/**
* When the install scope selected is Team, this field specifies the default capability
* available
*/
team?: Groupchat;
};
/**
* When the install scope selected is GroupChat, this field specifies the default capability
* available
*
* When the install scope selected is Meetings, this field specifies the default capability
* available
*
* When the install scope selected is Team, this field specifies the default capability
* available
*/
export type Groupchat = 'tab' | 'bot' | 'connector';
/**
* The install scope defined for this app by default. This will be the option displayed on
* the button when a user tries to add the app
*/
export type DefaultInstallScope = 'personal' | 'team' | 'groupChat' | 'meetings';
export type Description = {
/**
* The full description of the app. Maximum length is 4000 characters.
*/
full: string;
/**
* A short description of the app used when space is limited. Maximum length is 80
* characters.
*/
short: string;
};
export type Developer = {
/**
* The Microsoft Partner Network ID that identifies the partner organization building the
* app. This field is not required, and should only be used if you are already part of the
* Microsoft Partner Network. More info at https://aka.ms/partner
*/
mpnId?: string;
/**
* The display name for the developer.
*/
name: string;
/**
* The url to the page that provides privacy information for the app.
*/
privacyUrl: string;
/**
* The url to the page that provides the terms of use for the app.
*/
termsOfUseUrl: string;
/**
* The url to the page that provides support information for the app.
*/
websiteUrl: string;
};
export type DevicePermission = 'geolocation' | 'media' | 'notifications' | 'midi' | 'openExternal';
/**
* The set of extensions for this app. Currently only one extensions per app is supported.
*/
export type ElementExtension = {
alternates?: ExtensionAlternateVersionsArray[];
/**
* The url for your extension, used to validate Exchange user identity tokens.
*/
audienceClaimUrl?: string;
autoRunEvents?: ExtensionAutoRunEventsArray[];
requirements?: RequirementsExtensionElement;
ribbons?: ExtensionRibbonsArray[];
runtimes?: ExtensionRuntimesArray[];
};
export type ExtensionAlternateVersionsArray = {
alternateIcons?: AlternateIcons;
hide?: Hide;
prefer?: Prefer;
requirements?: RequirementsExtensionElement;
};
export type AlternateIcons = {
highResolutionIcon: ExtensionCommonIcon;
icon: ExtensionCommonIcon;
};
export type ExtensionCommonIcon = {
/**
* Size in pixels of the icon. Three image sizes are required (16, 32, and 80 pixels)
*/
size: number;
/**
* Absolute Url to the icon.
*/
url: string;
};
export type Hide = {
customOfficeAddin?: CustomOfficeAddin;
storeOfficeAddin?: StoreOfficeAddin;
[property: string]: any;
};
export type CustomOfficeAddin = {
/**
* Solution ID of the in-market add-in to hide. Maximum length is 64 characters.
*/
officeAddinId: string;
};
export type StoreOfficeAddin = {
/**
* Asset ID of the in-market add-in to hide. Maximum length is 64 characters.
*/
assetId: string;
/**
* Solution ID of an in-market add-in to hide. Maximum length is 64 characters.
*/
officeAddinId: string;
};
export type Prefer = {
comAddin?: COMAddin;
[property: string]: any;
};
export type COMAddin = {
/**
* Program ID of the alternate com extension. Maximum length is 64 characters.
*/
progId: string;
};
export type RequirementsExtensionElement = {
capabilities?: Capability[];
/**
* Identifies the form factors that support the add-in. Supported values: mobile, desktop.
*/
formFactors?: FormFactor[];
/**
* Identifies the scopes in which the add-in can run.
*/
scopes?: RequirementsScope[];
};
export type Capability = {
/**
* Identifies the maximum version for the requirement sets that the add-in needs to run.
*/
maxVersion?: string;
/**
* Identifies the minimum version for the requirement sets that the add-in needs to run.
*/
minVersion?: string;
/**
* Identifies the name of the requirement sets that the add-in needs to run.
*/
name: string;
};
export type FormFactor = 'desktop' | 'mobile';
export type RequirementsScope = 'mail' | 'workbook' | 'document' | 'presentation';
export type ExtensionAutoRunEventsArray = {
/**
* Specifies the type of event. For supported types, please see:
* https://review.learn.microsoft.com/en-us/office/dev/add-ins/outlook/autolaunch?tabs=xmlmanifest#supported-events.
*/
events: Event[];
requirements?: RequirementsExtensionElement;
};
export type Event = {
/**
* The ID of an action defined in runtimes. Maximum length is 64 characters.
*/
actionId: string;
/**
* Configures how Outlook responds to the event.
*/
options?: Options;
type: string;
};
/**
* Configures how Outlook responds to the event.
*/
export type Options = {
sendMode: SendMode;
};
export type SendMode = 'promptUser' | 'softBlock' | 'block';
export type ExtensionRibbonsArray = {
contexts?: ExtensionContext[];
requirements?: RequirementsExtensionElement;
tabs: ExtensionRibbonsArrayTabsItem[];
};
/**
* Specifies the Office application windows in which the ribbon customization is available
* to the user. Each item in the array is a member of a string array. Possible values are:
* mailRead, mailCompose, meetingDetailsOrganizer, meetingDetailsAttendee.
*/
export type ExtensionContext = 'mailRead' | 'mailCompose' | 'meetingDetailsOrganizer' | 'meetingDetailsAttendee' | 'onlineMeetingDetailsOrganizer' | 'logEventMeetingDetailsAttendee' | 'default';
export type ExtensionRibbonsArrayTabsItem = {
/**
* Id of the existing office Tab. Maximum length is 64 characters.
*/
builtInTabId?: string;
/**
* Defines mobile group item.
*/
customMobileRibbonGroups?: ExtensionRibbonsCustomMobileGroupItem[];
/**
* Defines tab groups.
*/
groups?: ExtensionRibbonsCustomTabGroupsItem[];
/**
* A unique identifier for this tab within the app. Maximum length is 64 characters.
*/
id?: string;
/**
* Displayed text for the tab. Maximum length is 64 characters.
*/
label?: string;
position?: Position;
};
export type ExtensionRibbonsCustomMobileGroupItem = {
controls: ExtensionRibbonsCustomMobileControlButtonItem[];
/**
* Specify the Id of the group. Used for mobileMessageRead ext point.
*/
id: string;
/**
* Short label of the control. Maximum length is 32 characters.
*/
label: string;
[property: string]: any;
};
export type ExtensionRibbonsCustomMobileControlButtonItem = {
/**
* The ID of an action defined in runtimes. Maximum length is 64 characters.
*/
actionId: string;
icons: ExtensionCustomMobileIcon[];
/**
* Specify the Id of the button like msgReadFunctionButton.
*/
id: string;
/**
* Short label of the control. Maximum length is 32 characters.
*/
label: string;
type: PurpleType;
[property: string]: any;
};
export type ExtensionCustomMobileIcon = {
/**
* How to scale - 1,2,3 for each image. This attribute specifies the UIScreen.scale property
* for iOS devices.
*/
scale: number;
/**
* Size in pixels of the icon. Three image sizes are required (25, 32, and 48 pixels).
*/
size: number;
/**
* Url to the icon.
*/
url: string;
};
export type PurpleType = 'mobileButton';
export type ExtensionRibbonsCustomTabGroupsItem = {
/**
* Id of a built-in Group. Maximum length is 64 characters.
*/
builtInGroupId?: string;
controls?: ExtensionCommonCustomGroupControlsItem[];
icons?: ExtensionCommonIcon[];
/**
* A unique identifier for this group within the app. Maximum length is 64 characters.
*/
id?: string;
/**
* Displayed text for the group. Maximum length is 64 characters.
*/
label?: string;
};
export type ExtensionCommonCustomGroupControlsItem = {
/**
* The ID of an execution-type action that handles this key combination. Maximum length is
* 64 characters.
*/
actionId: string;
/**
* Id of the existing office control. Maximum length is 64 characters.
*/
builtInControlId?: string;
/**
* Whether the control is initially enabled.
*/
enabled?: boolean;
icons: ExtensionCommonIcon[];
/**
* A unique identifier for this control within the app. Maximum length is 64 characters.
*/
id: string;
/**
* Configures the items for a menu control.
*/
items?: ExtensionCommonCustomControlMenuItem[];
/**
* Displayed text for the control. Maximum length is 64 characters.
*/
label: string;
/**
* Specifies whether a group, button, menu, or menu item will be hidden on application and
* platform combinations that support the API (Office.ribbon.requestCreateControls) that
* installs custom contextual tabs on the ribbon. Default is false.
*/
overriddenByRibbonApi?: boolean;
supertip: ExtensionCommonSuperToolTip;
/**
* Defines the type of control whether button or menu.
*/
type: FluffyType;
};
export type ExtensionCommonCustomControlMenuItem = {
/**
* The ID of an action defined in runtimes. Maximum length is 64 characters.
*/
actionId: string;
/**
* Whether the control is initially enabled.
*/
enabled?: boolean;
icons?: ExtensionCommonIcon[];
/**
* A unique identifier for this control within the app. Maximum length is 64 characters.
*/
id: string;
/**
* Displayed text for the control. Maximum length is 64 characters.
*/
label: string;
overriddenByRibbonApi?: boolean;
supertip: ExtensionCommonSuperToolTip;
/**
* Supported values: menuItem.
*/
type: ItemType;
};
export type ExtensionCommonSuperToolTip = {
/**
* Description of the super tip. Maximum length is 250 characters.
*/
description: string;
/**
* Title text of the super tip. Maximum length is 64 characters.
*/
title: string;
};
/**
* Supported values: menuItem.
*/
export type ItemType = 'menuItem';
/**
* Defines the type of control whether button or menu.
*/
export type FluffyType = 'button' | 'menu';
export type Position = {
/**
* Define alignment of this custom tab relative to the specified built-in tab.
*/
align: Align;
/**
* The id of the built-in tab. Maximum length is 64 characters.
*/
builtInTabId: string;
};
/**
* Define alignment of this custom tab relative to the specified built-in tab.
*/
export type Align = 'after' | 'before';
/**
* A runtime environment for a page or script
*/
export type ExtensionRuntimesArray = {
actions?: ExtensionRuntimesActionsItem[];
code: ExtensionRuntimeCode;
/**
* A unique identifier for this runtime within the app. Maximum length is 64 characters.
*/
id: string;
/**
* Runtimes with a short lifetime do not preserve state across executions. Runtimes with a
* long lifetime do.
*/
lifetime?: Lifetime;
requirements?: RequirementsExtensionElement;
/**
* Supports running functions and launching pages.
*/
type?: RuntimeType;
};
/**
* Specifies the set of actions supported by this runtime. An action is either running a
* JavaScript function or opening a view such as a task pane.
*/
export type ExtensionRuntimesActionsItem = {
/**
* Display name of the action. Maximum length is 64 characters.
*/
displayName?: string;
/**
* Identifier for this action. Maximum length is 64 characters. This value is passed to the
* code file.
*/
id: string;
/**
* Whether allows the action to have multiple selection.
*/
multiselect?: boolean;
/**
* Specifies that a task pane supports pinning, which keeps the task pane open when the user
* changes the selection.
*/
pinnable?: boolean;
/**
* Whether allows task pane add-ins to activate without the Reading Pane enabled or a
* message selected.
*/
supportsNoItemContext?: boolean;
/**
* executeFunction: Run a script function without waiting for it to finish. openPate: Open a
* page in a view.
*/
type: ActionType;
/**
* View where the page should be opened. Maximum length is 64 characters.
*/
view?: string;
};
/**
* executeFunction: Run a script function without waiting for it to finish. openPate: Open a
* page in a view.
*/
export type ActionType = 'executeFunction' | 'openPage';
export type ExtensionRuntimeCode = {
/**
* URL of the .html page to be loaded in browser-based runtimes.
*/
page: string;
/**
* URL of the .js script file to be loaded in UI-less runtimes.
*/
script?: string;
};
/**
* Runtimes with a short lifetime do not preserve state across executions. Runtimes with a
* long lifetime do.
*/
export type Lifetime = 'short' | 'long';
/**
* Supports running functions and launching pages.
*/
export type RuntimeType = 'general';
/**
* Specify the app's Graph connector configuration. If this is present then
* webApplicationInfo.id must also be specified.
*/
export type GraphConnector = {
/**
* The url where Graph-connector notifications for the application should be sent.
*/
notificationUrl: string;
};
export type Icons = {
/**
* A relative file path to a full color PNG icon. Size 192x192.
*/
color: string;
/**
* A relative file path to a transparent PNG outline icon. The border color needs to be
* white. Size 32x32.
*/
outline: string;
};
export type LocalizationInfo = {
additionalLanguages?: AdditionalLanguage[];
/**
* A relative file path to a the .json file containing strings in the default language.
*/
defaultLanguageFile?: string;
/**
* The language tag of the strings in this top level manifest file.
*/
defaultLanguageTag: string;
};
export type AdditionalLanguage = {
/**
* A relative file path to a the .json file containing the translated strings.
*/
file: string;
/**
* The language tag of the strings in the provided file.
*/
languageTag: string;
};
export type ManifestVersion = '1.19';
/**
* Specify meeting extension definition.
*/
export type MeetingExtensionDefinition = {
/**
* Meeting supported scenes.
*/
scenes?: Scene[];
/**
* A boolean value indicating whether this app allows management by anonymous users.
*/
supportsAnonymousGuestUsers?: boolean;
/**
* A boolean value indicating whether this app can stream the meeting's audio video content
* to an RTMP endpoint.
*/
supportsStreaming?: boolean;
};
export type Scene = {
/**
* A relative file path to a scene metadata json file.
*/
file: string;
/**
* A unique identifier for this scene. This id must be a GUID.
*/
id: string;
/**
* Maximum audiences supported in scene.
*/
maxAudience: number;
/**
* Scene name.
*/
name: string;
/**
* A relative file path to a scene PNG preview icon.
*/
preview: string;
/**
* Number of seats reserved for organizers or presenters.
*/
seatsReservedForOrganizersOrPresenters: number;
};
export type Name = {
/**
* The full name of the app, used if the full app name exceeds 30 characters.
*/
full: string;
/**
* A short display name for the app.
*/
short: string;
};
export type Permission = 'identity' | 'messageTeamMembers';
export type StaticTab = {
/**
* The Microsoft App ID specified for the bot in the Bot Framework portal
* (https://dev.botframework.com/bots)
*/
contentBotId?: string;
/**
* The url which points to the entity UI to be displayed in the canvas.
*/
contentUrl?: string;
/**
* The set of contextItem scopes that a tab belong to
*/
context?: StaticTabContext[];
/**
* A unique identifier for the entity which the tab displays.
*/
entityId: string;
/**
* The display name of the tab.
*/
name?: string;
/**
* Specifies whether the tab offers an experience in the context of a channel in a team, or
* an experience scoped to an individual user alone or group chat. These options are
* non-exclusive. Currently static tabs are only supported in the 'personal' scope.
*/
scopes: CommandListScope[];
/**
* The url to direct a user's search queries.
*/
searchUrl?: string;
/**
* The url to point at if a user opts to view in a browser.
*/
websiteUrl?: string;
};
export type StaticTabContext = 'personalTab' | 'channelTab' | 'privateChatTab' | 'meetingChatTab' | 'meetingDetailsTab' | 'meetingSidePanel' | 'meetingStage' | 'teamLevelApp';
/**
* Subscription offer associated with this app.
*/
export type SubscriptionOffer = {
/**
* A unique identifier for the Commercial Marketplace Software as a Service Offer.
*/
offerId: string;
};
export type SupportedChannelType = 'sharedChannels' | 'privateChannels';
/**
* Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD
* app.
*/
export type WebApplicationInfo = {
/**
* AAD application id of the app. This id must be a GUID.
*/
id: string;
/**
* Resource url of app for acquiring auth token for SSO.
*/
resource?: string;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFuaWZlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9