> For the complete documentation index, see [llms.txt](https://docs.docontrol.io/docontrol-user-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.docontrol.io/docontrol-user-guide/integrations/zoom.md).

# Zoom

[Zoom](https://marketplace.zoom.us/apps/8iX-0t3dSHWPuuahgLz6pw) is one of the leading SaaS video conferencing tools for online meetings, and is used by millions of users, including over 200,000 enterprise customers.

Internal and external Zoom meetings are stored automatically in different locations within an organization:

* **Google Drive** - Internal meeting recordings and transcripts
* **Zoom cloud** - Recordings and transcripts of external meetings, such as webinars or vendors' meetings

{% hint style="info" %}
The Zoom-DoControl integration allows your organization to receive real-time events (webhooks), and capture data about recordings, meetings, webinars, and breakout rooms that are all saved to the Zoom cloud.
{% endhint %}

## Use cases

You can leverage the Zoom-DoControl integration to reduce the risk of data overexposure and exfiltration with these use cases:

* **Discover assets and monitor events** -&#x20;
  * Expose a full inventory and monitor Zoom users and assets, including every individual user, cloud-based recording, meeting, chat, closed caption, and audio transcript
  * Leverage metadata about users, such as role, status, and manager
  * Slice and dice your data in a meaningful way; for example to analyze publicly shared recordings related to a specific user
* **Trigger alerts based on file overexposure** - Get real-time event notifications for anomalous activity, such as when someone publicly shares a sensitive cloud recording that is not passcode-protected.&#x20;
* **Prevent data loss (DLP)** - DoControl offers your organization a first-in-class solution to detect and prevent sensitive information, such as PII, from being shared on Zoom cloud recordings. This functionality is unique to DoControl.&#x20;
* **Remediate future data exposure** - Leverage automated workflows to reduce the risk of exfiltration by deleting sensitive Zoom files (video, audio, and text-based) from the cloud, or set up a security workflow to handle a specific department’s recordings
* **Mitigate the risk of over-exposure** - Use a remediation action to change the sharing status of sensitive Zoom files (video, audio, and text-based) from public to internal or non-shareable
* **Manage SPM misconfigurations** - See how your Zoom security settings measure up to compliance standards, avoid security vulnerabilities, and remediate if necessary
* **Educate your users** - Notify individual actors and security teams about policy violations or anomalies that pose a material risk to your business.

## Prerequisites&#x20;

* PRO plan and higher.
* Integrator must be a **Zoom Owner** or **Zoom Admin** with permissions.
* Zoom Owner or Zoom Admin must pre-approve and approve apps in Zoom App Marketplace (see Zoom [support](https://support.zoom.us/hc/en-us/articles/360027829671-Pre-approving-and-approving-apps-in-Zoom-App-Marketplace)) &#x20;
* Before starting to integrate, you need to sign up with DoControl. Follow the onboarding steps in [Create first account](/docontrol-user-guide/getting-started/quick-start/set-up-docontrol-basics.md#create-first-account).

## Zoom cloud recording APIs

To integrate DoControl with Zoom, you need access to Zoom APIs for cloud recordings. Following is the API syntax and scope for Zoom cloud recording APIs that are required for integration with DoControl.

{% hint style="info" %}
Write permissions are required to apply remediation actions on Zoom recordings and text-based files.
{% endhint %}

<table><thead><tr><th width="171">Zoom API</th><th>API syntax</th><th>Scope</th></tr></thead><tbody><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingSettingUpdate">Get meeting recording settings</a></td><td><code>GET /meetings/{meetingId}/recordings/settings</code></td><td><p><code>recording:read:admin</code></p><p><code>recording:read</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingGet">Get meeting recordings</a></td><td><code>GET /meetings/{meetingId}/recordings</code></td><td><p><code>recording:read</code></p><p><code>phone_recording:read:admin</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingSettingsUpdate">Update meeting recording settings</a></td><td><code>PATCH /meetings/{meetingId}/recordings/settings</code></td><td><p><code>recording:write</code></p><p><code>recording:write:admin</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingDelete">Delete meeting recordings</a></td><td><code>DELETE /meetings/{meetingId}/recordings</code></td><td><p><code>recording:write:admin</code></p><p><code>recording:write</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingDeleteOne">Delete a meeting recording file</a></td><td><code>DELETE /meetings/{meetingId}/recordings/{recordingId}</code></td><td><p><code>recording:write:admin</code></p><p><code>recording:write</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/pastMeetingParticipants">Get past meeting participants</a></td><td><code>GET /past_meetings/{meetingId}/participants</code></td><td><p><code>meeting:read:admin</code></p><p><code>meeting:read</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/analytics_summary">Get meeting recording's analytics summary</a></td><td><code>GET /meetings/{meetingId}/recordings/analytics_summary</code></td><td><p><code>recording:read:admin</code></p><p><code>recording:read</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/user">Get a user</a></td><td><code>GET /users/{userId}</code></td><td><p><code>user:read:admin</code></p><p><code>user:read</code></p><p><code>user_info:read</code></p></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingsList">List all recordings</a></td><td><code>GET /users/{userId}/recordings</code></td><td><code>recording:read:admin</code><br><code>recording:read</code></td></tr><tr><td><a href="https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/users">List users</a></td><td><code>GET /users</code></td><td><code>user:read:admin</code></td></tr></tbody></table>

## Zoom event APIs

These Zoom events are triggered after DoControl is integrated with Zoom.

{% hint style="info" %}
For more information about event APIs, go to the [Zoom developer](https://developers.zoom.us/docs/api/rest/reference/zoom-api/events/#overview) site and enter the API event name in the search bar.
{% endhint %}

<table><thead><tr><th width="210.29270926535867">Zoom API event</th><th>Description</th><th data-hidden>Event name</th></tr></thead><tbody><tr><td>recording.completed</td><td>Triggered every time a recording of a meeting or webinar becomes available to view and/or download.</td><td>recording.completed</td></tr><tr><td>recording.transcript_completed</td><td>Triggered every time the transcript of the recording is made available for one of your app users or account users after the recorded meeting/webinar ends.</td><td>recording.transcript_completed</td></tr><tr><td>recording.trashed</td><td>Triggered every time one of your app users or account users temporarily deletes a cloud recording. </td><td>recording.trashed</td></tr><tr><td>recording.deleted</td><td>Triggered every time one of your app users or account users permanently deletes a cloud recording.</td><td>recording.deleted</td></tr><tr><td>recording.recovered</td><td>Triggered every time one of your app users or account users recovers a recording from the trash.</td><td>recording.recovered</td></tr><tr><td>recording.registration_created</td><td>The View registrant has registered for this recording event is triggered every time a user registers for an on-demand cloud recording.</td><td>recording.registration_created</td></tr><tr><td>recording.registration_approved</td><td>The View registrant has approved for this recording event is triggered every time a registrant is approved to view a cloud recording.</td><td>recording.registration_approved</td></tr><tr><td>recording.registration_denied</td><td>The View registrant has denied for this recording event is triggered every time a registrant is denied to view a cloud recording.</td><td>recording.registration_denied</td></tr><tr><td>recording.batch_trashed</td><td>Triggered every time one of your app users or account users temporarily delete all of their cloud recordings. </td><td>recording.batch_trashed</td></tr><tr><td>recording.batch_recovered</td><td>The Batch recording recovered event is triggered every time one of your app users or account users recover one or more recordings from the trash.</td><td>recording.batch_recovered</td></tr><tr><td>recording.batch_deleted</td><td>The Batch recording deleted event is triggered every time one of your app users or account users permanently deletes one or more cloud recordings.</td><td>recording.batch_deleted</td></tr><tr><td>user.created</td><td>Triggered every time one of your app users or account users adds another user to the account.</td><td>user.created</td></tr><tr><td>user.dissociated</td><td>Triggered every time one of your app users or account users is unlinked from an account. </td><td>user.disassociated</td></tr><tr><td>user.activated</td><td>Triggered every time one of your app users or account users activates a deactivated user.</td><td>user.activated</td></tr><tr><td>user.deleted</td><td>Triggered every time one of your app users or account users is deleted from the account.</td><td>user.deleted</td></tr><tr><td>user.updated</td><td>Triggered every time the profile of one of your app users or account users is updated.</td><td>user.updated</td></tr><tr><td>user.deactivated</td><td>Triggered every time one of your app users or account users gets deactivated.</td><td>user.deactivated</td></tr><tr><td>user.settings_updated</td><td>Triggered every time the settings of one of your app users or account users are updated.</td><td>user.settings_updated</td></tr><tr><td>user.invitation_accepted</td><td>Triggered every time a user accepts the invitation to join a Zoom account.</td><td>user.invitation_accepted</td></tr><tr><td>user.info_updated</td><td>The User's profile info has been updated event is triggered every time the profile of one of your app users or account users is updated.</td><td>user.info_updated</td></tr><tr><td>user.signed_in</td><td>Triggered every time one of your app users or account users signs in to Zoom. </td><td>user.signed_in</td></tr><tr><td>user.signed_out</td><td>Triggered every time one of your app users or account users signs out of Zoom.</td><td>user.signed_out</td></tr><tr><td>meeting.started</td><td>Triggered every time a meeting host starts a meeting.</td><td>meeting.started</td></tr><tr><td>meeting.participant_joined</td><td>Triggered every time an attendee joins a meeting.</td><td>meeting.participant_joined</td></tr><tr><td>meeting.participant_leftbreakout_room</td><td>The Meeting participant has left a breakout room event is triggered when a meeting participant leaves a meeting <a href="https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms">breakout room</a>.</td><td>meeting.participant_leftbreakout_room<br><br><br></td></tr><tr><td>meeting.breakout_room_sharing_stopped</td><td>The User in breakout room stopped sharing event is triggered when a user in a <a href="https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms">breakout room</a> ends their <a href="https://support.zoom.us/hc/en-us/articles/201362153-Sharing-your-screen-or-desktop-on-Zoom">content-sharing</a>, such as their desktop or the <a href="https://support.zoom.us/hc/en-us/articles/205677665-Sharing-a-whiteboard">classic whiteboard</a>.</td><td>meeting.breakout_room_sharing_stopped</td></tr><tr><td>webinar.started</td><td>Triggered every time a user in your account or your app starts a Webinar.</td><td>webinar.started</td></tr><tr><td>webinar.participant_joined</td><td>Triggered every time a host or an attendee joins a Webinar that was created by one of your app users or account users.</td><td>webinar.participant_joined</td></tr><tr><td>webinar.registration_created</td><td>Triggered every time someone registers for a Webinar created by one of your app users or account users.</td><td>webinar.registration_created</td></tr><tr><td><p></p><p>webinar.registration_cancelled</p></td><td><p></p><p>The Webinar Registration has been canceled event is triggered whenever one of these two conditions are met:</p><ul><li>A registrant cancels their registration for a Webinar created by one of your app users or account users.</li><li>A host who is also a user of your app or your Zoom account cancels the registration of a registrant who was previously approved.</li></ul></td><td>webinar.registration_cancelled</td></tr></tbody></table>

## Permission scopes

To enable DoControl to retrieve information from Zoom, you require these permissions:

<table><thead><tr><th width="292">Permission</th><th width="115">Scope</th><th>Description</th></tr></thead><tbody><tr><td>information_barriers:read:master</td><td>Read</td><td>Return list of all information barrier policies</td></tr><tr><td>meeting:read:admin</td><td>Read</td><td>Get past meeting participants</td></tr><tr><td>recording:read:admin</td><td>Read</td><td><ul><li>List all recordings</li><li>Get meeting recording settings</li><li>Get meeting recording's analytics summary</li></ul></td></tr><tr><td>user:read:admin</td><td>Read</td><td><ul><li>List users</li><li>Get a user</li></ul></td></tr><tr><td>webinar:read:admin</td><td>Read</td><td><ul><li>Get a webinar</li><li>Get a webinar poll</li><li>Get webinar registrants</li><li>Get registrant questions</li><li>Get webinar panelists</li><li>Get webinar absentees</li><li>Get a webinar survey</li><li>Get webinar QAs</li><li>Get live stream details</li><li>Get webinar token</li><li>Get a webinar template</li><li>Get webinar branding</li></ul></td></tr><tr><td>account:read:admin</td><td>Read</td><td>Access data related to account settings, dashboards, information barriers, managed domains and roles</td></tr><tr><td>recording:write:admin</td><td>Write</td><td><ul><li>Update meeting recording settings</li><li>Delete meeting recordings</li><li>Delete a meeting recording file</li></ul></td></tr></tbody></table>

## Integrate Zoom with DoControl

{% hint style="warning" %}
**Existing customers**: To view [SPM misconfigurations](broken://pages/GCfjoq8jyb4hmyup5J4o), you must re-integrate DoControl with Zoom.

The integration wizard automatically adds the required permission for DoControl to read your Zoom global settings for misconfigurations:

`account:read:admin`&#x20;
{% endhint %}

1. From the DoControl side menu, click **Integrations**.\
   ![](https://3236294211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MesrnyDMZGYg1V-tOBo%2Fuploads%2FgdTX6NsVpPbkcTSDbpY6%2FZoom%20integrate.png?alt=media\&token=29ea90ff-ef6c-4be7-9624-7a34a3dba6ed)
2. Under the **Zoom** icon, click **Connect**. The **Connect to Zoom** wizard opens.&#x20;
3. Click **Start**, and follow instructions in the wizard. <br>

   <figure><img src="https://3236294211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MesrnyDMZGYg1V-tOBo%2Fuploads%2FOqvDEGmivjbLF4IFfK1e%2FZoom%20wizard%20misconfig%201.png?alt=media&amp;token=cff24eb0-51db-4b0a-92f5-d06195c39c1d" alt=""><figcaption></figcaption></figure>
4. Click **Next**.
5. Click **Allow** to grant DoControl access permissions. When finished, the wizard indicates that Zoom is connected.

{% hint style="warning" %}
If the person who performed the integration leaves your organization, your Zoom token will expire. You need to reconnect to DoControl by performing the [integration procedure](#integrate-zoom-with-docontrol).
{% endhint %}

## Troubleshooting

Q. What happens if my Zoom token expires?

A. If the person who performed the integration leaves your organization, your Zoom token will expire. You need to reconnect to DoControl by performing the [integration procedure](#integrate-zoom-with-docontrol) again.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.docontrol.io/docontrol-user-guide/integrations/zoom.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
