ESC
Type to search...

ChannelMessage.ReadWrite

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

Allows the app to read and write channel messages, on behalf of the signed-in user. This doesn't allow the app to edit the policyViolation of a channel message.

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

Permission Details

Delegated Permission Admin consent required

Read and write user channel messages

Allows the app to read and write channel messages, on behalf of the signed-in user. This doesn't allow the app to edit the policyViolation of a channel message.

Properties

Microsoft Graph v1.0 endpoint-derived-docs

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

Property Type Description
id string The unique identifier of the team. The group has the same ID as the team. This property is read-only, and is inherited from the base entity type.
classification stringNullable An optional label. Typically describes the data or business sensitivity of the team. Must match one of a preconfigured set in the tenant's directory.
classSettings teamClassSettings Configure settings of a class. Available only when the team represents a class.
createdDateTime dateTimeOffsetNullable Timestamp at which the team was created.
description stringNullable An optional description for the team. Maximum length: 1,024 characters.
displayName stringNullable The name of the team.
firstChannelName StringNullable The name of the first channel in the team. This is an optional property, only used during team creation and isn't returned in methods to get and list teams.
funSettings teamFunSettings Settings to configure use of Giphy, memes, and stickers in the team.
guestSettings teamGuestSettings Settings to configure whether guests can create, update, or delete channels in the team.
internalId stringNullable A unique ID for the team that was used in a few places such as the audit log/Office 365 Management Activity API.
isArchived BooleanNullable Whether this team is in read-only mode.
memberSettings teamMemberSettings Settings to configure whether members can perform certain actions, for example, create channels and add bots, in the team.
messagingSettings teamMessagingSettings Settings to configure messaging and mentions in the team.
specialization teamSpecialization Optional. Indicates whether the team is intended for a particular use case. Each team specialization has access to unique behaviors and experiences targeted to its use case.
summary teamSummary Contains summary information about the team, including number of owners, members, and guests.

Showing 15 of 32 properties.

JSON Representation

Microsoft Graph v1.0 endpoint-derived-docs

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

JSON representation
{
  "classSettings": {
    "@odata.type": "microsoft.graph.teamClassSettings"
  },
  "classification": "String",
  "createdDateTime": "DateTimeOffset",
  "description": "String",
  "displayName": "String",
  "firstChannelName": "String",
  "funSettings": {
    "@odata.type": "microsoft.graph.teamFunSettings"
  },
  "guestSettings": {
    "@odata.type": "microsoft.graph.teamGuestSettings"
  },
  "internalId": "String",
  "isArchived": "Boolean",
  "memberSettings": {
    "@odata.type": "microsoft.graph.teamMemberSettings"
  },
  "messagingSettings": {
    "@odata.type": "microsoft.graph.teamMessagingSettings"
  },
  "specialization": "String",
  "tenantId": "String",
  "visibility": "String",
  "webUrl": "String (URL)"
}

Relationships

Microsoft Graph v1.0 endpoint-derived-docs

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

Relationship Type Description
allChannels channel collection List of channels either hosted in or shared with the team (incoming channels).
channels channel collection The collection of channels and messages associated with the team.
incomingChannels channel collection List of channels shared with the team.
installedApps teamsAppInstallation collection The apps installed in this team.
members conversationMember collection Members and owners of the team.
operations teamsAsyncOperation collection The async operations that ran or are running on this team.
photo profilePhoto The profile photo for the team.
primaryChannel channel The general channel for the team.
schedule schedule The schedule of shifts for this team.
tags teamworkTag collection The tags associated with the team.
template teamsTemplate The template this team was created from. See available templates.
permissionGrants resourceSpecificPermissionGrant collection A collection of permissions granted to apps to access the team.
owners user collection The list of this team's owners. Currently, when creating a team using application permissions, exactly one owner must be specified. When using user-delegated permissions, no owner can be specified (the current user is the owner). The owner must be specified as an object ID (GUID), not a UPN.

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
POST /teams/{teamId}/channels/{channelId}/messages/{messageId}/replies/{replyId}/softDelete
POST /teams/{teamId}/channels/{channelId}/messages/{messageId}/replies/{replyId}/undoSoftDelete
POST /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
POST /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/undoSoftDelete
POST /users/{userId}/chats/{chatsId}/messages/{chatMessageId}/softDelete
POST /users/{userId}/chats/{chatsId}/messages/{chatMessageId}/undoSoftDelete
PATCH /chats/{chatThread-id}/messages/{message-id}
PATCH /teams/(team-id)/channels/{channel-id}/messages/{message-id}
PATCH /teams/(team-id)/channels/{channel-id}/messages/{message-id}/replies/{reply-id}
Exact Microsoft Learn match

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

Methods
POST /teams/{teamId}/channels/{channelId}/messages/{messageId}/replies/{replyId}/softDelete
POST /teams/{teamId}/channels/{channelId}/messages/{messageId}/replies/{replyId}/undoSoftDelete
POST /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
POST /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/undoSoftDelete
POST /users/{userId}/chats/{chatsId}/messages/{chatMessageId}/softDelete
POST /users/{userId}/chats/{chatsId}/messages/{chatMessageId}/undoSoftDelete
PATCH /chats/{chatThread-id}/messages/{message-id}
PATCH /teams/(team-id)/channels/{channel-id}/messages/{message-id}
PATCH /teams/(team-id)/channels/{channel-id}/messages/{message-id}/replies/{reply-id}
Exact Microsoft Learn PowerShell match

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

Commands
Invoke-MgSoftTeamChannelMessageDelete /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
chatMessage: softDelete
Invoke-MgSoftTeamChannelMessageReplyDelete /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
chatMessage: softDelete
Invoke-MgSoftUserChatMessageDelete /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
chatMessage: softDelete
Update-MgTeamChannelMessage /teams/(team-id)/channels/{channel-id}/messages/{message-id}
Update chatMessage
Exact Microsoft Learn PowerShell match

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

Commands
Invoke-MgBetaSoftTeamChannelMessageDelete /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
chatMessage: softDelete
Invoke-MgBetaSoftTeamChannelMessageReplyDelete /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
chatMessage: softDelete
Invoke-MgBetaSoftUserChatMessageDelete /teams/{teamsId}/channels/{channelId}/messages/{chatMessageId}/softDelete
chatMessage: softDelete
Update-MgBetaTeamChannelMessage /teams/(team-id)/channels/{channel-id}/messages/{message-id}
Update chatMessage

Code Examples

C# / .NET SDK
chatMessage: softDelete
// Code snippets are only available for the latest version. Current version is 5.x

// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Users["{user-id}"].Chats["{chat-id}"].Messages["{chatMessage-id}"].SoftDelete.PostAsync();
JavaScript
chatMessage: softDelete
const options = {
	authProvider,
};

const client = Client.init(options);

await client.api('/users/8f98f01d-1a73-401a-b9e9-9fd1e6f5e5ar/chats/19:[email protected]/messages/1649864053377/softDelete')
	.post();
PowerShell
chatMessage: softDelete
Import-Module Microsoft.Graph.Teams

Invoke-MgSoftUserChatMessageDelete -UserId $userId -ChatId $chatId -ChatMessageId $chatMessageId
Python
chatMessage: softDelete
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python

await graph_client.users.by_user_id('user-id').chats.by_chat_id('chat-id').messages.by_chat_message_id('chatMessage-id').soft_delete.post()

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 ChannelMessage.ReadWrite

4

Grant Admin Consent

This delegated permission requires admin consent.