Setting the file. One moment.
Subchapter 133.6
concepts/architecture-and-lifecycle.mdMarkdown3 KBView on GitHub
Rivet wraps three concerns into one module client:
+--------------------+ +------------------------------+
| Zoom Marketplace | | Your Rivet App |
| App Config | | (Node.js/TypeScript) |
+----------+---------+ +---------------+--------------+
| |
| OAuth install / token exchange |
|--------------------------------->|
| |
| Webhooks (POST /zoom/events) |
|--------------------------------->|
| v
| +------------------------+
| | Rivet Module Clients |
| | - ChatbotClient |
| | - TeamChatClient |
| | - Meetings*Client |
| | - Users*Client |
| | - Phone*Client |
| | - VideoSdkClient |
| +-----+------------+-----+
| | |
| | +--> webEventConsumer
| |
| +--> endpoints.* (REST wrappers)
| |
| v
| +------------------+
+--------------------------------> | Zoom APIs |
+------------------+ChatbotClient + TeamChatClient for bot + channel lookup.UsersS2SAuthClient + MeetingsS2SAuthClient for admin automation.clientId, clientSecretwebhooksSecretTokenaccountId, installerOptions, receiver, port, tokenStorewebEventConsumer.event("event_name", handler)onSlashCommand, onButtonClick, onChannelMessagePostedawait client.start() returns server handler/address/zoom/eventsclient.endpoints.*In sample patterns, each module runs its own receiver port. If multiple modules share one port by mistake, webhook routing and verification behavior can break in non-obvious ways.