TeamsTab.ReadWriteForChat
Allows a Teams app to read, install, upgrade, and uninstall all tabs in chats the signed-in user can access.
Permission Details
Allow the Teams app to manage all tabs in chats
Allows a Teams app to read, install, upgrade, and uninstall all tabs in chats the signed-in user can access.
ee928332-e9c2-4747-b4a0-f8c164b68de6
Properties
Properties is shown from stable Microsoft Graph v1.0 metadata.
| Property | Type | Description |
|---|---|---|
configuration |
teamsTabConfiguration |
Container for custom settings applied to a tab. The tab is considered configured only once this property is set. |
displayName |
stringNullable |
Name of the tab. |
id |
string |
Identifier that uniquely identifies a specific instance of a channel tab. Read-only. |
webUrl |
stringNullable |
Deep link URL of the tab instance. Read-only. |
teamsApp |
object |
The application that is linked to the tab. This can't be changed after tab creation. |
JSON Representation
JSON representation is shown from stable Microsoft Graph v1.0 metadata.
{
"id": "string",
"displayName": "string",
"webUrl": "string",
"configuration": "teamsTabConfiguration"
}
Relationships
Relationships is shown from stable Microsoft Graph v1.0 metadata.
| Relationship | Type | Description |
|---|---|---|
teamsApp |
teamsApp |
The application that is linked to the tab. This can't be changed after tab creation. |
Graph Methods
Microsoft Graph v1.0 endpoints are mapped directly from refreshed Microsoft Learn permissions tables.
| Methods |
|---|
GET
/chats/{chat-id}/tabs
|
GET
/chats/{chat-id}/tabs/{tab-id}
|
POST
/chats/{chat-id}/tabs
|
PATCH
/chats/{chat-id}/tabs/{tab-id}
|
DELETE
/chats/{chat-id}/tabs/{tab-id}
|
Microsoft Graph beta endpoints are mapped directly from refreshed Microsoft Learn permissions tables.
| Methods |
|---|
GET
/chats/{chat-id}/tabs
|
GET
/chats/{chat-id}/tabs/{tab-id}
|
POST
/chats/{chat-id}/tabs
|
PATCH
/chats/{chat-id}/tabs/{tab-id}
|
DELETE
/chats/{chat-id}/tabs/{tab-id}
|
Microsoft Graph PowerShell v1.0 commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.
Microsoft Graph PowerShell beta commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.
Code Examples
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new TeamsTab
{
DisplayName = "My Contoso Tab",
Configuration = new TeamsTabConfiguration
{
EntityId = "2DCA2E6C7A10415CAF6B8AB6661B3154",
ContentUrl = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/tabView",
WebsiteUrl = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154",
RemoveUrl = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/uninstallTab",
},
AdditionalData = new Dictionary<string, object>
{
{
"[email protected]" , "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/06805b9e-77e3-4b93-ac81-525eb87513b8"
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Chats["{chat-id}"].Tabs.PostAsync(requestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const teamsTab = {
displayName: 'My Contoso Tab',
'[email protected]': 'https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/06805b9e-77e3-4b93-ac81-525eb87513b8',
configuration: {
entityId: '2DCA2E6C7A10415CAF6B8AB6661B3154',
contentUrl: 'https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/tabView',
websiteUrl: 'https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154',
removeUrl: 'https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/uninstallTab'
}
};
await client.api('/chats/19:[email protected]/tabs')
.post(teamsTab);
Import-Module Microsoft.Graph.Teams
$params = @{
displayName = "My Contoso Tab"
"[email protected]" = "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/06805b9e-77e3-4b93-ac81-525eb87513b8"
configuration = @{
entityId = "2DCA2E6C7A10415CAF6B8AB6661B3154"
contentUrl = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/tabView"
websiteUrl = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154"
removeUrl = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/uninstallTab"
}
}
New-MgChatTab -ChatId $chatId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.teams_tab import TeamsTab
from msgraph.generated.models.teams_tab_configuration import TeamsTabConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = TeamsTab(
display_name = "My Contoso Tab",
configuration = TeamsTabConfiguration(
entity_id = "2DCA2E6C7A10415CAF6B8AB6661B3154",
content_url = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/tabView",
website_url = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154",
remove_url = "https://www.contoso.com/Orders/2DCA2E6C7A10415CAF6B8AB6661B3154/uninstallTab",
),
additional_data = {
"teams_app@odata_bind" : "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/06805b9e-77e3-4b93-ac81-525eb87513b8",
}
)
result = await graph_client.chats.by_chat_id('chat-id').tabs.post(request_body)
App Registration
Navigate to Azure Portal
Go to App registrations in Microsoft Entra admin center
Add API Permission
Select your app → API permissions → Add a permission → Microsoft Graph
Select Permission Type
Choose Delegated permissions and search for TeamsTab.ReadWriteForChat
Grant Admin Consent
This delegated permission requires admin consent.