Service | Microsoft Docs article | Related commit history on GitHub | Change details |
---|---|---|---|
platform | Bot Features | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/bot-features.md | Bots work better in a channel in the following cases: Group chats are non-threaded conversations between three or more people. They tend to have fewer members than a channel and are more transient. Similar to a channel, your bot only has access to messages where it's `@mentioned` directly. -In the cases where bots work better in a channel also work better in a group chat. +Bots that work better in a channel also work better in a group chat. ### In a one-to-one chat protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivi ```javascript this.onMessage(async (context, next) => { // MessageFactory.text(): Specifies the type of text data in a message attachment.- await context.sendActivity(MessageFactory.text("Your message is:" + context.activity.text)); + await context.sendActivity(MessageFactory.text("Your message is: " + context.activity.text)); await next(); }); ``` this.onMessage(async (context, next) => { |Sample name | Description | .NETCore | Node.js | Python| Manifest |-|--|--|-|-|-| | Teams conversation bot | This sample app shows how to use different bot conversation events available in bot framework v4. |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/csharp)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/nodejs)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/bot-conversation/python)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/bot-conversation/csharp/demo-manifest/bot-conversation.zip)|-| Bot samples | Set of bot framework v4 samples | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples) |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples#bots-samples-using-the-v4-sdk)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples#bots-samples-using-the-v4-sdk)| +| Bot samples | Set of bot framework v4 samples. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples) |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples#bots-samples-using-the-v4-sdk)|[View](https://github.com/OfficeDev/Microsoft-Teams-Samples#bots-samples-using-the-v4-sdk)| ## Next step |
platform | What Are Bots | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/what-are-bots.md | You can use the Teams bot APIs to get information for members of a chat or team. :::image type="content" source="~/assets/images/bots/bot-icon-frame-work.png" alt-text="Screenshot of the Bot Framework Portal to update bot icons." lightbox="~/assets/images/bots/bot-icon-frame-work.png"::: + ## Add SSO authentication to your conversation bots You can add single sign-on authentication to your conversation bot using the following steps: |
platform | Apps Localization | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/build-and-test/apps-localization.md | Title: App Localization - Factors to Consider description: Learn considerations for localizing your Microsoft Teams app, localize strings in your app manifest, and handle localized text submissions from your users. ms.localizationpriority: medium Previously updated : 05/15/2018 Last updated : 10/17/2024 # Localize your app Add the `localizationInfo` property with the default language that your applicat > [!NOTE] > Manifest version must be same for both manifest.json and localization.json files. +Starting with app manifest v1.19, Copilot agents are also localizable. For more information, see [Localizing your agent](/microsoft-365-copilot/extensibility/agents-are-apps#localizing-your-agent) in Microsoft 365 Copilot extensibility documentation. + ### Example manifest.json change The following `manifest.json` helps to add the `localizationInfo` property with the default language that your application supports along with `additionalLanguages`: |
platform | Requirements Targeting | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/requirements-targeting.md | +### Specify host runtime requirements (developer preview) ++To ensure your app always provides customers with high-quality experiences, you can tailor your app's behavior in applicable Microsoft 365 hosts, or omit it from surfacing in contexts that you're not ready to support. Use app manifest to specify any [dependency relationships](../m365-apps/specify-runtime-requirements.md#specify-relationships-between-app-capabilities-elementrelationshipset) across capabilities of your app, and specific [runtime requirements](../m365-apps/specify-runtime-requirements.md#specify-runtime-requirements-for-specific-app-capabilities-requirementset) of your static tabs, message extensions, and bots. ++For more information, see [how to specify Microsoft 365 host runtime requirements in your app manifest](../m365-apps/specify-runtime-requirements.md). |
platform | Cards Loop Component | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/cards-loop-component.md | Last updated 10/11/2024 # Adaptive Card-based Loop components > [!NOTE]-> -> * Adaptive Card-based Loop components require Adaptive Card schema version 1.6 or later. -> * Adaptive Card-based Loop components aren't available in Microsoft Teams and Microsoft Outlook on macOS and mobile clients. +> Adaptive Card-based Loop components aren't available in Microsoft Teams and Microsoft Outlook on macOS and mobile clients. Adaptive Card-based Loop components enable you to build collaborative experiences within your Teams message extensions that work across Microsoft 365. Adaptive Card-based Loop components have actionable content that enables users to make live updates without having to switch contexts between Microsoft 365 apps, such as Teams and Outlook. |
platform | Extend M365 Teams Message Extension | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/extend-m365-teams-message-extension.md | Title: Extend Message Extension to Outlook description: Learn how to update search-based message extension to run in Outlook, add Microsoft 365 channel for bot, and update Microsoft Entra app registration for SSO. Previously updated : 01/31/2023 Last updated : 10/17/2024 Message extensions allow users to interact with your web service using buttons a Outlook mobile users on Android and iOS can receive and take actions on cards from your apps that were sent to them by users on Outlook on the web and Outlook for Windows. -Teams message extension across Microsoft 365 also supports [link unfurling](../messaging-extensions/how-to/link-unfurling.md) that display cards to launch [Stageview](../tabs/tabs-link-unfurling.md) and task modules. +Teams message extension across Microsoft 365 also supports [link unfurling](../messaging-extensions/how-to/link-unfurling.md) that display cards to launch [Stageview](../tabs/tabs-link-unfurling.md) and dialogs. ## Prerequisites To extend your Teams message extension to Outlook, ensure the following: > * [A test environment with Microsoft 365 apps installed from the Microsoft 365 Apps **Current Channel**.](~/m365-apps/prerequisites.md#enroll-your-developer-tenant-for-microsoft-365-targeted-releases-optional) > * [(Optional) Microsoft Visual Studio Code with the Teams Toolkit extension.](~/m365-apps/prerequisites.md#enroll-your-developer-tenant-for-microsoft-365-targeted-releases-optional) +## Build or extend a message extension + To extend your Teams message extension to Outlook, you can either build a new message extension app with Teams Toolkit or extend an existing Teams message extension app to Outlook. # [Build a message extension app for Outlook](#tab/ttk) Open your app manifest and update the `$schema` and `manifestVersion` with the f } ``` +You can use Teams Toolkit to [validate your app manifest](../toolkit/TeamsFx-preview-and-customize-app-manifest.md#validate-your-app) and identify any errors. ++ ### Add Microsoft 365 channel for your app In Microsoft Teams, a message extension consists of a web service that you host and an app manifest, which defines where your web service is hosted. The web service takes the advantage of [Bot Framework SDK](/azure/bot-service/bot-service-overview) messaging schema and secure communication protocol through a Teams channel registered for your bot. Microsoft Entra single sign-on (SSO) for message extensions works the same way i -### Upload your custom app in Teams +## Upload your custom app in Teams Upload your updated message extension ([app package](/microsoftteams/platform/concepts/build-and-test/apps-package)) into Teams. After you complete, message extension appears in your installed **Apps** from the compose message area. Upload your updated message extension ([app package](/microsoftteams/platform/co After it's uploaded through Teams, your message extension is available in Outlook for Windows desktop and web. -### Preview your message extension in Outlook +## Preview your message extension in Outlook Here's how to test your message extension running in Outlook on the web. To preview your app running in Outlook on the web, follow these steps: |
platform | Extend M365 Teams Personal Tab | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/extend-m365-teams-personal-tab.md | Title: Extend Personal Tab to Microsoft 365 description: Learn how to update personal tab app to run in Outlook and Microsoft 365 app, configure Content Security Policy headers, update app registration for SSO. Previously updated : 02/28/2023 Last updated : 10/17/2024 -Personal tabs provide a great way to enhance the Microsoft Teams experience. Using personal tabs, you can provide a user access to their application right within Teams, without the user having to leave the experience or sign in again. With this preview, personal tabs can light up within other Microsoft 365 applications too. This tutorial demonstrates the process of taking an existing Teams personal tab and updating it to run in both Outlook and Microsoft 365 app (desktop and web experiences), and the Microsoft 365 for Android app too. +Personal tabs provide a great way to enhance the Microsoft Teams experience. Using personal tabs, you can provide a user access to their application right within Teams, without the user having to leave the experience or sign in again. Personal tabs can light up within other Microsoft 365 applications too. This tutorial demonstrates the process of taking an existing Teams personal tab and updating it to run across Microsoft 365 applications. Updating your Teams personal app to run in other Microsoft 365 applications involves these steps: Open your app manifest and update the `$schema` and `manifestVersion` manually w -If you used Teams Toolkit to create your personal app, you can also use it to validate the changes to your app manifest file and identify any errors. Open the command palette (`Ctrl+Shift+P`) and find **Teams: Validate manifest file**. +You can use Teams Toolkit to [validate your app manifest](../toolkit/TeamsFx-preview-and-customize-app-manifest.md#validate-your-app) and identify any errors. + ## Update TeamsJS references |
platform | Specify Runtime Requirements | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/m365-apps/specify-runtime-requirements.md | + + Title: Specify App Runtime Requirements +description: Specify app runtime requirements, such as one-way or mutual dependencies and capabilities, to tailor user experience in different Microsoft 365 hosts. Last updated : 10/17/2024++++ms.localizationpriority: medium +++# Specify Microsoft 365 host runtime requirements in app manifest ++> [!NOTE] +> +> The ability to specify Microsoft 365 host runtime requirements in app manifest (previously called Teams app manifest) is in [public developer preview](../resources/schem). ++When you upgrade your Microsoft Teams personal tab or message extension app to use app manifest version 1.13 or later, it's available in other Microsoft 365 application hosts by default. However, if your app also includes capabilities not yet supported in certain hosts, your app might only partially load, resulting in unplanned user experiences. ++For example, consider an app that is defined with app manifest schema version 1.17 and includes a bot and a configuration tab that represents the bot's settings. The app would load in Outlook and Microsoft 365 (Office) app, but only surface the bot configuration tab to the user without the bot itself. ++To ensure that high-quality app experiences reach your intended user base, specify your app's runtime requirements in app manifest. This allows you to tailor its behavior in applicable Microsoft 365 hosts, or omit it from surfacing in contexts you're not ready to support. ++Specifying your app's runtime requirements is useful in scenarios such as: ++- **One-way dependencies**: When the sole purpose of one app capability is to support another capability in your app, you can ensure it only surfaces if the primary app capability is loaded. For example, if your app includes both a tab and message extension, and the tab functions as a settings page for users to configure message extension functionality, you can specify that the settings tab doesn't load in hosts that don't support your message extension. ++- **Mutual dependencies:** When your app has specific app capabilities that must be loaded together to function properly, you can ensure your app is *only available* in Microsoft 365 hosts that support all capabilities. For example, if tab, bot, and message extension capabilities all work together to support a core user scenario in your app, you can specify that those capabilities are always loaded together, or not at all. ++- **Capability requirements:** When your app has capabilities with runtime requirements that aren't supported across specific Microsoft 365 hosts, you can ensure those capabilities are *seamlessly omitted* (rather than loaded, but not functional) from your app experience running in those hosts. For example, if your app includes a tab-based dashboard view of items that can each be opened as a dialog, and each dialog contains information that is then submitted to a bot, you can specify that bot-based dialogs are core capabilities required for your app to load in a given host. ++## Microsoft 365 host support ++The following Microsoft 365 host applications support the ability to specify runtime requirements in app manifest: ++|Microsoft 365 host application| Web | Desktop | Mobile | +||||| +| Teams| ✔️| ✔️| ✔️| +| Outlook| ✔️| ✔️ (New Outlook only)| ✔️| +| Microsoft 365 (Office)| | | | +| Microsoft 365 Copilot | | | | ++## Specify relationships between app capabilities (`elementRelationshipSet`) ++You can specify relationships among the individual capabilities of your app by including an `elementRelationshipSet` in your app manifest. Use this object to specify both [one-way dependencies](#one-way-dependencies) and [mutual dependencies](#mutual-dependencies) among app capabilities. ++The following app manifest capabilities can be specified as having one-way or mutual dependencies: ++- Tabs: personal (`staticTabs`) and configurable (`configurableTabs`) +- Message extensions (`composeExtensions`), including individual commands +- Bots (`bots`) ++Each app capability is defined by the newly introduced property, `id`, which maps to `botId` for bots, `entityId` for static tabs, and `id` for configurable tabs and message extensions. Teams and other Microsoft 365 hosts support apps that contain either a single configurable tab, a single message extension, or both. The `id` property future-proofs your app if host support expands to accommodate multiple instances of these capabilities. ++> [!IMPORTANT] +> Ensure the relationships you create adhere to the following validation rules: +> +> 1. Elements specified under `elementRelationshipSet` must have definitions in app manifest. For example, an `element` or `commandId` listed in the `dependsOn` section of a `oneWayDependencies` object that doesn't have a corresponding definition in app manifest (with a matching `id` value) results in a manifest validation error. The `id` property must be specified in a `configurableTab` or a `composeExtension` to be recognized in an `elementRelationshipSet`. +> 1. A given set of capabilities can only be grouped by a `mutualDependency` or `oneWayDependency`, but not both. For example, specifying both a one-way dependency (*A* depends on *B*) and a mutual dependency (*A* and *B* depend on each other) results in a manifest validation error, because the *A depends on B* relationship is represented twice. +> 1. Cyclical one-way dependencies aren't permitted. For example, specifying both an *A depends on B* relationship and a *B depends on A* relationship results in a manifest validation error. ++### One-way dependencies ++Use the `oneWayDependencies` array to describe cases where one component of your app depends upon another component. For each object in the array, specify the dependent component (`element`) and the component it depends on (`dependsOn`). You can also specify individual commands that require support for specific app capabilities. If those capabilities aren't supported in the runtime host, they aren't made available to the user (though all other commands run). ++ The following JSON snippet shows specific message extension commands that have a one-way dependency on a bot: ++```json + "elementRelationshipSet": { + "oneWayDependencies" : [ + { + "element" : { + "name" : "composeExtensions", + "id" : "composeExtension-id", + "commandIds": ["exampleCmd1", "exampleCmd2"] + }, + "dependsOn" : [ + {"name" : "bots", "id" : "bot-id"} + ] + } + ] + } +``` ++### Mutual dependencies ++Use the `mutualDependencies` array to group app capabilities that must load together to support their intended function. Each object in the array represents a set of mutually dependent app capabilities. The following JSON snippet shows a bot, static tab, message extension, and configurable tab that are mutually dependent on each other: ++```json + "elementRelationshipSet": { + "mutualDependencies" : [ + [ + {"name" : "bots", "id" : "bot-id"}, + {"name" : "staticTabs", "id" : "staticTab-id"}, + {"name" : "composeExtensions", "id" : "composeExtension-id"}, + {"name" : "configurableTabs", "id": "configurableTab-id"} + ] + ] + }, +``` ++## Specify runtime requirements for specific app capabilities (`requirementSet`) ++Within individual app capability definitions, you can specify specific TeamsJS runtime requirements using a [`requirementSet`](../resources/schem#statictabsrequirementset). This ensures that the app capability only loads in Microsoft 365 hosts with support for the critical TeamsJS capabilities. ++The following TeamsJS capabilities can be specified as runtime requirements for [`staticTabs`](../resources/schem#botsrequirementset): ++- HTML-based dialogs ([`dialog.url`](/javascript/api/@microsoft/teams-js/dialog.url)) +- HTML-based dialogs for Bot Framework ([`dialog.url.bot`](/javascript/api/@microsoft/teams-js/dialog.url.bot)) +- Adaptive Card dialogs ([`dialog.adaptiveCard`](/javascript/api/@microsoft/teams-js/dialog.adaptivecard)) +- Adaptive Card dialogs for Bot Framework ([`dialog.adaptiveCard.bot`](/javascript/api/@microsoft/teams-js/dialog.adaptivecard.bot)) ++The following JSON snippet shows a static tab that requires its host to support HTML dialogs (referred to as task modules in TeamsJS v1.x) invoked from tabs and bots: ++```json + "staticTabs": [ + { + "entityId": "idForPage", + "name": "Display name of tab", + "contentUrl": "https://contoso.com/content?host=msteams", + "contentBotId": "Specifies to the app that tab is an Adaptive Card Tab. You can either provide the contentBotId or contentUrl.", + "websiteUrl": "https://contoso.com/content", + "scopes": [ + "personal" + ], + "requirementSet": { + "hostMustSupportFunctionalities": [ + {"name": "dialogUrl"}, + {"name": "dialogUrlBot"} + ] + } + } + ], +``` ++## Code samples ++| Sample name | Description | JavaScript | +|-|--|--| +| Requirements targeting: One-way dependency | Sample app demonstrating how to specify one-way dependency relationships between app capabilities. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/requirement-targeting-oneway-dependency/nodejs) | +| Requirements targeting: Mutual dependency | Sample app demonstrating how to specify mutual dependency relationships between app capabilities. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/requirement-targeting-mutual-dependency/nodejs) ++## See also ++- [Developer preview app manifest schema](../resources/schem) +- [Extend Teams apps across Microsoft 365](overview.md) +- [Build dialogs](/microsoftteams/platform/task-modules-and-cards/what-are-task-modules) +- [Use TeamsJS to differentiate your app experience](../tabs/how-to/using-teams-client-library.md#differentiate-your-app-experience) |
platform | Localization Schema | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/localization-schema.md | Title: Localize JSON Schema Properties -description: Learn about the localization JSON schema supported by the localization file for Microsoft Teams including schema properties and versions. + Title: Localize JSON Schema Reference +description: Describes the localization schema supported by the localization file for Microsoft Teams using an example schema ms.localizationpriority: medium Previously updated : 05/20/2019 Last updated : 10/17/2024 # Localize JSON schema reference -The Microsoft Teams localization file describes language translations that are served based on the client language settings. Your file must conform to the schema hosted at [`https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.Localization.schema.json`](https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.Localization.schema.json). +The Microsoft Teams localization file describes language translations that are served based on the client language settings. Your file must conform to the schema hosted at [https://developer.microsoft.com/en-us/json-schemas/teams/v1.19/MicrosoftTeams.Localization.schema.json](https://developer.microsoft.com/en-us/json-schemas/teams/v1.19/MicrosoftTeams.Localization.schema.json). > [!TIP]-> Specify the schema at the beginning of your manifest to enable `IntelliSense` or similar support from your code editor: `"$schema": "<https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json>". +> Specify the schema at the beginning of your manifest to enable `IntelliSense` or similar support from your code editor: `"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.19/MicrosoftTeams.schema.json".` ## Example -Example of localization JSON schema v1.16 is as follows: +Example of localization JSON schema v1.19 is as follows: ```json {- "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.Localization.schema.json", + "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.19/MicrosoftTeams.Localization.schema.json", "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: |`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification.|| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you".||-|`meetingExtensionDefinition.scenes \\[[0-9]\\]\\.name$`|String|128|Replaces the corresponding strings from the app manifest. | +|`\\[\\[[a-zA-Z_][a-zA-Z0-9_]*\\]\\]`|String|4000| Represents custom tokenized keys, for example with [localized Copilot agents](/microsoft-365-copilot/extensibility/agents-are-apps#localizing-your-agent).|| +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest. || +|`extensions\\[[0]\\]\\.audienceClaimUrl$`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.label`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-8]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.label`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.icons\\[[0-2]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.description`|String|250|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.description`|String|250|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.page`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.script`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.actions\\[[1]?[0-9]\\]\\.displayName`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.icon\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.highResolutionIcon\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| <br> +<details><summary>Localization schema v1.17</summary> ++## Localization schema v1.17 ++Link to localization schema v1.17: [https://developer.microsoft.com/en-us/json-schemas/teams/v1.17/MicrosoftTeams.Localization.schema.json](https://developer.microsoft.com/en-us/json-schemas/teams/v1.17/MicrosoftTeams.Localization.schema.json) ++Example: ++```json +{ + "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.17/MicrosoftTeams.Localization.schema.json", + "name.short": "Portail de Développement", + "name.full": "Portail des développeurs", + "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "staticTabs[0].name": "Accueil", + "staticTabs[1].name": "Applications", + "staticTabs[2].name": "Outils", + "staticTabs[3].name": "Developer Portal", + "bots[0].commandLists[0].commands[0].title": "Rechercher", + "bots[0].commandLists[0].commands[0].description": "Rechercher la documentation Teams appropriée" +} +``` ++The schema defines the following properties: ++|Property|Type|Maximum length|Description|Required| +||--|||-| +|`$schema`|URI|NA|The `https://` URL referencing the JSON Schema for the manifest.|| +|`name.short`|String|30|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`name.full`|String|100|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`description.short`|String|80|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`description.full`|String|4000|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`staticTabs\\[([0-9]/1[0-5])\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.title`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.description`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.title`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.description`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.title`|String|32|Replaces the corresponding string from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.description`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.value`|String|512|Replaces the corresponding string from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.choices\\[[0-9]\\]\\.title`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.samplePrompts\\[[0-4]\\]\\.text`|String|128|Content for the sample prompt.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification.|| +|`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you".|| +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest. || +|`extensions\\[[0]\\]\\.audienceClaimUrl$`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.label`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-8]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.customMobileRibbonGroups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.label`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.icons\\[[0-2]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.supertip\\.description`|String|250|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.icons\\[[0-2]\\]\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.label`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.ribbons\\[[0-9]\\]\\.tabs\\[[1]?[0-9]\\]\\.groups\\[[0-9]\\]\\.controls\\[[1]?[0-9]\\]\\.items\\[[1]?[0-9]\\]\\.supertip\\.description`|String|250|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.page`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.code\\.script`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.runtimes\\[[1]?[0-9]\\]\\.actions\\[[1]?[0-9]\\]\\.displayName`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.icon\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`extensions\\[[0]\\]\\.alternates\\[[0-9]\\]\\.alternateIcons\\.highResolutionIcon\\.url`|String|2048|Replaces the corresponding strings from the app manifest with the value provided here.|| ++</details> +<br/> ++<details><summary>Localization schema v1.16</summary> ++## Localization schema v1.16 ++Link to localization schema v1.16: [https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.Localization.schema.json](https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.Localization.schema.json) ++Example: ++```json +{ + "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.Localization.schema.json", + "name.short": "Portail de Développement", + "name.full": "Portail des développeurs", + "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "staticTabs[0].name": "Accueil", + "staticTabs[1].name": "Applications", + "staticTabs[2].name": "Outils", + "staticTabs[3].name": "Developer Portal", + "bots[0].commandLists[0].commands[0].title": "Rechercher", + "bots[0].commandLists[0].commands[0].description": "Rechercher la documentation Teams appropriée" +} +``` ++The schema defines the following properties: ++|Property|Type|Maximum length|Description|Required| +||--|||-| +|`$schema`|URI|NA|The `https://` URL referencing the JSON Schema for the manifest.|| +|`name.short`|String|30|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`name.full`|String|100|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`description.short`|String|80|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`description.full`|String|4000|Replaces the corresponding string from the app manifest with the value provided here. The property is required in the localization JSON.|✔️| +|`staticTabs\\[([0-9]/1[0-5])\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.title`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`bots\\[0\\]\\.commandLists\\[[0-2]\\]\\.commands\\[[0-9]\\]\\.description`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.title`|String|32|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.description`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.title`|String|32|Replaces the corresponding string from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.description`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.value`|String|512|Replaces the corresponding string from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.parameters\\[[0-4]\\]\\.choices\\[[0-9]\\]\\.title`|String|128|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.samplePrompts\\[[0-4]\\]\\.text`|String|128|Content for the sample prompt.|| +|`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.|| +|`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification.|| +|`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you".|| +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest.|| ++</details> +<br/> + <details><summary>Localization schema v1.15</summary> ## Localization schema v1.15 Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: |`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you"|-|`meetingExtensionDefinition.scenes \\[[0-9]\\]\\.name$`|String|128| Replaces the corresponding strings from the app manifest. | +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128| Replaces the corresponding strings from the app manifest.|| </details> <br/> Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: |`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you"|-|`meetingExtensionDefinition.scenes \\[[0-9]\\]\\.name$`|String|128|Replaces the corresponding strings from the app manifest. | +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest. | </details> <br/> Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: |`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you"|-|`meetingExtensionDefinition.scenes \\[[0-9]\\]\\.name$`|String|128|Replaces the corresponding strings from the app manifest. | +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest. | </details> <br/> Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: |`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you"|-|`meetingExtensionDefinition.scenes \\[[0-9]\\]\\.name$`|String|128|Replaces the corresponding strings from the app manifest. | +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest. | </details> <br/> Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: |`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you"|-|`meetingExtensionDefinition.scenes \\[[0-9]\\]\\.name$`|String|128|Replaces the corresponding strings from the app manifest. | +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest. | </details> <br/> Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: |`composeExtensions\\[0\\]\\.commands\\[[0-9]\\]\\.taskInfo\\.title`|String|64|Replaces the corresponding strings from the app manifest with the value provided here.| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.description`|String|128|A brief description of the notification| |`activities.activityTypes\\[\\b([0-9]|[1-8][0-9]|9[0-9]|1[01][0-9]|12[0-7])\\b]\\.templateText`|String|128|Ex: "{actor} created task {taskId} for you"|-|`meetingExtensionDefinition.scenes \\[[0-9]\\]\\.name$`|String|128|Replaces the corresponding strings from the app manifest. | +|`meetingExtensionDefinition.scenes\\[[0-9]\\]\\.name`|String|128|Replaces the corresponding strings from the app manifest. | </details> <br/> Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", Example: "name.short": "Portail de Développement", "name.full": "Portail des développeurs", "description.short": "Configurer, distribuer et gérer vos applications Microsoft Teams",- "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", + "description.full": "Anciennement App Studio, le portail des développeurs peut vous aider où que vous soyez dans votre parcours de développement d’applications Microsoft Teams.1. Configurez une nouvelle application ou importez une application existante.2. Configurez les fonctionnalités de votre application et d’autres métadonnées importantes.3. Obtenez des ressources pour vous aider à créer une application de haute qualité.3. Testez votre application directement dans Teams.4. Distribuez votre application dans votre organisation ou dans le Store Teams.5. Analysez l’utilisation, l’engagement et d’autres informations sur votre application. Le portail inclut également des outils pour concevoir des scènes virtuelles personnalisées, des cartes adaptatives et l’intégration à la Plateforme d’identités Microsoft.", "staticTabs[0].name": "Accueil", "staticTabs[1].name": "Applications", "staticTabs[2].name": "Outils", The schema defines the following properties: ## See also * [Localize your app](~/concepts/build-and-test/apps-localization.md)-* [App manifest](manifest-schema.md) +* [App manifest](manifest-schema.md) |
platform | Manifest Schema Dev Preview | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema-dev-preview.md | Title: Developer Preview App Manifest description: Learn about public developer preview manifest schema for Microsoft Teams, sample app manifest, schema properties, and how to enable developer preview. ms.localizationpriority: medium Previously updated : 09/16/2024 Last updated : 10/17/2024 # Public developer preview app manifest For information on how to enable developer preview, see [public developer previe > [!NOTE] > If you aren't using developer preview features, including running [Teams personal tabs and message extensions in Outlook and Microsoft 365 app](../../m365-apps/overview.md), use the [app manifest](~/resources/schem) (previously called Teams app manifest) for generally available (GA) features instead. -The app manifest describes how the app integrates into the Microsoft Teams platform. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json`](https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json). +App manifest describes how the app integrates into the Microsoft Teams platform. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json`](https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json). ## Sample app manifest The app manifest describes how the app integrates into the Microsoft Teams platf "mpnId": "1234567890" }, "localizationInfo": {- "defaultLanguageTag": "es-es", + "defaultLanguageTag": "en", + "defaultLanguageFile": "en.json", "additionalLanguages": [ {- "languageTag": "en-us", - "file": "en-us.json" + "languageTag": "es", + "file": "es.json" } ] }, The app manifest describes how the app integrates into the Microsoft Teams platf "color32x32": "%FILENAME-32x32px%" }, "accentColor": "%HEX-COLOR%",- "copilotExtensions": { - "declarativeCopilots": [ + "elementRelationshipSet": { + "oneWayDependencies" : [ + { + "element" : { + "name" : "composeExtensions", + "id" : "composeExtension-id", + "commandIds": ["exampleCmd1", "exampleCmd2"] + }, + "dependsOn" : [ + {"name" : "bots", "id" : "bot-id"} + ] + } + ], + "mutualDependencies" : [ + [ + {"name" : "bots", "id" : "bot-id"}, + {"name" : "staticTabs", "id" : "staticTab-id"}, + {"name" : "composeExtensions", "id" : "composeExtension-id"}, + {"name" : "configurableTabs", "id": "configurableTab-id"} + ] + ], + "copilotAgents": { + "declarativeAgents": [ { "id": "agent1", "file": "declarativeAgent1.json" The app manifest describes how the app integrates into the Microsoft Teams platf }, "configurableTabs": [ {+ "id": "configurableTab-id", "configurationUrl": "https://contoso.com/teamstab/configure", "canUpdateConfiguration": true, "scopes": [ The app manifest describes how the app integrates into the Microsoft Teams platf "websiteUrl": "https://contoso.com/content", "scopes": [ "personal"- ] + ], + "requirementSet": { + "hostMustSupportFunctionalities": [ + {"name": "dialogUrl"}, + {"name": "dialogUrlBot"} + ] + } } ], "bots": [ The app manifest describes how the app integrates into the Microsoft Teams platf } ] }- ] + ], + "requirementSet": { + "hostMustSupportFunctionalities": [ + {"name": "dialogUrl"}, + {"name": "dialogUrlBot"} + ] + } } ], "connectors": [ The app manifest describes how the app integrates into the Microsoft Teams platf "composeExtensions": [ { "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",+ "id": "composeExtension-id", "canUpdateConfiguration": true, "commands": [ { The app manifest describes how the app integrates into the Microsoft Teams platf } ] }- ] + ], + "requirementSet": { + "hostMustSupportFunctionalities": [ + {"name": "dialogUrl"}, + {"name": "dialogUrlBot"} + ] + } } ], "permissions": [ We recommend triaging your customer queries in a timely manner and route those i Allows the specification of a default language, and pointers to additional language files. See [localization](~/concepts/build-and-test/apps-localization.md). -|Name| Maximum size | Required | Description| -||||| -|`defaultLanguageTag`|4 characters|Γ£ö∩╕Å|The language tag of the strings in this top level app manifest file.| +|Name| Type| Maximum size | Required | Description| +|||||| +|`defaultLanguageTag`| String | | Γ£ö∩╕Å|The language tag for the strings in this app manifest file. For example, `en`| +|`defaultLanguageFile`| String |2048 characters|| A relative file path to the .json file that contains the strings. If unspecified, strings are taken directly from the app manifest file. A default language file is required for [Copilot agents that support multiple languages](/microsoft-365-copilot/extensibility/agents-are-apps#localizing-your-agent).| ### localizationInfo.additionalLanguages -An array of objects specifying additional language translations. +An array of objects with the following properties to specify additional language translations. -|Name| Maximum size | Required | Description| -||||| -|`languageTag`|4 characters|Γ£ö∩╕Å|The language tag of the strings in the provided file.| -|`file`|2048 characters|Γ£ö∩╕Å|A relative file path to the .json file that contains the translated strings.| +| Name | Type | Maximum size | Required | Description| +|||||| +|`languageTag`| String | |Γ£ö∩╕Å|The language tag of the strings in the provided file. For example, `es`| +|`file`| String | 2048 characters|Γ£ö∩╕Å|A relative file path to the .json file that contains the translated strings.| ## name A color to use with and as a background for your outline icons. The value must be a valid HTML color code starting with '#', for example `#4464ee`. -## copilotExtensions +## elementRelationshipSet ++**Optional** – Object ++Describes relationships among individual app capabilities, including `staticTabs`, `configurableTabs`, `composeExtensions`, and `bots`. It's used to specify runtime dependencies to ensure that the app only launches in applicable Microsoft 365 hosts, such as Teams, Outlook, and the Microsoft 365 (Office) app. For more information, see [how to specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). ++|Name| Type| Maximum size | Required | Description| +|||||| +| `oneWayDependencies`| Array|||Defines one or more unidirectional dependency relationships among app components (each represented by a `oneWayDependency` object with a *dependent* `element` and a `dependsOn` [`element`](#element)).| +| `mutualDependencies`| Array|||Defines one or more mutual dependency relationships among app capabilities (each represented by a `mutualDependency` array of [`element` objects](#element)).| ++### element ++**Optional** – Object ++Describes an app capability (`element`) in an `elementRelationshipSet`. ++|Name| Type| Maximum size | Required | Description| +|||||| +| `name`| String enum|| Γ£ö∩╕Å| The type of app capability. Supported values: `bots`, `staticTabs`, `composeExtensions`, `configurableTabs`| +| `id` | String | | Γ£ö∩╕Å| If there are multiple instances of a bot, tab, or message extension, this property defines a specific instance of the capability. It maps to `botId` for bots, `entityId` for static tabs, and `id` for configurable tabs and message extensions. | +| `commandIds` | Array of strings||| List of one or more message extension commands that are dependent on the specified `dependsOn` capability. Use only for message extensions. | ++### elementRelationshipSet.oneWayDependency ++Describes the unidirectional dependency of one app capability (X) to another (Y). If a Microsoft 365 runtime host doesn't support a required capability (Y), the dependent capability (X) won't load or surface to the user. ++**Optional** – Object ++|Name| Type| Maximum size | Required | Description| +|||||| +| `element`| Object||Γ£ö∩╕Å| Represents an individual app capability (represented by [`element`](#element)) that has a one-way runtime dependency on another capability being loaded. | +| `dependsOn`| Array|| Γ£ö∩╕Å| Defines one or more app capabilities (each represented by [`element`](#element)) required for the specified `element` to load.| ++### elementRelationshipSet.mutualDependencies ++Describes a set of mutual dependencies between two or more app capabilities. A Microsoft 365 runtime host must support all required capabilities for any of those capabilities to be available for users in that host. ++**Optional** – Array of arrays (each containing two or more [`element` objects](#element)) ++## copilotAgents **Optional** – Object -Defines one or more agents to Microsoft 365 Copilot. [Declarative agents](/microsoft-365-copilot/extensibility/overview-declarative-agent) are customizations of Microsoft 365 Copilot that run on its same orchestrator and foundation models. +Defines one or more agents to Microsoft 365 Copilot (formerly known as `copilotExtensions`). [Declarative agents](/microsoft-365-copilot/extensibility/overview-declarative-agent) are customizations of Microsoft 365 Copilot that run on its same orchestrator and foundation models (formerly known as `declarativeCopilots`). |Name| Type| Maximum size | Required | Description| ||||||-|`declarativeCopilots`|Array of objects| 1 |Γ£ö∩╕Å| Array of `declarativeCopilot` objects. | +|`declarativeAgents`|Array of objects| 1 |Γ£ö∩╕Å| Array of objects that each define a declarative agent. | -### declarativeCopilot +### declarativeAgents Represents a customization of Microsoft 365 Copilot, as defined by its manifest file. The object is an array with all elements of the type `object`. This block is req |Name| Type| Maximum size | Required | Description| ||||||+|`id`|String||| Unique identifier for configurable tab. Used when defining one-way and mutual app capability dependencies under [elementRelationshipSet](#elementrelationshipset).| |`configurationUrl`|String|2048 characters|Γ£ö∩╕Å|The *https://* URL to use when configuring the tab.| |`canUpdateConfiguration`|Boolean|||A value indicating whether an instance of the tab's configuration can be updated by the user after creation. <br>Default value: `true`| |`scopes`|Array of enum|2|Γ£ö∩╕Å|Configurable tabs only support the `team` and `groupChat` scopes. | The object is an array (maximum of 16 elements) with all elements of the type `o |`searchUrl`|String|2048 characters||The *https://* URL to direct a user's search queries.| |`context`|Array of enum|8||The set of `contextItem` scopes to which a tab belongs. <br>Default values: `personalTab`, `channelTab`, `privateChatTab`, `meetingChatTab`, `meetingDetailsTab`, `meetingSidePanel`, `meetingStage`, `teamLevelApp`| |`supportedPlatform`|Array of enum|3||The set of `supportedPlatform` scopes to which a tab belongs. <br>Default values: `desktop`, `mobile`, `teamsMeetingDevices`|+|`requirementSet`|Object|||Runtime requirements for the tab to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the tab.| ++### staticTabs.requirementSet ++**Optional** – Object ++|Name| Type| Maximum size | Required | Description| +|||||| +| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |Γ£ö∩╕Å| Specifies one or more runtime capabilities the tab requires to function properly. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. For more information, see [how to specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). | ## bots The object is an array (maximum of only 1 element— only one bot is allowed |`supportsCalling`|Boolean|||A value indicating where a bot supports audio calling. **IMPORTANT**: This property is experimental. Experimental properties might be incomplete and might undergo changes before they're fully available. The property is provided for testing and exploration purposes only and must not be used in production applications. <br>Default value: `false`| |`supportsVideo`|Boolean|||A value indicating where a bot supports video calling. **IMPORTANT**: This property is experimental. Experimental properties might be incomplete and might undergo changes before they're fully available. The property is provided for testing and exploration purposes only and must not be used in production applications. <br>Default value: `false`| |`requiresSecurityEnabledGroup`|Boolean|||A value indicating whether the team's Office group needs to be security enabled. <br>Default value: `false`|+|`requirementSet`|Object|||Runtime requirements for the bot to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the bot.| ### bots.configuration An optional list of commands that your bot can recommend to users. The object is |`title`|String|32 characters|Γ£ö∩╕Å|The bot command name.| |`description`|String|128 characters|Γ£ö∩╕Å|A simple text description or an example of the command syntax and its arguments.| +### bots.requirementSet ++**Optional** – Object ++|Name| Type| Maximum size | Required | Description| +|||||| +| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |Γ£ö∩╕Å| Specifies one or more runtime capabilities the bot requires to function properly. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. For more information, see [how to specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). | + ## connectors **Optional** – Array The object is an array (maximum of 1 element) with all elements of type `object` |Name| Type | Maximum Size | Required | Description| ||||||+|`id`|String||| Unique identifier for the message extension. Used when defining one-way and mutual app capability dependencies under [elementRelationshipSet](#elementrelationshipset).| |`botId`|String|||The unique Microsoft app ID for the bot that backs the message extension, as registered with the Bot Framework. The ID can be the same as the overall [app ID](#id).|-|`composeExtensionType`|String|||Type of the compose extension. Enum values are `botBased` and `apiBased`.| -|`authorization`|Object|2||Authorization related information for the API-based message extension.| +|`composeExtensionType`|String|||Type of the message extension. Enum values are `botBased` and `apiBased`.| +|`authorization`|Object|2||Authorization related information for the API-based message extension| |`authorization.authType`|String|||Enum of possible authorization types. Supported values are `none`, `apiSecretServiceAuth`, and `microsoftEntra`.| |`authorization.microsoftEntraConfiguration`|Object|||Object capturing details needed to do microsoftEntra auth flow. Applicable only when auth type is `microsoftEntra`.| |`authorization.microsoftEntraConfiguration.supportsSingleSignOn`|Boolean|||A value indicating whether single sign-on is configured for the app.| The object is an array (maximum of 1 element) with all elements of type `object` |`messageHandlers`|Array of objects|5||A list of handlers that allow apps to be invoked when certain conditions are met. Domains must also be listed in `validDomains`.| |`messageHandlers.type`|String|||The type of message handler. Must be `link`.| |`messageHandlers.value.domains`|Array of Strings|2048 characters||Array of domains that the link message handler can register for.|-|`messageHandlers.supportsAnonymizedPayloads`|Boolean|||A boolean value that indicates whether the app's link message handler supports anonymous invoke flow. <br>Default value: `false` <br> To enable zero install for link unfurling, the value needs to be set to `true`. <br/> **Note**: The property `supportAnonymousAccess` is superseded by `supportsAnonymizedPayloads`.| -|`type` | Type of the compose extension. Supported values are `apiBased` or `botBased`. | +|`messageHandlers.supportsAnonymizedPayloads`|Boolean|||A Boolean value that indicates whether the app's link message handler supports anonymous invoke flow. <br>Default value: `false` <br> To enable zero install for link unfurling, the value needs to be set to `true`. <br/> **Note**: The property `supportAnonymousAccess` is superseded by `supportsAnonymizedPayloads`.| +| `type` | Type of the message extension. Supported values are `apiBased` or `botBased`. | +|`requirementSet`|Object|||Runtime requirements for the message extension to function properly in the Microsoft 365 host application. If one or more of the requirements aren't supported by the runtime host, the host won't load the message extension.| ### composeExtensions.commands Each command item is an object with the following structure: |`parameters.choices.title`|String|128 characters|Γ£ö∩╕Å|Title of the choice.| |`parameters.choices.value`|String|512 characters|Γ£ö∩╕Å|Value of the choice.| +### composeExtensions.requirementSet ++**Optional** – Object ++|Name| Type| Maximum size | Required | Description| +|||||| +| `requirementSet.hostMustSupportFunctionalities`|Array of objects| |Γ£ö∩╕Å| Specifies one or more runtime capabilities the message extension requires to function properly. Supported values: `dialogUrl`, `dialogUrlBot`, `dialogAdaptiveCard`, `dialogAdaptiveCardBot`. For more information, see [how to specify runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). | + ## scopeConstraints The scope constraints imposed on an app to specify in which threads you can install the app. When no constraints are specified, you can install the app to all threads within the specific scope. |
platform | Manifest Schema | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema.md | Title: App Manifest Reference description: In this article, you'll have the latest version of the public manifest schema for Microsoft Teams reference, schema, and sample full manifest. ms.localizationpriority: high Previously updated : 09/16/2024 Last updated : 10/17/2024 # App manifest -The app manifest (previously called Teams app manifest) describes how your app integrates into the Microsoft Teams product. Your app manifest must conform to the schema hosted at [`https://developer.microsoft.com/json-schemas/teams/v1.17/MicrosoftTeams.schema.json`](https://developer.microsoft.com/json-schemas/teams/v1.17/MicrosoftTeams.schema.json). Previous versions 1.0, 1.1,...,1.16, and the current version is 1.17 are each supported (using "v1.x" in the URL). +The app manifest (previously called Teams app manifest) describes how your app integrates into the Microsoft Teams product. Your app manifest must conform to the schema hosted at [https://developer.microsoft.com/json-schemas/teams/v1.19/MicrosoftTeams.schema.json](https://developer.microsoft.com/json-schemas/teams/v1.19/MicrosoftTeams.schema.json). Previous versions 1.0, 1.1,...,1.17, and the current version is 1.19 are each supported (using "v1.x" in the URL). Version 1.18 is not available. For more information on the changes made in each version, see [app manifest change log](https://github.com/OfficeDev/microsoft-teams-app-schema/releases) and for previous versions, see [app manifest versions](https://github.com/microsoft/json-schemas/tree/main/teams). The following table lists TeamsJS version and app manifest versions as per different app scenarios: The following is the sample app manifest schema: ```json {- "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.17/MicrosoftTeams.schema.json", - "manifestVersion": "1.17", + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.19/MicrosoftTeams.schema.json", + "manifestVersion": "1.19", "version": "1.0.0", "id": "%MICROSOFT-APP-ID%", "localizationInfo": {- "defaultLanguageTag": "en-us", + "defaultLanguageTag": "en", + "defaultLanguageFile": "en.json", "additionalLanguages": [ {- "languageTag": "es-es", - "file": "en-us.json" + "languageTag": "es", + "file": "es.json" } ] }, The following is the sample app manifest schema: "color": "A relative path to a full color .png icon ΓÇö 192px X 192px" }, "accentColor": "A valid HTML color code.",+ "copilotAgents": { + "declarativeAgents": [ + { + "id": "agent1", + "file": "declarativeAgent1.json" + } + ] + }, "configurableTabs": [ { "configurationUrl": "https://contoso.com/teamstab/configure", Ensure that your description describes your experience and helps potential custo **Optional** – Object -Allows the specification of a default language and provides pointers to more language files. For more information, see [localization](~/concepts/build-and-test/apps-localization.md). +Allows the specification of a default language, and pointers to additional language files. See [localization](~/concepts/build-and-test/apps-localization.md). -|Name| Maximum size | Required | Description| +|Name| Type | Maximum size | Required | Description| |||||-|`defaultLanguageTag`||Γ£ö∩╕Å|The language tag of the strings in this top-level app manifest file.| +|`defaultLanguageTag`| String | |Γ£ö∩╕Å|The language tag for the strings in this top-level app manifest file. Default is `en-us`.| +|`defaultLanguageFile`| String | 2048 characters|| A relative file path to the .json file that contains the strings. If unspecified, strings are taken directly from the app manifest file. A default language file is required for [Copilot agents that support multiple languages](/microsoft-365-copilot/extensibility/agents-are-apps#localizing-your-agent).| ### localizationInfo.additionalLanguages -An array of objects specifying more language translations. +An array of objects, each with the following properties to specify additional language translations. |Name| Type | Maximum size | Required | Description|-|||||| -|`languageTag`|String||Γ£ö∩╕Å|The language tag of the strings in the provided file.| -|`file`|String|2048 characters|Γ£ö∩╕Å|A relative file path to the .json file containing the translated strings.| +||||| +|`languageTag`| String | |Γ£ö∩╕Å|The language tag of the strings in the provided file. For example, `es`| +|`file`| String | 2048 characters|Γ£ö∩╕Å|A relative file path to the .json file that contains the translated strings.| ## icons A color to use and as a background for your color icons. The value must be a valid HTML color code starting with '#', for example `#4464ee`. For more information, see [accentColor](../../task-modules-and-cards/cards/cards-reference.md#properties-of-the-connector-card-for-microsoft-365-groups). +## copilotAgents ++**Optional** – Object ++Defines one or more agents to Microsoft 365 Copilot. [Declarative agents](/microsoft-365-copilot/extensibility/overview-declarative-agent) are customizations of Microsoft 365 Copilot that run on its same orchestrator and foundation models. ++|Name| Type| Maximum size | Required | Description| +|||||| +|`declarativeAgents`|Array of objects| 1 |Γ£ö∩╕Å| Array of objects that each define a declarative agent. | ++### declarativeAgents ++Represents a customization of Microsoft 365 Copilot, as defined by its manifest file. ++|Name| Type| Maximum size | Required | Description| +|||||| +|`id`|String| |Γ£ö∩╕Å| Unique identifier for the agent. When using Microsoft Copilot Studio to build agents, this is auto-generated. Otherwise, manually assign the value according to your own conventions or preference. | +|`file`| String | 2048 characters |Γ£ö∩╕Å| Relative file path within the app package to the [declarative agent manifest](/microsoft-365-copilot/extensibility/declarative-agent-manifest) file. | + ## configurableTabs **Optional** – Array |
platform | Create Personal Tab | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/create-personal-tab.md | Title: Methods to Build Personal Tab App -description: Learn to build a personal tab. Select the Node.js, ASP.NET Core, or ASP.NET Core MVC environment. Generate app, add content, create package, build, and run app. +description: Learn to build a personal tab with Node.js, ASP.NET Core, or ASP.NET Core MVC, extending it to support group chats, channels, meetings, and offline access. ms.localizationpriority: high zone_pivot_groups: teams-app-environment Previously updated : 02/27/2023 Last updated : 10/17/2024 # Create a personal tab pages.config.setConfig({ Only `contentUrl` and `websiteUrl` changes are supported for `setConfig`, other properties can't be changed for static tabs. +## Offline tabs ++> [!NOTE] +> Personal tabs with offline functionality are only supported on Teams in Android devices. ++You can create a personal tab that works in Teams without an internet connection. An offline tab benefits users who work in areas with poor or no network coverage, such as field agents or frontline workers. Users can perform the following tasks in an offline tab: ++* Record data through forms that can include images and videos. +* View details of previously submitted requests, incidents, or forms. ++When the user's device reconnects to the internet, the tab automatically synchronizes the locally stored data with an Azure Blob storage. This action ensures that all offline changes made by the user are updated in a central storage, maintaining data consistency across the organization. +++### Build an offline tab ++Before you get started with building an offline tab, ensure that you meet the [prerequisites](~/tabs/how-to/tab-requirements.md) to build a personal tab. ++1. [Create an Azure Blob storage](/azure/storage/blobs/storage-quickstart-blobs-portal). Ensure that you note down the account and container name for later use. ++1. Clone the [Microsoft Teams Samples](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/) repository. ++1. In the cloned repository, go to **samples** > **tab-support-offline** > **nodejs** and open the folder in Visual Studio Code. ++ :::image type="content" source="../../assets/images/tabs/open-tab-sample-vsc.png" alt-text="Screenshot shows how to open the code sample in Visual Studio Code." lightbox="../../assets/images/tabs/open-tab-sample-vsc.png"::: ++1. Under **EXPLORER**, go to **server** > **blobStoreOperations.js** and replace `{{ account-Name }}` and `{{ container-Name }}` with your Azure Blob storage account and container's values. ++1. Select the **F5** key to debug the app. Teams opens in a browser window when the build is complete. ++1. Sign in with your Microsoft 365 account, if prompted. ++1. Select **Add** when a dialog box opens to let you add the tab app to Teams. ++ :::image type="content" source="../../assets/images/tabs/add-offline-tab-teams.png" alt-text="Screenshot shows how to add the offline tab app to Teams."::: ++Congratulations! You've successfully created a Teams tab with offline functionality. + ## Code sample | Sample name | Description | .NET |Node.js|Manifest| |
platform | Using Teams Client Library | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/using-teams-client-library.md | The `{hostName}` [URL placeholder value](./access-teams-context.md#get-context-b * **Do** use *hostName* to differentiate the theme of your application based on the host it's running in. For example, you can use Microsoft Teams purple as the main accent color when running in Teams, and Outlook blue when running in Outlook. * **Do** use *hostName* to differentiate messages shown to the user based on which host it's running in. For example, show *Manage your tasks in Microsoft 365* when running in Microsoft 365 on the web, and *Manage your tasks in Teams* when running in Teams. +> [!TIP] +> The best practice is to specify the runtime requirements and dependencies of your app in a host-agnostic way, rather than special casing your app code with host-specific logic. For more information, see [how to specify Microsoft 365 host runtime requirements in your app manifest](../../m365-apps/specify-runtime-requirements.md). + #### Namespaces Starting with TeamsJS v.2.0, APIs are organized into *capabilities* by way of namespaces. Several new namespaces of particular importance are *app*, *pages*, *dialog*, and *teamsCore*. |
platform | Cards Format | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/task-modules-and-cards/cards/cards-format.md | In the following example, there are two primary actions and one secondary action ``` > [!NOTE]-> -> * The overflow menu behaves differently on a bot sent card and a message extension card for the root level `actions` in an Adaptive Card. The overflow menu on a bot sent card appears as a pop-up context menu and on the message extension card it appears at the upper-right corner under the More options (**...**) icon. The behavior isn't applicable to the `ActionSet` in an Adaptive Card. +> The overflow menu behaves differently on a bot sent card and a message extension card for the root level `actions` in an Adaptive Card. The overflow menu on a bot sent card appears as a pop-up context menu and on the message extension card it appears at the upper-right corner under the More options (**...**) icon. The behavior isn't applicable to the `ActionSet` in an Adaptive Card. The following image is an example of overflow menu in a bot sent card and a message extension card: |
platform | Whats New | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md | Discover Microsoft Teams platform features that are generally available (GA). Yo Teams platform features that are available to all app developers. -**2024 September** +**2024 October** -***September 13, 2024***: [Use app analytics in Developer Portal to analyze your app usage metrics to gain valuable insights into how users interact with your app.](concepts/build-and-test/analyze-your-apps-usage-in-developer-portal.md) +* ***October 17, 2024***: [Introducing app manifest v1.19](./resources/schem) with copilotAgents, declarativeAgents, and defaultLanguageFile. +* ***October 17, 2024***: [Localize your Copilot agents](/microsoft-365-copilot/extensibility/agents-are-apps#localizing-your-agent). +* ***October 17, 2024***: [Build a personal tab with offline functionality](tabs/how-to/create-personal-tab.md#offline-tabs). :::column-end::: :::row-end::: Teams platform features that are available to all app developers. | **Date** | **Update** | **Find here** | | -- | | -|+| 13/09/2024 | Use app analytics in Developer Portal to analyze your app usage metrics to gain valuable insights into how users interact with your app. | Tools and SDKs > Tools > Developer Portal for Teams > [Analyze your apps usage in Developer Portal](concepts/build-and-test/analyze-your-apps-usage-in-developer-portal.md) | | 26/08/2024 | Enhanced user experience for Teams app susbscriptions purchased from Teams Store. | Monetize your app > Purchase and manage app subscriptions and licenses > [Subscription purchase experience](concepts/deploy-and-publish/appsource/prepare/end-user-purchase-experience.md#subscription-purchase-experience) | | 22/08/2024 | Dev Tools for Teams tabs are available in the new Microsoft Teams client. | Test your app > Tabs > [Dev Tools for Microsoft Teams Tab](tabs/how-to/developer-tools.md) | | 21/08/2024 | Use sample prompts to guide the users for using various plugins within Microsoft 365 Copilot. | Distribute your app > Publish to the Teams Store > Review Copilot validation guidelines > [Sample prompts](concepts/deploy-and-publish/appsource/prepare/review-copilot-validation-guidelines.md#sample-prompts) | Discover Microsoft Teams platform features that are in developer preview. You ca Developer preview is a public program that provides early access to unreleased Teams platform features. -**2024 September** +**2024 October** -* ***September 16, 2024***: [Learn about requirements for the validation of your Copilot agent to increase its chances of being listed on Teams Store.](concepts/deploy-and-publish/appsource/prepare/review-copilot-validation-guidelines.md) --* ***September 16, 2024***: [Explore the development guidance to build Copilot agents.](messaging-extensions/dev-guidelines-copilot-agents.md) --* ***September 03, 2024***: [Introduced nested app authentication for single-page applications that are embedded in host environment.](concepts/authentication/nested-authentication.md) +* ***October 17, 2024***: [Specify runtime requirements in app manifest to tailor your app's behavior in Microsoft 365 hosts.](m365-apps/specify-runtime-requirements.md) +* ***October 17, 2024***: [copilotExtensions renamed to copilotAgents in developer preview app manifest.](./resources/schem#copilotagents) :::column-end::: :::row-end::: Developer preview is a public program that provides early access to unreleased T | **Date** | **Update** | **Find here** | | -- | | -|+| 16/09/2024 | Learn about requirements for the validation of your Copilot agent to increase its chances of being listed on Teams Store. | Publish to the Teams Store > [Validation guidelines for Copilot agents](concepts/deploy-and-publish/appsource/prepare/review-copilot-validation-guidelines.md) | +| 16/09/2024 | Explore the development guidance to build Copilot agents. | Build message extensions > Bot Framework > Search commands > [Guidelines to create and upgrade Copilot agents](messaging-extensions/dev-guidelines-copilot-agents.md) | +| 03/09/2024 | Introduced nested app authentication for single-page applications that are embedded in host environment. | Add authentication > [Enable nested app authentication](concepts/authentication/nested-authentication.md)| | 14/06/2024 | Introduced preapproval of RSC permissions for admins to control RSC permissions for app installation. | Utilize Teams data with Microsoft Graph > Resource-specific consent > [Preapproval of RSC permissions](graph-api/rsc/preapproval-instruction-docs.md) | | 23/05/2024 | Leverage AI label, citations, feedback buttons, and sensitivity labels in your bot's messages. | Build bots > Bot conversations > [Format AI bot messages](bots/how-to/format-ai-bot-messages.md) | | 23/05/2024 | Enhance your Copilot message extension plugin to hand off a conversation to your custom engine agent.| Build message extensions > Build message extensions using Bot Framework > Search commands > [Copilot handoff](bots/how-to/conversations/bot-copilot-handoff.md)| |