Capability library / Application package

Zoom package v1.0.0

Zoom API v2 with Server-to-Server OAuth: read users, meetings and recordings; create, update and delete meetings; delete meeting recordings.

Review state: Reviewed · Distributable: yes, digest matches the release manifest

This page describes AAES Govern’s controls. AAES Operate has private-work permissions, operational reviews and recorded-spend limits; it does not include Govern. About AAES Govern

Before you enable this package

The endpoint host 'zoom-api.invalid' is a reserved .invalid placeholder that fails closed until you substitute the real host in both the endpoint URLs and the egress allowlist.

Read each action's effects and exclusions below. Before installation, also read the complete package requirements, including credential issuance, scope, expiry, and provider permissions. These are deployment prerequisites, not capabilities this package supplies.

Capabilities (7)

Each capability below is one registered operation. The complete package JSON includes its exact network destination allowlist. The repository stores it at packs/zoom.json and embeds a copy in the release binary.

Risk tiers. R0 is the minimum for reads. R2 is the minimum for write, create, update, execute, and invoke. R3 is the minimum for delete, send, pay, deploy, approve, share, and transfer. Operators can raise these levels. A minimum tier does not measure the operation's business or confidentiality risk.

On supported execution paths routed through AAES Govern, the R3 actions listed below require approval by an authorized person. Bypass paths and observation-only registrations are outside that guarantee. A provider's restoration feature does not remove this approval requirement. A provider-side approval, such as approving a GitLab merge request, is also separate from AAES Govern human approval. The capability matrix shows which execution paths are implemented, restricted to lab use, or refused at startup. Live compatibility must be tested in your environment.

Field guide. Endpoint is the service address and request method. Connector is the adapter that makes the call. Custody describes how the credential is held; the credential reference identifies the value to resolve. Data class sets handling requirements: pii means personal data, financial means financial records, and internal means internal organizational data.

zoom.users.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://zoom-api.invalid/v2/users
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zoom-s2s-oauth
Data class
pii

Read users.

List the users on the account; this pack registers the collection read only — single-user reads (GET /v2/users/{userId}) are not registered. User records carry names, email addresses and user IDs, which are personal data, so the read is classified as pii (personal data).

The host is a reserved placeholder: substitute the Zoom API host before enabling.

zoom.meetings.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://zoom-api.invalid/v2/users/USER_ID/meetings
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zoom-s2s-oauth
Data class
internal

Read meetings.

List one user's meetings (scheduled, live and upcoming); this pack registers the collection read only — single-meeting reads (GET /v2/meetings/{meetingId}) are not registered. Meeting topics, times and join metadata are the organization's schedule content, classified as internal data. USER_ID is a placeholder the deployment binds before enabling.

zoom.meeting.create v1.0.0R3

Kind
tool
Actions
create, send
Endpoint
POST https://zoom-api.invalid/v2/users/USER_ID/meetings
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zoom-s2s-oauth
Data class
internal

Create meeting.

Schedule a meeting for one user. The unrestricted body can set join-before-host, auto-recording, alternative hosts, and other meeting settings. Enforce any narrower limits separately; Zoom settings and app scopes also constrain requests.

Invitation delivery and alternative-host assignments can email named recipients. Because those messages cannot be recalled, the capability declares create and send at R3.

On supported execution paths mediated by AAES Govern, send requires approval by an authorized person; this does not prevent calls through bypass or observation-only paths. Bind USER_ID before enabling.

zoom.meeting.update v1.0.0R3

Kind
tool
Actions
update, send
Endpoint
PATCH https://zoom-api.invalid/v2/meetings/MEETING_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zoom-s2s-oauth
Data class
internal

Update meeting.

Update a meeting's topic, time, settings, agenda, or other fields. The unrestricted body can reschedule the meeting or change security settings, affecting everyone already invited.

Changes to invitation-relevant fields (time, topic, or settings) can send update notifications that cannot be recalled. Treat every update as potentially notifying. The capability therefore declares update and send at R3.

