Service | Microsoft Docs article | Related commit history on GitHub | Change details |
---|---|---|---|
platform | Coversational Ai Faq | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/bots/how-to/Teams conversational AI/coversational-ai-faq.md | Last updated 04/07/2022 <summary>What does the Teams AI library do?</summary> Teams AI library provides abstractions for you to build robust applications that utilize OpenAI large language model (LLM)s.--</details> <br>+</details> <details> <summary>Does Microsoft provide a hosted version of OpenAI models that are used by the AI library?</summary> No, you need to have your large language model (LLM)s, hosted in Azure OpenAI or elsewhere.--</details> <br>+</details> <details> <summary>Can we use the AI library with other large language models apart from OpenAI?</summary> Yes, it's possible to use Teams AI library with other large language model (LLM)s.--</details> <br>+</details> <details> <summary>Does a developer need to do anything to benefit from LLMs? If yes, why?</summary> Yes, Teams AI library provides abstractions to simplify utilization of large language model (LLM)s in conversational applications. However, you (developer) must tweak the prompts, topic filters, and actions depending upon your scenarios.--</details> <br>+</details> <details>-<summary> How does Teams AI library integrate with ODSL? </summary> +<summary>How does Teams AI library integrate with ODSL?</summary> The two are independent and can't be integrated.--</details> <br>+</details> <details>-<summary> How does Teams AI library co-exist against the hero-story of developers building for the skills ecosystem in Microsoft 365?</summary> +<summary>How does Teams AI library co-exist against the hero-story of developers building for the skills ecosystem in Microsoft 365?</summary> Teams AI library story is targeted towards Pro-developers and separate from the hero-story around skills ecosystem in Microsoft 365.--</details> <br>+</details> <details>-<summary> What is the release status of Teams AI library at Build 2023?</summary> +<summary>What is the release status of Teams AI library at Build 2023?</summary> Teams AI library is available in public preview at Build 2023.--</details> <br>+</details> <details>-<summary> How should information about the existing Bot Framework SDK be communicated after announcing a new version? </summary> +<summary>How should information about the existing Bot Framework SDK be communicated after announcing a new version?</summary> Teams AI library works alongside the existing Bot Framework SDK and isn't a replacement.-+<br> </details> ## See also |
platform | Glossary | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/get-started/glossary.md | Common terms and definitions used in Microsoft Teams developer documentation. | Term | Definition | | | |-| [Website URL](../tabs/design/tabs-mobile.md) | A property in the app manifest file (`websiteUrl`) that links the app to the website of the organization or landing page of the relevant product. It's a mandatory configuration for Teams mobile client. <br>**See also**: [App manifest](#a); [Teams Mobile](#t) | +| [Website URL](../tabs/design/tabs-mobile.md) | A property in the app manifest file (`websiteUrl`) that links the app to the website of the organization or landing page of the relevant product. <br>**See also**: [App manifest](#a); [Teams Mobile](#t) | | [Web app](../samples/integrate-web-apps-overview.md) | An app that runs on a web server. It can be integrated with Microsoft Teams Platform. | | [Webhook](../webhooks-and-connectors/what-are-webhooks-and-connectors.md) | It's a feature of a Teams app used to integrate it with external apps. <br>**See also**: [Incoming Webhook](#i) ; [Outgoing Webhook](#o); [Connector](#c) | | [Web application info](../resources/schem#webapplicationinfo) | Provide your Azure AD App ID and Microsoft Graph information to help users seamlessly sign into your app. If your app is registered in Azure AD, you must provide the App ID. If your app requires admins to review permissions and grant consent in Teams admin center, you must declare `webapplicationinfo` in the manifest. | |
platform | Add Teams Channel | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/add-teams-channel.md | **Add a Teams channel** -1. Select **Home**. --1. Go to **Resources** > **Recent**. Select your bot from the list of available resources. - 1. In the left pane, select **Channels**. Under **Available Channels**, select **Microsoft Teams**. :::image type="content" source="../../assets/images/include-files/channels-teams.png" alt-text="Screenshot shows the selection of Teams in channels."::: |
platform | Application Id Uri | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/application-id-uri.md | +**Application ID URI** ++1. In the left pane, under **Manage**, select **Expose an API**. ++1. Next to **Application ID URI**, select **Add**. ++ :::image type="content" source="../../assets/images/include-files/expose-api-add.png" alt-text="Screenshot shows the option to add Application ID URI."::: ++1. Update the **Application ID URI** in the `api://your-devtunnel-domain/botid-{AppID}` or `api://your-ngrok-domain/botid-{AppID}` format and select **Save**. ++ :::image type="content" source="../../assets/images/include-files/app-id-uri.png" alt-text="Screenshot shows the option to add redirect uri and save."::: ++ The following image shows the domain name: ++ :::image type="content" source="../../assets/images/include-files/app-id-uri-output.png" alt-text="Screenshot shows the redirect uri"::: + <!-- + > [!NOTE] + > If you're using a tunneling service such as ngrok, ensure you update the value whenever your ngrok subdomain changes. + > For example: `api://f631****.ngrok.io/92c11075-c629-4a1e-ab58-02b4fd4204c2`, where `f631****.ngrok.io` is the new ngrok subdomain name. + --> |
platform | Azure Add Scope | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/azure-add-scope.md | **Add a scope** +1. In the left pane, under **Manage**, select **Expose an API**. + 1. Select **+ Add a scope**. :::image type="content" source="../../assets/images/include-files/select-add-scope.png" alt-text="Screenshot shows the selection to Add a Scope."::: 1. Under **Who can consent?**, select **Admins and users**. -1. Update the values for the rest of the fileds as follows: +1. Update the values for the rest of the fields as follows: * Enter **Teams can access the userΓÇÖs profile** as **Admin consent display name**. |
platform | Azure Api Permissions | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/azure-api-permissions.md | **API Permission** -1. In the left pane, select **API permissions**. -- > [!NOTE] - > Users need to consent to the API permissions only if the Azure AD app is registered in a different tenant. +1. In the left pane, under **Manage**, select **API permissions**. 1. Select **+ Add a permission**. 1. Select **Add permissions**. :::image type="content" source="../../assets/images/include-files/select-add-permission.png" alt-text="Screenshot show the option to select permissions.":::++ > [!NOTE] + > + > * If an app isn't granted IT admin consent, users must provide consent the first time they use an app. + > * Users need to consent to the API permissions only if the Azure AD app is registered in a different tenant. |
platform | Azure App Registration | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/azure-app-registration.md | -**Azure app registration** +**App registration** -1. Go to the [Azure portal](https://portal.azure.com/). +1. Go to the [Azure portal](https://ms.portal.azure.com/). -1. Select **Azure Active Directory**. +1. Select **App registrations**. -1. In the left pane, select **App registrations**. + :::image type="content" source="../../assets/images/include-files/azure-app-registration.png" alt-text="Screenshot shows the Azure services to select App registrations."::: -1. Under **Owned applications**, select your bot from the list of available applications. +1. Select **+ New registration**. - :::image type="content" source="../../assets/images/include-files/app-registrations.png" alt-text="Screenshot shows the selection of App registration and bot created in Azure portal."::: + :::image type="content" source="../../assets/images/include-files/new-registration.png" alt-text="Screenshot shows the New registration page on Azure AD Portal."::: -1. In the left pane, under **Manage**, select **Expose an API**. +1. Enter the name of your app. -1. Next to **Application ID URI**, select **Add**. +1. Select **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant)**. - :::image type="content" source="../../assets/images/include-files/expose-api-add.png" alt-text="Screenshot shows the Application ID URI add option."::: +1. Select **Register**. -1. Update the **Application ID URI** in the `api://your-devtunnel-domain/{AppID}` or `api://your-ngrok-domain/{AppID}`format and select **Save**. + :::image type="content" source="../../assets/images/include-files/app-register.png" alt-text="Screenshot shows the option to register the bot in Azure AD Portal."::: - :::image type="content" source="../../assets/images/include-files/app-id-uri.png" alt-text="Screenshot shows the option to add redirect uri and save."::: + Your app is registered in Azure AD. The app overview page appears. - The following image shows the domain name: + :::image type="content" source="../../assets/images/include-files/app-registration-overview.png" alt-text="Screenshot shows the app registration overview page."::: - :::image type="content" source="../../assets/images/include-files/app-id-uri-output.png" alt-text="Screenshot shows the redirect uri"::: - <!-- - > [!NOTE] - > If you're using a tunneling service such as ngrok, ensure you update the value whenever your ngrok subdomain changes. - > For example: `api://f631****.ngrok.io/92c11075-c629-4a1e-ab58-02b4fd4204c2`, where `f631****.ngrok.io` is the new ngrok subdomain name. - --> + Save the app ID from **Application (client) ID** and **Directory (tenant) ID**, for future reference. |
platform | Azure Bot Resource | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/azure-bot-resource.md | **Create an Azure bot resource** -1. Go to the [Azure portal](https://portal.azure.com/). -1. Select **Create a resource**. +> [!NOTE] +> If you're already testing your bot in Teams, sign out of this app and Teams. To see this change, sign in again. ++1. Go to **Home**. +1. Select **+ Create a resource**. 1. In the search box, enter **Azure Bot**. 1. Select **Enter**. 1. Select **Azure Bot**. :::image type="content" source="../../assets/images/include-files/new-resource-location.png" alt-text="Screenshot shows the new resource group option in Azure portal."::: +1. Under **Pricing**, select **Change plan**. ++ :::image type="content" source="../../assets/images/include-files/pricing-tier.png" alt-text="Screenshot shows the pricing option in Azure portal."::: ++1. Select **FO Free** > **Select**. ++ :::image type="content" source="../../assets/images/include-files/pricing-free.png" alt-text="Screenshot shows the option to select free."::: + 1. Under **Microsoft App ID**, select **Type of App** as **Multi Tenant**. -1. In the **Creation type**, by default, **Create new Microsoft App ID** is selected. +1. In the **Creation type**, select, **Use existing app registration**. ++1. Enter the **App ID**. - You can also select **Use existing app registration** and enter existing **App ID**, **App tenant ID**, and **MSI resource ID**. + <!-- You can also select **Use existing app registration** and enter existing **App ID**, **App tenant ID**, and **MSI resource ID**. --> > [!NOTE] > You can't create more than one bot with the same **Microsoft App ID**. |
platform | Azure Client Application | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/azure-client-application.md | **Client Application** -Under **Authorized client applications**, identify the applications that you want to authorize for your appΓÇÖs web application. +1. In the left pane, under **Manage**, select **Expose an API**. ++ Under **Authorized client applications**, identify the applications that you want to authorize for your appΓÇÖs web application. 1. Select **+ Add a client application**. |
platform | Azure Manifest | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/azure-manifest.md | +**Update the manifest** ++1. In the left pane, select **Manifest**. ++1. Set the value for the `accessTokenAcceptedVersion` to `2` and select **Save**. ++ :::image type="content" source="../../assets/images/include-files/manifest-token.png" alt-text="Screenshot shows the manifest option and accesstoken details in Azure portal."::: |
platform | Azure Web Authentication | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/azure-web-authentication.md | **Add a web authentication** -1. In the left pane, select **Authentication**. -- > [!NOTE] - > If an app isn't granted IT admin consent, users must provide consent the first time they use an app. +1. In the left pane, under **Manage**, select **Authentication**. 1. Select **Add a platform** > **Web**. 1. Select **Configure**. :::image type="content" source="../../assets/images/include-files/configure-web.png" alt-text="Screenshot shows the option to add redirect uri and select implicit grant and hybrid flows.":::++1. Under **Web** > select **Add URI**. ++1. Enter `https://token.botframework.com/.auth/web/redirect`. ++1. Select **Save**. ++ :::image type="content" source="../../assets/images/include-files/web-add-uri.png" alt-text="Screenshot shows the option to add redirect uri and select implicit grant and hybrid flows."::: |
platform | Create Client Secret | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/create-client-secret.md | **Create a client secret** -The following steps are applicable only if you've created a new **Microsoft App ID**. To create client secret, follow these steps: --1. In the left pane, select **Configuration**. -- > [!TIP] - > Save the **Microsoft App ID** or **Client ID** for future reference. --1. Next to **Microsoft App ID**, select **Manage Password**. -- :::image type="content" source="../../assets/images/include-files/manage-bot-label.png" alt-text="Screenshot show the manage password option."::: +1. In the left pane, under **Manage**, select **Certificates & secrets**. 1. Under **Client secrets**, select **+ New client secret**. |
platform | Messaging Endpoint | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/messaging-endpoint.md | **To add a messaging endpoint** # [dev tunnel](#tab/dev) - -1. Use the dev tunnel URL in the output console as the messaging endpoint. ++1. Use the dev tunnel URL in the output console as the messaging endpoint. :::image type="content" source="../../assets/images/include-files/output-console-url.png" alt-text="Screenshot shows the url in the Visual studio output console."::: -1. Go to Azure portal and select the bot that you've created. In the left pane, under **Settings**, select **Configuration**. +1. In the left pane, under **Settings**, select **Configuration**. -1. Update the **Messaging endpoint** in the format `https://your-devtunnel-domain/api/messages`. +1. Update the **Messaging endpoint** in the format `https://your-devtunnel-domain/api/messages`. :::image type="content" source="../../assets/images/include-files/devtunnels-messaging-endpoint.png" alt-text="Screenshot shows the messaging endpoint adding api."::: You have successfully set up a bot in Azure Bot service. + > [!NOTE] + > If the **Application Insights Instrumentation key** shows an error update with **APP ID**. + # [ngrok](#tab/ngrok) 1. From ngrok, copy the HTTPS URL. :::image type="content" source="../../assets/images/include-files/ngrok-url.png" alt-text="Screenshot shows the ngrok HTTPS URL.":::- + > [!NOTE] > The HTTPS URL in your ngrok is your fully qualified domain name. > The `WebAppDomain` is a fully qualified domain name that doesn't include `https://` in it. -1. Go to the Azure bot you've created in Azure portal. In the left pane, under **Settings**, select **Configuration**. +1. In the left pane, under **Settings**, select **Configuration**. 1. Update the **Messaging endpoint** in the format `https://your-ngrok-domain/api/messages`. 1. Select **Apply**. You have successfully set up a bot in Azure Bot service.- ++ > [!NOTE] + > If the **Application Insights Instrumentation key** shows an error update with **App ID**. ++ |
platform | Oauth Connection Settings | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/includes/get-started/oauth-connection-settings.md | +**Add a OAuth connection settings** ++1. In the left pane, select **Configuration**. ++1. Select **Add OAuth Connection Settings**. ++1. Under **New Connection Setting**, update the following details: ++ * **Name**: Enter **name** for your new connection setting. You can use the name in the settings of your bot service code. + * **Service Provider**: From the dropdown list, select **Azure Active Directory V2**. + * **Client id**: Update your **Microsoft App ID**. + * **Client secret**: Update the client secret **Value**. + * **Token Exchange URL**: Update the **Application ID URI**. + * **Tenant ID**: Enter **common**. + * **Scopes**: Enter **User.Read**. ++1. Select **Save**. ++ :::image type="content" source="../../assets/images/include-files/new-connection-setting.png" alt-text="Screenshot shows the values added to set OAuth connection."::: |
platform | Faqs | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/faqs.md | Last updated 06/29/2022 # Moodle FAQ -Get answers to some of your queries when using Moodle LMS.<br> +Get answers to some of your queries when using Moodle LMS. <br> <details> -<summary><b>What should I do if one or more of the course teams weren't created after synchronization?</b></summary> +<summary>What should I do if one or more of the course teams weren't created after synchronization?</summary> Each Moodle course must have at least one faculty and one student matched to a Microsoft 365 AAD UPN account. The team can't be created, if the synchronization doesn't find a match. Each team course instance must have an owner, and the synchronization sets the faculty as the owner, with assumption that the faculty has Teams license. -<br> - </details> <details> -<summary><b>What should we do to remove Moodle login page when working from Teams? Can we force single sign-on (SSO)?</b></summary> +<summary>What should we do to remove Moodle login page when working from Teams? Can we force single sign-on (SSO)?</summary> The users have multiple sign in options from the Moodle login page. * To sign in exclusively using Microsoft 365 credentials, enable the **Force redirect** configuration settings for the **auth_oidc plugin**. If the service is enabled, user can see the Microsoft sign in page. * To sign in manually to the Moodle portal, see [Moodle](https://moodle.org/login/index.php). -<br> - </details> <details> -<summary><b>How can I specify which users to sync? I donΓÇÖt want all Azure AD users synchronized with the Moodle website. </b></summary> +<summary>How can I specify which users to sync? I donΓÇÖt want all Azure AD users synchronized with the Moodle website. </summary> Use the **User Creation Restriction** option to specify the users by synchronizing the configuration options of the **local_o365** plugin. The dropdown menu to the left of the **filter** offers options such as Country or Region, Company Name, and Language. The following image shows user creation restrictions options: :::image type="content" source="../assets/images/MoodleInstructions/faq-3.png" alt-text="Azure ad"::: -<br> - </details> <details> -<summary><b>We would like our faculty to be able to synchronize courses to Teams? Are Moodle administrators the only ones who can control synchronization of courses?</b></summary> +<summary>We would like our faculty to be able to synchronize courses to Teams? Are Moodle administrators the only ones who can control synchronization of courses?</summary> By default only Moodle administrators can configure synchronization. The team owner can control if a course is synchronized to Teams and **Allow configure course sync in course** is enabled. In this case, the team owner is the faculty. The block displays the configuration option to individuals with the appropriate owner permissions. The following image shows synchronization of courses: :::image type="content" source="../assets/images/MoodleInstructions/faq-5.png" alt-text="synchronization"::: -<br> - </details> <details> -<summary><b>We have followed the documentation, but the user accounts fail to sync AAD and Moodle. What should we do?</b></summary> +<summary>We have followed the documentation, but the user accounts fail to sync AAD and Moodle. What should we do?</summary> The issue can be resolved before users perform the **Delta token clean up** as a final troubleshooting step. The following table provides the actions and dependencies to be performed and ch | Full sync| Verify that **Perform a full sync each run** is enabled, and review the **Task Logs** for **Sync users with Azure AD**.| For more information, see [Enable full sync](https://docs.moodle.org/311/en/local_o365)</br>For more information, see [Check task logs](https://docs.moodle.org/311/en/local_o365#Sync_users_with_Azure_AD). | |Token refresh|Clean the **User sync delta token** in the local_o365 plugin.| For more information, see, [Token refresh](https://docs.moodle.org/38/en/Office365).| <!-- |Token refresh|Clean the **User sync delta token** in the local_o365 plugin| {moodle_url}\local_o365\acp.php?Mode=maintenance_cleandeltatoken| -->-<br> </details> <details> -<summary><b>One or more users are unable to sign in using their Microsoft 365 credentials, although most users can sign in without an issue. What would be the cause of this inconsistency?</b></summary> +<summary>One or more users are unable to sign in using their Microsoft 365 credentials, although most users can sign in without an issue. What would be the cause of this inconsistency?</summary> The reason for inconsistencies with users being able unable to sign using their Microsoft 365 credentials can be related to the user mapping operation during synchronization. To resolve the issue, perform the following steps: The reason for inconsistencies with users being able unable to sign using their * Clean up the **Token Issue** and retry. * Check if the users have **Permissions** to access the Azure application. -<br> - </details> <details> -<summary><b>All users are unable to sign in using their Microsoft 365 credentials. What can we do to resolve this?</b></summary> +<summary>All users are unable to sign in using their Microsoft 365 credentials. What can we do to resolve this?</summary> Users who were unable to sign in at the start need to report the issue and verify that the application **Client secret** hasn't expired. The following image shows the error in Azure portal: If the **Client secret** has expired, then user needs to generate a new **Client secret**, and update the configuration found on page. Users can sign in again after the **Client secret** has been updated, which can take up to 24 hours to re-provision. -<br> - </details> <details> -<summary><b>How to change the teams instance that is linked to a course?</b></summary> +<summary>How to change the teams instance that is linked to a course?</summary> Administrators can change the teams instance associated with a course through the **Manage Teams Connections** page. Select **Connect** next to the course to be changed and select teams instance. If you use course reset to archive a team, you can link it back to the previous team. The following image shows the teams instance: :::image type="content" source="../assets/images/MoodleInstructions/faq-8.png" alt-text="teams instance"::: -<br> - </details> <details> -<summary><b>Why isnΓÇÖt the Atto Teams meeting integration showing up within the Atto editor?</b></summary> +<summary>Why isnΓÇÖt the Atto Teams meeting integration showing up within the Atto editor?</summary> The user can face Atto Teams meeting issue if the icon reference is missing in the **Toolbar config**, which displays the Teams icon within the Atto editor. User needs to add Teams meeting icon to the right of the links icon using the following steps: For more information on editing Atto toolbar, see: * [Atto editor-ModdleDocs](https://docs.moodle.org/311/en/Atto_editor) * [Atto editor-Icon mapping](https://docs.moodle.org/311/en/Atto_editor#:~:text=in%20the%20editor.-,Atto%20editor%20toolbar,-Atto%20Row%201)-<br> </details> <details> -<summary><b>Do the meetings scheduled through Microsoft integration appear in Outlook or in Teams calendars? What is the standard timeline for the meetings to be displayed?</b></summary> +<summary>Do the meetings scheduled through Microsoft integration appear in Outlook or in Teams calendars? What is the standard timeline for the meetings to be displayed?</summary> The meetings scheduled through the app don't appear in the schedulerΓÇÖs Outlook or Teams calendar as they're similar to Channel Meetings. All the members in the course channel can attend the meeting directly from the embedded channel link. For more information, see [Channel meetings](https://www.knowledgewave.com/blog/benefits-of-channel-meetings-in-microsoft-teams). However, you can access the invite and manually add participant names to the **Required** or **Optional** fields of the meeting invitation to display the remote meeting on their calendars. The standard timelines are based on the date the user specifies when the meeting is created. For more information, see [Limits and specifications for Teams](/microsoftteams/limits-specifications-teams). -<br> - </details> <details> -<summary><b>Is there any support site where we can get more help on products and other issues?</b></summary> +<summary>Is there any support site where we can get more help on products and other issues?</summary> For support and help on the product and services issues or developer community help see, [Support and Feedback](/microsoftteams/platform/feedback). |
platform | Removing Tab Margins | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/removing-tab-margins.md | Tab margins removal affects your Teams apps that use tabs. In such cases, you ca ## FAQ -**Is it OK for app chrome, such as header bar or taskbar, to touch the edges of our designs?** +<details> +<summary>Is it OK for app chrome, such as header bar or taskbar, to touch the edges of our designs?</summary> Yes, it's allowed and Teams encourages such designs that help the app to feel native.+<br> +</details> -**Is it OK for app content, such as text, logos, and images, to touch the left and right edges of our designs?** +<details> +<summary>Is it OK for app content, such as text, logos, and images, to touch the left and right edges of our designs?</summary> No, you must provide your own padding or margins of all app content to ensure that it doesn't touch the left and right edges of your UI. You can also add margins at the top of your tab, if necessary.+<br> +</details> -**What's the size of the tab margins that Teams applied previously?** +<details> +<summary>What's the size of the tab margins that Teams applied previously?</summary> * Left and right: 20 pixels * Top: 16 pixels * Bottom: 0 pixels +<br> +</details> + > [!IMPORTANT] > > * All tabs have their margins removed: personal tabs, (group) chat tabs, meeting tabs, and channel tabs. |
platform | Manifest Schema Dev Preview | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema-dev-preview.md | The `https://` URL referencing the JSON Schema for the app manifest. ## manifestVersion -**Required**ΓÇöString +**Required** – String The version of the app manifest schema this manifest is using. ## version -**Required**ΓÇöString +**Required** – String The version of the specific app. If you update something in your app manifest, the version must be incremented as well. This way, when the new app manifest is installed, it overwrites the existing one and the user gets the new functionality. If this app was submitted to the store, the new app manifest has to be resubmitted and revalidated. Then, users of this app will get the new updated app manifest automatically in a few hours, after it's approved. This version string must follow the [semver](http://semver.org/) standard (MAJOR **Required** – Microsoft app ID -The unique Microsoft-generated identifier for this app. If you've registered a bot via the Microsoft Bot Framework, or your tab's web app already signs in with Microsoft, then you should already have an ID and must enter it here. Otherwise, you must generate a new ID at the Microsoft Application Registration Portal ([My Applications](https://apps.dev.microsoft.com)), enter it here, and then reuse it when you [add a bot](~/bots/how-to/create-a-bot-for-teams.md). +The unique Microsoft-generated identifier for this app. The format of the ID is GUID. If you've registered a bot through Microsoft Bot Framework, or your tab's web app already signs in with Microsoft, then you might already have an ID and must enter it here. Otherwise, you must generate a new ID at the Microsoft Application Registration Portal ([My Applications](https://apps.dev.microsoft.com)), enter it here, and then reuse it when you [add a bot](~/bots/how-to/create-a-bot-for-teams.md). ## developer -Required: +**Required** – Object Specifies information about your company. For apps submitted to AppSource (formerly Office Store), these values must match the information in your AppSource entry. |Name| Maximum size | Required | Description| ||||| |`name`|32 characters|Γ£ö∩╕Å|The display name for the developer.|-|`websiteUrl`|2048 characters|Γ£ö∩╕Å|The https:// URL to the developer's website. This link should take users to your company or product-specific landing page.| +|`websiteUrl`|2048 characters|Γ£ö∩╕Å|The https:// URL to the developer's website. This link must take users to your company or product-specific landing page.| |`privacyUrl`|2048 characters|Γ£ö∩╕Å|The https:// URL to the developer's privacy policy.| |`termsOfUseUrl`|2048 characters|Γ£ö∩╕Å|The https:// URL to the developer's terms of use.|-|`mpnId`|10 characters|Γ£ö∩╕Å|**Optional** The Microsoft Partner Network ID that identifies the partner organization building the app.| +|`mpnId`|10 characters||**Optional** The Microsoft Partner Network ID that identifies the partner organization building the app.| ## localizationInfo -Optional: +**Optional** – Object Allows the specification of a default language, and pointers to additional language files. See [localization](~/concepts/build-and-test/apps-localization.md). An array of objects specifying additional language translations. |Name| Maximum size | Required | Description| ||||| |`languageTag`|4 characters|Γ£ö∩╕Å|The language tag of the strings in the provided file.|-|`file`|4 characters|Γ£ö∩╕Å|A relative file path to the .json file containing the translated strings.| +|`file`|2048 characters|Γ£ö∩╕Å|A relative file path to the .json file that contains the translated strings.| ## name -Required: +**Required** – Object -The name of your app experience, displayed to users in the Teams experience. For apps submitted to AppSource, these values must match the information in your AppSource entry. The values of `short` and `full` shouldn't be the same. +The name of your app experience, displayed to users in the Teams experience. For apps submitted to AppSource, these values must match the information in your AppSource entry. The values of `short` and `full` must be different. -|Name| Maximum size | Required | Description| -||||| -|`short`|30 characters|Γ£ö∩╕Å|The short display name for the app.| -|`full`|100 characters||The full name of the app, used if the full app name exceeds 30 characters.| +|Name| Type | Maximum size | Required | Description| +|||||| +|`short`|String|30 characters|Γ£ö∩╕Å|The short display name for the app.| +|`full`|String|100 characters|Γ£ö∩╕Å|The full name of the app. It is used if the full app name exceeds 30 characters.| ## description -Required: +**Required** – Object Describes your app to users. For apps submitted to AppSource, these values must match the information in your AppSource entry. -Ensure that your description accurately describes your experience and provides information to help potential customers understand what your experience does. You should also note, in the full description, if an external account is required for use. The values of `short` and `full` shouldn't be the same. Your short description must not be repeated within the long description and must not include any other app name. +Ensure that your description accurately describes your experience and provides information to help potential customers understand what your experience does. You must note in the full description, if an external account is required for use. The values of `short` and `full` must be different. Your short description must not be repeated within the long description and must not include any other app name. |Name| Maximum size | Required | Description| ||||| Ensure that your description accurately describes your experience and provides i ## icons -Required: +**Required** – Object Icons used within the Teams app. The icon files must be included as part of the upload package. |Name| Maximum size | Required | Description| |||||-|`outline`|2048 characters|Γ£ö∩╕Å|A relative file path to a transparent 32x32 PNG outline icon.| +|`outline`|2048 characters|Γ£ö∩╕Å|A relative file path to a transparent 32x32 PNG outline icon. The border color must be white.| |`color`|2048 characters|Γ£ö∩╕Å|A relative file path to a full color 192x192 PNG icon.| ## accentColor -**Required**ΓÇöString +**Required** – String 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 `#4464e ## configurableTabs -Optional: +**Optional** – Array Used when your app experience has a team channel tab experience that requires extra configuration before it's added. Configurable tabs are supported only in the teams scope, and currently only one tab per app is supported. The object is an array with all elements of the type `object`. This block is req |||||| |`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. Default: `true`|-|`scopes`|Array of enum|1|Γ£ö∩╕Å|Currently, configurable tabs support only the `team` and `groupchat` scopes. | -|`context` |array of enums|6||The set of `contextItem` scopes where a [tab is supported](../../tabs/how-to/access-teams-context.md). Default: `channelTab`, `privateChatTab`, `meetingChatTab`, `meetingDetailsTab`, `meetingSidePanel`, and `meetingStage`.| -|`sharePointPreviewImage`|String|2048||A relative file path to a tab preview image for use in SharePoint. Size 1024x768. | -|`supportedSharePointHosts`|Array of enum|1||Defines how your tab is made available in SharePoint. Options are `sharePointFullPage` and `sharePointWebPart` | +|`scopes`|Array of enum|2|Γ£ö∩╕Å|Currently, configurable tabs support only the `team` and `groupchat` scopes. | +|`context` |Array of enum|8||The set of `contextItem` scopes where a [tab is supported](../../tabs/how-to/access-teams-context.md). Default: `channelTab`, `privateChatTab`, `meetingChatTab`, `meetingDetailsTab`, `meetingSidePanel`, `meetingStage`, `personalTab`, and `callingSidePanel`.| +|`sharePointPreviewImage`|String|2048 characters||A relative file path to a tab preview image for use in SharePoint. Size 1024x768. | +|`supportedSharePointHosts`|Array of enum|2||Defines how your tab is made available in SharePoint. Options are `sharePointFullPage` and `sharePointWebPart`. | +|`meetingSurfaces`|Array of enum|2||The set of `meetingSurfaceItem` scopes to which a tab belongs. Default: `sidePanel` and `stage`.| +|`supportedPlatform`|Array of enum|3||The set of `supportedPlatform` scopes to which a tab belongs. Default: `desktop`, `mobile`, and `teamsMeetingDevices`.| ## staticTabs -Optional: +**Optional** – Array Defines a set of tabs that can be "pinned" by default, without the user adding them manually. Static tabs declared in `personal` scope are always pinned to the app's personal experience. Static tabs declared in the `team` scope are currently not supported. The object is an array (maximum of 16 elements) with all elements of the type `o |`entityId`|String|64 characters|Γ£ö∩╕Å|A unique identifier for the entity that the tab displays.| |`name`|String|128 characters|Γ£ö∩╕Å|The display name of the tab.| |`contentUrl`|String|2048 characters|Γ£ö∩╕Å|The https:// URL that points to the entity UI to be displayed in the Teams canvas.|-|`contentBotId`| | | | The Microsoft Teams app ID specified for the bot in the Bot Framework portal. | +|`contentBotId`|String| | | The Microsoft Teams app ID specified for the bot in the Bot Framework portal. | |`websiteUrl`|String|2048 characters||The https:// URL to point at if a user opts to view in a browser.|-|`scopes`|Array of enum|3|Γ£ö∩╕Å|Static tabs support the `personal`, `team` and `groupChat` scopes, which means it can be provisioned as part of the personal, group chat, and channel meetings experience.| +|`scopes`|Array of enum|3|Γ£ö∩╕Å|Static tabs support the `personal`, `team`, and `groupChat` scopes, which means it can be provisioned as part of the personal, group chat, and channel meetings experience.| +|`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. Default: `personalTab`, `channelTab`, `privateChatTab`, `meetingChatTab`, `meetingDetailsTab`, `meetingSidePanel`, `meetingStage`, and `teamLevelApp`.| +|`supportedPlatform`|Array of enum|3||The set of `supportedPlatform` scopes to which a tab belongs. Default: `desktop`, `mobile`, and `teamsMeetingDevices`.| ## bots -Optional: +**Optional** – Array Defines a bot solution, along with optional information such as default command properties. The object is an array (maximum of only 1 element—currently only one bot i |Name| Type| Maximum size | Required | Description| ||||||-|`botId`|String|64 characters|Γ£ö∩╕Å|The unique Microsoft app ID for the bot as registered with the Bot Framework. This may well be the same as the overall [app ID](#id).| -|`needsChannelSelector`|Boolean|||Describes whether or not the bot utilizes a user hint to add the bot to a specific channel. Default: `false`| +|`botId`|String| |Γ£ö∩╕Å|The unique Microsoft app ID for the bot as registered with the Bot Framework. The ID can be the same as the overall [app ID](#id).| +|`needsChannelSelector`|Boolean|||Describes whether the bot utilizes a user hint to add the bot to a specific channel. Default: `false`| |`isNotificationOnly`|Boolean|||Indicates whether a bot is a one-way, notification-only bot, as opposed to a conversational bot. Default: `false`| |`supportsFiles`|Boolean|||Indicates whether the bot supports the ability to upload/download files in personal chat. Default: `false`| |`scopes`|Array of enum|3|Γ£ö∩╕Å|Specifies whether the bot offers an experience in the context of a channel in a `team`, in a group chat (`groupchat`), or an experience scoped to an individual user alone (`personal`). These options are non-exclusive.| |`supportsCalling`|Boolean|||A value indicating where a bot supports audio calling. **IMPORTANT**: This property is currently 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. Default: `false`| |`supportsVideo`|Boolean|||A value indicating where a bot supports video calling. **IMPORTANT**: This property is currently 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. Default: `false`|+|`requiresSecurityEnabledGroup`|Boolean|||A value indicating whether the team's Office group needs to be security enabled. Default: `false`| ++### bots.configuration ++|Name| Type| Maximum size | Required | Description| +|||||| +|`teams.parameters.name`|String|64 characters|Γ£ö∩╕Å|Name of the parameter.| +|`teams.parameters.inputType`|String|||Type of the parameter. Options are `text`, `textarea`, `number`, `date`, `time`, `toggle`, and `choiceset`. Default value is `text`.| +|`teams.parameters.title`|String|32 characters|Γ£ö∩╕Å|Title of the parameter.| +|`teams.parameters.description`|String|128 characters||Description of the parameter.| +|`teams.parameters.value`|String|512||The initial value of the parameter.| +|`teams.parameters.choices`|Array|10||The choice options for the parameter.| +|`teams.parameters.choices.title`|String|128|Γ£ö∩╕Å|Title of the choice.| +|`teams.parameters.choices.value`|String|512|Γ£ö∩╕Å|Value of the choice.| +|`taskInfo.title`|String|64 characters||Title of the task module.| +|`taskInfo.width`|String|16||Width of the task module. The value is either a number in pixels or a default layout such as `large`, `medium`, or `small`.| +|`taskInfo.height`|String|16||Height of the task module. The value is either a number in pixels or a default layout such as `large`, `medium`, or `small`.| +|`taskInfo.url`|String|2048 characters||Task module URL.| ### bots.commandLists An optional list of commands that your bot can recommend to users. The object is |Name| Type| Maximum size | Required | Description| ||||||-|`items.scopes`|array of enum|3|Γ£ö∩╕Å|Specifies the scope for which the command list is valid. Options are `team`, `personal`, and `groupchat`.| -|`items.commands`|array of objects|10|Γ£ö∩╕Å|An array of commands the bot supports:<br>`title`: the bot command name (string, 32).<br>`description`: a simple description or example of the command syntax and its argument (string, 128).| +|`items.scopes`|Array of enum|3|Γ£ö∩╕Å|Specifies the scope for which the command list is valid. Options are `team`, `personal`, and `groupchat`.| +|`items.commands`|Array of objects|10|Γ£ö∩╕Å|An array of commands the bot supports:<br>`title`: the bot command name (string, 32).<br>`description`: a simple description or example of the command syntax and its argument (string, 128).| ## connectors -Optional: +**Optional** – Array The `connectors` block defines a connector for Microsoft 365 Groups for the app. -The object is an array (maximum of 1 element) with all elements of type `object`. This block is required only for solutions that provide a Connector. +The object is an array (maximum of 1 element) with all elements of type `object`. This block is required only for solutions that provide a Connector. Only one connector per app is supported. |Name| Type| Maximum size | Required | Description| ||||||-|`configurationUrl`|String|2048 characters|Γ£ö∩╕Å|The https:// URL to use when configuring the connector.| +|`configurationUrl`|String|2048 characters|Γ£ö∩╕Å|The https:// URL to use when configuring the connector using the inline configuration experience.| |`connectorId`|String|64 characters|Γ£ö∩╕Å|A unique identifier for the Connector that matches its ID in the [Connectors Developer Dashboard](https://aka.ms/connectorsdashboard).| |`scopes`|Array of enum|1|Γ£ö∩╕Å|Specifies whether the Connector offers an experience in the context of a channel in a `team`, or an experience scoped to an individual user alone (`personal`). Currently, only the `team` scope is supported.| ## composeExtensions -Optional: +**Optional** – Array Defines a message extension for the app. The object is an array (maximum of 1 element) with all elements of type `object` |Name| Type | Maximum Size | Required | Description| ||||||-|`botId`|String|64|Γ£ö∩╕Å|The unique Microsoft app ID for the bot that backs the message extension, as registered with the Bot Framework. This may well be the same as the overall [app ID](#id).| +|`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).| |`canUpdateConfiguration`|Boolean|||A value indicating whether the configuration of a message extension can be updated by the user. The default is `false`.| |`commands`|Array of object|10|Γ£ö∩╕Å|Array of commands the message extension supports|+|`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. The default value is `false`. To enable zero install for link unfurling, the value needs to be set to `true`. <br/> **Note**: The property `supportAnonymousAccess` is superseded by `supportsAnonymizedPayloads`.| ### composeExtensions.commands -Your message extension should declare one or more commands. Each command appears in Teams as a potential interaction from the UI-based entry point. There's a maximum of 10 commands. +Your message extension must declare one or more commands. Each command appears in Teams as a potential interaction from the UI-based entry point. There's a maximum of 10 commands. Each command item is an object with the following structure: Each command item is an object with the following structure: |`type`|String|64 characters||Type of the command. One of `query` or `action`. Default: `query`| |`title`|String|32 characters|Γ£ö∩╕Å|The user-friendly command name.| |`description`|String|128 characters||The description that appears to users to indicate the purpose of this command.|-|`initialRun`|Boolean|||A Boolean value that indicates whether the command should be run initially with no parameters. Default: `false`| -|`context`|Array of Strings|3||Defines where the message extension can be invoked from. Any combination of `compose`, `commandBox`, `message`. Default is `["compose", "commandBox"]`| -|`fetchTask`|Boolean|||A Boolean value that indicates if it should fetch the task module dynamically.| +|`initialRun`|Boolean|||A Boolean value that indicates whether the command runs initially with no parameters. Default: `false`| +|`context`|Array of Strings|3 characters||Defines where the message extension can be invoked from. Any combination of `compose`, `commandBox`, `message`. Default is `["compose", "commandBox"]`| +|`fetchTask`|Boolean|||A Boolean value that indicates if it must fetch the task module dynamically.| |`taskInfo`|Object|||Specify the task module to preload when using a message extension command.|-|`taskInfo.title`|String|64||Initial dialog title.| -|`taskInfo.width`|String|||Dialog width - either a number in pixels or default layout such as 'large', 'medium', or 'small'.| -|`taskInfo.height`|String|||Dialog height - either a number in pixels or default layout such as 'large', 'medium', or 'small'.| -|`taskInfo.url`|String|||Initial webview URL.| -|`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|||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. The default value is `false`. To enable zero install for link unfurling, the value needs to be set to `true`. <br/> **Note**: The property `supportAnonymousAccess` is superseded by `supportsAnonymizedPayloads`.| +|`taskInfo.title`|String|64 characters||Initial dialog title.| +|`taskInfo.width`|String|||Dialog width - either a number in pixels or default layout such as `large`, `medium`, or `small`.| +|`taskInfo.height`|String|||Dialog height - either a number in pixels or default layout such as `large`, `medium`, or `small`.| +|`taskInfo.url`|String|2048 characters||Initial webview URL.| |`parameters`|Array of object|5|Γ£ö∩╕Å|The list of parameters the command takes. Minimum: 1; maximum: 5| |`parameter.name`|String|64 characters|Γ£ö∩╕Å|The name of the parameter as it appears in the client. This is included in the user request.| |`parameter.title`|String|32 characters|Γ£ö∩╕Å|User-friendly title for the parameter.| |`parameter.description`|String|128 characters||User-friendly string that describes this parameterΓÇÖs purpose.|-|`parameter.inputType`|String|128 characters||Defines the type of control displayed on a task module for `fetchTask: true`. One of `text`, `textarea`, `number`, `date`, `time`, `toggle`, `choiceset`.| -|`parameter.choices`|Array of Objects|10||The choice options for the `choiceset`. Use only when `parameter.inputType` is `choiceset`.| -|`parameter.choices.title`|String|128||Title of the choice.| -|`parameter.choices.value`|String|512||Value of the choice.| +|`parameter.inputType`|String|||Defines the type of control displayed on a task module for `fetchTask: false`. One of `text`, `textarea`, `number`, `date`, `time`, `toggle`, `choiceset`.| +|`parameter.value`|String|512 characters||Initial value for the parameter.| +|`parameter.choices`|Array of objects|10||The choice options for the `choiceset`. Use only when `parameter.inputType` is `choiceset`.| +|`parameter.choices.title`|String|128 characters||Title of the choice.| +|`parameter.choices.value`|String|512 characters||Value of the choice.| ++## scopeConstraints ++**Optional** – Object ++|Name| Type | Maximum Size | Required | Description| +|||||| +|`teams`|Array|128||A list of team thread IDs to which your app is restricted.| +|`teams.id`|String|64 characters|Γ£ö∩╕Å|Team's thread ID.| +|`groupChats`|Array|128||A list of chat thread IDs to which your app is restricted.| +|`groupChats.id`|String|64 characters|Γ£ö∩╕Å|Chat's thread ID.| ## permissions -Optional: +**Optional** – Array of strings An array of `string`, which specifies which permissions the app requests, which let end users know how the extension performs. The following options are non-exclusive: Changing these permissions when updating your app causes your users to repeat th ## devicePermissions -**Optional** Array of Strings +**Optional** – Array of Strings Specifies the native features on a user's device that your app may request access to. Options are: Specifies the native features on a user's device that your app may request acces **Optional**, except **Required** where noted -A list of valid domains from which the app expects to load any content. Domain listings can include wildcards, for example `*.example.com`. This matches exactly one segment of the domain; if you need to match `a.b.example.com` then use `*.*.example.com`. If your tab configuration or content UI needs to go to any other domain besides the one use for tab configuration, that domain must be specified here. +A list of valid domains from which the app expects to load any content. Domain listings can include wildcards, for example `*.example.com`. The valid domain matches exactly one segment of the domain; if you need to match `a.b.example.com` then use `*.*.example.com`. If your tab configuration or content UI needs to go to any other domain besides the one use for tab configuration, that domain must be specified here. -It is **not** necessary to include the domains of identity providers you want to support in your app, however. For example, to authenticate using a Google ID, it's necessary to redirect to accounts.google.com, but you shouldn't include accounts.google.com in `validDomains[]`. +It is **not** necessary to include the domains of identity providers you want to support in your app, however. For example, to authenticate using a Google ID, it's necessary to redirect to accounts.google.com, but you must not include accounts.google.com in `validDomains[]`. > [!IMPORTANT]-> Do not add domains that are outside your control, either directly or via wildcards. For example, `yourapp.onmicrosoft.com` is valid, but `*.onmicrosoft.com` is not valid. +> Do not add domains that are outside your control, either directly or through wildcards. For example, `yourapp.onmicrosoft.com` is valid, but `*.onmicrosoft.com` is not valid. -The object is an array with all elements of the type `string`. +The object is an array with all elements of the type `string`. The maximum item of the object is 16 and maximum length is 2048 characters. ## webApplicationInfo -Optional: +**Optional** – Object Specify your Microsoft Azure Active Directory (Azure AD) App ID and Graph information to help users seamlessly sign into your Azure AD app. |Name| Type| Maximum size | Required | Description| ||||||-|`id`|String|36 characters|Γ£ö∩╕Å|Microsoft Azure Active Directory (Azure AD) application ID of the app. This ID must be a GUID.| -|`resource`|String|2048 characters|Γ£ö∩╕Å|Resource URL of the app for acquiring auth token for SSO.| -|`applicationPermissions`|Array|Maximum 100 items|Γ£ö∩╕Å|Resource permissions for application.| +|`id`|String| |Γ£ö∩╕Å|Microsoft Azure Active Directory (Azure AD) application ID of the app. This ID must be a GUID.| +|`resource`|String|2048 characters||Resource URL of the app for acquiring auth token for SSO.| ## graphConnector -**Optional**ΓÇöobject +**Optional** – Object Specify the app's Graph connector configuration. If this is present, then [webApplicationInfo.id](#webapplicationinfo) must also be specified. |Name| Type| Maximum size | Required | Description| ||||||-|`notificationUrl`|string|2048 characters|Γ£ö∩╕Å|The url where Graph-connector notifications for the application should be sent.| +|`notificationUrl`|string|2048 characters|Γ£ö∩╕Å|The https:// URL where Graph-connector notifications for the application must be sent.| ## showLoadingIndicator -**Optional**ΓÇöBoolean +**Optional** – Boolean -Indicates whether or not to show the loading indicator when an app or tab is loading. Default is **false**. +Indicates whether to show the loading indicator when an app or tab is loading. Default is `false`. > [!NOTE] >-> * If you select`showLoadingIndicator` as true in your app manifest, to load the page correctly, modify the content pages of your tabs and task modules as described in [Show a native loading indicator](../../tabs/how-to/create-tab-pages/content-page.md#show-a-native-loading-indicator) document. +> * If you select `showLoadingIndicator` as true in your app manifest, to load the page correctly, modify the content pages of your tabs and task modules as described in [Show a native loading indicator](../../tabs/how-to/create-tab-pages/content-page.md#show-a-native-loading-indicator) document. > * If you don't modify the content pages of your tab, the tab app doesn't load and shows the error `There was a problem reaching this app`. ## isFullScreen - **Optional**ΓÇöBoolean + **Optional** – Boolean -Indicate where a personal app is rendered with or without a tab header bar. Default is **false**. +Indicate where a personal app is rendered with or without a tab header bar. Default is `false`. > [!NOTE] > `isFullScreen` works only for apps published to your organization. ## activities -**Optional**ΓÇöobject +**Optional** – Object Define the properties your app uses to post a user activity feed. |Name| Type| Maximum size | Required | Description| ||||||-|`activityTypes`|array of Objects|128 items| | Provide the types of activities that your app can post to a users activity feed.| +|`activityTypes`|Array of objects|128 items| | Provide the types of activities that your app can post to a users activity feed.| ### activities.activityTypes |Name| Type| Maximum size | Required | Description| ||||||-|`type`|string|32 characters|Γ£ö∩╕Å|The notification type. | -|`description`|string|128 characters|Γ£ö∩╕Å|A brief description of the notification. | -|`templateText`|string|128 characters|Γ£ö∩╕Å|Ex: "{actor} created task {taskId} for you"| +|`type`|String|32 characters|Γ£ö∩╕Å|The notification type. *See below*.| +|`description`|String|128 characters|Γ£ö∩╕Å|A brief description of the notification. *See below*.| +|`templateText`|String|128 characters|Γ£ö∩╕Å|Ex: "{actor} created task {taskId} for you"| ```json { Define the properties your app uses to post a user activity feed. ## configurableProperties -**Optional**ΓÇöarray +**Optional** – Array The `configurableProperties` block defines the app properties that Teams admins can customize. For more information, see [enable app customization](~/concepts/design/enable-app-customization.md). You can define any of the following properties: ## supportedChannelTypes -**Optional**ΓÇöarray +**Optional** – Array Enables your app in non-standard channels. If your app supports a team scope and this property is defined, Teams enables your app in each channel type accordingly. Currently, the private and shared channel types are supported. Enables your app in non-standard channels. If your app supports a team scope and > * If your app supports a team scope, it functions in the standard channels regardless of the values that are defined in this property. > * Your app can account for the unique properties of each of the channel types to function properly. To enable your tab for private and shared channels, see [retrieve context in private channels](~/tabs/how-to/access-teams-context.md#retrieve-context-in-private-channels) and [get context in shared channels](../../tabs/how-to/access-teams-context.md#get-context-in-shared-channels) +## defaultBlockUntilAdminAction ++**Optional** – Boolean ++A value that indicates whether an app is blocked by default until admin allows it. The default value is `false`. ++## publisherDocsUrl ++**Optional** – String ++The https:// URL to the page that provides additional app information for the admins. The maximum length of the string is 2048 characters. + ## defaultInstallScope -**Optional**ΓÇöstring +**Optional** – String Specifies the install scope defined for this app by default. The defined scope is the option displayed on the button when a user tries to add the app. Options are: Specifies the install scope defined for this app by default. The defined scope i ## defaultGroupCapability -**Optional**ΓÇöobject +**Optional** – Object When a group install scope is selected, it defines the default capability when the user installs the app. Options are: When a group install scope is selected, it defines the default capability when t |Name| Type| Maximum size | Required | Description| ||||||-|`team`|string|||When the install scope selected is `team`, this field specifies the default capability available. Options: `tab`, `bot`, or `connector`.| -|`groupchat`|string|||When the install scope selected is `groupchat`, this field specifies the default capability available. Options: `tab`, `bot`, or `connector`.| -|`meetings`|string|||When the install scope selected is `meetings`, this field specifies the default capability available. Options: `tab`, `bot`, or `connector`.| +|`team`|String|||When the install scope selected is `team`, this field specifies the default capability available. Options: `tab`, `bot`, or `connector`.| +|`groupchat`|String|||When the install scope selected is `groupchat`, this field specifies the default capability available. Options: `tab`, `bot`, or `connector`.| +|`meetings`|String|||When the install scope selected is `meetings`, this field specifies the default capability available. Options: `tab`, `bot`, or `connector`.| ## subscriptionOffer -**Optional**ΓÇöobject +**Optional** – Object Specifies the SaaS offer associated with your app. Specifies the SaaS offer associated with your app. ## meetingExtensionDefinition -**Optional**ΓÇöobject +**Optional** – Object Specify meeting extension definition. For more information, see [custom Together Mode scenes in Teams](../../apps-in-teams-meetings/teams-together-mode.md). |Name| Type| Maximum size | Required | Description| ||||||-|`scenes`|array of objects| 5 items||Meeting supported scenes.| -|`supportsStreaming`|Boolean|||A value that indicates whether an app can stream the meeting's audio and video content to a real-time meeting protocol (RTMP) endpoint. The default value is **false**.| +|`scenes`|Array of objects| 5 items||Meeting supported scenes.| +|`supportsStreaming`|Boolean|||A Boolean value that indicates whether an app can stream the meeting's audio and video content to a real-time meeting protocol (RTMP) endpoint. The default value is `false`.| +|`videoFiltersConfigurationUrl`|String|2048 characters||The https:// URL for configuring the video filters.| +|`supportsAnonymousGuestUsers`|Boolean|||A Boolean value that indicates whether the app supports access by anonymous guest users. The default value is `false`.| ### meetingExtensionDefinition.scenes |Name| Type|Maximum size|Required |Description| ||||||-|`id`|||Γ£ö∩╕Å| The unique identifier for the scene. This id must be a GUID. | -|`name`| string | 128 characters |Γ£ö∩╕Å| The name of the scene. | -|`file`|||Γ£ö∩╕Å| The relative file path to the scenes' metadata json file. | -|`preview`|||Γ£ö∩╕Å| The relative file path to the scenes' PNG preview icon. | -|`maxAudience`| integer | 50 |Γ£ö∩╕Å| The maximum number of audiences supported in the scene. | -|`seatsReservedForOrganizersOrPresenters`| integer | 50 |Γ£ö∩╕Å| The number of seats reserved for organizers or presenters.| +|`id`|String||Γ£ö∩╕Å| The unique identifier for the scene. This ID must be a GUID. | +|`name`| String | 128 characters |Γ£ö∩╕Å| The name of the scene. | +|`file`|String|2048 characters|Γ£ö∩╕Å| The relative file path to the scenes' metadata json file. | +|`preview`|String|2048 characters|Γ£ö∩╕Å| The relative file path to the scenes' PNG preview icon. | +|`maxAudience`| Integer | 50 |Γ£ö∩╕Å| The maximum number of audiences supported in the scene. | +|`seatsReservedForOrganizersOrPresenters`| Integer | 50 |Γ£ö∩╕Å| The number of seats reserved for organizers or presenters.| ++### meetingExtensionDefinition.videoFilters ++This object indicates meeting supported video filters. ++|Name| Type|Maximum size|Required |Description| +|||||| +|`id`|String||Γ£ö∩╕Å| The unique identifier for the video filter. This ID must be a GUID. | +|`name`| String | 128 characters |Γ£ö∩╕Å| The name of the video filter. | +|`thumbnail`|String|2048 characters|Γ£ö∩╕Å| The relative file path to the video filter's thumbnail. | ## authorization -**Optional**ΓÇöobject +**Optional** – Object > [!NOTE] > `authorization` is only supported for the app manifest version 1.12 or later. Specify and consolidate authorization related information for the app. |Name| Type|Maximum size|Required |Description| ||||||-|`permissions`|NA|NA|NA|List of permissions that the app needs to function.| +|`permissions`|Object|||List of permissions that the app needs to function.| ### authorization.permissions |Name| Type|Maximum size|Required |Description| ||||||-|`resourceSpecific`| array of objects|16 items|NA|Permissions that guard data access on resource instance level.| +|`resourceSpecific`| Array of objects|16 items||Permissions that guard data access on resource instance level.| ### authorization.permissions.resourceSpecific |Name| Type|Maximum size|Required |Description| ||||||-|`type`|string|NA|Γ£ö∩╕Å| The type of the resource-specific consent (RSC) permission. Options: `Application` and `Delegated`.| -|`name`|string|128 characters|Γ£ö∩╕Å|The name of the RSC permission. For more information, see [RSC application permissions](#rsc-application-permissions) and [RSC delegated permissions](#rsc-delegated-permissions)| +|`type`|String||Γ£ö∩╕Å| The type of resource-specific consent (RSC) permission. Options: `Application` and `Delegated`.| +|`name`|String|128 characters|Γ£ö∩╕Å|The name of the RSC permission. For more information, see [RSC application permissions](#rsc-application-permissions) and [RSC delegated permissions](#rsc-delegated-permissions)| #### RSC application permissions Delegated permissions allow the app to access data on behalf of the signed-in us ## extensions -**Optional**ΓÇöarray +**Optional** – Array Contains objects that define the set of extensions for the app. Used to specify Outlook Add-ins within an app manifest for simplified distribution and acquisition within the Microsoft 365 ecosystem. Contains objects that define the set of extensions for the app. Used to specify |Name| Type| Maximum size | Required | Description| ||||||-|`requirements.capabilities`| array | | | Identifies the requirement sets that the add-in needs to be installable. Each object in the array is made up of three strings `name` (required), `minVersion`, and `maxVersion`. | -|`requirements.scopes`| array | 1 | | Identifies the Office applications, by enum, in which the add-in can be installed. The only supported enum value is `mail`. | -|`requirements.formFactors`| array | | | Identifies the form factors, by enum `mobile` and `desktop`, in which the add-in can be installed. | -|`runtimes`| array | | | Configures various kinds of add-ins that have little or no UI, such as custom function-only add-ins and [function commands](/office/dev/add-ins/design/add-in-commands). | -|`ribbons`| array | | | The ribbons that the add-in customizes. This property is an array of objects that combine the child properties `requirements`, `contexts`, and `tabs`. `Contexts` specify the command surfaces that the add-in customizes, while the `tabs` property configures custom ribbon tabs. | -|`autoRunEvents`| array | | | Configures an event handler for a specified event. | -|`alternates`| array | | | Specifies backwards compatibility with an equivalent COM add-in, XLL, or both. For more information on background, see [EquivalentAddins](/javascript/api/manifest/equivalentaddins). | -|`audienceClaimUrl`| string | 2048 | | The url for your extension, used to validate Exchange user identity tokens. | +|`requirements.capabilities`| Array | | | Identifies the requirement sets that the add-in needs to be installable. Each object in the array is made up of three strings `name` (required), `minVersion`, and `maxVersion`. | +|`requirements.scopes`| Array | 1 | | Identifies the Office applications, by enum, in which the add-in can be installed. The only supported enum value is `mail`. | +|`requirements.formFactors`| Array | | | Identifies the form factors, by enum `mobile` and `desktop`, in which the add-in can be installed. | +|`runtimes`| Array | | | Configures various kinds of add-ins that have little or no UI, such as custom function-only add-ins and [function commands](/office/dev/add-ins/design/add-in-commands). | +|`ribbons`| Array | | | The ribbons that the add-in customizes. This property is an array of objects that combine the child properties `requirements`, `contexts`, and `tabs`. `Contexts` specify the command surfaces that the add-in customizes, while the `tabs` property configures custom ribbon tabs. | +|`autoRunEvents`| Array | | | Configures an event handler for a specified event. | +|`alternates`| Array | | | Specifies backwards compatibility with an equivalent COM add-in, XLL, or both. For more information on background, see [EquivalentAddins](/javascript/api/manifest/equivalentaddins). | +|`audienceClaimUrl`| String | 2048 characters | | The https:// URL for your extension, used to validate Exchange user identity tokens. | For more information, see [extension property](/office/dev/add-ins/develop/json-manifest-overview) in the Office Add-ins manifest documentation. |
platform | Manifest Schema | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/resources/schema/manifest-schema.md | The schema defines the following properties: ## $schema -Optional, but recommendedΓÇöstring +Optional, but recommended – String The https:// URL referencing the JSON Schema for the app manifest. ## manifestVersion -**Required**ΓÇöString +**Required** – String The version of the app manifest schema that this manifest is using. Use `1.13` to enable Teams app support in Outlook and Microsoft 365 app; use `1.12` (or earlier) for Teams-only apps. ## version -**Required**ΓÇöString +**Required** – String The version of a specific app. When you update something in your app manifest, the version must be incremented too. This way, when the new app manifest is installed, it overwrites the existing one and the user receives the new functionality. When this app was submitted to the store, the new app manifest must be resubmitted and revalidated. The app users receive the new updated app manifest automatically within few hours after the app manifest is approved. This version string must follow the [semver](http://semver.org/) standard (MAJOR ## ID -**Required**ΓÇöMicrosoft app ID +**Required** – Microsoft app ID -The ID is a unique Microsoft-generated identifier for the app. You have an ID if your bot is registered through the Microsoft Bot Framework. You have an ID if your tab's web app already signs in with Microsoft. You must enter the ID here. Otherwise, you must generate a new ID at the [Microsoft Application Registration Portal](https://aka.ms/appregistrations). Use the same ID if you add a bot. +The ID is a unique Microsoft-generated identifier for the app. The format of the ID is GUID. You have an ID if your bot is registered through the Microsoft Bot Framework. You have an ID if your tab's web app already signs in with Microsoft. You must enter the ID here. Otherwise, you must generate a new ID at the [Microsoft Application Registration Portal](https://aka.ms/appregistrations). Use the same ID if you add a bot. The ID stored in Teams Admin Center is the **External App ID** and it's visible as **ExternalID** on the traces. The ID stored in Teams Admin Center is the **External App ID** and it's visible ## developer -**Required**ΓÇöObject +**Required** – Object Specifies information about your company. For apps submitted to the Teams store, these values must match the information in your store listing. For more information, see the [Teams store publishing guidelines](~/concepts/deploy-and-publish/appsource/publish.md). Developer name helps improve your app discoverability in the Teams store. Specifies information about your company. For apps submitted to the Teams store, ## name -**Required**ΓÇöObject +**Required** – Object The name of your app experience, displayed to users in the Teams experience. For apps submitted to AppSource, these values must match the information in your AppSource entry. The values of `short` and `full` must be different. App name helps improve your app discoverability in the Teams store. The name of your app experience, displayed to users in the Teams experience. For ## description -**Required**ΓÇöObject +**Required** – Object Describes your app to users. For apps submitted to AppSource, these values must match the information in your AppSource entry. App description helps improve your app discoverability in the Teams store. Ensure that your description describes your experience and helps potential custo ## localizationInfo -**Optional**ΓÇöObject +**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). An array of objects specifying more language translations. |Name| Maximum size | Required | Description| ||||| |`languageTag`||Γ£ö∩╕Å|The language tag of the strings in the provided file.|-|`file`||Γ£ö∩╕Å|A relative file path to the .json file containing the translated strings.| +|`file`|2048 characters|Γ£ö∩╕Å|A relative file path to the .json file containing the translated strings.| ## icons -**Required**ΓÇöObject +**Required** – Object Icons used within the Teams app. The icon files must be included as part of the upload package. For more information, see [Icons](../../concepts/build-and-test/apps-package.md#app-icons). |Name| Maximum size | Required | Description| |||||-|`outline`|32 x 32 pixels|Γ£ö∩╕Å|A relative file path to a transparent 32x32 PNG outline icon.| +|`outline`|32 x 32 pixels|Γ£ö∩╕Å|A relative file path to a transparent 32x32 PNG outline icon. The border color must be white.| |`color`|192 x 192 pixels|Γ£ö∩╕Å|A relative file path to a full color 192x192 PNG icon.| ## accentColor -**Required**ΓÇöHTML Hex color code +**Required** – HTML Hex color code 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 `#4464e ## configurableTabs -**Optional**ΓÇöArray +**Optional** – Array Used when your app experience has a team channel tab experience that requires extra configuration before it's added. Configurable tabs are supported only in the `team` and `groupChat` scopes and you can configure the same tabs multiple times. However, you can define it in the app manifest only once. Used when your app experience has a team channel tab experience that requires ex ## staticTabs -**Optional**ΓÇöArray +**Optional** – Array Defines a set of tabs that can be pinned by default, without the user adding them manually. Static tabs declared in `personal` scope are always pinned to the app's personal experience. Static tabs declared in the `team` scope are currently not supported. This item is an array (maximum of 16 elements) with all elements of the type `ob ## bots -**Optional**ΓÇöArray +**Optional** – Array Defines a bot solution, along with optional information such as default command properties. The item is an array (maximum of only one element—currently only one bot i |Name| Type| Maximum size | Required | Description| ||||||-|`botId`|String|128 characters|Γ£ö∩╕Å|The unique Microsoft app ID for the bot as registered with the Bot Framework. The ID can be the same as the overall [app ID](#id).| +|`botId`|String||Γ£ö∩╕Å|The unique Microsoft app ID for the bot as registered with the Bot Framework. The ID can be the same as the overall [app ID](#id).| |`scopes`|Array of enums|3|Γ£ö∩╕Å|Specifies whether the bot offers an experience in the context of a channel in a `team`, in a group chat (`groupChat`), or an experience scoped to an individual user alone (`personal`). These options are non-exclusive.| |`needsChannelSelector`|Boolean|||Describes whether or not the bot uses a user hint to add the bot to a specific channel. Default: **`false`**| |`isNotificationOnly`|Boolean|||Indicates whether a bot is a one-way, notification-only bot, as opposed to a conversational bot. Default: **`false`**| A list of commands that your bot can recommend to users. The object is an array ## connectors -**Optional**ΓÇöArray +**Optional** – Array The `connectors` block defines a connector card for Microsoft 365 Groups for the app. The object is an array (maximum of one element) with all elements of type `objec |Name| Type| Maximum size | Required | Description| ||||||-|`configurationUrl`|String|2048 characters| |The https:// URL to use when configuring the connector.| +|`configurationUrl`|String|2048 characters|Γ£ö∩╕Å|The https:// URL to use when configuring the connector using the inline configuration experience.| |`scopes`|Array of enums|1|Γ£ö∩╕Å|Specifies whether the Connector offers an experience in the context of a channel in a `team`, or an experience scoped to an individual user alone (`personal`). Currently, only the `team` scope is supported.| |`connectorId`|String|64 characters|Γ£ö∩╕Å|A unique identifier for the Connector that matches its ID in the [Connectors Developer Dashboard](https://aka.ms/connectorsdashboard).| ## composeExtensions -**Optional**ΓÇöArray +**Optional** – Array Defines a message extension for the app. The item is an array (maximum of one element) with all elements of type `object` |Name| Type | Maximum Size | Required | Description| ||||||-|`botId`|String|128 characters|Γ£ö∩╕Å|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.| +|`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.| |`commands`|Array of objects|10|Γ£ö∩╕Å|Array of commands the message extension supports.| |`canUpdateConfiguration`|Boolean|||A value indicating whether the configuration of a message extension can be updated by the user. Default: **false**.|-|`messageHandlers`|Array of Objects|5||A list of handlers that allow apps to be invoked when certain conditions are met.| +|`messageHandlers`|Array of objects|5||A list of handlers that allow apps to be invoked when certain conditions are met.| |`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.value.domains`|Array of strings|2048 characters||Array of domains that the link message handler can register for.| |`messageHandlers.value.supportsAnonymizedPayloads`|Boolean||| A boolean value that indicates whether the app's link message handler supports anonymous invoke flow. Default is false.| ### composeExtensions.commands Each command item is an object with the following structure: |`type`|String|||Type of the command. One of `query` or `action`. Default: **query**.| |`description`|String|128 characters||The description that appears to users to indicate the purpose of this command.| |`initialRun`|Boolean|||A Boolean value indicates whether the command runs initially with no parameters. Default is **false**.|-|`context`|Array of Strings|3||Defines where the message extension can be invoked from. Any combination of`compose`,`commandBox`,`message`. Default is `["compose","commandBox"]`.| +|`context`|Array of strings|3||Defines where the message extension can be invoked from. Any combination of`compose`,`commandBox`,`message`. Default is `["compose","commandBox"]`.| |`fetchTask`|Boolean|||A Boolean value that indicates if it must fetch the task module dynamically. Default is **false**.| |`taskInfo`|Object|||Specify the task module to pre-load when using a message extension command.| |`taskInfo.title`|String|64 characters||Initial dialog title.| Each command item is an object with the following structure: ## permissions -**Optional**ΓÇöArray of strings +**Optional** – Array of strings An array of `string`, which specifies which permissions the app requests, which let end users know how the extension does. The following options are non-exclusive: Changing these permissions during app update, causes your users to repeat the co ## devicePermissions -**Optional**ΓÇöArray of strings +**Optional** – Array of strings Provides the native features on a user's device that your app requests access to. Options are: Teams apps that require their own SharePoint URLs to function well, includes "{t > > For example, *\*.\*.domain.com* is valid, but *foo.\*.myteam.domain.com* is not valid. -The object is an array with all elements of the type `string`. +The object is an array with all elements of the type `string`. The maximum item of the object is 16 and maximum length is 2048 characters. ## webApplicationInfo -**Optional**ΓÇöObject +**Optional** – Object Provide your Azure Active Directory App ID and Microsoft Graph information to help users seamlessly sign into your app. If your app is registered in Microsoft Azure Active Directory (Azure AD), you must provide the App ID. Administrators can easily review permissions and grant consent in Teams admin center. |Name| Type| Maximum size | Required | Description| ||||||-|`id`|String|128 characters|Γ£ö∩╕Å|Azure AD application ID of the app. This ID must be a GUID.| +|`id`|String||Γ£ö∩╕Å|Azure AD application ID of the app. This ID must be a GUID.| |`resource`|String|2048 characters||Resource URL of app for acquiring auth token for SSO. </br> **NOTE:** If you aren't using SSO, ensure that you enter a dummy string value in this field to your app manifest, for example, `https://example` to avoid an error response. | ## graphConnector -**Optional**ΓÇöObject +**Optional** – Object Specify the app's Graph connector configuration. If this is present, then [webApplicationInfo.id](#webapplicationinfo) must also be specified. Specify the app's Graph connector configuration. If this is present, then [webAp ## showLoadingIndicator -**Optional**ΓÇöBoolean +**Optional** – Boolean Indicates if or not to show the loading indicator when an app or tab is loading. Default is **false**. >[!NOTE] Indicates if or not to show the loading indicator when an app or tab is loading. ## isFullScreen - **Optional**ΓÇöBoolean + **Optional** – Boolean Indicates if a personal app is rendered without a tab header bar (signifying full screen mode). Default is **false**. Indicates if a personal app is rendered without a tab header bar (signifying ful ## activities -**Optional**ΓÇöObject +**Optional** – Object Define the properties your app uses to post a user activity feed. |Name| Type| Maximum size | Required | Description| ||||||-|`activityTypes`|Array of Objects|128 items| | Provide the types of activities that your app can post to a users activity feed.| +|`activityTypes`|Array of objects|128 items| | Provide the types of activities that your app can post to a users activity feed.| ### activities.activityTypes Define the properties your app uses to post a user activity feed. ## defaultInstallScope -**Optional**ΓÇöString +**Optional** – String Specifies the install scope defined for this app by default. The defined scope is the option displayed on the button when a user tries to add the app. Options are: Specifies the install scope defined for this app by default. The defined scope i ## defaultGroupCapability -**Optional**ΓÇöObject +**Optional** – Object When a group install scope is selected, it defines the default capability when the user installs the app. Options are: When a group install scope is selected, it defines the default capability when t ## configurableProperties -**Optional**ΓÇöArray +**Optional** – Array The `configurableProperties` block defines the app properties that Teams admins can customize. For more information, see [enable app customization](~/concepts/design/enable-app-customization.md). The app customization feature isn't supported in custom or LOB apps. You can define any of the following properties: ## supportedChannelTypes -**Optional**ΓÇöArray +**Optional** – Array Enables your app in non-standard channels. If your app supports a team scope and this property is defined, Teams enables your app in each channel type accordingly. The supportedChannelTypes property only supports `sharedChannels` and `privateChannels`. Enables your app in non-standard channels. If your app supports a team scope and ## defaultBlockUntilAdminAction -**Optional**ΓÇöBoolean +**Optional** – Boolean When `defaultBlockUntilAdminAction` property is set to **true**, the app is hidden from users by default until admin allows it. If set to **true**, the app is hidden for all tenants and end users. The tenant admins can see the app in the Teams admin center and take action to allow or block the app. The default value is **false**. For more information on default app block, see [Block apps by default for users until an admin approves](../../concepts/deploy-and-publish/add-default-install-scope.md#block-apps-by-default-for-users-until-an-admin-approves). ## publisherDocsUrl -**Optional**ΓÇöString +**Optional** – String **Maximum size** - 2048 characters The value of the `publisherDocsUrl` parameter is a secure HTTPS URL to the app d ## subscriptionOffer -**Optional**ΓÇöObject +**Optional** – Object Specifies the SaaS offer associated with your app. Specifies the SaaS offer associated with your app. ## meetingExtensionDefinition -**Optional**ΓÇöObject +**Optional** – Object Specify meeting extension definition. For more information, see [custom Together Mode scenes in Teams](../../apps-in-teams-meetings/teams-together-mode.md). Specify meeting extension definition. For more information, see [custom Together |Name| Type|Maximum size|Required |Description| ||||||-|`id`|String | 128 characters|Γ£ö∩╕Å| The unique identifier for the scene. This id must be a GUID. | +|`id`|String ||Γ£ö∩╕Å| The unique identifier for the scene. This id must be a GUID. | |`name`| String | 128 characters |Γ£ö∩╕Å| The name of the scene. | |`file`|String|2048 characters|Γ£ö∩╕Å| The relative file path to the scenes' metadata json file. | |`preview`|String|2048 characters|Γ£ö∩╕Å| The relative file path to the scenes' PNG preview icon. | Specify meeting extension definition. For more information, see [custom Together ## authorization -**Optional**ΓÇöObject +**Optional** – Object > [!NOTE] > `authorization` is only supported for the app manifest version 1.12 or later. Specify and consolidate authorization related information for the app. |Name| Type|Maximum size|Required |Description| ||||||-|`permissions`||||List of permissions that the app needs to function.| +|`permissions`|Object|||List of permissions that the app needs to function.| ### authorization.permissions |
platform | Tabs Mobile | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/design/tabs-mobile.md | Last updated 11/02/2022 # Tabs on mobile -When you are building a Microsoft Teams app that includes a tab, you must test how your tab functions on both the Android and iOS Microsoft Teams clients. This article outlines some of the key scenarios you must consider. --If you choose to have your channel or group tab appear on Teams mobile clients, the [`setSettings()`](/javascript/api/@microsoft/teams-js/microsoftteams.settings?view=msteams-client-js-latest#@microsoft-teams-js-microsoftteams-settings-setsettings&preserve-view=true) configuration must have a value for the `websiteUrl` property. To ensure optimal user experience, you must follow the guidance for tabs on mobile in this article when creating your tabs. +When you are building a Microsoft Teams app that includes a tab, you must test how your tab functions on both the Android and iOS Microsoft Teams clients. This article outlines some of the key scenarios you must consider to ensure optimal user expereince. Apps [distributed through the Teams store](~/concepts/deploy-and-publish/appsource/publish.md) have a separate approval process for mobile clients. The default behavior of such apps is as follows: | **App capability** | **Behavior if app is approved** | **Behavior if app is not approved** | | | | | | **Personal tabs** | App appears in the bottom bar of the mobile clients. Tabs open in the Teams client. | App does not appear in the bottom bar of the mobile clients. |-| **Channel and group tabs** | The tab opens in the Teams client using `contentUrl`. | The tab opens in a browser outside the Teams client using `websiteUrl`. | +| **Channel and group tabs** | The tab opens in the Teams client using `contentUrl`. | If `websiteUrl` is available in the app manifest file, the tab opens in a browser outside Teams. </br> If `websiteUrl` isnΓÇÖt available in the app manifest file, the tab isnΓÇÖt accessible on Teams mobile. However, the tab is still accessible on Desktop and web. | > [!NOTE] > The following table describes tab availability and behavior when the app is list | Capability | Mobile availability? | Mobile behavior | |-|--||-|Channel and group tab|Yes|Tab opens in the device's default browser instead of the Teams mobile client using your app's `websiteUrl` configuration, which must also be included in your source code's `setSettings()` [function](/microsoftteams/platform/tabs/how-to/using-teams-client-sdk#settings-namespace). However, users can view the tab in the Teams mobile client by selecting **More** next to the app and choosing **Open**, which triggers your appΓÇÖs `contentUrl` configuration.| +|Channel and group tab|Yes|Tab opens in the device's default browser instead of the Teams mobile client using your app's `websiteUrl` configuration, which must also be included in your source code's `setSettings()` [function](/microsoftteams/platform/tabs/how-to/using-teams-client-sdk#settings-namespace). | |Personal app|No|Not applicable| > [!NOTE] |
platform | Teams Faq | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/teams-faq.md | Live Share isn't supported for GCC, GCC-High, and DOD tenants. </details> +<details> +<summary><b>Does Live Share support external and guest users?</b></summary> ++Yes, Live Share supports guest and external users for most meeting types. However, guest users aren't supported in channel meetings. ++<br> ++</details> ++<details> +<summary><b>Does Live Share support Teams Rooms devices?</b></summary> ++No, Live Share doesn't support Teams Rooms devices. ++<br> ++</details> ++<details> +<summary><b>Do Live Share apps support meeting recordings?</b></summary> ++No, Live Share doesn't support Teams Rooms devices. ++<br> ++</details> + ## Microsoft Graph <details> |
platform | Faq | https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/toolkit/faq.md | Last updated 11/29/2021 Following are the FAQs for [Provision cloud resources using Teams Toolkit](provision.md): -<br> +</br> <details> -<summary><b>How to troubleshoot?</b></summary> +<summary>How to troubleshoot?</summary> If you get errors with Teams Toolkit in Visual Studio Code, you can select **Get Help** on the error notification to go to the related document. If you're using TeamsFx CLI, there'll be a hyperlink at the end of error message that points to the help doc. You can also view [provision help doc](https://aka.ms/teamsfx-arm-help) directly. -<br> +</br> </details> <details> -<summary><b>How can I switch to another Azure subscription while provisioning?</b></summary> +<summary>How can I switch to another Azure subscription while provisioning?</summary> 1. Switch subscription in current account or sign out and select a new subscription. 2. If you've already provisioned current environment, you need to create a new environment and perform provision because ARM doesn't support moving resources. 3. If you didn't provision current environment, you can trigger provision directly. -<br> +</br> </details> <details> -<summary><b>How can I change resource group while provisioning?</b></summary> +<summary>How can I change resource group while provisioning?</summary> Before provision, the tool asks you if you want to create a new resource group or use an existing one. You can provide a new resource group name or choose an existing one in this step. -<br> +</br> </details> <details> -<summary><b>How can I provision SharePoint-based app?</b></summary> +<summary>How can I provision SharePoint-based app?</summary> You can follow [provision SharePoint-based app](/microsoftteams/platform/sbs-gs-spfx?tabs=vscode%2Cviscode&tutorial-step=4). > [!NOTE] > Currently, the building Teams app with SharePoint framework with Teams Toolkit doesn't have direct integration with Azure, the contents in the doc doesn't apply to SPFx-based apps. -<br> +</br> ++</details> ++<details> +<summary>How can I deploy the code in Azure AD using Teams Toolkit, and use Graph API to get the app user's profile photo?</summary> ++Shared references to deploy the code using toolkit: ++* [Create a new Teams app using Teams Toolkit](create-new-project.md) +* [TeamsFx Command Line Interface](TeamsFx-CLI.md) ++You can call Graph API to get the app user's profile photo. </details> |