qualys-cli 0.1.3__tar.gz → 0.1.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 (68) hide show
  1. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/CHANGELOG.md +39 -5
  2. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/LICENSE +1 -1
  3. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/PKG-INFO +11 -4
  4. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/README.md +6 -0
  5. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/pyproject.toml +24 -3
  6. qualys_cli-0.1.5/src/qualys_cli/__init__.py +1 -0
  7. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/_docs/usage.html +4 -4
  8. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/ca.py +58 -20
  9. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/pc.py +75 -11
  10. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/pm.py +66 -6
  11. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/vm.py +18 -5
  12. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/was.py +13 -3
  13. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_ca.py +48 -13
  14. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_pc.py +61 -0
  15. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_pm.py +32 -0
  16. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_vm.py +23 -0
  17. qualys_cli-0.1.5/tests/test_was.py +52 -0
  18. qualys_cli-0.1.3/src/qualys_cli/__init__.py +0 -1
  19. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/.gitignore +0 -0
  20. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/__main__.py +0 -0
  21. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/audit.py +0 -0
  22. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/auth.py +0 -0
  23. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/cache.py +0 -0
  24. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/cli.py +0 -0
  25. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/client.py +0 -0
  26. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/__init__.py +0 -0
  27. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/asset.py +0 -0
  28. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/cs.py +0 -0
  29. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/csam.py +0 -0
  30. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/etm.py +0 -0
  31. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/scanauth.py +0 -0
  32. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/sub.py +0 -0
  33. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/tc.py +0 -0
  34. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/commands/user.py +0 -0
  35. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/config.py +0 -0
  36. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/extras.py +0 -0
  37. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/flair.py +0 -0
  38. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/formatters.py +0 -0
  39. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/history.py +0 -0
  40. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/http_server.py +0 -0
  41. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/mcp_server.py +0 -0
  42. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/metrics.py +0 -0
  43. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/platforms.py +0 -0
  44. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/src/qualys_cli/queries.py +0 -0
  45. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/__init__.py +0 -0
  46. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/conftest.py +0 -0
  47. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_agent_mode.py +0 -0
  48. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_all_commands_smoke.py +0 -0
  49. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_asset.py +0 -0
  50. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_audit.py +0 -0
  51. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_client.py +0 -0
  52. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_csam.py +0 -0
  53. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_error_handling.py +0 -0
  54. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_etm.py +0 -0
  55. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_features.py +0 -0
  56. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_flair.py +0 -0
  57. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_formatters.py +0 -0
  58. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_global_flags.py +0 -0
  59. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_help.py +0 -0
  60. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_high_fixes.py +0 -0
  61. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_main.py +0 -0
  62. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_med_fixes.py +0 -0
  63. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_resiliency.py +0 -0
  64. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_scanauth.py +0 -0
  65. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_security_fixes.py +0 -0
  66. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_sub.py +0 -0
  67. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_tc.py +0 -0
  68. {qualys_cli-0.1.3 → qualys_cli-0.1.5}/tests/test_user.py +0 -0
@@ -6,12 +6,29 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [0.1.3] — 2026-07-08
9
+ ## [0.1.5] — 2026-07-08
10
+
11
+ ### Changed
12
+ - Package metadata: author is now `Qualys <support@qualys.com>`, with Balaji
13
+ Venkatesan and Andrew Nelson listed as maintainers.
14
+ - Expanded and clarified PyPI keywords to match the modules the CLI ships
15
+ (policy compliance, cloud/container security, WAS, EASM, asset inventory).
16
+ Dropped the ambiguous `vm` keyword, which reads as "virtual machine" on PyPI.
17
+ - The Qualys logo now heads the PyPI project description / README.
18
+
19
+ ### Fixed
20
+ - `qualys_cli.__version__` was pinned at `0.1.0` and had drifted three releases
21
+ behind the real package version. It is now kept in step with the release.
22
+ (User-facing `--version` output was unaffected: it reads installed package
23
+ metadata via `importlib.metadata`, not this constant.)
24
+
25
+ ## [0.1.4] — 2026-07-08
10
26
 
