> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langdock.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Teams

> Review minimum OAuth scopes for Microsoft Teams actions and workflow triggers, and the impact of Sites.Selected on channel attachments.

Review the minimum standard delegated scope mapping for every Microsoft Teams action and workflow trigger. The mapping covers chats, teams, channels, messages, users, meetings, and attachments.

<Note>
  When a [Sensitivity Label Policy](/en/admin/manage-integrations/sensitivity-label-policy) is applied, Teams classifies downloadable SharePoint or OneDrive attachments before download. Message text is not classified.
</Note>

<Warning>
  Actions that handle channel and chat attachments require `Files.ReadWrite.All`.

  While sending and reading message text functions without this scope, attachment handling will fail unless `Files.ReadWrite.All` is granted.
</Warning>

## Minimal scopes per action or trigger

<Note>
  Each Microsoft Teams connection also requests `openid`, `offline_access`, and `User.Read`. These connection scopes apply in addition to the action scopes in the table.
</Note>

<div style={{overflowX: "auto"}}>
  <table style={{width: "100%", maxWidth: "100%", minWidth: 0, tableLayout: "fixed", whiteSpace: "normal", overflowWrap: "anywhere", wordBreak: "break-word"}}>
    <thead>
      <tr>
        <th style={{width: "22%"}}>Action</th>
        <th style={{width: "28%"}}>Description</th>
        <th style={{width: "50%"}}>Minimum scopes</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <td><strong>Find chat</strong></td>
        <td>Finds a chat.</td>
        <td><code>Chat.ReadWrite</code></td>
      </tr>

      <tr>
        <td><strong>Get channel message</strong></td>
        <td>Gets a channel message and its attachments.</td>
        <td><code>ChannelMessage.Read.All</code><br /><code>Files.ReadWrite.All</code></td>
      </tr>

      <tr>
        <td><strong>Get channel messages</strong></td>
        <td>Gets channel messages and their attachments.</td>
        <td><code>ChannelMessage.Read.All</code><br /><code>Files.ReadWrite.All</code></td>
      </tr>

      <tr>
        <td><strong>Get chat messages</strong></td>
        <td>Gets chat messages and their attachments.</td>
        <td><code>Chat.ReadWrite</code><br /><code>Files.ReadWrite.All</code></td>
      </tr>

      <tr>
        <td><strong>Get meeting transcript</strong></td>
        <td>Gets a meeting transcript.</td>
        <td><code>Calendars.ReadWrite</code><br /><code>OnlineMeetings.Read</code><br /><code>OnlineMeetingTranscript.Read.All</code></td>
      </tr>

      <tr>
        <td><strong>List all channels</strong></td>
        <td>Lists channels.</td>
        <td><code>Channel.ReadBasic.All</code></td>
      </tr>

      <tr>
        <td><strong>List all chats</strong></td>
        <td>Lists chats.</td>
        <td><code>Chat.Read</code></td>
      </tr>

      <tr>
        <td><strong>List all teams</strong></td>
        <td>Lists teams.</td>
        <td><code>Team.ReadBasic.All</code></td>
      </tr>

      <tr>
        <td><strong>List all users in channel</strong></td>
        <td>Lists users in a channel.</td>
        <td><code>ChannelMember.Read.All</code></td>
      </tr>

      <tr>
        <td><strong>List all users in chat</strong></td>
        <td>Lists users in a chat.</td>
        <td><code>Chat.Read</code></td>
      </tr>

      <tr>
        <td><strong>List online meetings</strong></td>
        <td>Lists online meetings.</td>
        <td><code>Calendars.ReadWrite</code></td>
      </tr>

      <tr>
        <td><strong>Reply to channel message</strong></td>
        <td>Replies to a channel message and can include attachments.</td>
        <td><code>Channel.ReadBasic.All</code><br /><code>ChannelMember.Read.All</code><br /><code>ChannelMessage.Send</code><br /><code>Files.ReadWrite.All</code></td>
      </tr>

      <tr>
        <td><strong>Resolve channel</strong></td>
        <td>Resolves a channel.</td>
        <td><code>Channel.ReadBasic.All</code><br /><code>Team.ReadBasic.All</code></td>
      </tr>

      <tr>
        <td><strong>Resolve chat</strong></td>
        <td>Resolves a chat.</td>
        <td><code>Chat.Read</code></td>
      </tr>

      <tr>
        <td><strong>Resolve meeting</strong></td>
        <td>Resolves a meeting.</td>
        <td><code>Calendars.ReadWrite</code></td>
      </tr>

      <tr>
        <td><strong>Resolve team</strong></td>
        <td>Resolves a team.</td>
        <td><code>Team.ReadBasic.All</code></td>
      </tr>

      <tr>
        <td><strong>Search messages</strong></td>
        <td>Searches messages in channels and chats.</td>
        <td><code>ChannelMessage.Read.All</code><br /><code>Chat.ReadWrite</code></td>
      </tr>

      <tr>
        <td><strong>Search users</strong></td>
        <td>Searches users.</td>
        <td><code>User.Read.All</code></td>
      </tr>

      <tr>
        <td><strong>Send channel message</strong></td>
        <td>Sends a channel message and can include attachments.</td>
        <td><code>Channel.ReadBasic.All</code><br /><code>ChannelMember.Read.All</code><br /><code>ChannelMessage.Send</code><br /><code>Files.ReadWrite.All</code></td>
      </tr>

      <tr>
        <td><strong>Send chat message</strong></td>
        <td>Sends a chat message and can include attachments.</td>
        <td><code>Chat.ReadWrite</code><br /><code>Files.ReadWrite.All</code></td>
      </tr>
    </tbody>
  </table>
