zoomcli 0.2.5__tar.gz → 0.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {zoomcli-0.2.5 → zoomcli-0.2.6}/.github/workflows/release.yml +10 -3
  2. {zoomcli-0.2.5 → zoomcli-0.2.6}/CHANGELOG.md +7 -0
  3. {zoomcli-0.2.5 → zoomcli-0.2.6}/Cargo.lock +1 -1
  4. {zoomcli-0.2.5 → zoomcli-0.2.6}/Cargo.toml +1 -1
  5. {zoomcli-0.2.5 → zoomcli-0.2.6}/PKG-INFO +1 -1
  6. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/mod.rs +54 -1
  7. {zoomcli-0.2.5 → zoomcli-0.2.6}/.github/workflows/ci.yml +0 -0
  8. {zoomcli-0.2.5 → zoomcli-0.2.6}/.gitignore +0 -0
  9. {zoomcli-0.2.5 → zoomcli-0.2.6}/Formula/zoom-cli.rb +0 -0
  10. {zoomcli-0.2.5 → zoomcli-0.2.6}/Makefile +0 -0
  11. {zoomcli-0.2.5 → zoomcli-0.2.6}/README.md +0 -0
  12. {zoomcli-0.2.5 → zoomcli-0.2.6}/prek.toml +0 -0
  13. {zoomcli-0.2.5 → zoomcli-0.2.6}/pyproject.toml +0 -0
  14. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/api/client.rs +0 -0
  15. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/api/mod.rs +0 -0
  16. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/api/types.rs +0 -0
  17. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/config.rs +0 -0
  18. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/init.rs +0 -0
  19. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/meetings.rs +0 -0
  20. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/recordings.rs +0 -0
  21. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/reports.rs +0 -0
  22. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/users.rs +0 -0
  23. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/commands/webinars.rs +0 -0
  24. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/config.rs +0 -0
  25. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/lib.rs +0 -0
  26. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/main.rs +0 -0
  27. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/output.rs +0 -0
  28. {zoomcli-0.2.5 → zoomcli-0.2.6}/src/test_support.rs +0 -0
  29. {zoomcli-0.2.5 → zoomcli-0.2.6}/tests/fixtures/clispec-v0.2.json +0 -0
  30. {zoomcli-0.2.5 → zoomcli-0.2.6}/zoom_cli/__init__.py +0 -0
  31. {zoomcli-0.2.5 → zoomcli-0.2.6}/zoom_cli/__main__.py +0 -0
@@ -334,7 +334,7 @@ jobs:
334
334
 
335
335
  - name: Update Homebrew formula
336
336
  env:
337
- GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
337
+ HOMEBREW_TAP_DEPLOY_KEY: ${{ secrets.HOMEBREW_TAP_DEPLOY_KEY }}
338
338
  run: |
339
339
  VERSION="${{ github.ref_name }}"
340
340
  VERSION_NUM="${VERSION#v}"
@@ -383,8 +383,15 @@ jobs:
383
383
  sed -i "s/SHA_AARCH64_UNKNOWN_LINUX_GNU/${{ steps.hashes.outputs.aarch64_unknown_linux_gnu }}/g" /tmp/zoom-cli.rb
384
384
  sed -i "s/SHA_X86_64_UNKNOWN_LINUX_GNU/${{ steps.hashes.outputs.x86_64_unknown_linux_gnu }}/g" /tmp/zoom-cli.rb
385
385
 
386
- # Clone tap repo, update formula, push
387
- git clone https://x-access-token:${GH_TOKEN}@github.com/rvben/homebrew-tap.git /tmp/tap
386
+ # Authenticate to the tap with a write deploy key scoped to
387
+ # rvben/homebrew-tap. The key does not expire, so cross-repo pushes
388
+ # keep working without periodic token rotation.
389
+ mkdir -p ~/.ssh
390
+ echo "$HOMEBREW_TAP_DEPLOY_KEY" > ~/.ssh/id_ed25519
391
+ chmod 600 ~/.ssh/id_ed25519
392
+ ssh-keyscan -t ed25519 github.com >> ~/.ssh/known_hosts 2>/dev/null
393
+
394
+ git clone git@github.com:rvben/homebrew-tap.git /tmp/tap
388
395
  mkdir -p /tmp/tap/Formula
389
396
  cp /tmp/zoom-cli.rb /tmp/tap/Formula/zoom-cli.rb
390
397
  cd /tmp/tap
@@ -9,6 +9,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
9
9
 
10
10
 
11
11
 