11
27
  ### Added
12
- - `ca agent list` and `ca agent count` now accept `--status Active|Inactive`,
13
- mapped to the Qualys `agentInfo.status` (`STATUS_ACTIVE`/`STATUS_INACTIVE`)
14
- search criterion.
28
+ - `ca agent list` now accepts `--status Active|Inactive`. Agent status is not a
29
+ searchable Qualys field (the API rejects it), so the filter is applied
30
+ client-side to the returned rows against `agentInfo.status`
31
+ (`STATUS_ACTIVE`/`STATUS_INACTIVE`).
15
32
  - `qualys-cli docs` command — locates or opens the bundled HTML command
16
33
  reference that ships inside the package (`--open`/`--no-open`/`--stdout`).
17
34
  The sub-app existed but was never registered on the CLI.
@@ -26,6 +43,21 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
26
43
  to create a user.
27
44
  - `pm job create` and `pm job update` now send the API-required `type` field;
28
45
  `pm job change-status` posts job IDs under `ids` (was the wrong key `jobIds`).
46
+ - Audited every list/search filter option for field tokens the API rejects as
47
+ "invalid criteria" (the class behind the `ca agent list --status` 400) and
48
+ fixed the offenders:
49
+ - `was catalog list` sent an invalid `name` Criteria (400). Replaced with the
50
+ documented catalog fields `--fqdn`, `--ip`, and `--status`.
51
+ - `vm report list --type` and `pc policy list --title` sent input params the
52
+ API doesn't accept (silently ignored). Both are now applied client-side to
53
+ the response (`TYPE` / `TITLE`).
54
+ - `pm patch list --severity` sent an invalid `severityList` param; it now
55
+ filters returned rows on `vendorSeverity` client-side.
56
+ - `pc posture list` sent singular `host_id`/`control_id`; the API expects the
57
+ plural `host_ids`/`control_ids`. Its `--status` is normalised to the API's
58
+ `Passed|Failed|Error` values.
59
+ - All `--status`/`--severity`-style values are validated up front (fast
60
+ `BadParameter` before any network call).
29
61
  - Corrected the README instructions for locating the bundled usage reference
30
62
  (the old `sys.prefix/share/...` path was never where the file shipped).
31
63
 
@@ -131,7 +163,9 @@ Initial public release.
131
163
  - Ruff lint clean (E, F, I, UP, B, C4, SIM rule sets).
132
164
  - Codegen pipeline (`scripts/`) is opt-in via the `codegen` extra.
133
165
 
134
- [Unreleased]: https://github.com/qualys/qualys-cli/compare/v0.1.2...HEAD
166
+ [Unreleased]: https://github.com/qualys/qualys-cli/compare/v0.1.5...HEAD
167
+ [0.1.5]: https://github.com/qualys/qualys-cli/compare/v0.1.4...v0.1.5
168
+ [0.1.4]: https://github.com/qualys/qualys-cli/compare/v0.1.2...v0.1.4
135
169
  [0.1.2]: https://github.com/qualys/qualys-cli/compare/v0.1.1...v0.1.2
136
170
  [0.1.1]: https://github.com/qualys/qualys-cli/compare/v0.1.0...v0.1.1
137
171
  [0.1.0]: https://github.com/qualys/qualys-cli/releases/tag/v0.1.0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 qualys-cli contributors
3
+ Copyright (c) 2026 Qualys Inc
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qualys-cli
3
- Version: 0.1.3
3
+ Version: 0.1.5
4
4
  Summary: Unified command-line interface for the Qualys Cloud Platform REST APIs (VM, PC, PM, ETM, WAS, TotalCloud, Cloud Agent, Container Security, CSAM, Subscription, Asset, and User management).
5
5
  Project-URL: Homepage, https://www.qualys.com