On supported execution paths mediated by AAES Govern, send requires approval by an authorized person; this does not prevent calls through bypass or observation-only paths. Bind MEETING_ID before enabling.

zoom.meeting.delete v1.0.0R3

Kind
tool
Actions
delete, send
Endpoint
DELETE https://zoom-api.invalid/v2/meetings/MEETING_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zoom-s2s-oauth
Data class
internal

Delete meeting.

Delete one meeting. Deleting a scheduled meeting invalidates its join links and, where configured, sends cancellation notices to invitees — a cancellation notice cannot be recalled after delivery — so the capability is registered as delete and send at the minimum R3 tier; delete and send are designated actions requiring human approval.

On supported execution paths mediated by AAES Govern, irreversible actions require approval by an authorized person; this does not prevent calls through bypass or observation-only paths. Re-creating a meeting later mints a new meeting ID and new links, not an undo. MEETING_ID is a placeholder the deployment binds before enabling.

zoom.recordings.read v1.0.0R0

Kind
tool
Action
read
Endpoint
GET https://zoom-api.invalid/v2/users/USER_ID/recordings
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zoom-s2s-oauth
Data class
pii

Read recordings.

List one user's cloud recordings across their meetings, with the documented date-range paging; this pack registers the collection read only — per-meeting recording detail (GET /v2/meetings/{meetingId}/recordings) is not registered. Recording metadata names who met, when, and about what, and exposes play URLs, classified as pii (personal data); downloading the recording files themselves is deliberately not registered (see the pack notes). USER_ID is a placeholder the deployment binds before enabling.

zoom.recording.delete v1.0.0R3

Kind
tool
Action
delete
Endpoint
DELETE https://zoom-api.invalid/v2/meetings/MEETING_ID/recordings
Connector
http
Custody
customer_vault
Credential ref
secret-ref-zoom-s2s-oauth
Data class
pii

Delete recording.

Delete all recording files for a meeting or webinar. These may include compliance records. The reviewed documentation prevents deletion of recordings selected for a simulive webinar but establishes no general recovery path through this endpoint.

Zoom's console has a recording trash. The reviewed reference does not establish whether this API call uses it or permanently deletes the files. Treat deletion as permanent and make no recovery assumption. Registered as delete at R3.

On supported execution paths mediated by AAES Govern, delete requires approval by an authorized person; this does not prevent calls through bypass or observation-only paths. The Server-to-Server OAuth app needs a recording-delete scope, such as cloud_recording:delete:meeting_recording:admin. Bind MEETING_ID before enabling.

Credential reference

The credential field names a reference rather than containing credential material. Packs are designed not to contain secrets; the format checks cover only known credential formats and cannot prove that arbitrary text contains no secrets. Installing a package registers its capabilities. Configure the provider credentials, endpoints, and network access, then test the integration in your environment before enabling it.

Reference
secret-ref-zoom-s2s-oauth
Custody
customer_vault
Injection
header (Authorization)

Configure the value and injection format specified in the package. Assign responsibility for credential rotation and revocation, restrict provider permissions, and keep credential material out of logs and responses.

Complete credential requirements

A Zoom Server-to-Server OAuth access token, externally minted, held in the client's own secret manager. This reference defines ONE stored value and nothing else: the complete Authorization header value (scheme included), 'Bearer ' followed by the access token. The app's account ID, client ID and client secret are NOT stored under this reference — they belong under separate credential references that only the deployment's custody job may resolve.

Zoom's documented flow is two-legged OAuth: the custody job POSTs to the token endpoint with grant_type=account_credentials and a Basic Authorization header built from the client ID and secret, receiving a bearer access token with a one-hour TTL (3600 seconds) and no refresh token; it stores the resulting 'Bearer <token>' value under this reference and re-runs the exchange before the hour expires. The HTTP injector injects the stored value verbatim and performs no OAuth itself — there is no execution-time derivation option.

