更新订阅

命名空间:microsoft.graph

重要

Microsoft Graph版本下的 /beta API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

注意

应更新将此功能与 baseTaskbaseTaskList 配合使用的现有应用,因为基于这些资源构建的待办 API 集自 2022 年 5 月 31 日起已弃用。 该 API 集将于 2022 年 8 月 31 日停止返回数据。 请使用 基于 todoTask 构建的 API 集。

通过延长到期时间续订订阅。

权限 ”部分中的表列出了支持订阅更改通知的资源。

订阅在时间长度因资源类型而异后过期。 为了避免缺少更改通知,应用应在订阅到期日期之前提前续订订阅。 有关每个资源类型的订阅的最大长度,请参阅 订阅

权限

根据请求的资源和权限类型(委托或应用程序),下表中指定的权限为调用此 API 所需的最小权限。 若要了解其他信息, 特权权限之前要特别小心,在"权限" 中搜索

支持的资源 委派(工作或学校帐户) 委派(个人 Microsoft 帐户) 应用程序
baseTask (已弃用) Tasks.ReadWrite Tasks.ReadWrite 不支持
callRecord 不支持 不支持 CallRecords.Read.All
频道(/teams/getAllChannels – 组织中的所有频道) 不支持 不支持 Channel.ReadBasic.All,ChannelSettings.Read.All
频道 (/teams/{id}/channels) Channel.ReadBasic.All,ChannelSettings.Read.All 不支持 Channel.ReadBasic.All,ChannelSettings.Read.All
聊天(/chats - 组织中的所有聊天) 不支持 不支持 Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
聊天 (/chats/{id}) Chat.ReadBasic, Chat.Read, Chat.ReadWrite 不支持 ChatSettings.Read.Chat 、ChatSettings.ReadWrite.Chat、Chat.Manage.Chat*、Chat.ReadBasic.All、Chat.Read.All、Chat.ReadWrite.All
chatMessage (/teams/{id}/channels/{id}/messages) ChannelMessage.Read.All、Group.Read.All、Group.ReadWrite.All 不支持 ChannelMessage.Read.Group*、ChannelMessage.Read.All
chatMessage(/teams/getAllMessages -- 组织中所有频道消息) 不支持 不支持 ChannelMessage.Read.All
chatMessage (/chats/{id}/messages) Chat.Read、Chat.ReadWrite 不支持 Chat.Read.All
chatMessage(/chats/getAllMessages -- 组织中所有聊天消息) 不支持 不支持 Chat.Read.All
chatMessage(/users/{id}/chats/getAllMessages - 特定用户所属所有聊天的聊天消息) Chat.Read、Chat.ReadWrite 不支持 Chat.Read.All、Chat.ReadWrite.All
联系人 Contacts.Read Contacts.Read Contacts.Read
conversationMember (/chats/getAllMembers) 不支持 不支持 ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All.
conversationMember (/chats/{id}/members) ChatMember.Read, ChatMember.ReadWrite, Chat.ReadBasic, Chat.Read, Chat.ReadWrite 不支持 ChatMember.Read.Chat 、Chat.Manage.Chat、ChatMember.Read.All、ChatMember.ReadWrite.All、Chat.ReadBasic.All、Chat.Read.All、Chat.ReadWrite.All
conversationMember (/teams/getAllMembers) 不支持 不支持 TeamMember.Read.All, TeamMember.ReadWrite.All
conversationMember (/teams/{id}/members) TeamMember.Read.All 不支持 TeamMember.Read.All
conversationMember (/teams/{id}/channels/getAllMembers) 不支持 不支持 ChannelMember.Read.All
driveItem(用户的个人 OneDrive) 不支持 Files.ReadWrite 不支持
driveItem (OneDrive for Business) Files.ReadWrite.All 不支持 Files.ReadWrite.All
事件 Calendars.Read Calendars.Read Calendars.Read
Group.Read.All 不支持 Group.Read.All
组对话 Group.Read.All 不支持 不支持
列表 Sites.ReadWrite.All 不支持 Sites.ReadWrite.All
邮件 Mail.ReadBasic、Mail.Read Mail.ReadBasic、Mail.Read Mail.Read
联机会议 不支持 不支持 OnlineMeetings.Read.All、OnlineMeetings.ReadWrite.All
状态 Presence.Read.All 不支持 不支持
打印机 不支持 不支持 打印机。阅读.All,Printer.ReadWrite.All
printTaskDefinition 不支持 不支持 PrintTaskDefinition.ReadWrite.All
安全警报 SecurityEvents.ReadWrite.All 不支持 SecurityEvents.ReadWrite.All
团队(/teams - 组织中的所有团队) 不支持 不支持 Team.ReadBasic.All,TeamSettings.Read.All
团队 (/teams/{id}) Team.ReadBasic.All,TeamSettings.Read.All 不支持 Team.ReadBasic.All,TeamSettings.Read.All
todoTask Tasks.ReadWrite Tasks.ReadWrite 不支持
user User.Read.All User.Read.All User.Read.All

注意:标有 * 的权限用于 特定于资源的同意

chatMessage

可以指定 chatMessage 订阅以包含资源数据。 如果指定为包含资源数据(将 includeResourceData 设置为 true),则需要 encryption。 如果没有为此类订阅指定 encryptionCertificate,则订阅创建将失败。 在可以使用应用程序权限创建 chatMessage 订阅之前,可能需要请求访问权限。 有关详细信息,请参阅 Microsoft Teams 中的受保护 API