</div>

## Workflow triggers

The Microsoft Teams integration also provides these polling triggers.

<div style={{overflowX: "auto"}}>
  <table style={{width: "100%", maxWidth: "100%", minWidth: 0, tableLayout: "fixed", whiteSpace: "normal", overflowWrap: "anywhere", wordBreak: "break-word"}}>
    <thead>
      <tr>
        <th style={{width: "22%"}}>Trigger</th>
        <th style={{width: "28%"}}>Description</th>
        <th style={{width: "50%"}}>Minimum scopes</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <td><strong>New channel mention</strong></td>
        <td>Triggers when the connected user is mentioned in a channel.</td>
        <td><code>ChannelMessage.Read.All</code></td>
      </tr>

      <tr>
        <td><strong>New channel message</strong></td>
        <td>Triggers when a new message is posted in a channel.</td>
        <td><code>ChannelMessage.Read.All</code></td>
      </tr>

      <tr>
        <td><strong>New chat message</strong></td>
        <td>Triggers when a new message is received in a chat.</td>
        <td><code>Chat.ReadWrite</code></td>
      </tr>

      <tr>
        <td><strong>New meeting transcript</strong></td>
        <td>Triggers when a transcript becomes available for a recently ended meeting.</td>
        <td><code>Calendars.ReadWrite</code><br /><code>OnlineMeetings.Read</code><br /><code>OnlineMeetingTranscript.Read.All</code><br /><code>OnlineMeetingRecording.Read.All</code></td>
      </tr>

      <tr>
        <td><strong>New reaction in channel</strong></td>
        <td>Triggers when someone reacts to a channel message or reply.</td>
        <td><code>ChannelMessage.Read.All</code></td>
      </tr>

      <tr>
        <td><strong>New reaction in chat</strong></td>
        <td>Triggers when someone reacts to a chat message.</td>
        <td><code>Chat.ReadWrite</code></td>
      </tr>
    </tbody>
  </table>
</div>

## Actions affected by `Sites.Selected`

<Warning>
  Teams channel attachments use the team's SharePoint drive. With `Sites.Selected`, Microsoft Graph rejects the `filesFolder` lookup even when the selected site has write access. Chat attachments use personal OneDrive, so `Sites.Selected` does not apply to them.
</Warning>

The following actions may not work completely when handling channel attachments with selected site permissions:

<AccordionGroup>
  <Accordion title="Get channel message">
    When the action reads a channel attachment, it resolves the channel folder through the Microsoft Graph `/teams/{teamId}/channels/{channelId}/filesFolder` endpoint. `Sites.Selected` doesn't authorize this lookup, so attachment retrieval can fail even when the selected site grant allows direct file access.
  </Accordion>

  <Accordion title="Get channel messages">
    When the action reads channel attachments, it resolves the channel folder through the Microsoft Graph `/teams/{teamId}/channels/{channelId}/filesFolder` endpoint. `Sites.Selected` doesn't authorize this lookup, so attachment retrieval can fail even when the selected site grant allows direct file access.
  </Accordion>

  <Accordion title="Reply to channel message">
    When the action sends a channel attachment, it resolves the channel folder through the Microsoft Graph `/teams/{teamId}/channels/{channelId}/filesFolder` endpoint. `Sites.Selected` rejects this lookup before the file upload or reply request.
  </Accordion>

  <Accordion title="Send channel message">
    When the action sends a channel attachment, it resolves the channel folder through the Microsoft Graph `/teams/{teamId}/channels/{channelId}/filesFolder` endpoint. `Sites.Selected` rejects this lookup before the file upload or message request.
  </Accordion>
</AccordionGroup>

## Related pages

* [Microsoft Integration Scopes](/en/admin/manage-integrations/microsoft-integration-scopes)
* [Microsoft integrations: permissions and admin approval](/en/admin/manage-integrations/integration-setup-guides/microsoft)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.