Per the reviewed documentation: multiple access tokens can be generated without invalidating previous ones — issuing a new token does NOT revoke an older one — and whether a per-token revocation path exists is not established by the reviewed documentation, so an already-issued token must be treated as valid for up to its full hour. Deactivating or deleting the app is the documented cut-off path — tokens stop working when the app is deactivated — but the exact interaction between deactivation and an in-flight token's remaining lifetime is unspecified in the retrieved docs, so treat every issued token as live for its full hour; deactivation is an app-level cut-off, not a per-token control — on suspected exposure, deactivate the app AND treat any already-issued token as live for up to its remaining hour.

Least privilege: create a dedicated Server-to-Server OAuth app per integration, grant only the scopes these capabilities require (user read, meeting read/write, cloud recording read, and recording delete only if the delete capability is enabled), and keep the app owner's own permissions minimal since scopes are authorized against them.

Executor hygiene: the client secret and derived tokens must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.

Resources

  • zoom-account (api, pii): https://zoom-api.invalid/v2

Technical package and review record

Complete provider requirements and exclusions

The endpoint host 'zoom-api.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the Zoom API host (api.zoom.us) before enabling, in every endpoint, in the resource locator and in every egress allowlist entry. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step — the reserved host being allowlisted does not make an unsubstituted pack safe to enable.

This pack registers only API v2 operations the retrieved Zoom developer documentation establishes: listing users, listing a user's meetings, creating, updating and deleting a meeting, listing a user's cloud recordings, and deleting a meeting's recording files. USER_ID and MEETING_ID in the endpoint paths are placeholders the deployment binds before enabling. The API's 'me' keyword is not registered guidance here: under Server-to-Server OAuth the token is an account-level credential, not an ordinary token-owner user session, so bind a concrete user ID.

Zoom enforces the Server-to-Server OAuth app's scopes and admin role on every call, so a capability works only if the app carries the matching scope (for example cloud_recording:delete:meeting_recording:admin for recording deletion); the registration records the endpoint, not Zoom's authorization decision.

Documented exclusions — this pack does not register: user provisioning and deprovisioning (POST /v2/users and DELETE /v2/users/{userId} — creating or deleting account members is an identity-lifecycle surface requiring its own review); webinar APIs; meeting registrant add/remove; live-meeting control and in-meeting operations; the recording download URLs themselves (downloading recording content is a bulk-content read, not registered); the meeting/webinar archiving endpoints (FINRA compliance archiving, admin-only and support-enabled); archive file deletion (DELETE /past_meetings/{meetingUUID}/archive_files exists in the reviewed documentation and is deliberately not registered); Zoom Phone, Team Chat messaging, and account settings or role management.

The legacy JWT app type is retired by Zoom; this pack describes Server-to-Server OAuth only.

Download the complete package JSON for exact network allowlists, credential requirements, exclusions, and setup notes. Read these requirements before installation.

The full documentation review record is supplied in the evaluation package. The evaluation package runs in your environment and comes only with the paid design partnership. This page reproduces the source links and review block; the full record is available for evaluation. Discuss a design partnership to inspect it before installation.

Review block

This section reproduces the review block recorded in the pack file. The evidence and approval record is separate: for a reviewed pack, it is in the evaluation materials and in the release binary's embedded assets.

Review completed: 2026-09-22

3 sources, retrieved 2026-09-21

Current documentation links are navigation aids. They do not change the package, its historical sources or its review date. Review dates describe a documentation review, not a live integration test. No package is provider-endorsed or yet tested against a live provider tenant.

Release identity

SHA-256 of the pack file bytes: c76db46a9dd9781b78e94462140a02a12de5362b32cce4f68fa18829624ea200

Distributable: yes, digest matches the release manifest. Editing a package changes its release identity. A deployment plan checks its own file digests; it does not restore reviewed status or authenticate approval.