必须使用 Prefer: include-unknown-enum-members 请求标头以 chatMessage messageType evolvable enum 中获取以下值:适用于 /teams/{id}/channels/{id}/messages/chats/{id}/messagessystemEventMessage

备注

/teams/getAllMessages/chats/getAllMessages/me/chats/getAllMessages/users/{id}/chats/getAllMessages具有许可和付款要求/teams/getAllMessages/chats/getAllMessages支持model=Amodel=B查询参数,/me/chats/getAllMessages/users/{id}/chats/getAllMessages仅支持model=B。 如果未指定模型,将使用评估模式

conversationMember

可以指定 conversationMember 订阅以包含资源数据。 如果指定为包含资源数据(将 includeResourceData 设置为 true),则需要 encryption。 如果未指定 encryptionCertificate,则订阅创建将失败。

备注

/teams/getAllMembers/chats/getAllMembers 具有 许可和付款要求/teams/getAllMembers/chats/getAllMembers 同时支持 model=Amodel=B 查询参数。 如果未指定模型,将使用评估模式

团队、频道和聊天

可以指定 团队频道聊天 订阅以包含资源数据。 如果指定为包含资源数据(将 includeResourceData 设置为 true),则需要 encryption。 如果未指定 encryptionCertificate,则订阅创建将失败。

请求示例

在请求正文中的 资源 内指定 model 查询参数。

POST https://graph.microsoft.com/beta/subscriptions
Content-type: application/json

{
   "changeType": "created",
   "notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
   "resource": "chats/getAllMessages?model=A",
   "expirationDateTime":"2016-11-20T18:23:45.9356913Z",
   "clientState": "secretClientValue",
   "latestSupportedTlsVersion": "v1_2"
}

driveItem

其他限制适用于 OneDrive 项目的订阅。 这些限制适用于订阅的创建和管理(获取、更新和删除)。

在个人 OneDrive 上,可订阅根文件夹或该驱动器中的任何子文件夹。 在 OneDrive for Business 上,只可以订阅根文件夹。 对订阅的文件夹或者其层次结构中的任何文件、文件夹或其他 driveItem 实例所做更改属于请求的更改类型时,发送更改通知。 无法订阅不是文件夹的“驱动器”或“driveItem”实例,例如单个文件。

联系人、事件和消息

可以订阅 Outlook 联系人事件消息 资源中的更改,并在 POST 请求有效负载中选择性地指定是否在通知中包含加密的资源数据。

创建和管理(获取、更新和删除)订阅需要资源的读取范围。 例如,若要获取有关邮件的更改通知,应用需要 Mail.Read 权限。 Outlook 更改通知支持委派和应用程序权限范围。 请注意以下限制:

  • 委托的权限仅支持订阅已登录用户的邮箱内文件夹中的项。 例如,不能使用委托的权限 Calendars.Read 来订阅另一个用户邮箱中的事件。

  • 订阅 共享或委托 文件夹中 Outlook 联系人、事件或邮件的更改通知:

    • 使用相应的应用程序权限订阅租户内 任何 用户的文件夹或邮箱中项目的更改。
    • 切勿使用 Outlook 共享权限(Contacts.Read.Shared、Calendars.Read.Shared、Mail.Read.Shared 及其相应的读写权限),因为它们 支持订阅对共享或委托文件夹中的项的更改通知。

onlineMeetings,状态

onlineMeetings状态 订阅需要对包含资源数据的通知进行 加密 。 如果在通知中需要资源数据,则未指定 encryptionCertificateencryptionCertificateId ,则订阅创建将失败。 有关联机会议订阅的详细信息,请参阅 获取联机会议的更改通知

HTTP 请求

PATCH /subscriptions/{id}

请求标头

名称 类型 说明
Authorization string Bearer {token}。必需。

请求正文

在请求正文中, 提供应更新的属性的值。未包含在请求正文中的现有属性将保留其以前的值或根据对其他属性值的更改重新计算。

下表指定可以更新的属性。

名称 类型 说明
expirationDateTime DateTimeOffset 指定订阅到期时 UTC 中的日期和时间。 受支持的最大订阅时间长度因资源而异。

响应

如果成功,此方法在响应正文中返回 200 OK 响应代码和 subscription 对象。

要详细了解错误返回方式,请参阅错误响应

示例

请求

下面是一个请求示例。

PATCH https://graph.microsoft.com/beta/subscriptions/{id}
Content-type: application/json

{
   "expirationDateTime":"2016-11-22T18:23:45.9356913Z"
}

响应

下面是一个响应示例。

HTTP/1.1 200 OK
Content-type: application/json

{
  "id":"7f105c7d-2dc5-4530-97cd-4e7ae6534c07",
  "resource":"me/messages",
  "applicationId": "24d3b144-21ae-4080-943f-7067b395b913",
  "changeType":"created,updated",
  "clientState":"secretClientValue",
  "notificationUrl":"https://webhook.azurewebsites.net/api/send/myNotifyClient",
  "lifecycleNotificationUrl":"https://webhook.azurewebsites.net/api/send/lifecycleNotifications",
  "expirationDateTime":"2016-11-22T18:23:45.9356913Z",
  "creatorId": "8ee44408-0679-472c-bc2a-692812af3437",
  "latestSupportedTlsVersion": "v1_2",
  "encryptionCertificate": "",
  "encryptionCertificateId": "",
  "includeResourceData": false,
  "notificationContentType": "application/json"
}