From 600801b979e4a69244d0949677816203e430c555 Mon Sep 17 00:00:00 2001 From: Charles Ji Date: Tue, 19 Mar 2024 12:46:25 -0700 Subject: [PATCH] Added WXP and app deeplinks --- .../MicrosoftTeams.Localization.schema.json | 324 +++++++++--------- teams/vDevPreview/MicrosoftTeams.schema.json | 226 +++++++++++- 2 files changed, 377 insertions(+), 173 deletions(-) diff --git a/teams/vDevPreview/MicrosoftTeams.Localization.schema.json b/teams/vDevPreview/MicrosoftTeams.Localization.schema.json index e32d7b2..2e1c0f5 100644 --- a/teams/vDevPreview/MicrosoftTeams.Localization.schema.json +++ b/teams/vDevPreview/MicrosoftTeams.Localization.schema.json @@ -1,167 +1,183 @@ { - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "additionalProperties": false, - "properties": { - "$schema": { - "type": "string", - "format": "uri" - }, - "name.short": { - "type": "string", - "maxLength": 30 - }, - "name.full": { - "type": "string", - "maxLength": 100 - }, - "description.short": { - "type": "string", - "maxLength": 80 - }, - "description.full": { - "type": "string", - "maxLength": 4000 - } - }, - "patternProperties": { - "^staticTabs\\[([0-9]|1[0-5])\\]\\.name$": { - "type": "string", - "maxLength": 128 - }, - "^bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.title$": { - "type": "string", - "maxLength": 32 - }, - "^bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.description$": { - "type": "string", - "maxLength": 128 - }, - "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.title$": { - "type": "string", - "maxLength": 32 - }, - "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.description$": { - "type": "string", - "maxLength": 128 - }, - "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.title$": { - "type": "string", - "maxLength": 32 - }, - "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.description$": { - "type": "string", - "maxLength": 128 - }, - "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.value$": { - "type": "string", - "maxLength": 512 - }, - "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.choices\\[[0-9]\\]\\.title$": { - "type": "string", - "maxLength": 128 - }, - "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title$": { - "type": "string", - "maxLength": 64 - }, - "^activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description$": { - "type": "string", - "maxLength": 128 - }, - "^activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText$": { - "type": "string", - "maxLength": 128 - }, - "^meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name$": { - "type": "string", - "maxLength": 128 - }, - "^meetingExtensionDefinition.videoFilters\\[([0-9]|1[0-5])\\]\\.name$": { - "type": "string", - "maxLength": 128 - }, - "^extensions\\[[0]\\]\\.audienceClaimUrl$": { - "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.label$": { - "type": "string", - "maxLength": 64 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.label$": { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "additionalProperties": false, + "properties": { + "$schema": { + "type": "string", + "format": "uri" + }, + "name.short": { + "type": "string", + "maxLength": 30 + }, + "name.full": { + "type": "string", + "maxLength": 100 + }, + "description.short": { + "type": "string", + "maxLength": 80 + }, + "description.full": { + "type": "string", + "maxLength": 4000 + } + }, + "patternProperties": { + "^staticTabs\\[([0-9]|1[0-5])\\]\\.name$": { + "type": "string", + "maxLength": 128 + }, + "^bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.title$": { "type": "string", "maxLength": 32 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-8]\\]\\.url$": { - "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.icons\\[[0-2]\\]\\.url$": { - "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.label$": { + }, + "^bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.description$": { "type": "string", - "maxLength": 64 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url$": { - "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.label$": { - "type": "string", - "maxLength": 64 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.title$": { + "maxLength": 128 + }, + "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.title$": { "type": "string", - "maxLength": 64 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.description$": { - "type": "string", - "maxLength": 250 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url$": { + "maxLength": 32 + }, + "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.description$": { "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.label$": { + "maxLength": 128 + }, + "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.title$": { "type": "string", - "maxLength": 64 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.title$": { - "type": "string", - "maxLength": 64 - }, - "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.description$": { + "maxLength": 32 + }, + "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.description$": { "type": "string", - "maxLength": 250 - }, - "^extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.page$": { + "maxLength": 128 + }, + "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.value$": { "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.script$": { + "maxLength": 512 + }, + "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.choices\\[[0-9]\\]\\.title$": { "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.actions\\[[1]?[0-9]\\]\\.displayName$": { + "maxLength": 128 + }, + "^composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title$": { "type": "string", "maxLength": 64 - }, - "^extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.icon\\.url$": { - "type": "string", - "maxLength": 2048 - }, - "^extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.highResolutionIcon\\.url$": { - "type": "string", - "maxLength": 2048 - } - }, - "required": [ - "name.short", - "name.full", - "description.short", - "description.full" - ] + }, + "^activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description$": { + "type": "string", + "maxLength": 128 + }, + "^activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText$": { + "type": "string", + "maxLength": 128 + }, + "^meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name$": { + "type": "string", + "maxLength": 128 + }, + "^meetingExtensionDefinition.videoFilters\\[([0-9]|1[0-5])\\]\\.name$": { + "type": "string", + "maxLength": 128 + }, + "^extensions\\[[0]\\]\\.audienceClaimUrl$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.label$": { + "type": "string", + "maxLength": 64 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.label$": { + "type": "string", + "maxLength": 32 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-8]\\]\\.url$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.icons\\[[0-2]\\]\\.url$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.label$": { + "type": "string", + "maxLength": 64 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.label$": { + "type": "string", + "maxLength": 64 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.title$": { + "type": "string", + "maxLength": 64 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.description$": { + "type": "string", + "maxLength": 250 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.label$": { + "type": "string", + "maxLength": 64 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.title$": { + "type": "string", + "maxLength": 64 + }, + "^extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.description$": { + "type": "string", + "maxLength": 250 + }, + "^extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.page$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.script$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.actions\\[[1]?[0-9]\\]\\.displayName$": { + "type": "string", + "maxLength": 64 + }, + "^extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.icon\\.url$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.highResolutionIcon\\.url$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.getStartedMessages\\[[0-2]\\]\\.title$": { + "type": "string", + "maxLength": 125 + }, + "^extensions\\[[0]\\]\\.getStartedMessages\\[[0-2]\\]\\.description$": { + "type": "string", + "maxLength": 250 + }, + "^extensions\\[[0]\\]\\.getStartedMessages\\[[0-2]\\]\\.learnMoreUrl$": { + "type": "string", + "maxLength": 2048 + }, + "^extensions\\[[0]\\]\\.contentRuntimes\\[[1]?[0-9]\\]\\.code\\.page$": { + "type": "string", + "maxLength": 2048 + } + }, + "required": [ + "name.short", + "name.full", + "description.short", + "description.full" + ] } \ No newline at end of file diff --git a/teams/vDevPreview/MicrosoftTeams.schema.json b/teams/vDevPreview/MicrosoftTeams.schema.json index 7769deb..63909f5 100644 --- a/teams/vDevPreview/MicrosoftTeams.schema.json +++ b/teams/vDevPreview/MicrosoftTeams.schema.json @@ -1313,6 +1313,18 @@ "audienceClaimUrl": { "$ref": "#/definitions/httpsUrl", "description": "The url for your extension, used to validate Exchange user identity tokens." + }, + "appDeeplinks": { + "$ref": "#/definitions/extensionAppDeeplinksArray" + }, + "contentRuntimes": { + "$ref": "#/definitions/extensionContentRuntimeArray" + }, + "getStartedMessages": { + "$ref": "#/definitions/extensionGetStartedMessageArray" + }, + "contextMenus": { + "$ref": "#/definitions/extensionContextMenuArray" } }, "additionalProperties": false @@ -1352,12 +1364,15 @@ }, "scopes": { "type": "array", - "description": "Identifies the scopes in which the add-in can run. Currently the only supported enum value is mail. This effectively defines the Office applications in which the extension can run. For example, mail means Outlook.", - "maxItems": 1, + "description": "Identifies the scopes in which the add-in can run. For example, mail means Outlook.", + "maxItems": 4, "items": { "type": "string", "enum": [ - "mail" + "mail", + "workbook", + "document", + "presentation" ] } }, @@ -1402,21 +1417,7 @@ "description": "Supports running functions and launching pages." }, "code": { - "type": "object", - "properties": { - "page": { - "$ref": "#/definitions/httpsUrl", - "description": "URL of the .html page to be loaded in browser-based runtimes." - }, - "script": { - "$ref": "#/definitions/httpsUrl", - "description": "URL of the .js script file to be loaded in UI-less runtimes." - } - }, - "additionalProperties": false, - "required": [ - "page" - ] + "$ref": "#/definitions/extensionRuntimeCode" }, "lifetime": { "type": "string", @@ -2186,6 +2187,193 @@ ] } }, + "extensionAppDeeplinksArray": { + "type": "array", + "description": "Represents the copilot extension point", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "requirements": { + "type": "object", + "$ref": "#/definitions/requirementsExtensionElement" + }, + "contexts": { + "type": "array", + "$ref": "#/definitions/extensionContexts" + }, + "actionId": { + "type": "string", + "description": "The ID of an action defined in runtimes. Manifest should be invalidated if no action with an id matching actionId is present in runtimes.", + "maxLength": 64 + }, + "label": { + "type": "string", + "description": "the text that will be shown on the app as a clickable item.", + "maxLength": 64 + }, + "semanticDescription": { + "type": "string", + "description": "the text metadata, for recommendation engine.", + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "contexts", + "actionId", + "label", + "semanticDescription" + ] + } + }, + "extensionContentRuntimeArray": { + "type": "array", + "description": "Content runtime is for 'ContentApp', which can be embedded directly into Excel or PowerPoint documents.", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "requirements": { + "type": "object", + "$ref": "#/definitions/requirementsExtensionElement" + }, + "id": { + "type": "string", + "description": "A unique identifier for this runtime within the app. This is developer specified.", + "maxLength": 64 + }, + "code": { + "$ref": "#/definitions/extensionRuntimeCode" + }, + "requestedHeight": { + "type": "number", + "description": "The desired height in pixels for the initial content placeholder. This value MUST be between 32 and 1000 pixels. Default value will be determined by host.", + "minimum": 32, + "maximum": 1000 + }, + "requestedWidth": { + "type": "number", + "description": "The desired width in pixels for the initial content placeholder. This value MUST be between 32 and 1000 pixels. Default value will be determined by host.", + "minimum": 32, + "maximum": 1000 + }, + "disableSnapshot": { + "type": "boolean", + "description": "Specifies whether a snapshot image of your content add-in is saved with the host document. Default value is false. Set true to disable.", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "id", + "code" + ] + } + }, + "extensionGetStartedMessageArray": { + "type": "array", + "description": "Provides information used by the callout that appears when the add-in is installed.", + "minItems": 1, + "maxItems": 3, + "items": { + "type": "object", + "properties": { + "requirements": { + "type": "object", + "$ref": "#/definitions/requirementsExtensionElement" + }, + "title": { + "type": "string", + "description": "The title used for the top of the callout.", + "maxLength": 125 + }, + "description": { + "type": "string", + "description": "The description/body content for the callout.", + "maxLength": 250 + }, + "learnMoreUrl": { + "$ref": "#/definitions/httpsUrl", + "description": "A URL to a page that explains the add-in in detail." + } + }, + "additionalProperties": false, + "required": [ + "title", + "description", + "learnMoreUrl" + ] + } + }, + "extensionRuntimeCode": { + "type": "object", + "properties": { + "page": { + "$ref": "#/definitions/httpsUrl", + "description": "URL of the .html page to be loaded in browser-based runtimes." + }, + "script": { + "$ref": "#/definitions/httpsUrl", + "description": "URL of the .js script file to be loaded in UI-less runtimes." + } + }, + "additionalProperties": false, + "required": [ + "page" + ] + }, + "extensionContextMenuArray": { + "type": "array", + "description": "A shortcut menu that appears when you right-click in the Office UI.", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "requirements": { + "type": "object", + "$ref": "#/definitions/requirementsExtensionElement" + }, + "menus": { + "$ref": "#/definitions/extensionMenuItem" + } + }, + "additionalProperties": false, + "required": [ + "menus" + ] + } + }, + "extensionMenuItem": { + "type": "array", + "description": "The title used for the top of the callout.", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "entryPoint": { + "type": "string", + "description": "Use text or cell here for Office context menu. Use text if the context menu should open when a user right-clicks on the selected text. Use cell if the context menu should open when the user right-clicks on a cell on an Excel spreadsheet.", + "enum": [ + "text", + "cell" + ] + }, + "controls": { + "type": "array", + "items": { + "$ref": "#/definitions/extensionCommonCustomGroupControlsItem" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "entryPoint", + "controls" + ] + } + }, "elementActions": { "type": "array", "description": "Actions node contains an array of actions object.", @@ -2500,4 +2688,4 @@ "additionalProperties": false } } -} +} \ No newline at end of file