更新订阅
命名空间:microsoft.graph
重要
Microsoft Graph /beta
版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。
通过延长到期时间续订订阅。
“权限”部分中的表列出了支持订阅更改通知的资源。
订阅在一段时间后过期,时间长度因资源类型而异。 为了避免缺少更改通知,应用应在到期日期之前提前续订其订阅。 有关每种资源类型的订阅的最大长度,请参阅订阅。
此 API 可用于以下国家级云部署。
全局服务 | 美国政府 L4 | 美国政府 L5 (DOD) | 由世纪互联运营的中国 |
---|---|---|---|
✅ | ✅ | ✅ | ✅ |
权限
根据请求的资源和权限类型(委托或应用程序),下表中指定的权限为调用此 API 所需的最小权限。 若要了解其他信息, 在 特权权限之前要特别小心,在"权限" 中搜索。
注意
某些资源在多种方案中支持更改通知,其中每个方案可能需要不同的权限。 在这些情况下,请使用资源路径来区分方案。
支持的资源 | 委派(工作或学校帐户) | 委派(个人 Microsoft 帐户) | 应用程序 |
---|---|---|---|
approvalItems | 不支持。 | 不支持。 | ApprovalSolution.ReadWrite.All |
callRecord | 不支持。 | 不支持。 | CallRecords.Read.All |
callRecording communications/onlineMeetings/getAllRecordings 任何录制内容将在租户中可用。 |
不支持。 | 不支持。 | OnlineMeetingRecording.Read.All |
callRecording communications/onlineMeetings/{onlineMeetingId}/recordings 任何录制内容都可用于特定会议。 |
OnlineMeetingRecording.Read.All | 不支持。 | OnlineMeetingRecording.Read.All |
callRecording users/{userId}/onlineMeetings/getAllRecordings 在由特定用户组织的会议中可用的通话记录。 |
OnlineMeetingRecording.Read.All | 不支持。 | OnlineMeetingRecording.Read.All |
callRecording appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllRecordings 在安装了特定 Teams 应用的会议中可用的通话记录。 |
不支持。 | 不支持。 | OnlineMeetingRecording.Read.All、OnlineMeetingRecording.Read.Chat |
callTranscript communications/onlineMeetings/getAllTranscripts 任何脚本将在租户中可用。 |
不支持。 | 不支持。 | OnlineMeetingTranscript.Read.All |
callTranscript communications/onlineMeetings/{onlineMeetingId}/transcripts 任何脚本都可用于特定会议。 |
OnlineMeetingTranscript.Read.All | 不支持。 | OnlineMeetingTranscript.Read.All |
callTranscript users/{userId}/onlineMeetings/getAllTranscripts 在由特定用户组织的会议中可用的通话记录。 |
OnlineMeetingTranscript.Read.All | 不支持。 | OnlineMeetingTranscript.Read.All |
callTranscript appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllTranscripts 在安装了特定 Teams 应用的会议中可用的通话记录。 |
不支持。 | 不支持。 | OnlineMeetingTranscript.Read.All、OnlineMeetingTranscript.Read.Chat |
频道 /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 |
聊天 /appCatalogs/teamsApps/{id}/installedToChats 安装了特定 Teams 应用的组织中所有聊天。 |
不支持。 | 不支持。 | Chat.ReadBasic.WhereInstalled、Chat.Read.WhereInstalled、Chat.ReadWrite.WhereInstalled |
聊天 /users/{id}/chats 特定用户所属的所有聊天。 |
Chat.ReadBasic, Chat.Read, Chat.ReadWrite | 不支持。 | 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 |
chatMessage /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages 安装特定 Teams 应用的组织中所有聊天的聊天消息。 |
不支持。 | 不支持。 | Chat.Read.WhereInstalled、Chat.ReadWrite.WhereInstalled |
contact | 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 /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers 安装特定 Teams 应用的组织中所有聊天的聊天成员。 |
不支持。 | 不支持。 | ChatMember.Read.WhereInstalled、ChatMember.ReadWrite.WhereInstalled、Chat.ReadBasic.WhereInstalled、Chat.Read.WhereInstalled、Chat.ReadWrite.WhereInstalled |
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 |
conversationMember /teams/getAllChannels/getAllMembers |
不支持。 | 不支持。 | ChannelMember.Read.All |
driveItem(用户的个人 OneDrive) | 不支持。 | Files.ReadWrite | 不支持。 |
driveItem (OneDrive for work or school) | 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 |
offerShiftRequest /teams/{id}/schedule/offerShiftRequests 对团队中任何产品/服务转移请求的更改。 |
Schedule.Read.All、Schedule.ReadWrite.All | 不支持。 | Schedule.Read.All、Schedule.ReadWrite.All |
联机会议 | 不支持。 | 不支持。 | OnlineMeetings.Read.All、OnlineMeetings.ReadWrite.All |
openShiftChangeRequest /teams/{id}/schedule/openShiftChangeRequests 对团队中任何未结的班次请求的更改。 |
Schedule.Read.All、Schedule.ReadWrite.All | 不支持。 | Schedule.Read.All、Schedule.ReadWrite.All |
状态 | Presence.Read.All | 不支持。 | 不支持。 |
打印机 | 不支持。 | 不支持。 | 打印机。阅读.All,Printer.ReadWrite.All |
printTaskDefinition | 不支持。 | 不支持。 | PrintTaskDefinition.ReadWrite.All |
安全警报 | SecurityEvents.ReadWrite.All | 不支持。 | SecurityEvents.ReadWrite.All |
shift /teams/{id}/schedule/shifts 对团队中任何班次的更改。 |
Schedule.Read.All、Schedule.ReadWrite.All | 不支持。 | Schedule.Read.All、Schedule.ReadWrite.All |
swapShiftsChangeRequest /teams/{id}/schedule/swapShiftsChangeRequests 对团队中任何交换班次请求的更改。 |
Schedule.Read.All、Schedule.ReadWrite.All | 不支持。 | Schedule.Read.All、Schedule.ReadWrite.All |
团队 /teams 组织中的所有团队。 |
不支持。 | 不支持。 | Team.ReadBasic.All,TeamSettings.Read.All |
团队 /teams/{id} 特定团队。 |
Team.ReadBasic.All,TeamSettings.Read.All | 不支持。 | Team.ReadBasic.All,TeamSettings.Read.All |
timeOffRequest /teams/{id}/schedule/timeOffRequests 对团队中任何休假请求的更改。 |
Schedule.Read.All、Schedule.ReadWrite.All | 不支持。 | Schedule.Read.All、Schedule.ReadWrite.All |
todoTask | Tasks.ReadWrite | Tasks.ReadWrite | 不支持。 |
user | User.Read.All | User.Read.All | User.Read.All |
virtualEventWebinar | VirtualEvent.Read | 不支持。 | VirtualEvent.Read.All |
baseTask (已弃用) | Tasks.ReadWrite | Tasks.ReadWrite | 不支持。 |
注意
以下权限使用 特定于资源的许可:
- OnlineMeetingRecording.Read.Chat
- OnlineMeetingTranscript.Read.Chat
- ChatSettings.Read.Chat
- ChatSettings.ReadWrite.Chat
- Chat.Manage.Chat
- ChannelMessage.Read.Group
- ChatMember.Read.Chat
chatMessage
可以指定 chatMessage 订阅以包含资源数据。 如果指定为包含资源数据(将 includeResourceData 设置为 true
),则需要 encryption。 如果没有为此类订阅指定 encryptionCertificate,则订阅创建将失败。
必须使用 Prefer: include-unknown-enum-members
请求标头在 chatMessagemessageType可进化枚举中获取以下值: systemEventMessage
for /teams/{id}/channels/{id}/messages
和 /chats/{id}/messages
resource。
注意
/teams/getAllMessages
、 /chats/getAllMessages
、 /me/chats/getAllMessages
、 /users/{id}/chats/getAllMessages
和 /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages
是按流量计费的 API; 付款模式和许可要求 可能适用。
/teams/getAllMessages
和 /chats/getAllMessages
都支持 和 model=B
支付模型、/me/chats/getAllMessages
、 /users/{id}/chats/getAllMessages
和 /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages
仅model=B
支持 。model=A
如果未在查询中指定付款模型,将使用默认 评估模式 。
注意
若要为已订阅的更改通知资源添加或更改付款模型,必须使用新的付款模型创建新的更改通知订阅;更新现有更改通知不起作用。
conversationMember
可以指定 conversationMember 订阅以包含资源数据。 如果指定为包含资源数据(将 includeResourceData 设置为 true
),则需要 encryption。 如果未指定 encryptionCertificate,则订阅创建将失败。
注意
/teams/getAllMembers
、 /chats/getAllMembers
和 /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers
是按流量计费的 API; 付款模式和许可要求 可能适用。
/teams/getAllMembers
和 /chats/getAllMembers
都 model=A
支持 和 model=B
支付模型。
/appCatalogs/teamsApps/{id}/installedToChats/getAllMembers
仅 model=B
支持 。
如果未在查询中指定付款模型,将使用默认 评估模式 。
注意
若要为已订阅的更改通知资源添加或更改付款模型,必须使用新的付款模型创建新的更改通知订阅;更新现有更改通知不起作用。
团队、频道和聊天
可以指定团队、频道和聊天订阅以包含资源数据。 如果指定为包含资源数据(将 includeResourceData 设置为 true
),则需要 encryption。 如果未指定 encryptionCertificate,则订阅创建将失败。
订阅特定聊天或用户级别的更改时,可以使用 notifyOnUserSpecificProperties 查询字符串参数。 在创建订阅期间将查询字符串参数 notifyOnUserSpecificPropertiestrue
设置为 时,会将两种类型的有效负载发送到订阅服务器。 一种类型包含特定于用户的属性,另一种类型在发送时不使用它们。 有关详细信息,请参阅 使用 Microsoft Graph 获取聊天更改通知。
注意
若要为已订阅的更改通知资源添加或更改付款模型,必须使用新的付款模型创建新的更改通知订阅;更新现有更改通知不起作用。
请求示例
在请求正文中的 资源 内指定 model
查询参数。
POST https://graph.microsoft.com/v1.0/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 work 或 School 上,只能订阅根文件夹。 对于订阅的文件夹或其层次结构中的任何文件、文件夹或其他 driveItem 实例,将发送更改通知。 不能订阅不是文件夹的 驱动器 或 driveItem 实例,例如单个文件。
联系人、事件和消息
您可以订阅 Outlook 联系人、 事件或 邮件 资源中的更改,并在 POST 请求有效负载中选择性地指定是否在通知中包含加密的资源数据。
创建和管理(获取、更新和删除)订阅需要资源的读取范围。 例如,若要获取有关邮件的更改通知,应用需要 Mail.Read 权限。 Outlook 更改通知支持委派和应用程序权限范围。 请注意以下限制:
委托的权限仅支持订阅已登录用户的邮箱内文件夹中的项。 例如,不能使用委托的权限 Calendars.Read 订阅其他用户邮箱中的事件。
订阅共享或委托文件夹中 Outlook 联系人、事件或邮件的更改通知:
- 使用相应的应用程序权限订阅租户内任何用户的文件夹或邮箱中项目的更改。
- 请勿使用 Outlook 共享权限 (Contacts.Read.Shared、Calendars.Read.Shared、Mail.Read.Shared 及其读/写权限) ,因为它们 不支持 订阅共享或委派文件夹中项目的更改通知。
onlineMeetings, 状态
onlineMeetings 和 状态 订阅需要对包含资源数据的通知 进行加密 。 如果在通知中需要资源数据,则如果未指定 encryptionCertificate 和 encryptionCertificateId ,则订阅创建失败。 有关状态和联机会议订阅的详细信息,请参阅 获取Microsoft Teams 中状态更新 的 更改通知和获取联机会议的更改通知。
virtualEventWebinar
虚拟事件的订阅仅支持基本通知,并且仅限于虚拟事件的几个实体。 有关支持的订阅类型的详细信息,请参阅 获取Microsoft Teams 虚拟事件更新的更改通知。
HTTP 请求
PATCH /subscriptions/{id}
请求标头
名称 | 类型 | 说明 |
---|---|---|
Authorization | string | 持有者 {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"
}