nvd_client.models¶
Pydantic models for NVD API 2.0 documents.
The field set follows the NVD Vulnerability Data API schema (2.2.4) and the CPE Match Criteria API schema, including the CVSS v2.0, v3.0, v3.1, and v4.0 objects those documents reference.
Unknown keys are kept (extra="allow") so a later NVD field still shows up
in model_dump instead of being dropped. Declared
fields use snake_case in Python and the API's camelCase as an alias.
model_dump() emits snake_case; model_dump(by_alias=True) emits the
NVD names. model_dump_json() accepts the same arguments.
Dates are datetime.datetime values. NVD often omits the offset;
those values stay naive. Strings that include Z or an offset are aware.
Classes:
-
NvdModel–Base model for every NVD document in this package.
-
LangString–A language-tagged string used by descriptions and weaknesses.
-
Reference–A supplemental URL attached to a CVE.
-
CveTag–A source-scoped tag such as
disputed. -
VendorComment–An official vendor comment submitted to NVD.
-
CpeMatch–One CPE match criterion inside a CVE configuration node.
-
ConfigNode–A node in a CVE applicability statement.
-
Configuration–A CVE configuration (an AND/OR tree of CPE match nodes).
-
Weakness–A CWE (or NVD placeholder) associated with a CVE.
-
CvssV2Data–CVSS v2.0
cvssDataobject. -
CvssMetricV2–One CVSS v2 score, including NVD's wrapper fields.
-
CvssV30Data–CVSS v3.0
cvssDataobject. -
CvssV31Data–CVSS v3.1
cvssDataobject. -
CvssMetricV30–One CVSS v3.0 score.
-
CvssMetricV31–One CVSS v3.1 score.
-
CvssV40Data–CVSS v4.0
cvssDataobject. -
CvssMetricV40–One CVSS v4.0 score.
-
SsvcData–Stakeholder-Specific Vulnerability Categorization decision (v2.0.3).
-
SsvcMetric–One SSVC assessment attached to a CVE.
-
VersionChange–A status change inside an affected-version range.
-
AffectedVersion–One version or version range of an affected product.
-
ProgramRoutine–A named function or method listed as affected.
-
AffectedProduct–Product data inside an
affectedentry. -
Affected–A source's list of products affected by a CVE.
-
Metrics–CVSS and SSVC scores published for a CVE.
-
CveRecord–One CVE record from the
cveobject of an NVD 2.0 vulnerability. -
CveItem–The
vulnerabilities[]element, which wraps one CveRecord. -
CveListResponse–A page of CVE results from
/cves/2.0. -
CpeNameMatch–A dictionary CPE name that satisfies a match string.
-
CpeMatchString–One CPE match string from the CPE Match Criteria API.
-
CpeMatchStringItem–The
matchStrings[]element, which wraps one match string. -
CpeMatchResponse–A page of results from
/cpematch/2.0.
LangString
¶
CveTag
¶
VendorComment
¶
Bases: NvdModel
An official vendor comment submitted to NVD.
Attributes:
-
organization(str) – -
comment(str) – -
last_modified(datetime) –
CpeMatch
¶
Bases: NvdModel
One CPE match criterion inside a CVE configuration node.
Attributes:
-
vulnerable(bool) – -
criteria(str) – -
match_criteria_id(str) – -
version_start_excluding(str | None) – -
version_start_including(str | None) – -
version_end_excluding(str | None) – -
version_end_including(str | None) –
Configuration
¶
Weakness
¶
Bases: NvdModel
A CWE (or NVD placeholder) associated with a CVE.
description values are identifiers such as CWE-79 or
NVD-CWE-noinfo.
Attributes:
-
source(str) – -
type(str) – -
description(list[LangString]) –
CvssV2Data
¶
Bases: NvdModel
CVSS v2.0 cvssData object.
Attributes:
-
version(Literal['2.0']) – -
vector_string(str) – -
base_score(float) – -
access_vector(str | None) – -
access_complexity(str | None) – -
authentication(str | None) – -
confidentiality_impact(str | None) – -
integrity_impact(str | None) – -
availability_impact(str | None) – -
exploitability(str | None) – -
remediation_level(str | None) – -
report_confidence(str | None) – -
temporal_score(float | None) – -
collateral_damage_potential(str | None) – -
target_distribution(str | None) – -
confidentiality_requirement(str | None) – -
integrity_requirement(str | None) – -
availability_requirement(str | None) – -
environmental_score(float | None) –
access_vector
class-attribute
instance-attribute
¶
access_complexity
class-attribute
instance-attribute
¶
confidentiality_impact
class-attribute
instance-attribute
¶
integrity_impact
class-attribute
instance-attribute
¶
availability_impact
class-attribute
instance-attribute
¶
remediation_level
class-attribute
instance-attribute
¶
report_confidence
class-attribute
instance-attribute
¶
temporal_score
class-attribute
instance-attribute
¶
collateral_damage_potential
class-attribute
instance-attribute
¶
target_distribution
class-attribute
instance-attribute
¶
confidentiality_requirement
class-attribute
instance-attribute
¶
integrity_requirement
class-attribute
instance-attribute
¶
availability_requirement
class-attribute
instance-attribute
¶
CvssMetricV2
¶
Bases: NvdModel
One CVSS v2 score, including NVD's wrapper fields.
Attributes:
-
source(str) – -
type(str) – -
cvss_data(CvssV2Data) – -
base_severity(str | None) – -
exploitability_score(float | None) – -
impact_score(float | None) – -
ac_insuf_info(bool | None) – -
obtain_all_privilege(bool | None) – -
obtain_user_privilege(bool | None) – -
obtain_other_privilege(bool | None) – -
user_interaction_required(bool | None) –
base_severity
class-attribute
instance-attribute
¶
exploitability_score
class-attribute
instance-attribute
¶
impact_score
class-attribute
instance-attribute
¶
ac_insuf_info
class-attribute
instance-attribute
¶
obtain_all_privilege
class-attribute
instance-attribute
¶
obtain_user_privilege
class-attribute
instance-attribute
¶
obtain_other_privilege
class-attribute
instance-attribute
¶
CvssV30Data
¶
Bases: _CvssV3Data
CVSS v3.0 cvssData object.
Attributes:
-
version(Literal['3.0']) – -
vector_string(str) – -
base_score(float) – -
base_severity(str) – -
attack_vector(str | None) – -
attack_complexity(str | None) – -
privileges_required(str | None) – -
user_interaction(str | None) – -
scope(str | None) – -
confidentiality_impact(str | None) – -
integrity_impact(str | None) – -
availability_impact(str | None) – -
exploit_code_maturity(str | None) – -
remediation_level(str | None) – -
report_confidence(str | None) – -
temporal_score(float | None) – -
temporal_severity(str | None) – -
confidentiality_requirement(str | None) – -
integrity_requirement(str | None) – -
availability_requirement(str | None) – -
modified_attack_vector(str | None) – -
modified_attack_complexity(str | None) – -
modified_privileges_required(str | None) – -
modified_user_interaction(str | None) – -
modified_scope(str | None) – -
modified_confidentiality_impact(str | None) – -
modified_integrity_impact(str | None) – -
modified_availability_impact(str | None) – -
environmental_score(float | None) – -
environmental_severity(str | None) –
attack_vector
class-attribute
instance-attribute
¶
attack_complexity
class-attribute
instance-attribute
¶
privileges_required
class-attribute
instance-attribute
¶
user_interaction
class-attribute
instance-attribute
¶
confidentiality_impact
class-attribute
instance-attribute
¶
integrity_impact
class-attribute
instance-attribute
¶
availability_impact
class-attribute
instance-attribute
¶
exploit_code_maturity
class-attribute
instance-attribute
¶
remediation_level
class-attribute
instance-attribute
¶
report_confidence
class-attribute
instance-attribute
¶
temporal_score
class-attribute
instance-attribute
¶
temporal_severity
class-attribute
instance-attribute
¶
confidentiality_requirement
class-attribute
instance-attribute
¶
integrity_requirement
class-attribute
instance-attribute
¶
availability_requirement
class-attribute
instance-attribute
¶
modified_attack_vector
class-attribute
instance-attribute
¶
modified_attack_complexity
class-attribute
instance-attribute
¶
modified_privileges_required
class-attribute
instance-attribute
¶
modified_user_interaction
class-attribute
instance-attribute
¶
modified_scope
class-attribute
instance-attribute
¶
modified_confidentiality_impact
class-attribute
instance-attribute
¶
modified_confidentiality_impact: str | None = Field(default=None, alias='modifiedConfidentialityImpact')
modified_integrity_impact
class-attribute
instance-attribute
¶
modified_availability_impact
class-attribute
instance-attribute
¶
environmental_score
class-attribute
instance-attribute
¶
CvssV31Data
¶
Bases: _CvssV3Data
CVSS v3.1 cvssData object.
Attributes:
-
version(Literal['3.1']) – -
vector_string(str) – -
base_score(float) – -
base_severity(str) – -
attack_vector(str | None) – -
attack_complexity(str | None) – -
privileges_required(str | None) – -
user_interaction(str | None) – -
scope(str | None) – -
confidentiality_impact(str | None) – -
integrity_impact(str | None) – -
availability_impact(str | None) – -
exploit_code_maturity(str | None) – -
remediation_level(str | None) – -
report_confidence(str | None) – -
temporal_score(float | None) – -
temporal_severity(str | None) – -
confidentiality_requirement(str | None) – -
integrity_requirement(str | None) – -
availability_requirement(str | None) – -
modified_attack_vector(str | None) – -
modified_attack_complexity(str | None) – -
modified_privileges_required(str | None) – -
modified_user_interaction(str | None) – -
modified_scope(str | None) – -
modified_confidentiality_impact(str | None) – -
modified_integrity_impact(str | None) – -
modified_availability_impact(str | None) – -
environmental_score(float | None) – -
environmental_severity(str | None) –
attack_vector
class-attribute
instance-attribute
¶
attack_complexity
class-attribute
instance-attribute
¶
privileges_required
class-attribute
instance-attribute
¶
user_interaction
class-attribute
instance-attribute
¶
confidentiality_impact
class-attribute
instance-attribute
¶
integrity_impact
class-attribute
instance-attribute
¶
availability_impact
class-attribute
instance-attribute
¶
exploit_code_maturity
class-attribute
instance-attribute
¶
remediation_level
class-attribute
instance-attribute
¶
report_confidence
class-attribute
instance-attribute
¶
temporal_score
class-attribute
instance-attribute
¶
temporal_severity
class-attribute
instance-attribute
¶
confidentiality_requirement
class-attribute
instance-attribute
¶
integrity_requirement
class-attribute
instance-attribute
¶
availability_requirement
class-attribute
instance-attribute
¶
modified_attack_vector
class-attribute
instance-attribute
¶
modified_attack_complexity
class-attribute
instance-attribute
¶
modified_privileges_required
class-attribute
instance-attribute
¶
modified_user_interaction
class-attribute
instance-attribute
¶
modified_scope
class-attribute
instance-attribute
¶
modified_confidentiality_impact
class-attribute
instance-attribute
¶
modified_confidentiality_impact: str | None = Field(default=None, alias='modifiedConfidentialityImpact')
modified_integrity_impact
class-attribute
instance-attribute
¶
modified_availability_impact
class-attribute
instance-attribute
¶
environmental_score
class-attribute
instance-attribute
¶
CvssMetricV30
¶
Bases: _CvssV3Metric
One CVSS v3.0 score.
Attributes:
-
cvss_data(CvssV30Data) – -
source(str) – -
type(str) – -
exploitability_score(float | None) – -
impact_score(float | None) –
exploitability_score
class-attribute
instance-attribute
¶
CvssMetricV31
¶
Bases: _CvssV3Metric
One CVSS v3.1 score.
Attributes:
-
cvss_data(CvssV31Data) – -
source(str) – -
type(str) – -
exploitability_score(float | None) – -
impact_score(float | None) –
exploitability_score
class-attribute
instance-attribute
¶
CvssV40Data
¶
Bases: NvdModel
CVSS v4.0 cvssData object.
Attributes:
-
version(Literal['4.0']) – -
vector_string(str) – -
base_score(float) – -
base_severity(str) – -
attack_vector(str | None) – -
attack_complexity(str | None) – -
attack_requirements(str | None) – -
privileges_required(str | None) – -
user_interaction(str | None) – -
vuln_confidentiality_impact(str | None) – -
vuln_integrity_impact(str | None) – -
vuln_availability_impact(str | None) – -
sub_confidentiality_impact(str | None) – -
sub_integrity_impact(str | None) – -
sub_availability_impact(str | None) – -
exploit_maturity(str | None) – -
confidentiality_requirement(str | None) – -
integrity_requirement(str | None) – -
availability_requirement(str | None) – -
modified_attack_vector(str | None) – -
modified_attack_complexity(str | None) – -
modified_attack_requirements(str | None) – -
modified_privileges_required(str | None) – -
modified_user_interaction(str | None) – -
modified_vuln_confidentiality_impact(str | None) – -
modified_vuln_integrity_impact(str | None) – -
modified_vuln_availability_impact(str | None) – -
modified_sub_confidentiality_impact(str | None) – -
modified_sub_integrity_impact(str | None) – -
modified_sub_availability_impact(str | None) – -
safety(str | None) – -
automatable(str | None) – -
recovery(str | None) – -
value_density(str | None) – -
vulnerability_response_effort(str | None) – -
provider_urgency(str | None) – -
threat_score(float | None) – -
threat_severity(str | None) – -
environmental_score(float | None) – -
environmental_severity(str | None) –
attack_vector
class-attribute
instance-attribute
¶
attack_complexity
class-attribute
instance-attribute
¶
attack_requirements
class-attribute
instance-attribute
¶
privileges_required
class-attribute
instance-attribute
¶
user_interaction
class-attribute
instance-attribute
¶
vuln_confidentiality_impact
class-attribute
instance-attribute
¶
vuln_integrity_impact
class-attribute
instance-attribute
¶
vuln_availability_impact
class-attribute
instance-attribute
¶
sub_confidentiality_impact
class-attribute
instance-attribute
¶
sub_integrity_impact
class-attribute
instance-attribute
¶
sub_availability_impact
class-attribute
instance-attribute
¶
exploit_maturity
class-attribute
instance-attribute
¶
confidentiality_requirement
class-attribute
instance-attribute
¶
integrity_requirement
class-attribute
instance-attribute
¶
availability_requirement
class-attribute
instance-attribute
¶
modified_attack_vector
class-attribute
instance-attribute
¶
modified_attack_complexity
class-attribute
instance-attribute
¶
modified_attack_requirements
class-attribute
instance-attribute
¶
modified_privileges_required
class-attribute
instance-attribute
¶
modified_user_interaction
class-attribute
instance-attribute
¶
modified_vuln_confidentiality_impact
class-attribute
instance-attribute
¶
modified_vuln_confidentiality_impact: str | None = Field(default=None, alias='modifiedVulnConfidentialityImpact')
modified_vuln_integrity_impact
class-attribute
instance-attribute
¶
modified_vuln_integrity_impact: str | None = Field(default=None, alias='modifiedVulnIntegrityImpact')
modified_vuln_availability_impact
class-attribute
instance-attribute
¶
modified_vuln_availability_impact: str | None = Field(default=None, alias='modifiedVulnAvailabilityImpact')
modified_sub_confidentiality_impact
class-attribute
instance-attribute
¶
modified_sub_confidentiality_impact: str | None = Field(default=None, alias='modifiedSubConfidentialityImpact')
modified_sub_integrity_impact
class-attribute
instance-attribute
¶
modified_sub_availability_impact
class-attribute
instance-attribute
¶
modified_sub_availability_impact: str | None = Field(default=None, alias='modifiedSubAvailabilityImpact')
safety
class-attribute
instance-attribute
¶
automatable
class-attribute
instance-attribute
¶
recovery
class-attribute
instance-attribute
¶
value_density
class-attribute
instance-attribute
¶
vulnerability_response_effort
class-attribute
instance-attribute
¶
vulnerability_response_effort: str | None = Field(default=None, alias='vulnerabilityResponseEffort')
provider_urgency
class-attribute
instance-attribute
¶
threat_score
class-attribute
instance-attribute
¶
threat_severity
class-attribute
instance-attribute
¶
environmental_score
class-attribute
instance-attribute
¶
CvssMetricV40
¶
SsvcData
¶
Bases: NvdModel
Stakeholder-Specific Vulnerability Categorization decision (v2.0.3).
Attributes:
-
options(list[dict[str, str | list[str]]]) – -
role(str) – -
version(str) – -
computed(str | None) – -
timestamp(datetime | None) – -
id(str | None) – -
decision_tree_url(str | None) – -
generator(str | None) –
decision_tree_url
class-attribute
instance-attribute
¶
SsvcMetric
¶
VersionChange
¶
AffectedVersion
¶
Bases: NvdModel
One version or version range of an affected product.
Attributes:
-
version(str) – -
status(str) – -
version_type(str | None) – -
less_than(str | None) – -
less_than_or_equal(str | None) – -
changes(list[VersionChange]) –
ProgramRoutine
¶
AffectedProduct
¶
Bases: NvdModel
Product data inside an affected entry.
Attributes:
-
vendor(str | None) – -
product(str | None) – -
collection_url(str | None) – -
package_name(str | None) – -
cpes(list[str]) – -
modules(list[str]) – -
program_files(list[str]) – -
program_routines(list[ProgramRoutine]) – -
platforms(list[str]) – -
repo(str | None) – -
default_status(str | None) – -
versions(list[AffectedVersion]) – -
package_url(str | None) –
collection_url
class-attribute
instance-attribute
¶
package_name
class-attribute
instance-attribute
¶
program_files
class-attribute
instance-attribute
¶
program_routines
class-attribute
instance-attribute
¶
program_routines: list[ProgramRoutine] = Field(default_factory=list, alias='programRoutines')
default_status
class-attribute
instance-attribute
¶
versions
class-attribute
instance-attribute
¶
versions: list[AffectedVersion] = Field(default_factory=list)
Affected
¶
Bases: NvdModel
A source's list of products affected by a CVE.
Attributes:
-
source(str) – -
affected_data(list[AffectedProduct]) –
Metrics
¶
Bases: NvdModel
CVSS and SSVC scores published for a CVE.
Missing metric groups are empty lists, not None.
Attributes:
-
cvss_metric_v40(list[CvssMetricV40]) – -
cvss_metric_v31(list[CvssMetricV31]) – -
cvss_metric_v30(list[CvssMetricV30]) – -
cvss_metric_v2(list[CvssMetricV2]) – -
ssvc_v203(list[SsvcMetric]) –
cvss_metric_v40
class-attribute
instance-attribute
¶
cvss_metric_v40: list[CvssMetricV40] = Field(default_factory=list, alias='cvssMetricV40')
cvss_metric_v31
class-attribute
instance-attribute
¶
cvss_metric_v31: list[CvssMetricV31] = Field(default_factory=list, alias='cvssMetricV31')
cvss_metric_v30
class-attribute
instance-attribute
¶
cvss_metric_v30: list[CvssMetricV30] = Field(default_factory=list, alias='cvssMetricV30')
cvss_metric_v2
class-attribute
instance-attribute
¶
cvss_metric_v2: list[CvssMetricV2] = Field(default_factory=list, alias='cvssMetricV2')
ssvc_v203
class-attribute
instance-attribute
¶
ssvc_v203: list[SsvcMetric] = Field(default_factory=list, alias='ssvcV203')
CveRecord
¶
Bases: NvdModel
One CVE record from the cve object of an NVD 2.0 vulnerability.
Required by the schema: id, published, lastModified,
descriptions, and references. Every other attribute defaults to
empty or None when NVD omits it.
Methods:
-
description–Return the description for
lang, orNonewhen it is absent.
Attributes:
-
id(str) – -
published(datetime) – -
last_modified(datetime) – -
descriptions(list[LangString]) – -
references(list[Reference]) – -
source_identifier(str | None) – -
vuln_status(str | None) – -
evaluator_comment(str | None) – -
evaluator_solution(str | None) – -
evaluator_impact(str | None) – -
cisa_exploit_add(date | None) – -
cisa_action_due(date | None) – -
cisa_required_action(str | None) – -
cisa_vulnerability_name(str | None) – -
cve_tags(list[CveTag]) – -
metrics(Metrics) – -
weaknesses(list[Weakness]) – -
configurations(list[Configuration]) – -
vendor_comments(list[VendorComment]) – -
affected(list[Affected]) – -
cwe_ids(list[str]) –Weakness description values, typically CWE or
NVD-CWE-*ids.
last_modified
class-attribute
instance-attribute
¶
source_identifier
class-attribute
instance-attribute
¶
vuln_status
class-attribute
instance-attribute
¶
evaluator_comment
class-attribute
instance-attribute
¶
evaluator_solution
class-attribute
instance-attribute
¶
evaluator_impact
class-attribute
instance-attribute
¶
cisa_exploit_add
class-attribute
instance-attribute
¶
cisa_action_due
class-attribute
instance-attribute
¶
cisa_required_action
class-attribute
instance-attribute
¶
cisa_vulnerability_name
class-attribute
instance-attribute
¶
cve_tags
class-attribute
instance-attribute
¶
weaknesses
class-attribute
instance-attribute
¶
configurations
class-attribute
instance-attribute
¶
configurations: list[Configuration] = Field(default_factory=list)
vendor_comments
class-attribute
instance-attribute
¶
vendor_comments: list[VendorComment] = Field(default_factory=list, alias='vendorComments')
affected
class-attribute
instance-attribute
¶
CveItem
¶
CveListResponse
¶
Bases: NvdModel
A page of CVE results from /cves/2.0.
total_results is the size of the full match, not this page.
cves is the unwrapped records in this page. An empty page is a
successful response: total_results == 0 and cves == [].
Attributes:
-
results_per_page(int) – -
start_index(int) – -
total_results(int) – -
format(str) – -
version(str) – -
timestamp(datetime) – -
vulnerabilities(list[CveItem]) – -
cves(list[CveRecord]) –CVE records contained in this page, in NVD's order.
results_per_page
class-attribute
instance-attribute
¶
CpeNameMatch
¶
CpeMatchString
¶
Bases: NvdModel
One CPE match string from the CPE Match Criteria API.
Attributes:
-
criteria(str) – -
match_criteria_id(str) – -
created(datetime) – -
last_modified(datetime) – -
status(str) – -
version_start_excluding(str | None) – -
version_start_including(str | None) – -
version_end_excluding(str | None) – -
version_end_including(str | None) – -
cpe_last_modified(datetime | None) – -
matches(list[CpeNameMatch]) –
match_criteria_id
class-attribute
instance-attribute
¶
last_modified
class-attribute
instance-attribute
¶
version_start_excluding
class-attribute
instance-attribute
¶
version_start_including
class-attribute
instance-attribute
¶
version_end_excluding
class-attribute
instance-attribute
¶
version_end_including
class-attribute
instance-attribute
¶
cpe_last_modified
class-attribute
instance-attribute
¶
matches
class-attribute
instance-attribute
¶
matches: list[CpeNameMatch] = Field(default_factory=list)
CpeMatchStringItem
¶
Bases: NvdModel
The matchStrings[] element, which wraps one match string.
Attributes:
match_string
class-attribute
instance-attribute
¶
match_string: CpeMatchString = Field(alias='matchString')
CpeMatchResponse
¶
Bases: NvdModel
A page of results from /cpematch/2.0.
Attributes:
-
results_per_page(int) – -
start_index(int) – -
total_results(int) – -
format(str) – -
version(str) – -
timestamp(datetime) – -
match_strings(list[CpeMatchStringItem]) – -
matches(list[CpeMatchString]) –Match strings contained in this page.
results_per_page
class-attribute
instance-attribute
¶
match_strings
class-attribute
instance-attribute
¶
match_strings: list[CpeMatchStringItem] = Field(alias='matchStrings')