zoomcli 0.2.3__tar.gz → 0.2.5__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 (32) hide show
  1. {zoomcli-0.2.3 → zoomcli-0.2.5}/.github/workflows/release.yml +89 -12
  2. {zoomcli-0.2.3 → zoomcli-0.2.5}/CHANGELOG.md +14 -0
  3. {zoomcli-0.2.3 → zoomcli-0.2.5}/Cargo.lock +329 -2
  4. {zoomcli-0.2.3 → zoomcli-0.2.5}/Cargo.toml +2 -1
  5. {zoomcli-0.2.3 → zoomcli-0.2.5}/PKG-INFO +1 -1
  6. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/api/mod.rs +88 -0
  7. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/commands/init.rs +31 -7
  8. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/commands/meetings.rs +63 -3
  9. zoomcli-0.2.5/src/commands/mod.rs +523 -0
  10. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/commands/recordings.rs +61 -5
  11. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/commands/reports.rs +62 -7
  12. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/commands/users.rs +40 -2
  13. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/commands/webinars.rs +48 -4
  14. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/lib.rs +2 -0
  15. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/main.rs +177 -33
  16. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/output.rs +29 -3
  17. zoomcli-0.2.5/tests/fixtures/clispec-v0.2.json +135 -0
  18. zoomcli-0.2.3/src/commands/mod.rs +0 -192
  19. {zoomcli-0.2.3 → zoomcli-0.2.5}/.github/workflows/ci.yml +0 -0
  20. {zoomcli-0.2.3 → zoomcli-0.2.5}/.gitignore +0 -0
  21. {zoomcli-0.2.3 → zoomcli-0.2.5}/Formula/zoom-cli.rb +0 -0
  22. {zoomcli-0.2.3 → zoomcli-0.2.5}/Makefile +0 -0
  23. {zoomcli-0.2.3 → zoomcli-0.2.5}/README.md +0 -0
  24. {zoomcli-0.2.3 → zoomcli-0.2.5}/prek.toml +0 -0
  25. {zoomcli-0.2.3 → zoomcli-0.2.5}/pyproject.toml +0 -0
  26. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/api/client.rs +0 -0
  27. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/api/types.rs +0 -0
  28. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/commands/config.rs +0 -0
  29. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/config.rs +0 -0
  30. {zoomcli-0.2.3 → zoomcli-0.2.5}/src/test_support.rs +0 -0
  31. {zoomcli-0.2.3 → zoomcli-0.2.5}/zoom_cli/__init__.py +0 -0
  32. {zoomcli-0.2.3 → zoomcli-0.2.5}/zoom_cli/__main__.py +0 -0
@@ -50,48 +50,114 @@ jobs:
50
50
  build:
51
51
  name: Build ${{ matrix.target }}
52
52
  needs: test
53
+ timeout-minutes: 30
54
+ # Guard: self-hosted runners only execute on trusted events (tag push,
55
+ # workflow_dispatch). Fork PRs must never dispatch jobs to self-hosted.
56
+ if: github.event_name != 'pull_request'
53
57
  strategy:
54
58
  matrix:
55
59
  include:
56
60
  - os: ubuntu-latest
57
61
  target: x86_64-unknown-linux-gnu
58
- - os: ubuntu-latest
62
+ - os: [self-hosted, Linux, ARM64]
59
63
  target: aarch64-unknown-linux-gnu
60
64
  - os: windows-latest
61
65
  target: x86_64-pc-windows-msvc
62
- - os: macos-latest
66
+ - os: [self-hosted, macOS, ARM64]
63
67
  target: x86_64-apple-darwin
64
- - os: macos-latest
68
+ - os: [self-hosted, macOS, ARM64]
65
69
  target: aarch64-apple-darwin
66
70
  runs-on: ${{ matrix.os }}
67
71
  steps:
68
72
  - uses: actions/checkout@v4
73
+ with:
74
+ # Preserve target/ between runs on self-hosted runners for cargo
75
+ # incremental rebuild. GitHub-hosted runners start clean each job
76
+ # regardless of this setting, so this only affects self-hosted.
77
+ clean: false
69
78
 
70
79
  - uses: dtolnay/rust-toolchain@stable
71
80
  with:
