ESC
Type to search...

TeamsAppInstallation.ReadWriteSelfForUser

Export JSON
Export CSV
Copy URL
Print
Delegated Read/Write User Scope

Allows a Teams app to read, install, upgrade, and uninstall itself for the signed-in user.

Permission data: April 6, 2026 at 4:06 AM UTC
Delegated Access App-Only Access

Permission Details

Delegated Permission User consent allowed

Allow the Teams app to manage itself for a user

Allows a Teams app to read, install, upgrade, and uninstall itself for the signed-in user.

Properties

Microsoft Graph v1.0 exact-category-docs

Properties is shown from stable Microsoft Graph v1.0 metadata.

Property Type Description
consentedPermissionSet teamsAppPermissionSet The set of resource-specific permissions consented to while installing or upgrading the teamsApp.
id string A unique ID (not the Teams app ID).
teamsApp object The app that is installed.
teamsAppDefinition object The details of this version of the app.

JSON Representation

Microsoft Graph v1.0 exact-category-docs

JSON representation is shown from stable Microsoft Graph v1.0 metadata.

JSON representation
{
  "consentedPermissionSet": "#microsoft.graph.teamsAppPermissionSet",
  "id": "string"
}

Relationships

Microsoft Graph v1.0 exact-category-docs

Relationships is shown from stable Microsoft Graph v1.0 metadata.

Relationship Type Description
teamsApp teamsApp The app that is installed.
teamsAppDefinition teamsAppDefinition The details of this version of the app.

Graph Methods

Delegated access App-only access
Exact Microsoft Learn match

Microsoft Graph v1.0 endpoints are mapped directly from refreshed Microsoft Learn permissions tables.

Methods
GET /users/{user-id | user-principal-name}/teamwork/installedApps
GET /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
GET /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}/chat
POST /users/{user-id | user-principal-name}/teamwork/installedApps
POST /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}/upgrade
DELETE /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
Exact Microsoft Learn match

Microsoft Graph beta endpoints are mapped directly from refreshed Microsoft Learn permissions tables.

Methods
GET /users/{user-id | user-principal-name}/teamwork/installedApps
GET /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
GET /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}/chat
POST /users/{user-id | user-principal-name}/teamwork/installedApps
POST /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}/upgrade
DELETE /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
Exact Microsoft Learn PowerShell match

Microsoft Graph PowerShell v1.0 commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.

Commands
Get-MgUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps
List apps installed for user
Get-MgUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
Get installed app for user
Get-MgUserTeamworkInstalledAppChat /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}/chat
Get chat between user and teamsApp
New-MgUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps
Install app for user
Remove-MgUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
Uninstall app for user
Exact Microsoft Learn PowerShell match

Microsoft Graph PowerShell beta commands are mapped directly from refreshed Microsoft Learn PowerShell snippets.

Commands
Get-MgBetaUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps
List apps installed for user
Get-MgBetaUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
Get installed app for user
Get-MgBetaUserTeamworkInstalledAppChat /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}/chat
Get chat between user and teamsApp
New-MgBetaUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps
Install app for user
Remove-MgBetaUserTeamworkInstalledApp /users/{user-id | user-principal-name}/teamwork/installedApps/{app-installation-id}
Uninstall app for user

Code Examples

C# / .NET SDK
Install app for user
// Code snippets are only available for the latest version. Current version is 5.x

// Dependencies
using Microsoft.Graph.Models;

var requestBody = new UserScopeTeamsAppInstallation
{
	AdditionalData = new Dictionary<string, object>
	{
		{
			"[email protected]" , "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/12345678-9abc-def0-123456789a"
		},
	},
};

// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].Teamwork.InstalledApps.PostAsync(requestBody);
JavaScript
Install app for user
const options = {
	authProvider,
};

const client = Client.init(options);

const userScopeTeamsAppInstallation = {
   '[email protected]':'https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/12345678-9abc-def0-123456789a'
};

await client.api('/users/5b649834-7412-4cce-9e69-176e95a394f5/teamwork/installedApps')
	.post(userScopeTeamsAppInstallation);
PowerShell
Install app for user
Import-Module Microsoft.Graph.Teams

$params = @{
	"[email protected]" = "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/12345678-9abc-def0-123456789a"
}

New-MgUserTeamworkInstalledApp -UserId $userId -BodyParameter $params
Python
Install app for user
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.user_scope_teams_app_installation import UserScopeTeamsAppInstallation
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = UserScopeTeamsAppInstallation(
	additional_data = {
			"teams_app@odata_bind" : "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/12345678-9abc-def0-123456789a",
	}
)

result = await graph_client.users.by_user_id('user-id').teamwork.installed_apps.post(request_body)

App Registration

1

Navigate to Azure Portal

Go to App registrations in Microsoft Entra admin center

2

Add API Permission

Select your app → API permissions → Add a permission → Microsoft Graph

3

Select Permission Type

Choose Delegated permissions and search for TeamsAppInstallation.ReadWriteSelfForUser

4

Grant Admin Consent

Users can consent to this permission during sign-in.