12
+
13
+ ## [0.2.6](https://github.com/rvben/zoom-cli/compare/v0.2.5...v0.2.6) - 2026-06-20
14
+
15
+ ### Added
16
+
17
+ - **schema**: fill missing output_fields for all commands ([6f4df02](https://github.com/rvben/zoom-cli/commit/6f4df025ad2d2480350a1d12649da90cf03ccdbc))
18
+
12
19
  ## [0.2.5](https://github.com/rvben/zoom-cli/compare/v0.2.4...v0.2.5) - 2026-06-11
13
20
 
14
21
  ### Added
@@ -2545,7 +2545,7 @@ checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
2545
2545
 
2546
2546
  [[package]]
2547
2547
  name = "zoom-cli"
2548
- version = "0.2.5"
2548
+ version = "0.2.6"
2549
2549
  dependencies = [
2550
2550
  "assert_cmd",
2551
2551
  "base64",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "zoom-cli"
3
- version = "0.2.5"
3
+ version = "0.2.6"
4
4
  edition = "2024"
5
5
  rust-version = "1.90"
6
6
  description = "Agent-friendly Zoom CLI with JSON output, structured exit codes, and schema introspection"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zoomcli
3
- Version: 0.2.5
3
+ Version: 0.2.6
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -95,6 +95,10 @@ fn schema_doc() -> serde_json::Value {
95
95
  "name": "meetings update",
96
96
  "description": "Update a meeting",
97
97
  "mutating": true,
98
+ "output_fields": [
99
+ {"name": "updated", "type": "boolean", "description": "Always true on success"},
100
+ {"name": "id", "type": "integer", "description": "Meeting ID that was updated"}
101
+ ],
98
102
  "args": [
99
103
  {"name": "id", "type": "integer", "required": true, "description": "Meeting ID"},
100
104
  {"name": "--topic", "type": "string", "description": "New topic"},
@@ -106,6 +110,10 @@ fn schema_doc() -> serde_json::Value {
106
110
  "name": "meetings delete",
107
111
  "description": "Delete a meeting",
108
112
  "mutating": true,
113
+ "output_fields": [
114
+ {"name": "deleted", "type": "boolean", "description": "Always true on success"},
115
+ {"name": "id", "type": "integer", "description": "Meeting ID that was deleted"}
116
+ ],
109
117
  "args": [
110
118
  {"name": "id", "type": "integer", "required": true, "description": "Meeting ID"},
111
119
  {"name": "--yes", "type": "boolean", "default": false, "description": "Skip confirmation prompt"}
@@ -115,6 +123,10 @@ fn schema_doc() -> serde_json::Value {
115
123
  "name": "meetings end",
116
124
  "description": "End a live meeting",
117
125
  "mutating": true,
126
+ "output_fields": [
127
+ {"name": "ended", "type": "boolean", "description": "Always true on success"},
128
+ {"name": "id", "type": "integer", "description": "Meeting ID that was ended"}
129
+ ],
118
130
  "args": [
119
131
  {"name": "id", "type": "integer", "required": true, "description": "Meeting ID"}
120
132
  ]
@@ -186,6 +198,11 @@ fn schema_doc() -> serde_json::Value {
186
198
  "name": "recordings download",
187
199
  "description": "Download recording files for a meeting",
188
200
  "mutating": false,
201
+ "output_fields": [
202
+ {"name": "downloaded", "type": "integer", "description": "Number of files successfully downloaded"},
203
+ {"name": "meeting_id", "type": "string", "description": "Meeting ID or UUID that was downloaded"},
204
+ {"name": "out_dir", "type": "string", "description": "Directory files were written to"}
205
+ ],
189
206
  "args": [
190
207
  {"name": "meeting_id", "type": "string", "required": true, "description": "Meeting ID or UUID"},
191
208
  {"name": "--out", "type": "path", "default": ".", "description": "Output directory"}
@@ -195,6 +212,11 @@ fn schema_doc() -> serde_json::Value {
195
212
  "name": "recordings delete",
196
213
  "description": "Delete all cloud recordings for a meeting",
197
214
  "mutating": true,
215
+ "output_fields": [
216
+ {"name": "deleted", "type": "boolean", "description": "Always true on success"},
217
+ {"name": "meeting_id", "type": "string", "description": "Meeting ID or UUID whose recordings were deleted"},
218
+ {"name": "trash", "type": "boolean", "description": "True if moved to trash, false if permanently deleted"}
219
+ ],
198
220
  "args": [
199
221
  {"name": "meeting_id", "type": "string", "required": true, "description": "Meeting ID or UUID"},
200
222
  {"name": "--permanent", "type": "boolean", "default": false, "description": "Permanently delete instead of moving to trash"},
@@ -205,6 +227,10 @@ fn schema_doc() -> serde_json::Value {
205
227
  "name": "recordings start",
206
228
  "description": "Start cloud recording for a live meeting",
207
229
  "mutating": true,
230
+ "output_fields": [
231
+ {"name": "action", "type": "string", "description": "The action performed (always 'start')"},
232
+ {"name": "meeting_id", "type": "integer", "description": "Numeric meeting ID the action was applied to"}
233
+ ],
208
234
  "args": [
209
235
  {"name": "meeting_id", "type": "integer", "required": true, "description": "Numeric meeting ID of the live meeting"}
210
236
  ]
@@ -213,6 +239,10 @@ fn schema_doc() -> serde_json::Value {
213
239
  "name": "recordings stop",
214
240
  "description": "Stop cloud recording for a live meeting",
215
241
  "mutating": true,
242
+ "output_fields": [
243
+ {"name": "action", "type": "string", "description": "The action performed (always 'stop')"},
244
+ {"name": "meeting_id", "type": "integer", "description": "Numeric meeting ID the action was applied to"}
245
+ ],
216
246
  "args": [
217
247
  {"name": "meeting_id", "type": "integer", "required": true, "description": "Numeric meeting ID of the live meeting"}
218
248
  ]
@@ -221,6 +251,10 @@ fn schema_doc() -> serde_json::Value {
221
251
  "name": "recordings pause",
222
252
  "description": "Pause cloud recording for a live meeting",
223
253
  "mutating": true,
254
+ "output_fields": [
255
+ {"name": "action", "type": "string", "description": "The action performed (always 'pause')"},
256
+ {"name": "meeting_id", "type": "integer", "description": "Numeric meeting ID the action was applied to"}
257
+ ],
224
258
  "args": [
225
259
  {"name": "meeting_id", "type": "integer", "required": true, "description": "Numeric meeting ID of the live meeting"}
226
260
  ]
@@ -229,6 +263,10 @@ fn schema_doc() -> serde_json::Value {
229
263
  "name": "recordings resume",
230
264
  "description": "Resume cloud recording for a live meeting",
231
265
  "mutating": true,
266
+ "output_fields": [
267
+ {"name": "action", "type": "string", "description": "The action performed (always 'resume')"},
268
+ {"name": "meeting_id", "type": "integer", "description": "Numeric meeting ID the action was applied to"}
269
+ ],
232
270
  "args": [
233
271
  {"name": "meeting_id", "type": "integer", "required": true, "description": "Numeric meeting ID of the live meeting"}
234
272
  ]
@@ -237,6 +275,10 @@ fn schema_doc() -> serde_json::Value {
237
275
  "name": "recordings transcript",
238
276
  "description": "Download transcript files (VTT/chat) for a meeting",
239
277
  "mutating": false,
278
+ "output_fields": [
279
+ {"name": "files_downloaded", "type": "integer", "description": "Number of transcript/chat files downloaded"},
280
+ {"name": "paths", "type": "array", "description": "Absolute paths of the downloaded files"}
281
+ ],
240
282
  "args": [
241
283
  {"name": "meeting_id", "type": "string", "required": true, "description": "Meeting ID or UUID"},
242
284
  {"name": "--out", "type": "path", "default": ".", "description": "Output directory"}
@@ -315,6 +357,7 @@ fn schema_doc() -> serde_json::Value {
315
357
  "name": "users deactivate",
316
358
  "description": "Deactivate a user",
317
359
  "mutating": true,
360
+ "output_fields": [],
318
361
  "args": [
319
362
  {"name": "id_or_email", "type": "string", "required": true, "description": "User ID or email"}
320
363
  ]
@@ -323,6 +366,7 @@ fn schema_doc() -> serde_json::Value {
323
366
  "name": "users activate",
324
367
  "description": "Activate (reactivate) a user",
325
368
  "mutating": true,
369
+ "output_fields": [],
326
370
  "args": [
327
371
  {"name": "id_or_email", "type": "string", "required": true, "description": "User ID or email"}
328
372
  ]
@@ -414,6 +458,7 @@ fn schema_doc() -> serde_json::Value {
414
458
  "name": "config delete",
415
459
  "description": "Delete a profile from the config file",
416
460
  "mutating": true,
461
+ "output_fields": [],
417
462
  "args": [
418
463
  {"name": "profile", "type": "string", "required": true, "description": "Profile name to delete"},
419
464
  {"name": "--force", "type": "boolean", "default": false, "description": "Skip confirmation prompt"}
@@ -421,8 +466,16 @@ fn schema_doc() -> serde_json::Value {
421
466
  },
422
467
  {
423
468
  "name": "init",
424
- "description": "Set up credentials interactively",
469
+ "description": "Set up credentials interactively. When stdout is not a TTY, prints JSON setup instructions instead.",
425
470
  "mutating": true,
471
+ "output_fields": [
472
+ {"name": "configPath", "type": "string", "description": "Absolute path to the config file that will be written"},
473
+ {"name": "tokenInstructions", "type": "object", "description": "Step-by-step instructions for creating a Server-to-Server OAuth app"},
474
+ {"name": "requiredCredentials", "type": "array", "description": "Credential keys required in the config file: account_id, client_id, client_secret"},
475
+ {"name": "requiredScopes", "type": "array", "description": "Zoom OAuth scopes that must be granted to the app"},
476
+ {"name": "optionalScopes", "type": "array", "description": "Zoom OAuth scopes that unlock additional commands"},
477
+ {"name": "example", "type": "object", "description": "Example config file path and format"}
478
+ ],
426
479
  "args": [
427
480
  {"name": "--profile", "type": "string", "description": "Profile name to create or update"}
428
481
  ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes