Bug: exports.vulns() and exports.was() still send the vpr_v2_score filter, which the API removed on 2026-10-01
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 35/100
Research direction
Start by reading the exports.vulns() and exports.was() implementations and their tests, which the issue identifies as the affected entry points. Check how export filters are assembled and how existing argument deprecations are handled; verify both methods translate vpr_v2_score, warn callers, and reject using it together with vpr_score. The linked open pull request indicates work is already underway.
Written by the indexing model from the issue text.
Description
Describe the bug
Tenable removed the vpr_v2_score filter from the Vulnerability Management and Web App Scanning export APIs on 2026-10-01. pyTenable still accepts vpr_v2_score in tio.exports.vulns() and tio.exports.was() and sends it in the request, so every export that uses it now fails:
tenable.errors.BadRequestError: [400: POST] https://cloud.tenable.com/vulns/export
body=b'{"code":"BAD_REQUEST_UNKNOWN_PROPERTY","message":"Unknown property \'vpr_v2_score\' detected in the payload. ..."}'
Tenable announced the removal in three changelogs:
| Date | Changelog | What it says |
|---|---|---|
| 2026-04-17 | Vulnerability Priority Rating: Transition to VPR Version 2 | vpr_v2_score will be deprecated. Use vpr_score, which reflects the updated VPR model from July 1, 2026. |
| 2026-06-24 | Reminder: Vulnerability Priority Rating (VPR) Version 2 Transition on July 1 | Reminder of the transition. |
| 2026-09-10 | Final Reminder: vpr_v2 Fields Removed from Exports on October 1 | vpr_v2_score and plugin.vpr_v2 are removed from both export endpoints on 2026-10-01. vpr_score reflects the enhanced VPR model. |
The Export vulnerabilities and Export findings reference pages no longer list vpr_v2_score, and both carry a caution note that it was removed.
To Reproduce
from tenable.io import TenableIO
tio = TenableIO(access_key='...', secret_key='...')
tio.exports.vulns(vpr_v2_score={'gte': 7.0}) # BadRequestError: 400 BAD_REQUEST_UNKNOWN_PROPERTY
tio.exports.was(vpr_v2_score={'gte': 7.0}) # same
Expected behavior
vpr_score now uses the same VPR v2 model that vpr_v2_score used, so existing scripts should keep working:
- Translation: the
vpr_v2_scoreargument is sent to the API asvpr_score, with aDeprecationWarningthat tells callers to switch tovpr_score. - Both arguments: passing
vpr_scoreandvpr_v2_scoretogether raises a clear error.
Workaround
Pass the same value as vpr_score instead:
tio.exports.vulns(vpr_score={'gte': 7.0})
System Information:
- OS: any
- Architecture: any
- Version: pyTenable 26.10.1 and earlier
Additional context
Confirmed against the live API in several environments: vpr_v2_score returns 400 BAD_REQUEST_UNKNOWN_PROPERTY for both vulnerability and WAS exports, while vpr_score is accepted.
- Dominant language
- Python
- Stars
- 417
- Forks
- 190
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 7
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from tenable/pyTenable
-
UsersAPI.edit() does not send payload, resulting in HTTP 415.Possibly taken @mCabby claimed this 1 day ago. Open
Difficulty 1/5 Under an hour Newbie friendliness 90/100
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
-
Difficulty 5/5 Over a week Newbie friendliness 15/100
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
All issues in tenable/pyTenable
Similar issues
-
docs size:S
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
strawberry-graphql/strawberry#4794 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
dataforgoodfr/cetolog#21 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
btclib-org/btclib#2932 ·
Maintainers usually reply within 1 day