@microsoft/teams-js
Advanced tools
Comparing version 1.3.0-beta.3 to 1.3.0-beta.4
@@ -22,2 +22,8 @@ | ||
declare namespace microsoftTeams { | ||
enum HostClientTypes { | ||
desktop = "desktop", | ||
web = "web", | ||
android = "android", | ||
ios = "ios", | ||
} | ||
/** | ||
@@ -672,2 +678,6 @@ * Namespace to interact with the menu-specific part of the SDK. | ||
isTeamArchived?: boolean; | ||
/** | ||
* The type of the host client. Possible values are : android, ios, web, desktop | ||
*/ | ||
hostClientType?: HostClientTypes; | ||
} | ||
@@ -674,0 +684,0 @@ interface DeepLinkParameters { |
@@ -39,3 +39,4 @@ ;(function(root, factory) { | ||
for (var j = 0; j < urlParts.length; j++) { | ||
urlRegExpPart += (j > 0 ? "[.]" : "") + urlParts[j].replace("*", "[^\/^.]+"); | ||
urlRegExpPart += | ||
(j > 0 ? "[.]" : "") + urlParts[j].replace("*", "[^/^.]+"); | ||
} | ||
@@ -62,6 +63,9 @@ urlRegExpPart += "$"; | ||
}; | ||
var hostClientTypes = { | ||
desktop: "desktop", | ||
web: "web" | ||
}; | ||
var HostClientTypes; | ||
(function (HostClientTypes) { | ||
HostClientTypes["desktop"] = "desktop"; | ||
HostClientTypes["web"] = "web"; | ||
HostClientTypes["android"] = "android"; | ||
HostClientTypes["ios"] = "ios"; | ||
})(HostClientTypes = microsoftTeams.HostClientTypes || (microsoftTeams.HostClientTypes = {})); | ||
/** | ||
@@ -585,3 +589,3 @@ * Namespace to interact with the menu-specific part of the SDK. | ||
ensureInitialized(frameContexts.content, frameContexts.settings, frameContexts.remove); | ||
if (hostClientType === hostClientTypes.desktop) { | ||
if (hostClientType === HostClientTypes.desktop) { | ||
// Convert any relative URLs into absolute URLs before sending them over to the parent window. | ||
@@ -999,3 +1003,5 @@ var link = document.createElement("a"); | ||
if (isFramelessWindow) { | ||
currentWindow.nativeInterface.framelessPostMessage(JSON.stringify(request)); | ||
if (currentWindow && currentWindow.nativeInterface) { | ||
currentWindow.nativeInterface.framelessPostMessage(JSON.stringify(request)); | ||
} | ||
} | ||
@@ -1002,0 +1008,0 @@ else { |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.microsoftTeams=e()}(this,function(){String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return this.substr(!e||e<0?0:+e,t.length)===t});var t;return function(t){"use strict";function e(t){for(var e="^",n=t.split("."),i=0;i<n.length;i++)e+=(i>0?"[.]":"")+n[i].replace("*","[^/^.]+");return e+="$"}function n(t){for(var n="",i=0;i<t.length;i++)n+=(0===i?"":"|")+e(t[i]);return new RegExp(n)}function i(){if(!X){X=!0,D=this._window||window;var t=function(t){return w(t)};W=D.parent!==D.self?D.parent:D.opener,W?D.addEventListener("message",t,!1):(Y=!0,window.onNativeMessage=k);try{z="*";var e=S(W,"initialize",[L]);K[e]=function(t,e){_=t,j=e}}finally{z=null}this._uninitialize=function(){_&&(r(null),s(null),c(null)),_===F.settings&&tt.registerOnSaveHandler(null),_===F.remove&&tt.registerOnRemoveHandler(null),Y||D.removeEventListener("message",t,!1),X=!1,W=null,z=null,$=[],R=null,V=null,q=[],G=0,K={},_=null,j=null,Y=!1}}}function o(t){y();var e=S(W,"getContext");K[e]=t}function r(t){y(),J=t}function a(t){J&&J(t),R&&S(R,"themeChange",[t])}function s(t){y(),Q=t}function u(t){Q&&Q(t)}function c(t){y(),Z=t}function f(){Z&&Z()||l()}function l(){y();var t=S(W,"navigateBack",[]);K[t]=function(t){if(!t)throw new Error("Back navigation is not supported in the current client or context.")}}function h(t){y(F.content,F.settings,F.remove);var e=S(W,"navigateCrossDomain",[t]);K[e]=function(t){if(!t)throw new Error("Cross-origin navigation is only supported for URLs matching the pattern registered in the manifest.")}}function v(t,e){y();var n=S(W,"getTabInstances",[e]);K[n]=t}function d(t,e){y();var n=S(W,"getMruTabInstances",[e]);K[n]=t}function g(t){y(F.content),S(W,"shareDeepLink",[t.subEntityId,t.subEntityLabel,t.subEntityWebUrl])}function p(t){y(F.content);var e=[t.entityId,t.title,t.description,t.type,t.objectUrl,t.downloadUrl,t.webPreviewUrl,t.webEditUrl,t.baseUrl,t.editFile,t.subEntityId];S(W,"openFilePreview",e)}function m(t){y();var e=S(W,"navigateToTab",[t]);K[e]=function(t){if(!t)throw new Error("Invalid internalTabInstanceId and/or channelId were/was provided")}}function y(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(!X)throw new Error("The library has not yet been initialized");if(_&&t&&t.length>0){for(var n=!1,i=0;i<t.length;i++)if(t[i]===_){n=!0;break}if(!n)throw new Error("This call is not allowed in the '"+_+"' context")}}function w(t){if(t&&t.data&&"object"==typeof t.data){var e=t.source||t.originalEvent.source,n=t.origin||t.originalEvent.origin;e===D||n!==D.location.origin&&!P.test(n.toLowerCase())||(b(e,n),e===W?k(t):e===R&&T(t))}}function b(t,e){W&&t!==W?R&&t!==R||(R=t,V=e):(W=t,z=e),W&&W.closed&&(W=null,z=null),R&&R.closed&&(R=null,V=null),E(W),E(R)}function k(t){if("id"in t.data){var e=t.data,n=K[e.id];n&&(n.apply(null,e.args),delete K[e.id])}else if("func"in t.data){var e=t.data,i=x[e.func];i&&i.apply(this,e.args)}}function T(t){if("id"in t.data&&"func"in t.data){var e=t.data,n=x[e.func];if(n){var i=n.apply(this,e.args);i&&N(R,e.id,Array.isArray(i)?i:[i])}else{var o=S(W,e.func,e.args);K[o]=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];R&&N(R,e.id,t)}}}}function C(t){return t===W?$:t===R?q:[]}function I(t){return t===W?z:t===R?V:null}function E(t){for(var e=I(t),n=C(t);t&&e&&n.length>0;)t.postMessage(n.shift(),e)}function M(t,e){var n=D.setInterval(function(){0===C(t).length&&(clearInterval(n),e())},100)}function S(t,e,n){var i=U(e,n);if(Y)D.nativeInterface.framelessPostMessage(JSON.stringify(i));else{var o=I(t);t&&o?t.postMessage(i,o):C(t).push(i)}return i.id}function N(t,e,n){var i=O(e,n),o=I(t);t&&o&&t.postMessage(i,o)}function U(t,e){return{id:G++,func:t,args:e||[]}}function O(t,e){return{id:t,args:e||[]}}var B,L="1.2",H=["https://teams.microsoft.com","https://teams.microsoft.us","https://int.teams.microsoft.com","https://devspaces.skype.com","https://ssauth.skype.com","http://dev.local","https://msft.spoppe.com","https://*.sharepoint.com","https://*.sharepoint-df.com","https://*.sharepointonline.com"],P=n(H),x={},F={settings:"settings",content:"content",authentication:"authentication",remove:"remove"},A={desktop:"desktop",web:"web"};!function(t){function e(t,e){y(),l=e,S(W,"setUpViews",[t])}function n(t){l&&l(t)||(y(),S(W,"viewConfigItemPress",[t]))}function i(t,e){y(),c=e,S(W,"setNavBarMenu",[t])}function o(t){c&&c(t)||(y(),S(W,"handleNavBarMenuItemPress",[t]))}function r(t,e){y(),f=e,S(W,"showActionMenu",[t])}function a(t){f&&f(t)||(y(),S(W,"handleActionMenuItemPress",[t]))}var s=function(){function t(){this.enabled=!0}return t}();t.MenuItem=s;var u;!function(t){t.dropDown="dropDown",t.popOver="popOver"}(u=t.MenuListType||(t.MenuListType={}));var c;x.navBarMenuItemPress=o;var f;x.actionMenuItemPress=a;var l;x.setModuleView=n,t.setUpViews=e,t.setNavBarMenu=i,t.showActionMenu=r}(B=t.menus||(t.menus={}));var D,W,z,R,V,_,j,J,X=!1,Y=!1,$=[],q=[],G=0,K={};x.themeChange=a;var Q;x.fullScreenChange=u;var Z;x.backButtonPress=f,t.initialize=i,t.getContext=o,t.registerOnThemeChangeHandler=r,t.registerFullScreenHandler=s,t.registerBackButtonHandler=c,t.navigateBack=l,t.navigateCrossDomain=h,t.getTabInstances=v,t.getMruTabInstances=d,t.shareDeepLink=g,t.openFilePreview=p,t.navigateToTab=m;var tt;!function(t){function e(t){y(F.settings,F.remove),S(W,"settings.setValidityState",[t])}function n(t){y(F.settings,F.remove);var e=S(W,"settings.getSettings");K[e]=t}function i(t){y(F.settings),S(W,"settings.setSettings",[t])}function o(t){y(F.settings),u=t}function r(t){y(F.remove),c=t}function a(t){var e=new f(t);u?u(e):e.notifySuccess()}function s(){var t=new l;c?c(t):t.notifySuccess()}var u,c;x["settings.save"]=a,x["settings.remove"]=s,t.setValidityState=e,t.getSettings=n,t.setSettings=i,t.registerOnSaveHandler=o,t.registerOnRemoveHandler=r;var f=function(){function t(t){this.notified=!1,this.result=t?t:{}}return t.prototype.notifySuccess=function(){this.ensureNotNotified(),S(W,"settings.save.success"),this.notified=!0},t.prototype.notifyFailure=function(t){this.ensureNotNotified(),S(W,"settings.save.failure",[t]),this.notified=!0},t.prototype.ensureNotNotified=function(){if(this.notified)throw new Error("The SaveEvent may only notify success or failure once.")},t}(),l=function(){function t(){this.notified=!1}return t.prototype.notifySuccess=function(){this.ensureNotNotified(),S(W,"settings.remove.success"),this.notified=!0},t.prototype.notifyFailure=function(t){this.ensureNotNotified(),S(W,"settings.remove.failure",[t]),this.notified=!0},t.prototype.ensureNotNotified=function(){if(this.notified)throw new Error("The removeEvent may only notify success or failure once.")},t}()}(tt=t.settings||(t.settings={}));var et;!function(t){function e(t){g=t}function n(t){var e=void 0!==t?t:g;if(y(F.content,F.settings,F.remove),j===A.desktop){var n=document.createElement("a");n.href=e.url;var i=S(W,"authentication.authenticate",[n.href,e.width,e.height]);K[i]=function(t,n){t?e.successCallback(n):e.failureCallback(n)}}else a(e)}function i(t){y();var e=S(W,"authentication.getAuthToken",[t.resources]);K[e]=function(e,n){e?t.successCallback(n):t.failureCallback(n)}}function o(t){y();var e=S(W,"authentication.getUser");K[e]=function(e,n){e?t.successCallback(n):t.failureCallback(n)}}function r(){s();try{R&&R.close()}finally{R=null,V=null}}function a(t){g=t,r();var e=g.width||600,n=g.height||400;e=Math.min(e,D.outerWidth-400),n=Math.min(n,D.outerHeight-200);var i=document.createElement("a");i.href=g.url;var o="undefined"!=typeof D.screenLeft?D.screenLeft:D.screenX,a="undefined"!=typeof D.screenTop?D.screenTop:D.screenY;o+=D.outerWidth/2-e/2,a+=D.outerHeight/2-n/2,R=D.open(i.href,"_blank","toolbar=no, location=yes, status=no, menubar=no, scrollbars=yes, top="+a+", left="+o+", width="+e+", height="+n),R?u():h("FailedToOpenWindow")}function s(){p&&(clearInterval(p),p=0),delete x.initialize,delete x.navigateCrossDomain}function u(){s(),p=D.setInterval(function(){if(!R||R.closed)h("CancelledByUser");else{var t=V;try{V="*",S(R,"ping")}finally{V=t}}},100),x.initialize=function(){return[F.authentication,j]},x.navigateCrossDomain=function(t){return!1}}function c(t,e){v(e,"result",t),y(F.authentication),S(W,"authentication.authenticate.success",[t]),M(W,function(){return setTimeout(function(){return D.close()},200)})}function f(t,e){v(e,"reason",t),y(F.authentication),S(W,"authentication.authenticate.failure",[t]),M(W,function(){return setTimeout(function(){return D.close()},200)})}function l(t){try{g&&g.successCallback&&g.successCallback(t)}finally{g=null,r()}}function h(t){try{g&&g.failureCallback&&g.failureCallback(t)}finally{g=null,r()}}function v(t,e,n){if(t){var i=document.createElement("a");i.href=decodeURIComponent(t),i.host&&i.host!==window.location.host&&"outlook.office.com"===i.host&&i.search.indexOf("client_type=Win32_Outlook")>-1&&(e&&"result"===e&&(n&&(i.href=d(i.href,"result",n)),D.location.assign(d(i.href,"authSuccess",""))),e&&"reason"===e&&(n&&(i.href=d(i.href,"reason",n)),D.location.assign(d(i.href,"authFailure",""))))}}function d(t,e,n){var i=t.indexOf("#"),o=i===-1?"#":t.substr(i);return o=o+"&"+e+(""!==n?"="+n:""),t=i===-1?t:t.substr(0,i),t+o}var g,p;x["authentication.authenticate.success"]=l,x["authentication.authenticate.failure"]=h,t.registerAuthenticationHandlers=e,t.authenticate=n,t.getAuthToken=i,t.getUser=o,t.notifySuccess=c,t.notifyFailure=f}(et=t.authentication||(t.authentication={}));var nt;!function(t){function e(t,e){y(F.content);var n=S(W,"tasks.startTask",[t]);K[n]=e}function n(t,e){y(F.content),S(W,"tasks.completeTask",[t,e])}t.startTask=e,t.completeTask=n}(nt=t.tasks||(t.tasks={}))}(t||(t={})),t}); | ||
!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.microsoftTeams=e()}(this,function(){String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return this.substr(!e||e<0?0:+e,t.length)===t});var t;return function(t){"use strict";function e(t){for(var e="^",n=t.split("."),i=0;i<n.length;i++)e+=(i>0?"[.]":"")+n[i].replace("*","[^/^.]+");return e+="$"}function n(t){for(var n="",i=0;i<t.length;i++)n+=(0===i?"":"|")+e(t[i]);return new RegExp(n)}function i(){if(!X){X=!0,D=this._window||window;var t=function(t){return w(t)};W=D.parent!==D.self?D.parent:D.opener,W?D.addEventListener("message",t,!1):(Y=!0,window.onNativeMessage=k);try{z="*";var e=S(W,"initialize",[B]);K[e]=function(t,e){_=t,j=e}}finally{z=null}this._uninitialize=function(){_&&(r(null),s(null),c(null)),_===F.settings&&tt.registerOnSaveHandler(null),_===F.remove&&tt.registerOnRemoveHandler(null),Y||D.removeEventListener("message",t,!1),X=!1,W=null,z=null,$=[],R=null,V=null,q=[],G=0,K={},_=null,j=null,Y=!1}}}function o(t){y();var e=S(W,"getContext");K[e]=t}function r(t){y(),J=t}function a(t){J&&J(t),R&&S(R,"themeChange",[t])}function s(t){y(),Q=t}function u(t){Q&&Q(t)}function c(t){y(),Z=t}function f(){Z&&Z()||l()}function l(){y();var t=S(W,"navigateBack",[]);K[t]=function(t){if(!t)throw new Error("Back navigation is not supported in the current client or context.")}}function h(t){y(F.content,F.settings,F.remove);var e=S(W,"navigateCrossDomain",[t]);K[e]=function(t){if(!t)throw new Error("Cross-origin navigation is only supported for URLs matching the pattern registered in the manifest.")}}function v(t,e){y();var n=S(W,"getTabInstances",[e]);K[n]=t}function d(t,e){y();var n=S(W,"getMruTabInstances",[e]);K[n]=t}function g(t){y(F.content),S(W,"shareDeepLink",[t.subEntityId,t.subEntityLabel,t.subEntityWebUrl])}function p(t){y(F.content);var e=[t.entityId,t.title,t.description,t.type,t.objectUrl,t.downloadUrl,t.webPreviewUrl,t.webEditUrl,t.baseUrl,t.editFile,t.subEntityId];S(W,"openFilePreview",e)}function m(t){y();var e=S(W,"navigateToTab",[t]);K[e]=function(t){if(!t)throw new Error("Invalid internalTabInstanceId and/or channelId were/was provided")}}function y(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(!X)throw new Error("The library has not yet been initialized");if(_&&t&&t.length>0){for(var n=!1,i=0;i<t.length;i++)if(t[i]===_){n=!0;break}if(!n)throw new Error("This call is not allowed in the '"+_+"' context")}}function w(t){if(t&&t.data&&"object"==typeof t.data){var e=t.source||t.originalEvent.source,n=t.origin||t.originalEvent.origin;e===D||n!==D.location.origin&&!P.test(n.toLowerCase())||(b(e,n),e===W?k(t):e===R&&T(t))}}function b(t,e){W&&t!==W?R&&t!==R||(R=t,V=e):(W=t,z=e),W&&W.closed&&(W=null,z=null),R&&R.closed&&(R=null,V=null),E(W),E(R)}function k(t){if("id"in t.data){var e=t.data,n=K[e.id];n&&(n.apply(null,e.args),delete K[e.id])}else if("func"in t.data){var e=t.data,i=x[e.func];i&&i.apply(this,e.args)}}function T(t){if("id"in t.data&&"func"in t.data){var e=t.data,n=x[e.func];if(n){var i=n.apply(this,e.args);i&&N(R,e.id,Array.isArray(i)?i:[i])}else{var o=S(W,e.func,e.args);K[o]=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];R&&N(R,e.id,t)}}}}function C(t){return t===W?$:t===R?q:[]}function I(t){return t===W?z:t===R?V:null}function E(t){for(var e=I(t),n=C(t);t&&e&&n.length>0;)t.postMessage(n.shift(),e)}function M(t,e){var n=D.setInterval(function(){0===C(t).length&&(clearInterval(n),e())},100)}function S(t,e,n){var i=U(e,n);if(Y)D&&D.nativeInterface&&D.nativeInterface.framelessPostMessage(JSON.stringify(i));else{var o=I(t);t&&o?t.postMessage(i,o):C(t).push(i)}return i.id}function N(t,e,n){var i=H(e,n),o=I(t);t&&o&&t.postMessage(i,o)}function U(t,e){return{id:G++,func:t,args:e||[]}}function H(t,e){return{id:t,args:e||[]}}var O,B="1.2",L=["https://teams.microsoft.com","https://teams.microsoft.us","https://int.teams.microsoft.com","https://devspaces.skype.com","https://ssauth.skype.com","http://dev.local","https://msft.spoppe.com","https://*.sharepoint.com","https://*.sharepoint-df.com","https://*.sharepointonline.com"],P=n(L),x={},F={settings:"settings",content:"content",authentication:"authentication",remove:"remove"};!function(t){t.desktop="desktop",t.web="web",t.android="android",t.ios="ios"}(O=t.HostClientTypes||(t.HostClientTypes={}));var A;!function(t){function e(t,e){y(),l=e,S(W,"setUpViews",[t])}function n(t){l&&l(t)||(y(),S(W,"viewConfigItemPress",[t]))}function i(t,e){y(),c=e,S(W,"setNavBarMenu",[t])}function o(t){c&&c(t)||(y(),S(W,"handleNavBarMenuItemPress",[t]))}function r(t,e){y(),f=e,S(W,"showActionMenu",[t])}function a(t){f&&f(t)||(y(),S(W,"handleActionMenuItemPress",[t]))}var s=function(){function t(){this.enabled=!0}return t}();t.MenuItem=s;var u;!function(t){t.dropDown="dropDown",t.popOver="popOver"}(u=t.MenuListType||(t.MenuListType={}));var c;x.navBarMenuItemPress=o;var f;x.actionMenuItemPress=a;var l;x.setModuleView=n,t.setUpViews=e,t.setNavBarMenu=i,t.showActionMenu=r}(A=t.menus||(t.menus={}));var D,W,z,R,V,_,j,J,X=!1,Y=!1,$=[],q=[],G=0,K={};x.themeChange=a;var Q;x.fullScreenChange=u;var Z;x.backButtonPress=f,t.initialize=i,t.getContext=o,t.registerOnThemeChangeHandler=r,t.registerFullScreenHandler=s,t.registerBackButtonHandler=c,t.navigateBack=l,t.navigateCrossDomain=h,t.getTabInstances=v,t.getMruTabInstances=d,t.shareDeepLink=g,t.openFilePreview=p,t.navigateToTab=m;var tt;!function(t){function e(t){y(F.settings,F.remove),S(W,"settings.setValidityState",[t])}function n(t){y(F.settings,F.remove);var e=S(W,"settings.getSettings");K[e]=t}function i(t){y(F.settings),S(W,"settings.setSettings",[t])}function o(t){y(F.settings),u=t}function r(t){y(F.remove),c=t}function a(t){var e=new f(t);u?u(e):e.notifySuccess()}function s(){var t=new l;c?c(t):t.notifySuccess()}var u,c;x["settings.save"]=a,x["settings.remove"]=s,t.setValidityState=e,t.getSettings=n,t.setSettings=i,t.registerOnSaveHandler=o,t.registerOnRemoveHandler=r;var f=function(){function t(t){this.notified=!1,this.result=t?t:{}}return t.prototype.notifySuccess=function(){this.ensureNotNotified(),S(W,"settings.save.success"),this.notified=!0},t.prototype.notifyFailure=function(t){this.ensureNotNotified(),S(W,"settings.save.failure",[t]),this.notified=!0},t.prototype.ensureNotNotified=function(){if(this.notified)throw new Error("The SaveEvent may only notify success or failure once.")},t}(),l=function(){function t(){this.notified=!1}return t.prototype.notifySuccess=function(){this.ensureNotNotified(),S(W,"settings.remove.success"),this.notified=!0},t.prototype.notifyFailure=function(t){this.ensureNotNotified(),S(W,"settings.remove.failure",[t]),this.notified=!0},t.prototype.ensureNotNotified=function(){if(this.notified)throw new Error("The removeEvent may only notify success or failure once.")},t}()}(tt=t.settings||(t.settings={}));var et;!function(t){function e(t){g=t}function n(t){var e=void 0!==t?t:g;if(y(F.content,F.settings,F.remove),j===O.desktop){var n=document.createElement("a");n.href=e.url;var i=S(W,"authentication.authenticate",[n.href,e.width,e.height]);K[i]=function(t,n){t?e.successCallback(n):e.failureCallback(n)}}else a(e)}function i(t){y();var e=S(W,"authentication.getAuthToken",[t.resources]);K[e]=function(e,n){e?t.successCallback(n):t.failureCallback(n)}}function o(t){y();var e=S(W,"authentication.getUser");K[e]=function(e,n){e?t.successCallback(n):t.failureCallback(n)}}function r(){s();try{R&&R.close()}finally{R=null,V=null}}function a(t){g=t,r();var e=g.width||600,n=g.height||400;e=Math.min(e,D.outerWidth-400),n=Math.min(n,D.outerHeight-200);var i=document.createElement("a");i.href=g.url;var o="undefined"!=typeof D.screenLeft?D.screenLeft:D.screenX,a="undefined"!=typeof D.screenTop?D.screenTop:D.screenY;o+=D.outerWidth/2-e/2,a+=D.outerHeight/2-n/2,R=D.open(i.href,"_blank","toolbar=no, location=yes, status=no, menubar=no, scrollbars=yes, top="+a+", left="+o+", width="+e+", height="+n),R?u():h("FailedToOpenWindow")}function s(){p&&(clearInterval(p),p=0),delete x.initialize,delete x.navigateCrossDomain}function u(){s(),p=D.setInterval(function(){if(!R||R.closed)h("CancelledByUser");else{var t=V;try{V="*",S(R,"ping")}finally{V=t}}},100),x.initialize=function(){return[F.authentication,j]},x.navigateCrossDomain=function(t){return!1}}function c(t,e){v(e,"result",t),y(F.authentication),S(W,"authentication.authenticate.success",[t]),M(W,function(){return setTimeout(function(){return D.close()},200)})}function f(t,e){v(e,"reason",t),y(F.authentication),S(W,"authentication.authenticate.failure",[t]),M(W,function(){return setTimeout(function(){return D.close()},200)})}function l(t){try{g&&g.successCallback&&g.successCallback(t)}finally{g=null,r()}}function h(t){try{g&&g.failureCallback&&g.failureCallback(t)}finally{g=null,r()}}function v(t,e,n){if(t){var i=document.createElement("a");i.href=decodeURIComponent(t),i.host&&i.host!==window.location.host&&"outlook.office.com"===i.host&&i.search.indexOf("client_type=Win32_Outlook")>-1&&(e&&"result"===e&&(n&&(i.href=d(i.href,"result",n)),D.location.assign(d(i.href,"authSuccess",""))),e&&"reason"===e&&(n&&(i.href=d(i.href,"reason",n)),D.location.assign(d(i.href,"authFailure",""))))}}function d(t,e,n){var i=t.indexOf("#"),o=i===-1?"#":t.substr(i);return o=o+"&"+e+(""!==n?"="+n:""),t=i===-1?t:t.substr(0,i),t+o}var g,p;x["authentication.authenticate.success"]=l,x["authentication.authenticate.failure"]=h,t.registerAuthenticationHandlers=e,t.authenticate=n,t.getAuthToken=i,t.getUser=o,t.notifySuccess=c,t.notifyFailure=f}(et=t.authentication||(t.authentication={}));var nt;!function(t){function e(t,e){y(F.content);var n=S(W,"tasks.startTask",[t]);K[n]=e}function n(t,e){y(F.content),S(W,"tasks.completeTask",[t,e])}t.startTask=e,t.completeTask=n}(nt=t.tasks||(t.tasks={}))}(t||(t={})),t}); |
{ | ||
"$schema": "http://json-schema.org/draft-04/schema#", | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"$schema": { | ||
"type": "string", | ||
"format": "uri" | ||
"$schema": "http://json-schema.org/draft-04/schema#", | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"$schema": { | ||
"type": "string", | ||
"format": "uri" | ||
}, | ||
"manifestVersion": { | ||
"type": "string", | ||
"description": "The version of the schema this manifest is using.", | ||
"maxLength": 16 | ||
}, | ||
"version": { | ||
"type": "string", | ||
"description": | ||
"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).", | ||
"maxLength": 256 | ||
}, | ||
"id": { | ||
"type": "string", | ||
"description": | ||
"A unique identifier for this app. This id must be a GUID.", | ||
"pattern": "^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$" | ||
}, | ||
"packageName": { | ||
"type": "string", | ||
"description": | ||
"A unique identifier for this app in reverse domain notation. E.g: com.example.myapp", | ||
"maxLength": 64 | ||
}, | ||
"developer": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"name": { | ||
"type": "string", | ||
"description": "The display name for the developer.", | ||
"maxLength": 32 | ||
}, | ||
"manifestVersion": { | ||
"type": "string", | ||
"description": "The version of the schema this manifest is using.", | ||
"maxLength": 16 | ||
"websiteUrl": { | ||
"type": "string", | ||
"description": | ||
"The url to the page that provides support information for the app.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]?://" | ||
}, | ||
"version": { | ||
"type": "string", | ||
"description": "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).", | ||
"maxLength": 256 | ||
"privacyUrl": { | ||
"type": "string", | ||
"description": | ||
"The url to the page that provides privacy information for the app.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]?://" | ||
}, | ||
"id": { | ||
"type": "string", | ||
"description": "A unique identifier for this app. This id must be a GUID.", | ||
"pattern": "^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$" | ||
"termsOfUseUrl": { | ||
"type": "string", | ||
"description": | ||
"The url to the page that provides the terms of use for the app.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]?://" | ||
} | ||
}, | ||
"required": ["name", "websiteUrl", "privacyUrl", "termsOfUseUrl"] | ||
}, | ||
"name": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"short": { | ||
"type": "string", | ||
"description": "A short display name for the app.", | ||
"maxLength": 30 | ||
}, | ||
"packageName": { | ||
"type": "string", | ||
"description": "A unique identifier for this app in reverse domain notation. E.g: com.example.myapp", | ||
"maxLength": 64 | ||
"full": { | ||
"type": "string", | ||
"description": | ||
"The full name of the app, used if the full app name exceeds 30 characters.", | ||
"maxLength": 100 | ||
} | ||
}, | ||
"required": ["short"] | ||
}, | ||
"description": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"short": { | ||
"type": "string", | ||
"description": | ||
"A short description of the app used when space is limited. Maximum length is 80 characters.", | ||
"maxLength": 80 | ||
}, | ||
"developer": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"name": { | ||
"type": "string", | ||
"description": "The display name for the developer.", | ||
"maxLength": 32 | ||
}, | ||
"websiteUrl": { | ||
"type": "string", | ||
"description": "The url to the page that provides support information for the app.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]?://" | ||
}, | ||
"privacyUrl": { | ||
"type": "string", | ||
"description": "The url to the page that provides privacy information for the app.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]?://" | ||
}, | ||
"termsOfUseUrl": { | ||
"type": "string", | ||
"description": "The url to the page that provides the terms of use for the app.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]?://" | ||
} | ||
}, | ||
"required": [ | ||
"name", | ||
"websiteUrl", | ||
"privacyUrl", | ||
"termsOfUseUrl" | ||
] | ||
"full": { | ||
"type": "string", | ||
"description": | ||
"The full description of the app. Maximum length is 4000 characters.", | ||
"maxLength": 4000 | ||
} | ||
}, | ||
"required": ["short", "full"] | ||
}, | ||
"icons": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"outline": { | ||
"type": "string", | ||
"description": | ||
"A relative file path to a transparent PNG outline icon. The border color needs to be white. Size 20x20.", | ||
"maxLength": 2048 | ||
}, | ||
"name": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"short": { | ||
"type": "string", | ||
"description": "A short display name for the app.", | ||
"maxLength": 30 | ||
}, | ||
"full": { | ||
"type": "string", | ||
"description": "The full name of the app, used if the full app name exceeds 30 characters.", | ||
"maxLength": 100 | ||
} | ||
}, | ||
"required": [ | ||
"short" | ||
] | ||
"color": { | ||
"type": "string", | ||
"description": | ||
"A relative file path to a full color PNG icon. Size 96x96.", | ||
"maxLength": 2048 | ||
} | ||
}, | ||
"required": ["outline", "color"] | ||
}, | ||
"accentColor": { | ||
"type": "string", | ||
"description": | ||
"A color to use in conjunction with the icon. The value must be a valid HTML color code starting with '#', for example `#4464ee`.", | ||
"pattern": "^#[0-9a-fA-F]{6}$" | ||
}, | ||
"configurableTabs": { | ||
"type": "array", | ||
"description": | ||
"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.", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"configurationUrl": { | ||
"type": "string", | ||
"description": "The url to use when configuring the tab.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]://" | ||
}, | ||
"canUpdateConfiguration": { | ||
"type": "boolean", | ||
"description": | ||
"A value indicating whether an instance of the tab's configuration can be updated by the user after creation.", | ||
"default": true | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": | ||
"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.", | ||
"maxItems": 2, | ||
"items": { | ||
"enum": ["team", "groupchat"] | ||
} | ||
} | ||
}, | ||
"description": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"short": { | ||
"type": "string", | ||
"description": "A short description of the app used when space is limited. Maximum length is 80 characters.", | ||
"maxLength": 80 | ||
}, | ||
"full": { | ||
"type": "string", | ||
"description": "The full description of the app. Maximum length is 4000 characters.", | ||
"maxLength": 4000 | ||
} | ||
}, | ||
"required": [ | ||
"short", | ||
"full" | ||
] | ||
}, | ||
"icons": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"outline": { | ||
"type": "string", | ||
"description": "A relative file path to a transparent PNG outline icon. The border color needs to be white. Size 20x20.", | ||
"maxLength": 2048 | ||
}, | ||
"color": { | ||
"type": "string", | ||
"description": "A relative file path to a full color PNG icon. Size 96x96.", | ||
"maxLength": 2048 | ||
} | ||
}, | ||
"required": [ | ||
"outline", | ||
"color" | ||
] | ||
}, | ||
"accentColor": { | ||
"required": ["configurationUrl", "scopes"] | ||
} | ||
}, | ||
"staticTabs": { | ||
"type": "array", | ||
"description": | ||
"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.", | ||
"maxItems": 16, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"entityId": { | ||
"type": "string", | ||
"description": "A color to use in conjunction with the icon. The value must be a valid HTML color code starting with '#', for example `#4464ee`.", | ||
"pattern": "^#[0-9a-fA-F]{6}$" | ||
}, | ||
"configurableTabs": { | ||
"description": | ||
"A unique identifier for the entity which the tab displays.", | ||
"maxLength": 64 | ||
}, | ||
"name": { | ||
"type": "string", | ||
"description": "The display name of the tab.", | ||
"maxLength": 128 | ||
}, | ||
"contentUrl": { | ||
"type": "string", | ||
"description": | ||
"The url which points to the entity UI to be displayed in the Teams canvas.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]://" | ||
}, | ||
"websiteUrl": { | ||
"type": "string", | ||
"description": | ||
"The url to point at if a user opts to view in a browser.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]://" | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": "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.", | ||
"maxItems": 1, | ||
"description": | ||
"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. These options are non-exclusive. Currently static tabs are only supported in the 'personal' scope.", | ||
"maxItems": 2, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"configurationUrl": { | ||
"type": "string", | ||
"description": "The url to use when configuring the tab.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]://" | ||
}, | ||
"canUpdateConfiguration": { | ||
"type": "boolean", | ||
"description": "A value indicating whether an instance of the tab's configuration can be updated by the user after creation.", | ||
"default": true | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": "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.", | ||
"maxItems": 2, | ||
"items": { | ||
"enum": [ | ||
"team", | ||
"groupchat" | ||
] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"configurationUrl", | ||
"scopes" | ||
] | ||
"enum": ["team", "personal"] | ||
} | ||
} | ||
}, | ||
"staticTabs": { | ||
"required": ["entityId", "name", "contentUrl", "scopes"] | ||
} | ||
}, | ||
"bots": { | ||
"type": "array", | ||
"description": | ||
"The set of bots for this app. Currently only one bot per app is supported.", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"botId": { | ||
"type": "string", | ||
"description": | ||
"The Microsoft App ID specified for the bot in the Bot Framework portal (https://dev.botframework.com/bots)", | ||
"maxLength": 64 | ||
}, | ||
"needsChannelSelector": { | ||
"type": "boolean", | ||
"description": | ||
"This value describes whether or not the bot utilizes a user hint to add the bot to a specific channel.", | ||
"default": false | ||
}, | ||
"isNotificationOnly": { | ||
"type": "boolean", | ||
"description": | ||
"A value indicating whether or not the bot is a one-way notification only bot, as opposed to a conversational bot.", | ||
"default": false | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": "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.", | ||
"maxItems": 16, | ||
"description": | ||
"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.", | ||
"maxItems": 3, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"entityId": { | ||
"enum": ["team", "personal", "groupchat"] | ||
} | ||
}, | ||
"commandLists": { | ||
"type": "array", | ||
"maxItems": 2, | ||
"description": | ||
"The list of commands that the bot supplies, including their usage, description, and the scope for which the commands are valid. A seperate command list should be used for each scope.", | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"scopes": { | ||
"type": "array", | ||
"description": | ||
"Specifies the scopes for which the command list is valid", | ||
"maxItems": 2, | ||
"items": { | ||
"enum": ["team", "personal"] | ||
} | ||
}, | ||
"commands": { | ||
"type": "array", | ||
"maxItems": 10, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"title": { | ||
"type": "string", | ||
"description": "A unique identifier for the entity which the tab displays.", | ||
"maxLength": 64 | ||
}, | ||
"name": { | ||
"description": "The bot command name", | ||
"maxLength": 32 | ||
}, | ||
"description": { | ||
"type": "string", | ||
"description": "The display name of the tab.", | ||
"description": | ||
"A simple text description or an example of the command syntax and its arguments.", | ||
"maxLength": 128 | ||
} | ||
}, | ||
"contentUrl": { | ||
"type": "string", | ||
"description": "The url which points to the entity UI to be displayed in the Teams canvas.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]://" | ||
}, | ||
"websiteUrl": { | ||
"type": "string", | ||
"description": "The url to point at if a user opts to view in a browser.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]://" | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": "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. These options are non-exclusive. Currently static tabs are only supported in the 'personal' scope.", | ||
"maxItems": 2, | ||
"items": { | ||
"enum": [ | ||
"team", | ||
"personal" | ||
] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"entityId", | ||
"name", | ||
"contentUrl", | ||
"scopes" | ||
] | ||
"required": ["title", "description"] | ||
} | ||
} | ||
}, | ||
"required": ["scopes", "commands"] | ||
} | ||
} | ||
}, | ||
"bots": { | ||
"required": ["botId", "scopes"] | ||
} | ||
}, | ||
"connectors": { | ||
"type": "array", | ||
"description": | ||
"The set of Office365 connectors for this app. Currently only one connector per app is supported.", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"connectorId": { | ||
"type": "string", | ||
"description": | ||
"A unique identifier for the connector which matches its ID in the Connectors Developer Portal.", | ||
"maxLength": 64 | ||
}, | ||
"configurationUrl": { | ||
"type": "string", | ||
"description": "The url to use when configuring the connector.", | ||
"maxLength": 2048, | ||
"pattern": "^[Hh][Tt][Tt][Pp][Ss]://" | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": "The set of bots for this app. Currently only one bot per app is supported.", | ||
"description": | ||
"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.", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"botId": { | ||
"type": "string", | ||
"description": "The Microsoft App ID specified for the bot in the Bot Framework portal (https://dev.botframework.com/bots)", | ||
"maxLength": 64 | ||
}, | ||
"needsChannelSelector": { | ||
"type": "boolean", | ||
"description": "This value describes whether or not the bot utilizes a user hint to add the bot to a specific channel.", | ||
"default": false | ||
}, | ||
"isNotificationOnly": { | ||
"type": "boolean", | ||
"description": "A value indicating whether or not the bot is a one-way notification only bot, as opposed to a conversational bot.", | ||
"default": false | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": "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.", | ||
"maxItems": 3, | ||
"items": { | ||
"enum": [ | ||
"team", | ||
"personal", | ||
"groupchat" | ||
] | ||
} | ||
}, | ||
"commandLists": { | ||
"type": "array", | ||
"maxItems": 2, | ||
"description": "The list of commands that the bot supplies, including their usage, description, and the scope for which the commands are valid. A seperate command list should be used for each scope.", | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"scopes": { | ||
"type": "array", | ||
"description": "Specifies the scopes for which the command list is valid", | ||
"maxItems": 2, | ||
"items": { | ||
"enum": [ | ||
"team", | ||
"personal" | ||
] | ||
} | ||
}, | ||
"commands": { | ||
"type": "array", | ||
"maxItems": 10, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"title": { | ||
"type": "string", | ||
"description": "The bot command name", | ||
"maxLength": 32 | ||
}, | ||
"description": { | ||
"type": "string", | ||
"description": "A simple text description or an example of the command syntax and its arguments.", | ||
"maxLength": 128 | ||
} | ||
}, | ||
"required": [ | ||
"title", | ||
"description" | ||
] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"scopes", | ||
"commands" | ||
] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"botId", | ||
"scopes" | ||
] | ||
"enum": ["team"] | ||
} | ||
} | ||
}, | ||
"connectors": { | ||
"required": ["connectorId", "scopes"] | ||
} | ||
}, | ||
"composeExtensions": { | ||
"type": "array", | ||
"description": | ||
"The set of compose extensions for this app. Currently only one compose extension per app is supported.", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"botId": { | ||
"type": "string", | ||
"description": | ||
"The Microsoft App ID specified for the bot powering the compose extension in the Bot Framework portal (https://dev.botframework.com/bots)", | ||
"maxLength": 64 | ||
}, | ||
"canUpdateConfiguration": { | ||
"type": "boolean", | ||
"description": | ||
"A value indicating whether the configuration of a compose extension can be updated by the user.", | ||
"default": false | ||
}, | ||
"commands": { | ||
"type": "array", | ||
"description": "The set of Office365 connectors for this app. Currently only one connector per app is supported.", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"connectorId": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"id": { | ||
"type": "string", | ||
"description": "Id of the command.", | ||
"maxLength": 64 | ||
}, | ||
"title": { | ||
"type": "string", | ||
"description": "Title of the command.", | ||
"maxLength": 32 | ||
}, | ||
"description": { | ||
"type": "string", | ||
"description": "Description of the command.", | ||
"maxLength": 128 | ||
}, | ||
"initialRun": { | ||
"type": "boolean", | ||
"description": | ||
"A boolean value that indicates if the command should be run once initially with no parameter.", | ||
"default": false | ||
}, | ||
"parameters": { | ||
"type": "array", | ||
"maxItems": 5, | ||
"minItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"name": { | ||
"type": "string", | ||
"description": "A unique identifier for the connector which matches its ID in the Connectors Developer Portal.", | ||
"description": "Name of the parameter.", | ||
"maxLength": 64 | ||
}, | ||
"scopes": { | ||
"type": "array", | ||
"description": "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.", | ||
"maxItems": 1, | ||
"items": { | ||
"enum": [ | ||
"team" | ||
] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"connectorId", | ||
"scopes" | ||
] | ||
} | ||
}, | ||
"composeExtensions": { | ||
"type": "array", | ||
"description": "The set of compose extensions for this app. Currently only one compose extension per app is supported.", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"botId": { | ||
}, | ||
"title": { | ||
"type": "string", | ||
"description": "The Microsoft App ID specified for the bot powering the compose extension in the Bot Framework portal (https://dev.botframework.com/bots)", | ||
"maxLength": 64 | ||
"description": "Title of the parameter.", | ||
"maxLength": 32 | ||
}, | ||
"description": { | ||
"type": "string", | ||
"description": "Description of the parameter.", | ||
"maxLength": 128 | ||
} | ||
}, | ||
"canUpdateConfiguration": { | ||
"type": "boolean", | ||
"description": "A value indicating whether the configuration of a compose extension can be updated by the user.", | ||
"default": false | ||
}, | ||
"commands": { | ||
"type": "array", | ||
"maxItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"id": { | ||
"type": "string", | ||
"description": "Id of the command.", | ||
"maxLength": 64 | ||
}, | ||
"title": { | ||
"type": "string", | ||
"description": "Title of the command.", | ||
"maxLength": 32 | ||
}, | ||
"description": { | ||
"type": "string", | ||
"description": "Description of the command.", | ||
"maxLength": 128 | ||
}, | ||
"initialRun": { | ||
"type": "boolean", | ||
"description": "A boolean value that indicates if the command should be run once initially with no parameter.", | ||
"default": false | ||
}, | ||
"parameters": { | ||
"type": "array", | ||
"maxItems": 5, | ||
"minItems": 1, | ||
"items": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"name": { | ||
"type": "string", | ||
"description": "Name of the parameter.", | ||
"maxLength": 64 | ||
}, | ||
"title": { | ||
"type": "string", | ||
"description": "Title of the parameter.", | ||
"maxLength": 32 | ||
}, | ||
"description": { | ||
"type": "string", | ||
"description": "Description of the parameter.", | ||
"maxLength": 128 | ||
} | ||
}, | ||
"required": [ | ||
"name", | ||
"title" | ||
] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"id", | ||
"title", | ||
"parameters" | ||
] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"botId", | ||
"commands" | ||
] | ||
"required": ["name", "title"] | ||
} | ||
} | ||
}, | ||
"required": ["id", "title", "parameters"] | ||
} | ||
} | ||
}, | ||
"permissions": { | ||
"type": "array", | ||
"description": "Specifies the permissions the app requests from users.", | ||
"maxItems": 2, | ||
"items": { | ||
"enum": [ | ||
"identity", | ||
"messageTeamMembers" | ||
] | ||
} | ||
}, | ||
"validDomains": { | ||
"type": "array", | ||
"description": "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.", | ||
"maxItems": 16, | ||
"items": { | ||
"type": "string", | ||
"maxLength": 2048 | ||
} | ||
} | ||
"required": ["botId", "commands"] | ||
} | ||
}, | ||
"required": [ | ||
"manifestVersion", | ||
"version", | ||
"id", | ||
"packageName", | ||
"developer", | ||
"name", | ||
"description", | ||
"icons", | ||
"accentColor" | ||
] | ||
} | ||
"permissions": { | ||
"type": "array", | ||
"description": "Specifies the permissions the app requests from users.", | ||
"maxItems": 2, | ||
"items": { | ||
"enum": ["identity", "messageTeamMembers"] | ||
} | ||
}, | ||
"validDomains": { | ||
"type": "array", | ||
"description": | ||
"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.", | ||
"maxItems": 16, | ||
"items": { | ||
"type": "string", | ||
"maxLength": 2048 | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"manifestVersion", | ||
"version", | ||
"id", | ||
"packageName", | ||
"developer", | ||
"name", | ||
"description", | ||
"icons", | ||
"accentColor" | ||
] | ||
} |
{ | ||
"name": "@microsoft/teams-js", | ||
"author": "Microsoft Teams", | ||
"version": "1.3.0-beta.3", | ||
"version": "1.3.0-beta.4", | ||
"description": "Microsoft Client SDK for building app for Microsoft teams", | ||
@@ -6,0 +6,0 @@ "main": "./dist/MicrosoftTeams.min.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
110959
2304