Team Chat API and webhook privacy updates
Team Chat API and Webhook privacy updates
On March 18th, 2023, Zoom changed the behavior of the Zoom Team Chat API and Webhooks. From now on, the IDs of external users are empty. Identifiers only have values if they are users under your account. We recommend that developers leverage the new member_id field in the response.
Affected user level APIs
-
GET /chat/users/{userId}/messages- Added
sender_member_idandat_items.at_contact_member_idfields. These fields have amemberIDas value in the response. - The return
at_items.at_contactreturns an empty response for external users.
- Added
-
GET /chat/users/{userId}/messages/{messageId}- Added
reactions.member_idsandsender_member_idfields to the response.Reactions.member_idsare an array of memberIDs, whilesender_member_idis a singlememberID. - The
at_items.at_contactreturns an empty string for external users. Theat_items.at_contact_member_idhasmemberIDas a value.
- Added
-
GET /chat/channels/{channelId}/members- Added
members.member_idfield to the response withmemberIDas the value. - When the member is not from the same account as the channel owner, the
members.idfield returns an empty string.
- Added
-
GET /chat/users/me/contacts/{contactId}- Added
member_idfield to the response withmemberIDas the value. When thememberIDis a path parameter, the member's contact details are returned in the response.
- Added
-
GET /chat/users/{userId}/channels/{channelId}/admins- Added
admins.member_idfield to the response withmemberIDas the value. When the admin is not from the same account as the channel owner, theadmins.idfield returns an empty string.
- Added
-
DELETE /chat/channels/{channelId}/members/{memberId}- When you remove a member or batch remove members and the
memberIDis the path parameter and the caller has required permissions, then that channel member should be removed.
- When you remove a member or batch remove members and the
-
PATCH /chat/users/{userId}/messages/{messageId}/status- When you mark a message read or unread, the
to_contactfield supportsmemberIDas input.
- When you mark a message read or unread, the
-
PUT /chat/users/{userId}/messages/{messageId}- When you update a message, the
to_contactfield supportsmemberIDas input.
- When you update a message, the
-
POST /chat/channels/{channelId}/members- When you invite channel members, the
new member_idsfield is returned with thememberIDarray as the value in the response.
- When you invite channel members, the
-
POST /chat/channels/{channelId}/members/me- When you join a channel, the new
member_idfield is returned with thememberIDas the value in the response.
- When you join a channel, the new
-
GET /contacts- When you search company contacts, the
new member_idsfield returns with thememberIDas the value in the response.
- When you search company contacts, the
-
GET /chat/users/me/contacts- When you list a user's contacts, the
new member_idsfield returns with thememberIDas value in the response.
- When you list a user's contacts, the
-
GET /chat/users/me/contacts/{contactId}- Added the
member_idfield withmemberIDas the value in the response. When called withmemberIDas path parameter, the member's contact details return in the response.
- Added the
-
GET /chat/users/{userId}/messages- When you list a user's chat messages, the
to_contactfield should supportmemberIDas input.
- When you list a user's chat messages, the
-
GET /chat/users/{userId}/messages/{messageId}- When you get a message, the
to_contactfield should supportmemberIDas input.
- When you get a message, the
Affected account level APIs
-
GET /report/chat/sessions/{sessionId}- When you get chat messages reports, the new
sender_member_idfield returns withmemberIDas the value in the response.
- When you get chat messages reports, the new
-
GET /chat/users/{userId}/channels/{channelId}/admins- When you list channel administrators and the admin is not from the same account as the channel owner, the
admins.idfield should return an empty string.
- When you list channel administrators and the admin is not from the same account as the channel owner, the
-
GET /chat/users/{userId}/channels/{channelId}/admins- When you list channel administrators, the new
admins.member_idfield returns withmemberIDas value in the response.
- When you list channel administrators, the new
-
GET /chat/users/{userId}/channels/{channelId}/members- Added
members.member_idfield withmemberIDas the value in the response. When the member is not from the same account as the channel owner, themembers.idfield should return an empty string.
- Added
-
DELETE /chat/users/{userId}/channels/{channelId}/members/{memberId}- When you remove a member with the
memberIDas path parameter, and the caller has required permissions, the channel member should be removed.
- When you remove a member with the
-
DELETE /chat/users/{userId}/channels/{channelId}/admins- When you batch demote channel administrators with the administrators'
memberIDin theadminIdsparameter, and the caller has the required permissions, those channel administrators should be demoted to channel members.
- When you batch demote channel administrators with the administrators'
-
POST /chat/users/{userId}/channels/{channelId}/admins- When you promote channel members to administrators, the new
member_idsfield returns with thememberIDarray as the value in the response.
- When you promote channel members to administrators, the new
-
POST /chat/users/{userId}/channels/{channelId}/members- When you invite channel members, the new
member_idsfield returns with thememberIDarray as the value in the response.
- When you invite channel members, the new
Webhooks
chat_channelwebhook- A new field
payload.object.members.member_id_ is added to chat_channel.created, chat_channel.member_invited, and chat_channel.member_removed event payloads. The value of the field ismemberID. - If the member is not from the same account as the operator or initiator of the action, then chat_channel.created, chat_channel.member_invited, and chat_channel.member_removed event payloads return an empty string for
payload.object.members.id.
- A new field
chat_messagewebhook- A new field
payload.object.contact_member_id_ (only present for direct messages) is added to chat_message.sent, chat_message.replied, chat_message.deleted, and chat_message.updated event payloads. The value of the field ismemberID. - If the contact or receiver is not from the same account as the operator or initiator of the action, then chat_message.sent, chat_message.replied, chat_message.deleted, and chat_message.updated event payloads return an empty string for
payload.object.contact_idin direct messages only.
- A new field