72
81
  targets: ${{ matrix.target }}
73
82
 
74
- - name: Install cross-compilation tools
83
+ - name: Prepare cargo cache dirs (arm64 linux)
75
84
  if: matrix.target == 'aarch64-unknown-linux-gnu'
85
+ run: mkdir -p "${RUNNER_TOOL_CACHE}/cargo-cache/registry" "${RUNNER_TOOL_CACHE}/cargo-cache/git"
86
+
87
+ - name: Clean stale dist
88
+ # Keep dist/ fresh each run so previous builds cannot leak artifacts
89
+ # into the upload. Self-hosted runners do not clean automatically.
90
+ # On the arm64 linux runner, maturin-action runs as root inside the
91
+ # manylinux container and leaves root-owned files in dist/; clean
92
+ # via docker so the unprivileged runner user can proceed.
93
+ shell: bash
94
+ run: |
95
+ if [[ "${{ matrix.target }}" == "aarch64-unknown-linux-gnu" ]]; then
96
+ docker run --rm -v "${GITHUB_WORKSPACE}:/io" alpine rm -rf /io/dist /io/target/wheels
97
+ else
98
+ rm -rf dist target/wheels
99
+ fi
100
+
101
+ - name: Install cross-compilation tools
102
+ # Only needed on GitHub-hosted linux where the arm64 toolchain must
103
+ # be cross-installed. The self-hosted arm64 runner is native.
104
+ if: matrix.target == 'aarch64-unknown-linux-gnu' && runner.arch != 'ARM64'
76
105
  run: sudo apt-get update && sudo apt-get install -y gcc-aarch64-linux-gnu
77
106
 
78
- - name: Install maturin
79
- run: pip install maturin
107
+ - name: Install uv
108
+ if: matrix.target != 'aarch64-unknown-linux-gnu'
109
+ uses: astral-sh/setup-uv@v6
110
+
111
+ - name: Install maturin and zig
112
+ # maturin-action provides its own maturin inside the manylinux
113
+ # container for the arm64 linux build, so skip the host install
114
+ # on the self-hosted runner.
115
+ if: matrix.target != 'aarch64-unknown-linux-gnu'
116
+ shell: bash
117
+ run: |
118
+ uv venv "${RUNNER_TEMP}/build-venv"
119
+ VENV_BIN="${RUNNER_TEMP}/build-venv/bin"
120
+ [ -d "$VENV_BIN" ] || VENV_BIN="${RUNNER_TEMP}/build-venv/Scripts"
121
+ uv pip install --python "${RUNNER_TEMP}/build-venv" maturin ziglang
122
+ echo "$VENV_BIN" >> "$GITHUB_PATH"
123
+
124
+ - name: Build wheel (arm64 linux via maturin-action)
125
+ if: matrix.target == 'aarch64-unknown-linux-gnu'
126
+ uses: PyO3/maturin-action@v1
127
+ with:
128
+ target: aarch64-unknown-linux-gnu
129
+ args: --release --out dist
130
+ manylinux: manylinux_2_28
131
+ # Mount persistent cargo cache into the manylinux container so
132
+ # dependency downloads survive between jobs on the self-hosted
133
+ # runner.
134
+ docker-options: -v ${{ runner.tool_cache }}/cargo-cache/registry:/root/.cargo/registry -v ${{ runner.tool_cache }}/cargo-cache/git:/root/.cargo/git
80
135
 
81
136
  - name: Build wheel
137
+ if: matrix.target != 'aarch64-unknown-linux-gnu'
82
138
  shell: bash
83
139
  run: |
84
140
  case "${{ matrix.target }}" in
85
141
  *-gnu)
86
- pip install ziglang
87
- maturin build --release --target ${{ matrix.target }} --compatibility manylinux_2_28 --zig
142
+ maturin build --release --target ${{ matrix.target }} --compatibility manylinux_2_28 --zig --out dist
88
143
  ;;
89
144
  *)
90
- maturin build --release --target ${{ matrix.target }}
145
+ maturin build --release --target ${{ matrix.target }} --out dist
91
146
  ;;
92
147
  esac
93
148
 