6
- Author: qualys-cli contributors
6
+ Author-email: Qualys <support@qualys.com>
7
+ Maintainer-email: Balaji Venkatesan <bvenkatesan@qualys.com>, Andrew Nelson <anelson@qualys.com>
7
8
  License: MIT License
8
9
 
9
- Copyright (c) 2026 qualys-cli contributors
10
+ Copyright (c) 2026 Qualys Inc
10
11
 
11
12
  Permission is hereby granted, free of charge, to any person obtaining a copy
12
13
  of this software and associated documentation files (the "Software"), to deal
@@ -26,7 +27,7 @@ License: MIT License
26
27
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
28
  SOFTWARE.
28
29
  License-File: LICENSE
29
- Keywords: cli,cspm,patch-management,qualys,security,vm,vulnerability-management
30
+ Keywords: asset-inventory,attack-surface-management,cli,cloud-security,container-security,cspm,devsecops,infosec,patch-management,policy-compliance,qualys,qualys-api,qualys-cloud-platform,security,vulnerability-management,web-application-scanning
30
31
  Classifier: Development Status :: 4 - Beta
31
32
  Classifier: Environment :: Console
32
33
  Classifier: Intended Audience :: Information Technology
@@ -62,6 +63,12 @@ Requires-Dist: selectolax>=0.3; extra == 'codegen'
62
63
  Requires-Dist: trafilatura>=1.9; extra == 'codegen'
63
64
  Description-Content-Type: text/markdown
64
65
 
66
+ <p align="center">
67
+ <a href="https://www.qualys.com/">
68
+ <img src="https://ik.imagekit.io/qualys/image/logo/qualys-vertical-sans-tagline-social.png?tr=w-360" width="360" alt="Qualys" />
69
+ </a>
70
+ </p>
71
+
65
72
  # qualys-cli
66
73
 
67
74
  [![PyPI](https://img.shields.io/pypi/v/qualys-cli.svg)](https://pypi.org/project/qualys-cli/)
@@ -1,3 +1,9 @@
1
+ <p align="center">
2
+ <a href="https://www.qualys.com/">
3
+ <img src="https://ik.imagekit.io/qualys/image/logo/qualys-vertical-sans-tagline-social.png?tr=w-360" width="360" alt="Qualys" />
4
+ </a>
5
+ </p>
6
+
1
7
  # qualys-cli
2
8
 
3
9
  [![PyPI](https://img.shields.io/pypi/v/qualys-cli.svg)](https://pypi.org/project/qualys-cli/)
@@ -4,14 +4,35 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "qualys-cli"
7
- version = "0.1.3"
7
+ version = "0.1.5"
8
8
  description = "Unified command-line interface for the Qualys Cloud Platform REST APIs (VM, PC, PM, ETM, WAS, TotalCloud, Cloud Agent, Container Security, CSAM, Subscription, Asset, and User management)."
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  license = { file = "LICENSE" }
11
11
  requires-python = ">=3.11"
12
- keywords = ["qualys", "cli", "security", "vulnerability-management", "vm", "patch-management", "cspm"]
12
+ keywords = [
13
+ "qualys",
14
+ "qualys-api",
15
+ "qualys-cloud-platform",
16
+ "cli",
17
+ "security",
18
+ "infosec",
19
+ "devsecops",
20
+ "vulnerability-management",
21
+ "patch-management",
22
+ "policy-compliance",
23
+ "cspm",
24
+ "cloud-security",
25
+ "container-security",
26
+ "web-application-scanning",
27
+ "attack-surface-management",
28
+ "asset-inventory",
29
+ ]
13
30
  authors = [
14
- { name = "qualys-cli contributors" },
31
+ { name = "Qualys", email = "support@qualys.com" },
32
+ ]
33
+ maintainers = [
34
+ { name = "Balaji Venkatesan", email = "bvenkatesan@qualys.com" },
35
+ { name = "Andrew Nelson", email = "anelson@qualys.com" },
15
36
  ]
16
37
  classifiers = [
17
38
  "Development Status :: 4 - Beta",
@@ -0,0 +1 @@
1
+ __version__ = "0.1.5"