更新订阅
命名空间:microsoft.graph
通过延长到期时间续订订阅。
“权限”部分中的表列出了支持订阅更改通知的资源。
订阅在一段时间后过期,时间长度因资源类型而异。 为了避免缺少更改通知,应用应在到期日期之前提前续订其订阅。 有关每种资源类型的订阅的最大长度,请参阅订阅。
此 API 可用于以下国家级云部署。
全局服务 | 美国政府 L4 | 美国政府 L5 (DOD) | 由世纪互联运营的中国 |
---|---|---|---|
✅ | ✅ | ✅ | ✅ |
权限
根据请求的资源和权限类型(委托或应用程序),下表中指定的权限为调用此 API 所需的最小权限。 若要了解其他信息, 在 特权权限之前要特别小心,在"权限" 中搜索。
支持的资源 | 委派(工作或学校帐户) | 委派(个人 Microsoft 帐户) | 应用程序 |
---|---|---|---|
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 |
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 |
频道(/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 |
chatMessage (/teams/{id}/channels/{id}/messages) | ChannelMessage.Read.All | 不支持 | ChannelMessage.Read.Group*、ChannelMessage.Read.All |
chatMessage(/teams/getAllMessages -- 组织中所有频道消息) | 不支持 | 不支持 | ChannelMessage.Read.All |
chatMessage (/chats/{id}/messages) | 不支持 | 不支持 | 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/{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 |
offerShiftRequest (/teams/{id}/schedule/offerShiftRequests) 对团队中任何产品/服务转移请求的更改。 |
Schedule.Read.All、Schedule.ReadWrite.All | 不支持。 | Schedule.Read.All、Schedule.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.Read.All | User.Read.All | User.Read.All |
virtualEventWebinar | VirtualEvent.Read | 不支持。 | VirtualEvent.Read.All |
注意:标有 * 的权限用于特定于资源的同意。
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 Business 上,只可以订阅根文件夹。 对订阅的文件夹或者其层次结构中的任何文件、文件夹或其他 driveItem 实例所做更改属于请求的更改类型时,发送更改通知。 不能订阅不是文件夹的 驱动器 或 driveItem 实例,例如单个文件。
联系人、事件和消息
你可以订阅 Outlook 联系人、事件或消息资源中的更改。
创建和管理(获取、更新和删除)订阅需要资源的读取范围。 例如,若要获取有关邮件的更改通知,应用需要 Mail.Read 权限。 Outlook 更改通知支持委派和应用程序权限范围。 请注意以下限制:
委托的权限仅支持订阅已登录用户的邮箱内文件夹中的项。 例如,不能使用委托的权限 Calendars.Read 订阅其他用户邮箱中的事件。
订阅共享或委托文件夹中 Outlook 联系人、事件或邮件的更改通知:
- 使用相应的应用程序权限订阅租户内任何用户的文件夹或邮箱中项目的更改。
- 请勿使用 Outlook 共享权限 (Contacts.Read.Shared、Calendars.Read.Shared、Mail.Read.Shared 及其读/写权限) ,因为它们 不支持 订阅共享或委派文件夹中项目的更改通知。
状态
状态 订阅要求对包含资源数据的通知 进行加密 。 如果在通知需要包括资源数据时未指定 encryptionCertificate 和 encryptionCertificateId ,则订阅创建失败。 有关状态订阅的详细信息,请参阅 在 Microsoft Teams 中获取状态更新的更改通知。
virtualEventWebinar
虚拟事件的订阅仅支持基本通知,并且仅限于虚拟事件的几个实体。 有关支持的订阅类型的详细信息,请参阅 获取Microsoft Teams 虚拟事件更新的更改通知。
HTTP 请求
PATCH /subscriptions/{id}
请求标头
名称 | 类型 | 说明 |
---|---|---|
Authorization | string | 持有者 {token}。 必填。 详细了解 身份验证和授权。 |
请求正文
在请求正文中, 仅 提供要更新的属性的值。 请求正文中未包含的现有属性会保留其以前的值,或者根据对其他属性值的更改重新计算。
下表指定可更新的属性。
请求正文必须至少包含列出的属性之一。
名称 | 类型 | 说明 |
---|---|---|
expirationDateTime | DateTimeOffset | 指定订阅过期时的 UTC 日期和时间。 对于支持的最长订阅,时间长度因资源而异。 |
notificationUrl | String | 该 URL 必须使用 HTTPS 协议。 当Microsoft Graph 发送更改通知时,notificationUrl 属性中包含的任何查询字符串参数都包含在 HTTP POST 请求中。 |
响应
如果成功,此方法在响应正文中返回 200 OK
响应代码和 subscription 对象。
要详细了解错误返回方式,请参阅错误响应。
示例
请求
以下示例显示了一个请求。
PATCH https://graph.microsoft.com/v1.0/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":"subscription-identifier",
"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"
}