149
+ - name: Build binary (arm64 linux via cargo-zigbuild)
150
+ # On the Pi runner build natively with cargo-zigbuild targeting
151
+ # glibc 2.28 for wide distro compatibility. Use a separate target
152
+ # directory so host cargo does not conflict with root-owned files
153
+ # left behind by the maturin-action container build in target/.
154
+ if: matrix.target == 'aarch64-unknown-linux-gnu'
155
+ env:
156
+ CARGO_TARGET_DIR: target-host
157
+ run: cargo zigbuild --release --target aarch64-unknown-linux-gnu.2.28
158
+
94
159
  - name: Build binary
160
+ if: matrix.target != 'aarch64-unknown-linux-gnu'
95
161
  env:
96
162
  CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
97
163
  run: cargo build --release --target ${{ matrix.target }}
@@ -121,7 +187,12 @@ jobs:
121
187
  cd ..
122
188
  powershell -command "Get-FileHash -Path '${ARCHIVE_NAME}.zip' -Algorithm SHA256 | Select-Object -ExpandProperty Hash" > "${ARCHIVE_NAME}.zip.sha256"
123
189
  else
124
- cp "target/${{ matrix.target }}/release/zoom" release-package/zoom
190
+ if [[ "${{ matrix.target }}" == "aarch64-unknown-linux-gnu" ]]; then
191
+ BIN_PATH="target-host/aarch64-unknown-linux-gnu/release/zoom"
192
+ else
193
+ BIN_PATH="target/${{ matrix.target }}/release/zoom"
194
+ fi
195
+ cp "$BIN_PATH" release-package/zoom
125
196
  tar -czf "${ARCHIVE_NAME}.tar.gz" -C release-package zoom
126
197
 
127
198
  if [[ "${{ runner.os }}" == "macOS" ]]; then
@@ -136,7 +207,7 @@ jobs:
136
207
  - name: Upload wheel
137
208
  uses: actions/upload-artifact@v4
138
209
  with:
139
- path: target/wheels/*
210
+ path: dist/*.whl
140
211
  name: wheel-${{ matrix.target }}
141
212
 
142
213
  - name: Upload release archives
@@ -154,8 +225,14 @@ jobs:
154
225
  steps:
155
226
  - uses: actions/checkout@v4
156
227
 
228
+ - uses: astral-sh/setup-uv@v6
229
+
157
230
  - name: Install maturin
158
- run: pip install maturin
231
+ shell: bash
232
+ run: |
233
+ uv venv "${RUNNER_TEMP}/build-venv"
234
+ uv pip install --python "${RUNNER_TEMP}/build-venv/bin/python" maturin
235
+ echo "${RUNNER_TEMP}/build-venv/bin" >> "$GITHUB_PATH"
159
236
 
160
237
  - name: Build sdist
161
238
  run: maturin sdist
@@ -7,6 +7,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
7
7
 
8
8
 
9
9
 
10
+
11
+
12
+ ## [0.2.5](https://github.com/rvben/zoom-cli/compare/v0.2.4...v0.2.5) - 2026-06-11
13
+
14
+ ### Added
15
+
16
+ - make zoom CLI fully compliant with The CLI Spec v0.2 (24/24) ([ffedf5f](https://github.com/rvben/zoom-cli/commit/ffedf5f9c814d9e79c943fae64ee6983eb14ea80))
17
+
18
+ ## [0.2.4](https://github.com/rvben/zoom-cli/compare/v0.2.3...v0.2.4) - 2026-04-03
19
+
20
+ ### Added
21
+
22
+ - **init**: improve OAuth URL hint and add next steps block ([cd7777d](https://github.com/rvben/zoom-cli/commit/cd7777d42bc8ed582404884438a2ce8d53dbc71c))
23
+
10
24
  ## [0.2.3](https://github.com/rvben/zoom-cli/compare/v0.2.2...v0.2.3) - 2026-04-03
11
25
 
12
26
  ## [0.2.2](https://github.com/rvben/zoom-cli/compare/v0.2.1...v0.2.2) - 2026-04-03
@@ -2,6 +2,20 @@
2
2
  # It is not intended for manual editing.
3
3
  version = 4
4
4
 
5
+ [[package]]
6
+ name = "ahash"
7
+ version = "0.8.12"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
10
+ dependencies = [
11
+ "cfg-if",
12
+ "getrandom 0.3.4",
13
+ "once_cell",
14
+ "serde",
15
+ "version_check",
16
+ "zerocopy",
17
+ ]
18
+
5
19
  [[package]]
6
20
  name = "aho-corasick"
7
21
  version = "1.1.4"
@@ -11,6 +25,12 @@ dependencies = [
11
25
  "memchr",
12
26
  ]
13
27
 
28
+ [[package]]
29
+ name = "allocator-api2"
30
+ version = "0.2.21"
31
+ source = "registry+https://github.com/rust-lang/crates.io-index"
32
+ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
33
+
14
34
  [[package]]
15
35
  name = "anstream"
16
36
  version = "1.0.0"
@@ -110,12 +130,33 @@ version = "0.22.1"
110
130
  source = "registry+https://github.com/rust-lang/crates.io-index"
111
131
  checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
112
132
 
133
+ [[package]]
134
+ name = "bit-set"
135
+ version = "0.8.0"
136
+ source = "registry+https://github.com/rust-lang/crates.io-index"
137
+ checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
138
+ dependencies = [
139
+ "bit-vec",
140
+ ]
141
+
142
+ [[package]]
143
+ name = "bit-vec"
144
+ version = "0.8.0"
145
+ source = "registry+https://github.com/rust-lang/crates.io-index"
146
+ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
147
+
113
148
  [[package]]
114
149
  name = "bitflags"
115
150
  version = "2.11.0"
116
151
  source = "registry+https://github.com/rust-lang/crates.io-index"
117
152
  checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
118
153
 
154
+ [[package]]
155
+ name = "borrow-or-share"
156
+ version = "0.2.4"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c"
159
+
119
160
  [[package]]
120
161
  name = "bstr"
121
162
  version = "1.12.1"
@@ -133,6 +174,12 @@ version = "3.20.2"
133
174
  source = "registry+https://github.com/rust-lang/crates.io-index"
134
175
  checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
135
176
 
177
+ [[package]]
178
+ name = "bytecount"
179
+ version = "0.6.9"
180
+ source = "registry+https://github.com/rust-lang/crates.io-index"
181
+ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e"
182
+
136
183
  [[package]]
137
184
  name = "bytes"
138
185
  version = "1.11.1"
@@ -216,6 +263,12 @@ version = "1.0.5"
216
263
  source = "registry+https://github.com/rust-lang/crates.io-index"
217
264
  checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
218
265
 
266
+ [[package]]
267
+ name = "data-encoding"
268
+ version = "2.11.0"
269
+ source = "registry+https://github.com/rust-lang/crates.io-index"
270
+ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
271
+
219
272
  [[package]]
220
273
  name = "deadpool"
221
274
  version = "0.12.3"
@@ -272,6 +325,15 @@ dependencies = [
272
325
  "syn",
273
326
  ]
274
327
 
328
+ [[package]]
329
+ name = "email_address"
330
+ version = "0.2.9"
331
+ source = "registry+https://github.com/rust-lang/crates.io-index"
332
+ checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449"
333
+ dependencies = [
334
+ "serde",
335
+ ]
336
+
275
337
  [[package]]
276
338
  name = "equivalent"
277
339
  version = "1.0.2"
@@ -288,6 +350,17 @@ dependencies = [
288
350
  "windows-sys 0.61.2",
289
351
  ]
290
352
 
353
+ [[package]]
354
+ name = "fancy-regex"
355
+ version = "0.18.0"
356
+ source = "registry+https://github.com/rust-lang/crates.io-index"
357
+ checksum = "e1e1dacd0d2082dfcf1351c4bdd566bbe89a2b263235a2b50058f1e130a47277"
358
+ dependencies = [
359
+ "bit-set",
360
+ "regex-automata",
361
+ "regex-syntax",
362
+ ]
363
+
291
364
  [[package]]
292
365
  name = "fastrand"
293
366
  version = "2.3.0"
@@ -309,6 +382,17 @@ dependencies = [
309
382
  "num-traits",
310
383
  ]
311
384
 
385
+ [[package]]
386
+ name = "fluent-uri"
387
+ version = "0.4.1"
388
+ source = "registry+https://github.com/rust-lang/crates.io-index"
389
+ checksum = "bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e"
390
+ dependencies = [
391
+ "borrow-or-share",
392
+ "ref-cast",
393
+ "serde",
394
+ ]
395
+
312
396
  [[package]]
313
397
  name = "fnv"
314
398
  version = "1.0.7"
@@ -321,6 +405,12 @@ version = "0.1.5"
321
405
  source = "registry+https://github.com/rust-lang/crates.io-index"
322
406
  checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
323
407
 
408
+ [[package]]
409
+ name = "foldhash"
410
+ version = "0.2.0"
411
+ source = "registry+https://github.com/rust-lang/crates.io-index"
412
+ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
413
+
324
414
  [[package]]
325
415
  name = "form_urlencoded"
326
416
  version = "1.2.2"
@@ -330,6 +420,16 @@ dependencies = [
330
420
  "percent-encoding",
331
421
  ]
332
422
 
423
+ [[package]]
424
+ name = "fraction"
425
+ version = "0.15.4"
426
+ source = "registry+https://github.com/rust-lang/crates.io-index"
427
+ checksum = "e076045bb43dac435333ed5f04caf35c7463631d0dae2deb2638d94dd0a5b872"
428
+ dependencies = [
429
+ "lazy_static",
430
+ "num",
431
+ ]
432
+
333
433
  [[package]]
334
434
  name = "futures"
335
435
  version = "0.3.32"
@@ -483,7 +583,7 @@ version = "0.15.5"
483
583
  source = "registry+https://github.com/rust-lang/crates.io-index"
484
584
  checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
485
585
  dependencies = [
486
- "foldhash",
586
+ "foldhash 0.1.5",
487
587
  ]
488
588
 
489
589
  [[package]]
@@ -491,6 +591,11 @@ name = "hashbrown"
491
591
  version = "0.16.1"
492
592
  source = "registry+https://github.com/rust-lang/crates.io-index"
493
593
  checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
594
+ dependencies = [
595
+ "allocator-api2",
596
+ "equivalent",
597
+ "foldhash 0.2.0",
598
+ ]
494
599
 
495
600
  [[package]]
496
601
  name = "heck"
@@ -772,6 +877,33 @@ dependencies = [
772
877
  "wasm-bindgen",
773
878
  ]
774
879
 
880
+ [[package]]
881
+ name = "jsonschema"
882
+ version = "0.46.5"
883
+ source = "registry+https://github.com/rust-lang/crates.io-index"
884
+ checksum = "6a5fe5206f06e589caf25e79fc05ccdf91fca745685fe9fe1a13bbdfb479a631"
885
+ dependencies = [
886
+ "ahash",
887
+ "bytecount",
888
+ "data-encoding",
889
+ "email_address",
890
+ "fancy-regex",
891
+ "fraction",
892
+ "getrandom 0.3.4",
893
+ "idna",
894
+ "itoa",
895
+ "num-cmp",
896
+ "num-traits",
897
+ "percent-encoding",
898
+ "referencing",
899
+ "regex",
900
+ "regex-syntax",
901
+ "serde",
902
+ "serde_json",
903
+ "unicode-general-category",
904
+ "uuid-simd",
905
+ ]
906
+
775
907
  [[package]]
776
908
  name = "lazy_static"
777
909
  version = "1.5.0"
@@ -811,6 +943,15 @@ version = "0.8.2"
811
943
  source = "registry+https://github.com/rust-lang/crates.io-index"
812
944
  checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
813
945
 
946
+ [[package]]
947
+ name = "lock_api"
948
+ version = "0.4.14"
949
+ source = "registry+https://github.com/rust-lang/crates.io-index"
950
+ checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
951
+ dependencies = [
952
+ "scopeguard",
953
+ ]
954
+
814
955
  [[package]]
815
956
  name = "log"
816
957
  version = "0.4.29"
@@ -829,6 +970,12 @@ version = "2.8.0"
829
970
  source = "registry+https://github.com/rust-lang/crates.io-index"
830
971
  checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
831
972
 
973
+ [[package]]
974
+ name = "micromap"
975
+ version = "0.3.0"
976
+ source = "registry+https://github.com/rust-lang/crates.io-index"
977
+ checksum = "c2a86d3146ed3995b5913c414f6664344b9617457320782e64f0bb44afd49d74"
978
+
832
979
  [[package]]
833
980
  name = "mio"
834
981
  version = "1.2.0"
@@ -846,6 +993,76 @@ version = "0.3.0"
846
993
  source = "registry+https://github.com/rust-lang/crates.io-index"
847
994
  checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
848
995
 
996
+ [[package]]
997
+ name = "num"
998
+ version = "0.4.3"
999
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1000
+ checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
1001
+ dependencies = [
1002
+ "num-bigint",
1003
+ "num-complex",
1004
+ "num-integer",
1005
+ "num-iter",
1006
+ "num-rational",
1007
+ "num-traits",
1008
+ ]
1009
+
1010
+ [[package]]
1011
+ name = "num-bigint"
1012
+ version = "0.4.6"
1013
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1014
+ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
1015
+ dependencies = [
1016
+ "num-integer",
1017
+ "num-traits",
1018
+ ]
1019
+
1020
+ [[package]]
1021
+ name = "num-cmp"
1022
+ version = "0.1.0"
1023
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1024
+ checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa"
1025
+
1026
+ [[package]]
1027
+ name = "num-complex"
1028
+ version = "0.4.6"
1029
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1030
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
1031
+ dependencies = [
1032
+ "num-traits",
1033
+ ]
1034
+
1035
+ [[package]]
1036
+ name = "num-integer"
1037
+ version = "0.1.46"
1038
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1039
+ checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
1040
+ dependencies = [
1041
+ "num-traits",
1042
+ ]
1043
+
1044
+ [[package]]
1045
+ name = "num-iter"
1046
+ version = "0.1.45"
1047
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1048
+ checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
1049
+ dependencies = [
1050
+ "autocfg",
1051
+ "num-integer",
1052
+ "num-traits",
1053
+ ]
1054
+
1055
+ [[package]]
1056
+ name = "num-rational"
1057
+ version = "0.4.2"
1058
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1059
+ checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
1060
+ dependencies = [
1061
+ "num-bigint",
1062
+ "num-integer",
1063
+ "num-traits",
1064
+ ]
1065
+
849
1066
  [[package]]
850
1067
  name = "num-traits"
851
1068
  version = "0.2.19"
@@ -883,12 +1100,41 @@ version = "0.2.0"
883
1100
  source = "registry+https://github.com/rust-lang/crates.io-index"
884
1101
  checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
885
1102
 
1103
+ [[package]]
1104
+ name = "outref"
1105
+ version = "0.5.2"
1106
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1107
+ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
1108
+
886
1109
  [[package]]
887
1110
  name = "owo-colors"
888
1111
  version = "4.3.0"
889
1112
  source = "registry+https://github.com/rust-lang/crates.io-index"
890
1113
  checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d"
891
1114
 
1115
+ [[package]]
1116
+ name = "parking_lot"
1117
+ version = "0.12.5"
1118
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1119
+ checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
1120
+ dependencies = [
1121
+ "lock_api",
1122
+ "parking_lot_core",
1123
+ ]
1124
+
1125
+ [[package]]
1126
+ name = "parking_lot_core"
1127
+ version = "0.9.12"
1128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1129
+ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
1130
+ dependencies = [
1131
+ "cfg-if",
1132
+ "libc",
1133
+ "redox_syscall",
1134
+ "smallvec",
1135
+ "windows-link",
1136
+ ]
1137
+
892
1138
  [[package]]
893
1139
  name = "percent-encoding"
894
1140
  version = "2.3.2"
@@ -1073,6 +1319,15 @@ dependencies = [
1073
1319
  "getrandom 0.3.4",
1074
1320
  ]
1075
1321
 
1322
+ [[package]]
1323
+ name = "redox_syscall"
1324
+ version = "0.5.18"
1325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1326
+ checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1327
+ dependencies = [
1328
+ "bitflags",
1329
+ ]
1330
+
1076
1331
  [[package]]
1077
1332
  name = "redox_users"
1078
1333
  version = "0.5.2"
@@ -1084,6 +1339,43 @@ dependencies = [
1084
1339
  "thiserror",
1085
1340
  ]
1086
1341
 
1342
+ [[package]]
1343
+ name = "ref-cast"
1344
+ version = "1.0.25"
1345
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1346
+ checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
1347
+ dependencies = [
1348
+ "ref-cast-impl",
1349
+ ]
1350
+
1351
+ [[package]]
1352
+ name = "ref-cast-impl"
1353
+ version = "1.0.25"
1354
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1355
+ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
1356
+ dependencies = [
1357
+ "proc-macro2",
1358
+ "quote",
1359
+ "syn",
1360
+ ]
1361
+
1362
+ [[package]]
1363
+ name = "referencing"
1364
+ version = "0.46.5"
1365
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1366
+ checksum = "69e4e17ef386c5383591d07623d3de49cbc601156e7582973e6db98d66a57de2"
1367
+ dependencies = [
1368
+ "ahash",
1369
+ "fluent-uri",
1370
+ "getrandom 0.3.4",
1371
+ "hashbrown 0.16.1",
1372
+ "itoa",
1373
+ "micromap",
1374
+ "parking_lot",
1375
+ "percent-encoding",
1376
+ "serde_json",
1377
+ ]
1378
+
1087
1379
  [[package]]
1088
1380
  name = "regex"
1089
1381
  version = "1.12.3"
@@ -1234,6 +1526,12 @@ version = "1.0.23"
1234
1526
  source = "registry+https://github.com/rust-lang/crates.io-index"
1235
1527
  checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
1236
1528
 
1529
+ [[package]]
1530
+ name = "scopeguard"
1531
+ version = "1.2.0"
1532
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1533
+ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1534
+
1237
1535
  [[package]]
1238
1536
  name = "semver"
1239
1537
  version = "1.0.27"
@@ -1605,6 +1903,12 @@ version = "0.2.5"
1605
1903
  source = "registry+https://github.com/rust-lang/crates.io-index"
1606
1904
  checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
1607
1905
 
1906
+ [[package]]
1907
+ name = "unicode-general-category"
1908
+ version = "1.1.0"
1909
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1910
+ checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f"
1911
+
1608
1912
  [[package]]
1609
1913
  name = "unicode-ident"
1610
1914
  version = "1.0.24"
@@ -1647,6 +1951,28 @@ version = "0.2.2"
1647
1951
  source = "registry+https://github.com/rust-lang/crates.io-index"
1648
1952
  checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1649
1953
 
1954
+ [[package]]
1955
+ name = "uuid-simd"
1956
+ version = "0.8.0"
1957
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1958
+ checksum = "23b082222b4f6619906941c17eb2297fff4c2fb96cb60164170522942a200bd8"
1959
+ dependencies = [
1960
+ "outref",
1961
+ "vsimd",
1962
+ ]
1963
+
1964
+ [[package]]
1965
+ name = "version_check"
1966
+ version = "0.9.5"
1967
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1968
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1969
+
1970
+ [[package]]
1971
+ name = "vsimd"
1972
+ version = "0.8.0"
1973
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1974
+ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
1975
+
1650
1976
  [[package]]
1651
1977
  name = "wait-timeout"
1652
1978
  version = "0.2.1"
@@ -2219,7 +2545,7 @@ checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
2219
2545
 
2220
2546
  [[package]]
2221
2547
  name = "zoom-cli"
2222
- version = "0.2.3"
2548
+ version = "0.2.5"
2223
2549
  dependencies = [
2224
2550
  "assert_cmd",
2225
2551
  "base64",
@@ -2227,6 +2553,7 @@ dependencies = [
2227
2553
  "clap_complete",
2228
2554
  "dirs",
2229
2555
  "futures-util",
2556
+ "jsonschema",
2230
2557
  "owo-colors",
2231
2558
  "predicates",
2232
2559
  "reqwest",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "zoom-cli"
3
- version = "0.2.3"
3
+ version = "0.2.5"
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"
@@ -35,3 +35,4 @@ wiremock = "0.6"
35
35
  assert_cmd = "2"
36
36
  predicates = "3"
37
37
  tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
38
+ jsonschema = { version = "0.46", default-features = false }