Skip to main content
Glama

EchelonGraph CVE & Exposure

Am I affected? (product or package at a version)

check_affected
Read-onlyIdempotent

Whether a product or package at a given version is affected by known CVEs, from the same matcher as echelongraph.io/am-i-affected. The CPE path takes product (an NVD CPE product token, such as nginx) and version, and returns the CVEs whose NVD CPE match criteria include it at that version; each match names the vendor NVD asserts (cpe_vendor), verified or not (vendor_unknown). The registry path takes ecosystem (npm, PyPI, Maven and other OSV ecosystem names), package and version, and decides each OSV advisory EchelonGraph holds for that package, and each CVE only its CNA names by purl, as affected, not affected or undetermined. count depends on assessed: assessed false means the lookup did not evaluate this component, not_assessed_reason says why, and a count of 0 there is not a finding of not affected. A CVE undecidable at this version is reported as undetermined (undetermined_count, and up to 50 of them in undetermined), never as safe. Each match carries cve_id, kev_listed, ransomware, epss_score, effective_score, effective_severity and score_assessed (false: not yet scored; echelongraph_score withheld). A registry match also carries interval, the affected interval holding it, and fixed_in, the lowest unaffected version above it, or null with fixed_in_reason; a CPE match carries no fixed_in. All four inputs travel in request headers, never in the URL. Past 30,000 characters of JSON, the first text block holds data cut to fit, and the note says what the cut leaves out and where to read it (TEXT CUT); so is structured data (DATA CUT), unless full: true. Cut, the excluded and undetermined samples keep their first 10 entries, each its cve_id and reason, cve_ids keeps its first 10, and each match keeps cve_id, kev_listed, ransomware, epss_score, effective_score, score_assessed and fixed_in at least. Every CPE match stays in the text; near the cap, a registry list's last matches can leave it, and the note says how many.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "version": "<version>"
    },
    "name": "check_affected"
  }
}

Input Schema

NameRequiredDescriptionDefault
fullNotrue: data in the structured result is the answer whole, however long. Without it, a structured result past 30,000 characters of JSON has its data cut (DATA CUT): in an order the note states, the entries of its longest lists keep only some of their fields, and then the lists only some of their entries; data_truncated is true, and truncated gives each list cut with its total, the number returned and whether its entries are thinned. Whole data is for a program; a client that sizes structured results, as Claude Code does against MAX_MCP_OUTPUT_TOKENS, can refuse an answer past its cap.
packageNoRegistry path: the package name in that ecosystem, such as lodash.
productNoCPE path: the NVD CPE product token, such as openssl, nginx or linux_kernel. Leave out for the registry path.
versionYesThe version to check, such as 3.0.0.
ecosystemNoRegistry path: the package's ecosystem, such as npm, PyPI or Maven. Give with package, not with product.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "cpe",
      -                      "registry"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Which lookup path this call asked for."
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What the answer covers; null where the answer says nothing about it."
      -      },
      -      "data": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "advisories_considered": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "assessed": {
      -            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "candidates_capped": {
      -            "description": "true: not every candidate CVE was loaded.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "capped": {
      -            "description": "true: the match list stopped at its cap.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "cve_ids": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "degraded": {
      -            "description": "true: the lookup ran out of time.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "ecosystem": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "ecosystem_recognised": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "excluded": {},
      -          "excluded_count": {
      -            "description": "CPE candidates suppressed by the vendor or platform gate.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "match_layer": {
      -            "description": "Which lookup path answered.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matches": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cpe_vendor": {
      -                      "description": "The vendor NVD's CPE asserts for this match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cpe_version_end_excluding": {
      -                      "description": "CPE match: NVD's versionEndExcluding for the range that matched, the first version that range no longer holds. Not a fix, and never fixed_in: another range of the same CVE, or a vendor backport, can sit past it. Absent on a registry match, and where the range sets no such end.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cpe_version_end_including": {
      -                      "description": "CPE match: NVD's versionEndIncluding for the range that matched, the last version that range holds. Not a fix, and never fixed_in. Absent on a registry match, and where the range sets no such end.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v2_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v3_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v4_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "description": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_score": {
      -                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_score": {
      -                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_severity": {
      -                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "epss_score": {
      -                      "description": "EPSS exploitation probability, 0 to 1.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in": {
      -                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match. Where fixed_in_dispute is set, the CVE record's CNA and the advisory disagree on the range that holds this version, and fixed_in follows the source its higher names (its note says how).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_detail": {
      -                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_dispute": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "advisory_fixed": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "advisory_id": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "advisory_introduced": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "advisory_last_affected": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "advisory_listed": {
      -                              "type": [
      -                                "boolean",
      -                                "null"
      -                              ]
      -                            },
      -                            "cna": {
      -                              "anyOf": [
      -                                {
      -                                  "additionalProperties": {},
      -                                  "properties": {
      -                                    "name": {
      -                                      "type": [
      -                                        "string",
      -                                        "null"
      -                                      ]
      -                                    },
      -                                    "short_name": {
      -                                      "type": [
      -                                        "string",
      -                                        "null"
      -                                      ]
      -                                    }
      -                                  },
      -                                  "type": "object"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "cna_product": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "cna_range": {
      -                              "anyOf": [
      -                                {
      -                                  "additionalProperties": {},
      -                                  "properties": {
      -                                    "changes": {
      -                                      "anyOf": [
      -                                        {
      -                                          "items": {
      -                                            "additionalProperties": {},
      -                                            "properties": {
      -                                              "at": {
      -                                                "type": [
      -                                                  "string",
      -                                                  "null"
      -                                                ]
      -                                              },
      -                                              "status": {
      -                                                "type": [
      -                                                  "string",
      -                                                  "null"
      -                                                ]
      -                                              }
      -                                            },
      -                                            "type": "object"
      -                                          },
      -                                          "type": "array"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "changes_truncated": {
      -                                      "type": [
      -                                        "boolean",
      -                                        "null"
      -                                      ]
      -                                    },
      -                                    "less_than": {
      -                                      "type": [
      -                                        "string",
      -                                        "null"
      -                                      ]
      -                                    },
      -                                    "less_than_or_equal": {
      -                                      "type": [
      -                                        "string",
      -                                        "null"
      -                                      ]
      -                                    },
      -                                    "status": {
      -                                      "type": [
      -                                        "string",
      -                                        "null"
      -                                      ]
      -                                    },
      -                                    "version": {
      -                                      "type": [
      -                                        "string",
      -                                        "null"
      -                                      ]
      -                                    },
      -                                    "version_type": {
      -                                      "type": [
      -                                        "string",
      -                                        "null"
      -                                      ]
      -                                    }
      -                                  },
      -                                  "type": "object"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "cna_range_default": {
      -                              "type": [
      -                                "boolean",
      -                                "null"
      -                              ]
      -                            },
      -                            "higher": {
      -                              "anyOf": [
      -                                {
      -                                  "anyOf": [
      -                                    {
      -                                      "enum": [
      -                                        "cna",
      -                                        "advisory"
      -                                      ],
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "string"
      -                                    }
      -                                  ]
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "kind": {
      -                              "anyOf": [
      -                                {
      -                                  "anyOf": [
      -                                    {
      -                                      "enum": [
      -                                        "fixed",
      -                                        "introduced"
      -                                      ],
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "string"
      -                                    }
      -                                  ]
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "note": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Once EchelonGraph's API serves it, set where the API found the CVE record's CNA and the advisory disagreeing on the range that holds this version. kind: fixed (they disagree on where the package is fixed) or introduced (the CNA's range starts below where the advisory's does). The advisory's bound in dispute, exactly one of advisory_fixed, advisory_last_affected and advisory_introduced, as the advisory's own statement gives it (advisory_listed: it lists affected versions rather than a range, and the bound is a version it lists), and advisory_id, the advisory. cna (name, short_name), cna_product (what the CNA's entry names, as the API reads it) and cna_range (version, less_than or less_than_or_equal, status, version_type; changes, each {at, status}, where the range's status changes inside it, with changes_truncated where the record held more): the CNA's range in dispute, as the API reads the record (where higher is cna, the CNA's range that reaches past the advisory's bound: on a cna_affected_range match it holds the version, and on an advisory_interval or exact_version_list match it holds the advisory's bound past the version (its fix, or the versions just above its last affected or listed version), so it may start above the version; where higher is advisory, the CNA's range that ends below it, the CNA saying the version is fixed), from an entry the record writes, or, with cna_range_default true, a span no entry writes that the record's defaultStatus covers. higher: the source the answer follows, the more conservative one (cna or advisory). note: the API's sentence on the dispute and what the answer does with it, relayed verbatim. Fields and values a later API adds are relayed. Its absence is not a finding that the CNA agrees: an API that does not serve it yet, or older than the field, sends none; one that serves it reads a CNA's ranges only where it applies them and only from an entry it matches to the package; and a match the CNA's range alone raises may carry none."
      -                    },
      -                    "fixed_in_reason": {
      -                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "interval": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "fixed": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "introduced": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "last_affected": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Registry match: the affected interval that holds this version (fixed is exclusive, last_affected inclusive): the advisory's, or, where version_evidence is cna_affected_range, the CVE record's CNA range. Absent when no interval holds it."
      -                    },
      -                    "kev_listed": {
      -                      "description": "Listed in CISA-KEV: known to be exploited.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_confidence": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_method": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "matched_criteria": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ransomware": {
      -                      "description": "CISA-KEV records known use in ransomware campaigns.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_assessed": {
      -                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_unassessed_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "severity": {
      -                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_unknown": {
      -                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "version_evidence": {
      -                      "anyOf": [
      -                        {
      -                          "anyOf": [
      -                            {
      -                              "enum": [
      -                                "exact_version_list",
      -                                "advisory_interval",
      -                                "fix_boundary_only",
      -                                "no_version_supplied",
      -                                "cna_affected_range"
      -                              ],
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "string"
      -                            }
      -                          ]
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Registry match: how the version was decided: exact_version_list (named in the advisory's list of affected versions), advisory_interval (inside one of its intervals), fix_boundary_only (below its only stored fix, its lower bound assumed), no_version_supplied (no version given, so no claim about it), or, once EchelonGraph's API serves it, cna_affected_range (held by the CVE record's CNA range, where no advisory statement holds it: interval is the CNA's range, and fixed_in_dispute, where the API publishes one, says how the two differ; such a match may carry none). Relayed as the API sends it; a later value is relayed too."
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "not_affected_count": {
      -            "description": "CVEs decided as not affecting this version: on the registry path one per CVE, however many of its advisory records are stored (advisories_considered counts those).",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "not_assessed_reason": {
      -            "anyOf": [
      -              {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "product_not_in_cpe_corpus",
      -                      "package_not_cpe_nameable",
      -                      "candidate_load_pending",
      -                      "candidate_window_truncated",
      -                      "package_not_in_advisory_corpus",
      -                      "no_decidable_advisory",
      -                      "advisory_lookup_failed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Why assessed is false; empty or absent when it is true."
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "package": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product_named_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecidable_excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecided_candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undetermined": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "detail": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ecosystem": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "package": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "undetermined_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "vendor": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "vendor_advisory_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "version": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "data_truncated": {
      -        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      -        "type": "boolean"
      -      },
      -      "freshness": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The producing radar's last completed check (last_run_at), where the API serves one."
      -      },
      -      "measured_at": {
      -        "anyOf": [
      -          {
      -            "description": "An RFC 3339 instant.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      -      },
      -      "method": {
      -        "description": "How the numbers were produced.",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      -        "enum": [
      -          "measured",
      -          "not_assessed"
      -        ],
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "additionalProperties": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "returned": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "thinned": {
      -              "const": true,
      -              "type": "boolean"
      -            },
      -            "total": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "total",
      -            "returned"
      -          ],
      -          "type": "object"
      -        },
      -        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "data_truncated",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "kind": {
      -            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      -            "enum": [
      -              "network",
      -              "timeout",
      -              "http",
      -              "not_json",
      -              "not_object",
      -              "invalid_input",
      -              "internal",
      -              "unexpected_shape",
      -              "radars"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "description": "The cause: the API's own message, or what went wrong.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "The API path requested, when a request was made.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The HTTP status, when the API answered one; 503 with kind internal and path null where this server was too busy to make the call."
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "path",
      -          "status",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "type": "null"
      -      },
      -      "method": {
      -        "type": "null"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      -        "enum": [
      -          "failed",
      -          "invalid_input"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "cpe",
      +                      "registry"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Which lookup path this call asked for."
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What the answer covers; null where the answer says nothing about it."
      +      },
      +      "data": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "advisories_considered": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "assessed": {
      +            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "candidates_capped": {
      +            "description": "true: not every candidate CVE was loaded.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capped": {
      +            "description": "true: the match list stopped at its cap.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "cve_ids": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "degraded": {
      +            "description": "true: the lookup ran out of time.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "ecosystem": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ecosystem_recognised": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "excluded": {},
      +          "excluded_count": {
      +            "description": "CPE candidates suppressed by the vendor or platform gate.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "match_layer": {
      +            "description": "Which lookup path answered.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matches": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cpe_vendor": {
      +                      "description": "The vendor NVD's CPE asserts for this match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cpe_version_end_excluding": {
      +                      "description": "CPE match: NVD's versionEndExcluding for the range that matched, the first version that range no longer holds. Not a fix, and never fixed_in: another range of the same CVE, or a vendor backport, can sit past it. Absent on a registry match, and where the range sets no such end.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cpe_version_end_including": {
      +                      "description": "CPE match: NVD's versionEndIncluding for the range that matched, the last version that range holds. Not a fix, and never fixed_in. Absent on a registry match, and where the range sets no such end.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v2_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v3_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v4_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "description": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_score": {
      +                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_score": {
      +                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_severity": {
      +                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "epss_score": {
      +                      "description": "EPSS exploitation probability, 0 to 1.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in": {
      +                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match. Where fixed_in_dispute is set, the CVE record's CNA and the advisory disagree on the range that holds this version, and fixed_in follows the source its higher names (its note says how).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_detail": {
      +                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_dispute": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "advisory_fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_id": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_listed": {
      +                              "type": [
      +                                "boolean",
      +                                "null"
      +                              ]
      +                            },
      +                            "cna": {
      +                              "anyOf": [
      +                                {
      +                                  "additionalProperties": {},
      +                                  "properties": {
      +                                    "name": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "short_name": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    }
      +                                  },
      +                                  "type": "object"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "cna_product": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "cna_range": {
      +                              "anyOf": [
      +                                {
      +                                  "additionalProperties": {},
      +                                  "properties": {
      +                                    "changes": {
      +                                      "anyOf": [
      +                                        {
      +                                          "items": {
      +                                            "additionalProperties": {},
      +                                            "properties": {
      +                                              "at": {
      +                                                "type": [
      +                                                  "string",
      +                                                  "null"
      +                                                ]
      +                                              },
      +                                              "status": {
      +                                                "type": [
      +                                                  "string",
      +                                                  "null"
      +                                                ]
      +                                              }
      +                                            },
      +                                            "type": "object"
      +                                          },
      +                                          "type": "array"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "changes_truncated": {
      +                                      "type": [
      +                                        "boolean",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "less_than": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "less_than_or_equal": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "status": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "version": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "version_type": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    }
      +                                  },
      +                                  "type": "object"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "cna_range_default": {
      +                              "type": [
      +                                "boolean",
      +                                "null"
      +                              ]
      +                            },
      +                            "higher": {
      +                              "anyOf": [
      +                                {
      +                                  "anyOf": [
      +                                    {
      +                                      "enum": [
      +                                        "cna",
      +                                        "advisory"
      +                                      ],
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "string"
      +                                    }
      +                                  ]
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "kind": {
      +                              "anyOf": [
      +                                {
      +                                  "anyOf": [
      +                                    {
      +                                      "enum": [
      +                                        "fixed",
      +                                        "introduced"
      +                                      ],
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "string"
      +                                    }
      +                                  ]
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "note": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Once EchelonGraph's API serves it, set where the API found the CVE record's CNA and the advisory disagreeing on the range that holds this version. kind: fixed (they disagree on where the package is fixed) or introduced (the CNA's range starts below where the advisory's does). The advisory's bound in dispute, exactly one of advisory_fixed, advisory_last_affected and advisory_introduced, as the advisory's own statement gives it (advisory_listed: it lists affected versions rather than a range, and the bound is a version it lists), and advisory_id, the advisory. cna (name, short_name), cna_product (what the CNA's entry names, as the API reads it) and cna_range (version, less_than or less_than_or_equal, status, version_type; changes, each {at, status}, where the range's status changes inside it, with changes_truncated where the record held more): the CNA's range in dispute, as the API reads the record (where higher is cna, the CNA's range that reaches past the advisory's bound: on a cna_affected_range match it holds the version, and on an advisory_interval or exact_version_list match it holds the advisory's bound past the version (its fix, or the versions just above its last affected or listed version), so it may start above the version; where higher is advisory, the CNA's range that ends below it, the CNA saying the version is fixed), from an entry the record writes, or, with cna_range_default true, a span no entry writes that the record's defaultStatus covers. higher: the source the answer follows, the more conservative one (cna or advisory). note: the API's sentence on the dispute and what the answer does with it, relayed verbatim. Fields and values a later API adds are relayed. Its absence is not a finding that the CNA agrees: an API that does not serve it yet, or older than the field, sends none; one that serves it reads a CNA's ranges only where it applies them and only from an entry it matches to the package; and a match the CNA's range alone raises may carry none."
      +                    },
      +                    "fixed_in_reason": {
      +                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "interval": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: the affected interval that holds this version (fixed is exclusive, last_affected inclusive): the advisory's, or, where version_evidence is cna_affected_range, the CVE record's CNA range. Absent when no interval holds it."
      +                    },
      +                    "kev_listed": {
      +                      "description": "Listed in CISA-KEV: known to be exploited.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_confidence": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_method": {
      +                      "description": "How the match was made, as the API sends it. Registry path: registry package (an advisory record EchelonGraph holds names the package for the CVE), or cna package url (none does, and the CVE record's CNA names the package by package URL: its statement is the only source, matched_criteria is that purl as the CNA wrote it, version_evidence is cna_affected_range and match_confidence 0.8). CPE path: the CPE matcher's method. A later value is relayed too.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "matched_criteria": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ransomware": {
      +                      "description": "CISA-KEV records known use in ransomware campaigns.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_assessed": {
      +                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_unassessed_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "severity": {
      +                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_unknown": {
      +                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "version_evidence": {
      +                      "anyOf": [
      +                        {
      +                          "anyOf": [
      +                            {
      +                              "enum": [
      +                                "exact_version_list",
      +                                "advisory_interval",
      +                                "fix_boundary_only",
      +                                "no_version_supplied",
      +                                "cna_affected_range"
      +                              ],
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "string"
      +                            }
      +                          ]
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: how the version was decided: exact_version_list (named in the advisory's list of affected versions), advisory_interval (inside one of its intervals), fix_boundary_only (below its only stored fix, its lower bound assumed), no_version_supplied (no version given, so no claim about it), or, once EchelonGraph's API serves it, cna_affected_range (held by the CVE record's CNA range, where no advisory statement holds it: interval is the CNA's range, and fixed_in_dispute, where the API publishes one, says how the two differ; such a match may carry none; on a match whose match_method is cna package url, no advisory record names the package for the CVE at all, and the CNA's statement is the only source). Relayed as the API sends it; a later value is relayed too."
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "not_affected_count": {
      +            "description": "CVEs decided as not affecting this version: on the registry path one per CVE, however many of its advisory records are stored (advisories_considered counts those, and each CVE only its CNA names the package for once, decided or not); beside assessed false (package_not_in_advisory_corpus) the count is CNA records only, and is not a clean answer.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "not_assessed_reason": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "product_not_in_cpe_corpus",
      +                      "package_not_cpe_nameable",
      +                      "candidate_load_pending",
      +                      "candidate_window_truncated",
      +                      "package_not_in_advisory_corpus",
      +                      "no_decidable_advisory",
      +                      "advisory_lookup_failed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Why assessed is false; empty or absent when it is true."
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "package": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product_named_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecidable_excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecided_candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undetermined": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "detail": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ecosystem": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "package": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "description": "Why the CVE could not be decided at this version, as the API sends it: for an advisory record, such as no_version_data, version_not_comparable, git_range_only or collapsed_fix_boundary (on the CPE path, version_not_comparable: a CPE range the version has no order against); where the CVE record's CNA statements could not be read against it, a cna_range_ reason (such as cna_range_truncated, cna_range_unreadable, cna_range_unplaceable or cna_range_conflict). For a CVE no advisory record names the package for, decided on its CNA's statement alone, also cna_range_status_unknown (no statement of the CNA's calls the version affected or unaffected) and cna_range_undecidable_scheme (the CNA states the package's versions in a version scheme the matcher cannot order, such as custom or git). Not a finding of not affected. A later value is relayed too.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "undetermined_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "vendor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vendor_advisory_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "data_truncated": {
      +        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      +        "type": "boolean"
      +      },
      +      "freshness": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The producing radar's last completed check (last_run_at), where the API serves one."
      +      },
      +      "measured_at": {
      +        "anyOf": [
      +          {
      +            "description": "An RFC 3339 instant.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      +      },
      +      "method": {
      +        "description": "How the numbers were produced.",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      +        "enum": [
      +          "measured",
      +          "not_assessed"
      +        ],
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "additionalProperties": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "returned": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "thinned": {
      +              "const": true,
      +              "type": "boolean"
      +            },
      +            "total": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "total",
      +            "returned"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "data_truncated",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      +            "enum": [
      +              "network",
      +              "timeout",
      +              "http",
      +              "not_json",
      +              "not_object",
      +              "invalid_input",
      +              "internal",
      +              "unexpected_shape",
      +              "radars"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "The cause: the API's own message, or what went wrong.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "The API path requested, when a request was made.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The HTTP status, when the API answered one; 503 with kind internal and path null where this server was too busy to make the call."
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "path",
      +          "status",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "type": "null"
      +      },
      +      "method": {
      +        "type": "null"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      +        "enum": [
      +          "failed",
      +          "invalid_input"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "cpe",
      -                      "registry"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Which lookup path this call asked for."
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What the answer covers; null where the answer says nothing about it."
      -      },
      -      "data": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "advisories_considered": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "assessed": {
      -            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "candidates_capped": {
      -            "description": "true: not every candidate CVE was loaded.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "capped": {
      -            "description": "true: the match list stopped at its cap.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "cve_ids": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "degraded": {
      -            "description": "true: the lookup ran out of time.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "ecosystem": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "ecosystem_recognised": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "excluded": {},
      -          "excluded_count": {
      -            "description": "CPE candidates suppressed by the vendor or platform gate.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "match_layer": {
      -            "description": "Which lookup path answered.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matches": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cpe_vendor": {
      -                      "description": "The vendor NVD's CPE asserts for this match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cpe_version_end_excluding": {
      -                      "description": "CPE match: NVD's versionEndExcluding for the range that matched, the first version that range no longer holds. Not a fix, and never fixed_in: another range of the same CVE, or a vendor backport, can sit past it. Absent on a registry match, and where the range sets no such end.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cpe_version_end_including": {
      -                      "description": "CPE match: NVD's versionEndIncluding for the range that matched, the last version that range holds. Not a fix, and never fixed_in. Absent on a registry match, and where the range sets no such end.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v2_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v3_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v4_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "description": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_score": {
      -                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_score": {
      -                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_severity": {
      -                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "epss_score": {
      -                      "description": "EPSS exploitation probability, 0 to 1.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in": {
      -                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_detail": {
      -                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_reason": {
      -                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "interval": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "fixed": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "introduced": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "last_affected": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      -                    },
      -                    "kev_listed": {
      -                      "description": "Listed in CISA-KEV: known to be exploited.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_confidence": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_method": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "matched_criteria": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ransomware": {
      -                      "description": "CISA-KEV records known use in ransomware campaigns.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_assessed": {
      -                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_unassessed_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "severity": {
      -                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_unknown": {
      -                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "version_evidence": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "not_affected_count": {
      -            "description": "CVEs decided as not affecting this version: on the registry path one per CVE, however many of its advisory records are stored (advisories_considered counts those).",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "not_assessed_reason": {
      -            "anyOf": [
      -              {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "product_not_in_cpe_corpus",
      -                      "package_not_cpe_nameable",
      -                      "candidate_load_pending",
      -                      "candidate_window_truncated",
      -                      "package_not_in_advisory_corpus",
      -                      "no_decidable_advisory",
      -                      "advisory_lookup_failed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Why assessed is false; empty or absent when it is true."
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "package": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product_named_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecidable_excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecided_candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undetermined": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "detail": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ecosystem": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "package": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "undetermined_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "vendor": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "vendor_advisory_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "version": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "data_truncated": {
      -        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      -        "type": "boolean"
      -      },
      -      "freshness": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The producing radar's last completed check (last_run_at), where the API serves one."
      -      },
      -      "measured_at": {
      -        "anyOf": [
      -          {
      -            "description": "An RFC 3339 instant.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      -      },
      -      "method": {
      -        "description": "How the numbers were produced.",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      -        "enum": [
      -          "measured",
      -          "not_assessed"
      -        ],
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "additionalProperties": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "returned": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "thinned": {
      -              "const": true,
      -              "type": "boolean"
      -            },
      -            "total": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "total",
      -            "returned"
      -          ],
      -          "type": "object"
      -        },
      -        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "data_truncated",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "kind": {
      -            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      -            "enum": [
      -              "network",
      -              "timeout",
      -              "http",
      -              "not_json",
      -              "not_object",
      -              "invalid_input",
      -              "internal",
      -              "unexpected_shape",
      -              "radars"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "description": "The cause: the API's own message, or what went wrong.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "The API path requested, when a request was made.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The HTTP status, when the API answered one."
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "path",
      -          "status",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "type": "null"
      -      },
      -      "method": {
      -        "type": "null"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      -        "enum": [
      -          "failed",
      -          "invalid_input"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "cpe",
      +                      "registry"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Which lookup path this call asked for."
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What the answer covers; null where the answer says nothing about it."
      +      },
      +      "data": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "advisories_considered": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "assessed": {
      +            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "candidates_capped": {
      +            "description": "true: not every candidate CVE was loaded.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capped": {
      +            "description": "true: the match list stopped at its cap.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "cve_ids": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "degraded": {
      +            "description": "true: the lookup ran out of time.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "ecosystem": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ecosystem_recognised": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "excluded": {},
      +          "excluded_count": {
      +            "description": "CPE candidates suppressed by the vendor or platform gate.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "match_layer": {
      +            "description": "Which lookup path answered.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matches": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cpe_vendor": {
      +                      "description": "The vendor NVD's CPE asserts for this match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cpe_version_end_excluding": {
      +                      "description": "CPE match: NVD's versionEndExcluding for the range that matched, the first version that range no longer holds. Not a fix, and never fixed_in: another range of the same CVE, or a vendor backport, can sit past it. Absent on a registry match, and where the range sets no such end.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cpe_version_end_including": {
      +                      "description": "CPE match: NVD's versionEndIncluding for the range that matched, the last version that range holds. Not a fix, and never fixed_in. Absent on a registry match, and where the range sets no such end.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v2_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v3_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v4_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "description": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_score": {
      +                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_score": {
      +                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_severity": {
      +                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "epss_score": {
      +                      "description": "EPSS exploitation probability, 0 to 1.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in": {
      +                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match. Where fixed_in_dispute is set, the CVE record's CNA and the advisory disagree on the range that holds this version, and fixed_in follows the source its higher names (its note says how).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_detail": {
      +                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_dispute": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "advisory_fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_id": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "advisory_listed": {
      +                              "type": [
      +                                "boolean",
      +                                "null"
      +                              ]
      +                            },
      +                            "cna": {
      +                              "anyOf": [
      +                                {
      +                                  "additionalProperties": {},
      +                                  "properties": {
      +                                    "name": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "short_name": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    }
      +                                  },
      +                                  "type": "object"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "cna_product": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "cna_range": {
      +                              "anyOf": [
      +                                {
      +                                  "additionalProperties": {},
      +                                  "properties": {
      +                                    "changes": {
      +                                      "anyOf": [
      +                                        {
      +                                          "items": {
      +                                            "additionalProperties": {},
      +                                            "properties": {
      +                                              "at": {
      +                                                "type": [
      +                                                  "string",
      +                                                  "null"
      +                                                ]
      +                                              },
      +                                              "status": {
      +                                                "type": [
      +                                                  "string",
      +                                                  "null"
      +                                                ]
      +                                              }
      +                                            },
      +                                            "type": "object"
      +                                          },
      +                                          "type": "array"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "changes_truncated": {
      +                                      "type": [
      +                                        "boolean",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "less_than": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "less_than_or_equal": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "status": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "version": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    },
      +                                    "version_type": {
      +                                      "type": [
      +                                        "string",
      +                                        "null"
      +                                      ]
      +                                    }
      +                                  },
      +                                  "type": "object"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "cna_range_default": {
      +                              "type": [
      +                                "boolean",
      +                                "null"
      +                              ]
      +                            },
      +                            "higher": {
      +                              "anyOf": [
      +                                {
      +                                  "anyOf": [
      +                                    {
      +                                      "enum": [
      +                                        "cna",
      +                                        "advisory"
      +                                      ],
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "string"
      +                                    }
      +                                  ]
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "kind": {
      +                              "anyOf": [
      +                                {
      +                                  "anyOf": [
      +                                    {
      +                                      "enum": [
      +                                        "fixed",
      +                                        "introduced"
      +                                      ],
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "string"
      +                                    }
      +                                  ]
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "note": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Once EchelonGraph's API serves it, set where the API found the CVE record's CNA and the advisory disagreeing on the range that holds this version. kind: fixed (they disagree on where the package is fixed) or introduced (the CNA's range starts below where the advisory's does). The advisory's bound in dispute, exactly one of advisory_fixed, advisory_last_affected and advisory_introduced, as the advisory's own statement gives it (advisory_listed: it lists affected versions rather than a range, and the bound is a version it lists), and advisory_id, the advisory. cna (name, short_name), cna_product (what the CNA's entry names, as the API reads it) and cna_range (version, less_than or less_than_or_equal, status, version_type; changes, each {at, status}, where the range's status changes inside it, with changes_truncated where the record held more): the CNA's range in dispute, as the API reads the record (where higher is cna, the CNA's range that reaches past the advisory's bound: on a cna_affected_range match it holds the version, and on an advisory_interval or exact_version_list match it holds the advisory's bound past the version (its fix, or the versions just above its last affected or listed version), so it may start above the version; where higher is advisory, the CNA's range that ends below it, the CNA saying the version is fixed), from an entry the record writes, or, with cna_range_default true, a span no entry writes that the record's defaultStatus covers. higher: the source the answer follows, the more conservative one (cna or advisory). note: the API's sentence on the dispute and what the answer does with it, relayed verbatim. Fields and values a later API adds are relayed. Its absence is not a finding that the CNA agrees: an API that does not serve it yet, or older than the field, sends none; one that serves it reads a CNA's ranges only where it applies them and only from an entry it matches to the package; and a match the CNA's range alone raises may carry none."
      +                    },
      +                    "fixed_in_reason": {
      +                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "interval": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: the affected interval that holds this version (fixed is exclusive, last_affected inclusive): the advisory's, or, where version_evidence is cna_affected_range, the CVE record's CNA range. Absent when no interval holds it."
      +                    },
      +                    "kev_listed": {
      +                      "description": "Listed in CISA-KEV: known to be exploited.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_confidence": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_method": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "matched_criteria": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ransomware": {
      +                      "description": "CISA-KEV records known use in ransomware campaigns.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_assessed": {
      +                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_unassessed_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "severity": {
      +                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_unknown": {
      +                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "version_evidence": {
      +                      "anyOf": [
      +                        {
      +                          "anyOf": [
      +                            {
      +                              "enum": [
      +                                "exact_version_list",
      +                                "advisory_interval",
      +                                "fix_boundary_only",
      +                                "no_version_supplied",
      +                                "cna_affected_range"
      +                              ],
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "string"
      +                            }
      +                          ]
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: how the version was decided: exact_version_list (named in the advisory's list of affected versions), advisory_interval (inside one of its intervals), fix_boundary_only (below its only stored fix, its lower bound assumed), no_version_supplied (no version given, so no claim about it), or, once EchelonGraph's API serves it, cna_affected_range (held by the CVE record's CNA range, where no advisory statement holds it: interval is the CNA's range, and fixed_in_dispute, where the API publishes one, says how the two differ; such a match may carry none). Relayed as the API sends it; a later value is relayed too."
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "not_affected_count": {
      +            "description": "CVEs decided as not affecting this version: on the registry path one per CVE, however many of its advisory records are stored (advisories_considered counts those).",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "not_assessed_reason": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "product_not_in_cpe_corpus",
      +                      "package_not_cpe_nameable",
      +                      "candidate_load_pending",
      +                      "candidate_window_truncated",
      +                      "package_not_in_advisory_corpus",
      +                      "no_decidable_advisory",
      +                      "advisory_lookup_failed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Why assessed is false; empty or absent when it is true."
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "package": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product_named_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecidable_excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecided_candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undetermined": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "detail": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ecosystem": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "package": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "undetermined_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "vendor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vendor_advisory_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "data_truncated": {
      +        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      +        "type": "boolean"
      +      },
      +      "freshness": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The producing radar's last completed check (last_run_at), where the API serves one."
      +      },
      +      "measured_at": {
      +        "anyOf": [
      +          {
      +            "description": "An RFC 3339 instant.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      +      },
      +      "method": {
      +        "description": "How the numbers were produced.",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      +        "enum": [
      +          "measured",
      +          "not_assessed"
      +        ],
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "additionalProperties": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "returned": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "thinned": {
      +              "const": true,
      +              "type": "boolean"
      +            },
      +            "total": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "total",
      +            "returned"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "data_truncated",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      +            "enum": [
      +              "network",
      +              "timeout",
      +              "http",
      +              "not_json",
      +              "not_object",
      +              "invalid_input",
      +              "internal",
      +              "unexpected_shape",
      +              "radars"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "The cause: the API's own message, or what went wrong.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "The API path requested, when a request was made.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The HTTP status, when the API answered one; 503 with kind internal and path null where this server was too busy to make the call."
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "path",
      +          "status",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "type": "null"
      +      },
      +      "method": {
      +        "type": "null"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      +        "enum": [
      +          "failed",
      +          "invalid_input"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What the answer covers; null where the answer says nothing about it."
      -      },
      -      "data": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "advisories_considered": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "assessed": {
      -            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "candidates_capped": {
      -            "description": "true: not every candidate CVE was loaded.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "capped": {
      -            "description": "true: the match list stopped at its cap.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "cve_ids": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "degraded": {
      -            "description": "true: the lookup ran out of time.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "ecosystem": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "ecosystem_recognised": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "excluded": {},
      -          "excluded_count": {
      -            "description": "CPE candidates suppressed by the vendor or platform gate.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "match_layer": {
      -            "description": "Which lookup path answered.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matches": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cpe_vendor": {
      -                      "description": "The vendor NVD's CPE asserts for this match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v2_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v3_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v4_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "description": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_score": {
      -                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_score": {
      -                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_severity": {
      -                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "epss_score": {
      -                      "description": "EPSS exploitation probability, 0 to 1.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in": {
      -                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_detail": {
      -                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_reason": {
      -                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "interval": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "fixed": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "introduced": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "last_affected": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      -                    },
      -                    "kev_listed": {
      -                      "description": "Listed in CISA-KEV: known to be exploited.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_confidence": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_method": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "matched_criteria": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ransomware": {
      -                      "description": "CISA-KEV records known use in ransomware campaigns.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_assessed": {
      -                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_unassessed_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "severity": {
      -                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_unknown": {
      -                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "version_evidence": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "not_affected_count": {
      -            "description": "Advisories decided as not affecting this version.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "not_assessed_reason": {
      -            "anyOf": [
      -              {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "product_not_in_cpe_corpus",
      -                      "package_not_cpe_nameable",
      -                      "candidate_load_pending",
      -                      "candidate_window_truncated",
      -                      "package_not_in_advisory_corpus",
      -                      "no_decidable_advisory",
      -                      "advisory_lookup_failed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Why assessed is false; empty or absent when it is true."
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "package": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product_named_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecidable_excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecided_candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undetermined": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "detail": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ecosystem": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "package": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "undetermined_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "vendor": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "vendor_advisory_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "version": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "data_truncated": {
      -        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      -        "type": "boolean"
      -      },
      -      "freshness": {
      -        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "anyOf": [
      -          {
      -            "description": "An RFC 3339 instant.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      -      },
      -      "method": {
      -        "description": "How the numbers were produced.",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      -        "enum": [
      -          "measured",
      -          "not_assessed"
      -        ],
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "additionalProperties": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "returned": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "thinned": {
      -              "const": true,
      -              "type": "boolean"
      -            },
      -            "total": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "total",
      -            "returned"
      -          ],
      -          "type": "object"
      -        },
      -        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "data_truncated",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "kind": {
      -            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      -            "enum": [
      -              "network",
      -              "timeout",
      -              "http",
      -              "not_json",
      -              "not_object",
      -              "invalid_input",
      -              "internal",
      -              "unexpected_shape",
      -              "radars"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "description": "The cause: the API's own message, or what went wrong.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "The API path requested, when a request was made.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The HTTP status, when the API answered one."
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "path",
      -          "status",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "type": "null"
      -      },
      -      "method": {
      -        "type": "null"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      -        "enum": [
      -          "failed",
      -          "invalid_input"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "cpe",
      +                      "registry"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Which lookup path this call asked for."
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What the answer covers; null where the answer says nothing about it."
      +      },
      +      "data": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "advisories_considered": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "assessed": {
      +            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "candidates_capped": {
      +            "description": "true: not every candidate CVE was loaded.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capped": {
      +            "description": "true: the match list stopped at its cap.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "cve_ids": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "degraded": {
      +            "description": "true: the lookup ran out of time.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "ecosystem": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ecosystem_recognised": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "excluded": {},
      +          "excluded_count": {
      +            "description": "CPE candidates suppressed by the vendor or platform gate.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "match_layer": {
      +            "description": "Which lookup path answered.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matches": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cpe_vendor": {
      +                      "description": "The vendor NVD's CPE asserts for this match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cpe_version_end_excluding": {
      +                      "description": "CPE match: NVD's versionEndExcluding for the range that matched, the first version that range no longer holds. Not a fix, and never fixed_in: another range of the same CVE, or a vendor backport, can sit past it. Absent on a registry match, and where the range sets no such end.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cpe_version_end_including": {
      +                      "description": "CPE match: NVD's versionEndIncluding for the range that matched, the last version that range holds. Not a fix, and never fixed_in. Absent on a registry match, and where the range sets no such end.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v2_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v3_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v4_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "description": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_score": {
      +                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_score": {
      +                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_severity": {
      +                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "epss_score": {
      +                      "description": "EPSS exploitation probability, 0 to 1.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in": {
      +                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_detail": {
      +                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_reason": {
      +                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "interval": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      +                    },
      +                    "kev_listed": {
      +                      "description": "Listed in CISA-KEV: known to be exploited.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_confidence": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_method": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "matched_criteria": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ransomware": {
      +                      "description": "CISA-KEV records known use in ransomware campaigns.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_assessed": {
      +                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_unassessed_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "severity": {
      +                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_unknown": {
      +                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "version_evidence": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "not_affected_count": {
      +            "description": "CVEs decided as not affecting this version: on the registry path one per CVE, however many of its advisory records are stored (advisories_considered counts those).",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "not_assessed_reason": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "product_not_in_cpe_corpus",
      +                      "package_not_cpe_nameable",
      +                      "candidate_load_pending",
      +                      "candidate_window_truncated",
      +                      "package_not_in_advisory_corpus",
      +                      "no_decidable_advisory",
      +                      "advisory_lookup_failed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Why assessed is false; empty or absent when it is true."
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "package": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product_named_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecidable_excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecided_candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undetermined": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "detail": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ecosystem": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "package": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "undetermined_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "vendor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vendor_advisory_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "data_truncated": {
      +        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      +        "type": "boolean"
      +      },
      +      "freshness": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The producing radar's last completed check (last_run_at), where the API serves one."
      +      },
      +      "measured_at": {
      +        "anyOf": [
      +          {
      +            "description": "An RFC 3339 instant.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      +      },
      +      "method": {
      +        "description": "How the numbers were produced.",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      +        "enum": [
      +          "measured",
      +          "not_assessed"
      +        ],
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "additionalProperties": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "returned": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "thinned": {
      +              "const": true,
      +              "type": "boolean"
      +            },
      +            "total": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "total",
      +            "returned"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "data_truncated",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      +            "enum": [
      +              "network",
      +              "timeout",
      +              "http",
      +              "not_json",
      +              "not_object",
      +              "invalid_input",
      +              "internal",
      +              "unexpected_shape",
      +              "radars"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "The cause: the API's own message, or what went wrong.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "The API path requested, when a request was made.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The HTTP status, when the API answered one."
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "path",
      +          "status",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "type": "null"
      +      },
      +      "method": {
      +        "type": "null"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      +        "enum": [
      +          "failed",
      +          "invalid_input"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What the answer covers; null where the answer says nothing about it."
      -      },
      -      "data": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "advisories_considered": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "assessed": {
      -            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "candidates_capped": {
      -            "description": "true: not every candidate CVE was loaded.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "capped": {
      -            "description": "true: the match list stopped at its cap.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "cve_ids": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "degraded": {
      -            "description": "true: the lookup ran out of time.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "ecosystem": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "ecosystem_recognised": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "excluded": {},
      -          "excluded_count": {
      -            "description": "CPE candidates suppressed by the vendor or platform gate.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "match_layer": {
      -            "description": "Which lookup path answered.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matches": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cpe_vendor": {
      -                      "description": "The vendor NVD's CPE asserts for this match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v2_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v3_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v4_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "description": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_score": {
      -                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_score": {
      -                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_severity": {
      -                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "epss_score": {
      -                      "description": "EPSS exploitation probability, 0 to 1.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in": {
      -                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_detail": {
      -                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_reason": {
      -                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "interval": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "fixed": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "introduced": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "last_affected": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      -                    },
      -                    "kev_listed": {
      -                      "description": "Listed in CISA-KEV: known to be exploited.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_confidence": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_method": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "matched_criteria": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ransomware": {
      -                      "description": "CISA-KEV records known use in ransomware campaigns.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_assessed": {
      -                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_unassessed_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "severity": {
      -                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_unknown": {
      -                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "version_evidence": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "not_affected_count": {
      -            "description": "Advisories decided as not affecting this version.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "not_assessed_reason": {
      -            "anyOf": [
      -              {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "product_not_in_cpe_corpus",
      -                      "package_not_cpe_nameable",
      -                      "candidate_load_pending",
      -                      "candidate_window_truncated",
      -                      "package_not_in_advisory_corpus",
      -                      "no_decidable_advisory",
      -                      "advisory_lookup_failed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Why assessed is false; empty or absent when it is true."
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "package": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product_named_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecidable_excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecided_candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undetermined": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "detail": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ecosystem": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "package": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "undetermined_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "vendor": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "vendor_advisory_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "version": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "data_truncated": {
      -        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      -        "type": "boolean"
      -      },
      -      "freshness": {
      -        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "anyOf": [
      -          {
      -            "description": "An RFC 3339 instant.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      -      },
      -      "method": {
      -        "description": "How the numbers were produced.",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      -        "enum": [
      -          "measured",
      -          "not_assessed"
      -        ],
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "additionalProperties": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "returned": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "thinned": {
      -              "const": true,
      -              "type": "boolean"
      -            },
      -            "total": {
      -              "maximum": 9007199254740991,
      -              "minimum": 0,
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "total",
      -            "returned"
      -          ],
      -          "type": "object"
      -        },
      -        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "data_truncated",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "kind": {
      -            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      -            "enum": [
      -              "network",
      -              "timeout",
      -              "http",
      -              "not_json",
      -              "not_object",
      -              "invalid_input",
      -              "internal",
      -              "unexpected_shape",
      -              "radars"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "description": "The cause: the API's own message, or what went wrong.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "The API path requested, when a request was made.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The HTTP status, when the API answered one."
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "path",
      -          "status",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "type": "null"
      -      },
      -      "method": {
      -        "type": "null"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      -        "enum": [
      -          "failed",
      -          "invalid_input"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What the answer covers; null where the answer says nothing about it."
      +      },
      +      "data": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "advisories_considered": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "assessed": {
      +            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "candidates_capped": {
      +            "description": "true: not every candidate CVE was loaded.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capped": {
      +            "description": "true: the match list stopped at its cap.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "cve_ids": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "degraded": {
      +            "description": "true: the lookup ran out of time.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "ecosystem": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ecosystem_recognised": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "excluded": {},
      +          "excluded_count": {
      +            "description": "CPE candidates suppressed by the vendor or platform gate.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "match_layer": {
      +            "description": "Which lookup path answered.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matches": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cpe_vendor": {
      +                      "description": "The vendor NVD's CPE asserts for this match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v2_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v3_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v4_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "description": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_score": {
      +                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_score": {
      +                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_severity": {
      +                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "epss_score": {
      +                      "description": "EPSS exploitation probability, 0 to 1.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in": {
      +                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_detail": {
      +                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_reason": {
      +                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "interval": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      +                    },
      +                    "kev_listed": {
      +                      "description": "Listed in CISA-KEV: known to be exploited.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_confidence": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_method": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "matched_criteria": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ransomware": {
      +                      "description": "CISA-KEV records known use in ransomware campaigns.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_assessed": {
      +                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_unassessed_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "severity": {
      +                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_unknown": {
      +                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "version_evidence": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "not_affected_count": {
      +            "description": "Advisories decided as not affecting this version.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "not_assessed_reason": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "product_not_in_cpe_corpus",
      +                      "package_not_cpe_nameable",
      +                      "candidate_load_pending",
      +                      "candidate_window_truncated",
      +                      "package_not_in_advisory_corpus",
      +                      "no_decidable_advisory",
      +                      "advisory_lookup_failed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Why assessed is false; empty or absent when it is true."
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "package": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product_named_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecidable_excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecided_candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undetermined": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "detail": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ecosystem": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "package": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "undetermined_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "vendor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vendor_advisory_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "data_truncated": {
      +        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      +        "type": "boolean"
      +      },
      +      "freshness": {
      +        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "anyOf": [
      +          {
      +            "description": "An RFC 3339 instant.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      +      },
      +      "method": {
      +        "description": "How the numbers were produced.",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      +        "enum": [
      +          "measured",
      +          "not_assessed"
      +        ],
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "additionalProperties": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "returned": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "thinned": {
      +              "const": true,
      +              "type": "boolean"
      +            },
      +            "total": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "total",
      +            "returned"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "data_truncated",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      +            "enum": [
      +              "network",
      +              "timeout",
      +              "http",
      +              "not_json",
      +              "not_object",
      +              "invalid_input",
      +              "internal",
      +              "unexpected_shape",
      +              "radars"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "The cause: the API's own message, or what went wrong.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "The API path requested, when a request was made.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The HTTP status, when the API answered one."
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "path",
      +          "status",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "type": "null"
      +      },
      +      "method": {
      +        "type": "null"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      +        "enum": [
      +          "failed",
      +          "invalid_input"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  5. Changed2 schema fields changed
    • addedInput schema / properties / full
      Added value: +{
      +  "description": "true: data in the structured result is the answer whole, however long. Without it, a structured result past 30,000 characters of JSON has its data cut (DATA CUT): in an order the note states, the entries of its longest lists keep only some of their fields, and then the lists only some of their entries; data_truncated is true, and truncated gives each list cut with its total, the number returned and whether its entries are thinned. Whole data is for a program; a client that sizes structured results, as Claude Code does against MAX_MCP_OUTPUT_TOKENS, can refuse an answer past its cap.",
      +  "type": "boolean"
      +}
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What the answer covers; null where the answer says nothing about it."
      -      },
      -      "data": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "advisories_considered": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "assessed": {
      -            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "candidates_capped": {
      -            "description": "true: not every candidate CVE was loaded.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "capped": {
      -            "description": "true: the match list stopped at its cap.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "cve_ids": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "degraded": {
      -            "description": "true: the lookup ran out of time.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "ecosystem": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "ecosystem_recognised": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "excluded": {},
      -          "excluded_count": {
      -            "description": "CPE candidates suppressed by the vendor or platform gate.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "match_layer": {
      -            "description": "Which lookup path answered.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matches": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cpe_vendor": {
      -                      "description": "The vendor NVD's CPE asserts for this match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v2_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v3_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v4_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "description": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_score": {
      -                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_score": {
      -                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_severity": {
      -                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "epss_score": {
      -                      "description": "EPSS exploitation probability, 0 to 1.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in": {
      -                      "description": "Registry match: the fixed bound of the advisory interval that holds this version, always above it. null when that interval records no fix (it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "fixed_in_reason": {
      -                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "interval": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": {},
      -                          "properties": {
      -                            "fixed": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "introduced": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            },
      -                            "last_affected": {
      -                              "type": [
      -                                "string",
      -                                "null"
      -                              ]
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      -                    },
      -                    "kev_listed": {
      -                      "description": "Listed in CISA-KEV: known to be exploited.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_confidence": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_method": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "matched_criteria": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ransomware": {
      -                      "description": "CISA-KEV records known use in ransomware campaigns.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_assessed": {
      -                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_unassessed_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "severity": {
      -                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_unknown": {
      -                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "version_evidence": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "not_affected_count": {
      -            "description": "Advisories decided as not affecting this version.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "not_assessed_reason": {
      -            "anyOf": [
      -              {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "product_not_in_cpe_corpus",
      -                      "package_not_cpe_nameable",
      -                      "candidate_load_pending",
      -                      "candidate_window_truncated",
      -                      "package_not_in_advisory_corpus",
      -                      "no_decidable_advisory",
      -                      "advisory_lookup_failed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Why assessed is false; empty or absent when it is true."
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "package": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product_named_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecidable_excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecided_candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undetermined": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "detail": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ecosystem": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "package": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "undetermined_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "vendor": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "vendor_advisory_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "version": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "anyOf": [
      -          {
      -            "description": "An RFC 3339 instant.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      -      },
      -      "method": {
      -        "description": "How the numbers were produced.",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      -        "enum": [
      -          "measured",
      -          "not_assessed"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "kind": {
      -            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      -            "enum": [
      -              "network",
      -              "timeout",
      -              "http",
      -              "not_json",
      -              "not_object",
      -              "invalid_input",
      -              "internal",
      -              "unexpected_shape",
      -              "radars"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "description": "The cause: the API's own message, or what went wrong.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "The API path requested, when a request was made.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The HTTP status, when the API answered one."
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "path",
      -          "status",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "type": "null"
      -      },
      -      "method": {
      -        "type": "null"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      -        "enum": [
      -          "failed",
      -          "invalid_input"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What the answer covers; null where the answer says nothing about it."
      +      },
      +      "data": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "advisories_considered": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "assessed": {
      +            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "candidates_capped": {
      +            "description": "true: not every candidate CVE was loaded.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capped": {
      +            "description": "true: the match list stopped at its cap.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "cve_ids": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "degraded": {
      +            "description": "true: the lookup ran out of time.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "ecosystem": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ecosystem_recognised": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "excluded": {},
      +          "excluded_count": {
      +            "description": "CPE candidates suppressed by the vendor or platform gate.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "match_layer": {
      +            "description": "Which lookup path answered.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matches": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cpe_vendor": {
      +                      "description": "The vendor NVD's CPE asserts for this match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v2_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v3_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v4_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "description": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_score": {
      +                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_score": {
      +                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_severity": {
      +                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "epss_score": {
      +                      "description": "EPSS exploitation probability, 0 to 1.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in": {
      +                      "description": "Registry match: the lowest version above this one that no affected interval of the CVE's record for the package holds, always above it: the fixed bound of the interval that holds this version, moved past any overlapping interval that still holds that bound (fixed_in_detail then names it). null when no such version is on record (an interval on the way records no fix: it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_detail": {
      +                      "description": "Set when fixed_in is not the fixed bound of the interval that holds this version: the overlapping intervals of the same record it moved past, which still hold that bound.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_reason": {
      +                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "interval": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      +                    },
      +                    "kev_listed": {
      +                      "description": "Listed in CISA-KEV: known to be exploited.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_confidence": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_method": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "matched_criteria": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ransomware": {
      +                      "description": "CISA-KEV records known use in ransomware campaigns.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_assessed": {
      +                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_unassessed_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "severity": {
      +                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_unknown": {
      +                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "version_evidence": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "not_affected_count": {
      +            "description": "Advisories decided as not affecting this version.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "not_assessed_reason": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "product_not_in_cpe_corpus",
      +                      "package_not_cpe_nameable",
      +                      "candidate_load_pending",
      +                      "candidate_window_truncated",
      +                      "package_not_in_advisory_corpus",
      +                      "no_decidable_advisory",
      +                      "advisory_lookup_failed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Why assessed is false; empty or absent when it is true."
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "package": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product_named_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecidable_excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecided_candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undetermined": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "detail": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ecosystem": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "package": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "undetermined_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "vendor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vendor_advisory_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "data_truncated": {
      +        "description": "false: data is the answer whole. true: the structured result would pass 30,000 characters of JSON with data whole, so data is cut (DATA CUT): the entries of some of its lists keep only some of their fields, or the lists only some of their entries, truncated gives each, and no string is shortened. The same call with full: true returns data whole.",
      +        "type": "boolean"
      +      },
      +      "freshness": {
      +        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "anyOf": [
      +          {
      +            "description": "An RFC 3339 instant.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      +      },
      +      "method": {
      +        "description": "How the numbers were produced.",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      +        "enum": [
      +          "measured",
      +          "not_assessed"
      +        ],
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "additionalProperties": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "returned": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "thinned": {
      +              "const": true,
      +              "type": "boolean"
      +            },
      +            "total": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "total",
      +            "returned"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Present when data_truncated is true: each list of data that was cut, by its path in data (a dot between the names of an object and a list inside it), with total, its entries in the answer, returned, the entries data holds, and thinned, true when each of them keeps only some of its fields.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "data_truncated",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      +            "enum": [
      +              "network",
      +              "timeout",
      +              "http",
      +              "not_json",
      +              "not_object",
      +              "invalid_input",
      +              "internal",
      +              "unexpected_shape",
      +              "radars"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "The cause: the API's own message, or what went wrong.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "The API path requested, when a request was made.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The HTTP status, when the API answered one."
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "path",
      +          "status",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "type": "null"
      +      },
      +      "method": {
      +        "type": "null"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      +        "enum": [
      +          "failed",
      +          "invalid_input"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  6. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What the answer covers; null where the answer says nothing about it."
      -      },
      -      "data": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "advisories_considered": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "assessed": {
      -            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "candidates_capped": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "capped": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "cve_ids": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "degraded": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "ecosystem": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "ecosystem_recognised": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "excluded": {},
      -          "excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "match_layer": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matches": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cpe_vendor": {
      -                      "description": "The vendor NVD's CPE asserts for this match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v2_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v3_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v4_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "description": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_score": {
      -                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_score": {
      -                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_severity": {
      -                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "epss_score": {
      -                      "description": "EPSS exploitation probability, 0 to 1.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "kev_listed": {
      -                      "description": "Listed in CISA-KEV: known to be exploited.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_confidence": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_method": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "matched_criteria": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ransomware": {
      -                      "description": "CISA-KEV records known use in ransomware campaigns.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_assessed": {
      -                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_unassessed_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "severity": {
      -                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_unknown": {
      -                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "version_evidence": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "not_affected_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "not_assessed_reason": {
      -            "anyOf": [
      -              {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "product_not_in_cpe_corpus",
      -                      "package_not_cpe_nameable",
      -                      "candidate_load_pending",
      -                      "candidate_window_truncated",
      -                      "package_not_in_advisory_corpus",
      -                      "no_decidable_advisory",
      -                      "advisory_lookup_failed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Why assessed is false; empty or absent when it is true."
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "package": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product_named_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecidable_excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecided_candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undetermined": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "detail": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ecosystem": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "package": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "undetermined_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "vendor": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "vendor_advisory_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "version": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "anyOf": [
      -          {
      -            "description": "An RFC 3339 instant.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      -      },
      -      "method": {
      -        "description": "How the numbers were produced.",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      -        "enum": [
      -          "measured",
      -          "not_assessed"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "kind": {
      -            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      -            "enum": [
      -              "network",
      -              "timeout",
      -              "http",
      -              "not_json",
      -              "not_object",
      -              "invalid_input",
      -              "internal",
      -              "unexpected_shape",
      -              "radars"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "description": "The cause: the API's own message, or what went wrong.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "The API path requested, when a request was made.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The HTTP status, when the API answered one."
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "path",
      -          "status",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "type": "null"
      -      },
      -      "method": {
      -        "type": "null"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      -        "enum": [
      -          "failed",
      -          "invalid_input"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What the answer covers; null where the answer says nothing about it."
      +      },
      +      "data": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "advisories_considered": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "assessed": {
      +            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "candidates_capped": {
      +            "description": "true: not every candidate CVE was loaded.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capped": {
      +            "description": "true: the match list stopped at its cap.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "cve_ids": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "degraded": {
      +            "description": "true: the lookup ran out of time.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "ecosystem": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ecosystem_recognised": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "excluded": {},
      +          "excluded_count": {
      +            "description": "CPE candidates suppressed by the vendor or platform gate.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "match_layer": {
      +            "description": "Which lookup path answered.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matches": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cpe_vendor": {
      +                      "description": "The vendor NVD's CPE asserts for this match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v2_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v3_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v4_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "description": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_score": {
      +                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_score": {
      +                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_severity": {
      +                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "epss_score": {
      +                      "description": "EPSS exploitation probability, 0 to 1.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in": {
      +                      "description": "Registry match: the fixed bound of the advisory interval that holds this version, always above it. null when that interval records no fix (it ends at last_affected, or has no end) or no interval holds the version, with fixed_in_reason saying which. Absent on a CPE match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "fixed_in_reason": {
      +                      "description": "Why fixed_in is null; absent when fixed_in is a version.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "interval": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": {},
      +                          "properties": {
      +                            "fixed": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "introduced": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "last_affected": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Registry match: the advisory interval that holds this version (fixed is exclusive, last_affected inclusive); absent when no interval holds it."
      +                    },
      +                    "kev_listed": {
      +                      "description": "Listed in CISA-KEV: known to be exploited.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_confidence": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_method": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "matched_criteria": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ransomware": {
      +                      "description": "CISA-KEV records known use in ransomware campaigns.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_assessed": {
      +                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_unassessed_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "severity": {
      +                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_unknown": {
      +                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "version_evidence": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "not_affected_count": {
      +            "description": "Advisories decided as not affecting this version.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "not_assessed_reason": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "product_not_in_cpe_corpus",
      +                      "package_not_cpe_nameable",
      +                      "candidate_load_pending",
      +                      "candidate_window_truncated",
      +                      "package_not_in_advisory_corpus",
      +                      "no_decidable_advisory",
      +                      "advisory_lookup_failed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Why assessed is false; empty or absent when it is true."
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "package": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product_named_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecidable_excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecided_candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undetermined": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "detail": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ecosystem": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "package": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "undetermined_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "vendor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vendor_advisory_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "anyOf": [
      +          {
      +            "description": "An RFC 3339 instant.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      +      },
      +      "method": {
      +        "description": "How the numbers were produced.",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      +        "enum": [
      +          "measured",
      +          "not_assessed"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      +            "enum": [
      +              "network",
      +              "timeout",
      +              "http",
      +              "not_json",
      +              "not_object",
      +              "invalid_input",
      +              "internal",
      +              "unexpected_shape",
      +              "radars"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "The cause: the API's own message, or what went wrong.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "The API path requested, when a request was made.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The HTTP status, when the API answered one."
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "path",
      +          "status",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "type": "null"
      +      },
      +      "method": {
      +        "type": "null"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      +        "enum": [
      +          "failed",
      +          "invalid_input"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  7. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "What the answer covers; null where the answer says nothing about it."
      -      },
      -      "data": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "advisories_considered": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "assessed": {
      -            "description": "Read first. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "candidates_capped": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "capped": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "cve_ids": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "degraded": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "ecosystem": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "ecosystem_recognised": {
      -            "type": [
      -              "boolean",
      -              "null"
      -            ]
      -          },
      -          "excluded": {},
      -          "excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "match_layer": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matches": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cpe_vendor": {
      -                      "description": "The vendor NVD's CPE asserts for this match.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v2_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v3_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "cvss_v4_score": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "description": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_score": {
      -                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "echelongraph_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_score": {
      -                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "effective_severity": {
      -                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "epss_score": {
      -                      "description": "EPSS exploitation probability, 0 to 1.",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "kev_listed": {
      -                      "description": "Listed in CISA-KEV: known to be exploited.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_confidence": {
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_method": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "match_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "matched_criteria": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ransomware": {
      -                      "description": "CISA-KEV records known use in ransomware campaigns.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_assessed": {
      -                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "score_unassessed_reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "severity": {
      -                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_severity": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "vendor_unknown": {
      -                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      -                      "type": [
      -                        "boolean",
      -                        "null"
      -                      ]
      -                    },
      -                    "version_evidence": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "not_affected_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "not_assessed_reason": {
      -            "anyOf": [
      -              {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "product_not_in_cpe_corpus",
      -                      "package_not_cpe_nameable",
      -                      "candidate_load_pending",
      -                      "candidate_window_truncated",
      -                      "package_not_in_advisory_corpus",
      -                      "no_decidable_advisory",
      -                      "advisory_lookup_failed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "string"
      -                  }
      -                ],
      -                "description": "Why assessed is false; empty or absent when it is true."
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "package": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "product_named_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecidable_excluded_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undecided_candidate_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "undetermined": {
      -            "anyOf": [
      -              {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "cve_id": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "detail": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "ecosystem": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "package": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reason": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "undetermined_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "vendor": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "vendor_advisory_count": {
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "version": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "anyOf": [
      -          {
      -            "description": "An RFC 3339 instant.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      -      },
      -      "method": {
      -        "description": "How the numbers were produced.",
      -        "type": "string"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      -        "enum": [
      -          "measured",
      -          "not_assessed"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "coverage": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "assessed": {
      -                "description": "The answer's assessed, first: null when the answer does not say.",
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "candidates_capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "capped": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "degraded": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "excluded_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "lookup": {
      -                "description": "Which lookup path this call asked for.",
      -                "enum": [
      -                  "cpe",
      -                  "registry"
      -                ],
      -                "type": "string"
      -              },
      -              "match_layer": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "not_affected_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              },
      -              "not_assessed_reason": {
      -                "anyOf": [
      -                  {
      -                    "anyOf": [
      -                      {
      -                        "enum": [
      -                          "product_not_in_cpe_corpus",
      -                          "package_not_cpe_nameable",
      -                          "candidate_load_pending",
      -                          "candidate_window_truncated",
      -                          "package_not_in_advisory_corpus",
      -                          "no_decidable_advisory",
      -                          "advisory_lookup_failed"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "string"
      -                      }
      -                    ],
      -                    "description": "Why assessed is false; empty or absent when it is true."
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "undetermined_count": {
      -                "type": [
      -                  "number",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "assessed",
      -              "not_assessed_reason",
      -              "lookup",
      -              "match_layer",
      -              "count",
      -              "capped",
      -              "candidates_capped",
      -              "excluded_count",
      -              "undetermined_count",
      -              "not_affected_count",
      -              "degraded"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "kind": {
      -            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      -            "enum": [
      -              "network",
      -              "timeout",
      -              "http",
      -              "not_json",
      -              "not_object",
      -              "invalid_input",
      -              "internal",
      -              "unexpected_shape",
      -              "radars"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "description": "The cause: the API's own message, or what went wrong.",
      -            "type": "string"
      -          },
      -          "path": {
      -            "description": "The API path requested, when a request was made.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The HTTP status, when the API answered one."
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "path",
      -          "status",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "freshness": {
      -        "type": "null"
      -      },
      -      "measured_at": {
      -        "type": "null"
      -      },
      -      "method": {
      -        "type": "null"
      -      },
      -      "notes": {
      -        "description": "Caveats, one sentence each.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "state": {
      -        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      -        "enum": [
      -          "failed",
      -          "invalid_input"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "state",
      -      "measured_at",
      -      "method",
      -      "coverage",
      -      "freshness",
      -      "notes",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "What the answer covers; null where the answer says nothing about it."
      +      },
      +      "data": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "advisories_considered": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "assessed": {
      +            "description": "count depends on it. true: the lookup evaluated this component. false: it did not, and count 0 says nothing about whether this version is affected.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "candidates_capped": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capped": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "cve_ids": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "degraded": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "ecosystem": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ecosystem_recognised": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "excluded": {},
      +          "excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "match_layer": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matches": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cpe_vendor": {
      +                      "description": "The vendor NVD's CPE asserts for this match.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v2_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v3_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "cvss_v4_score": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "description": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_score": {
      +                      "description": "EchelonGraph's 0-10 score: present only when score_assessed is true.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "echelongraph_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_score": {
      +                      "description": "The best real score held for the CVE (EchelonGraph's, else CVSS), the number the matches are ranked by.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "effective_severity": {
      +                      "description": "The band of effective_score; absent or empty when the CVE has no band at all (unrated, not harmless).",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "epss_score": {
      +                      "description": "EPSS exploitation probability, 0 to 1.",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "kev_listed": {
      +                      "description": "Listed in CISA-KEV: known to be exploited.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_confidence": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_method": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "match_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "matched_criteria": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ransomware": {
      +                      "description": "CISA-KEV records known use in ransomware campaigns.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_assessed": {
      +                      "description": "Whether EchelonGraph has scored the CVE. false: NOT YET SCORED, and echelongraph_score is withheld.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "score_unassessed_reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "severity": {
      +                      "description": "NVD's own CVSS v3 band, as provenance: it can be NONE for a CVE NVD rated only under CVSS v2. Rank and display on effective_severity.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_severity": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "vendor_unknown": {
      +                      "description": "true: the vendor was not verified, so the match is real but its attribution to your vendor is not.",
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    },
      +                    "version_evidence": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "not_affected_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "not_assessed_reason": {
      +            "anyOf": [
      +              {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "product_not_in_cpe_corpus",
      +                      "package_not_cpe_nameable",
      +                      "candidate_load_pending",
      +                      "candidate_window_truncated",
      +                      "package_not_in_advisory_corpus",
      +                      "no_decidable_advisory",
      +                      "advisory_lookup_failed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "string"
      +                  }
      +                ],
      +                "description": "Why assessed is false; empty or absent when it is true."
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "package": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "product_named_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecidable_excluded_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undecided_candidate_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "undetermined": {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "cve_id": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "detail": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "ecosystem": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "package": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "undetermined_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "vendor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vendor_advisory_count": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "description": "The producing radar's last completed check (last_run_at), where the API serves one.",
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "anyOf": [
      +          {
      +            "description": "An RFC 3339 instant.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the underlying observation was made, as the API states it; null when the answer does not say or holds no observation."
      +      },
      +      "method": {
      +        "description": "How the numbers were produced.",
      +        "type": "string"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "measured: a measurement of what was asked; an exposure count is measured only with measured_at and method. not_assessed: the answer holds no dated measurement of what was asked, so no count in it is presented as one; it can still relay a count, as what the source holds on record, undated, and its notes (and exposure_state, where the result carries it) say what each count is.",
      +        "enum": [
      +          "measured",
      +          "not_assessed"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "coverage": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "assessed": {
      +                "description": "The answer's assessed, first: null when the answer does not say.",
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "candidates_capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "capped": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "degraded": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "excluded_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "lookup": {
      +                "description": "Which lookup path this call asked for.",
      +                "enum": [
      +                  "cpe",
      +                  "registry"
      +                ],
      +                "type": "string"
      +              },
      +              "match_layer": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "not_affected_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "not_assessed_reason": {
      +                "anyOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "enum": [
      +                          "product_not_in_cpe_corpus",
      +                          "package_not_cpe_nameable",
      +                          "candidate_load_pending",
      +                          "candidate_window_truncated",
      +                          "package_not_in_advisory_corpus",
      +                          "no_decidable_advisory",
      +                          "advisory_lookup_failed"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "string"
      +                      }
      +                    ],
      +                    "description": "Why assessed is false; empty or absent when it is true."
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "undetermined_count": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "assessed",
      +              "not_assessed_reason",
      +              "lookup",
      +              "match_layer",
      +              "count",
      +              "capped",
      +              "candidates_capped",
      +              "excluded_count",
      +              "undetermined_count",
      +              "not_affected_count",
      +              "degraded"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "What failed: the request (network, timeout), the answer (http, not_json, not_object, unexpected_shape), the input, or this server.",
      +            "enum": [
      +              "network",
      +              "timeout",
      +              "http",
      +              "not_json",
      +              "not_object",
      +              "invalid_input",
      +              "internal",
      +              "unexpected_shape",
      +              "radars"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "The cause: the API's own message, or what went wrong.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "The API path requested, when a request was made.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The HTTP status, when the API answered one."
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "path",
      +          "status",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "freshness": {
      +        "type": "null"
      +      },
      +      "measured_at": {
      +        "type": "null"
      +      },
      +      "method": {
      +        "type": "null"
      +      },
      +      "notes": {
      +        "description": "Caveats, one sentence each.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "state": {
      +        "description": "failed: the lookup did not complete. invalid_input: the input was refused, so nothing was looked up. Neither is a finding.",
      +        "enum": [
      +          "failed",
      +          "invalid_input"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "measured_at",
      +      "method",
      +      "coverage",
      +      "freshness",
      +      "notes",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  8. First observed

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses that inputs travel in headers not the URL, that output beyond 30,000 characters is cut with TEXT CUT/DATA CUT notes, and that undetermined results are never a safety verdict. The 'count of 0 with assessed false is not a finding of not affected' warning is exactly the kind of trap an agent would otherwise fall into.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, but the middle is a dense run-on covering both input paths and result semantics, and the tail enumerates match fields (cve_id, kev_listed, ransomware, epss_score, effective_score...) that an output schema already carries. The truncation mechanics get three sentences of detail that could be compressed without losing agent-relevant behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a dual-mode, open-world lookup with heavy output semantics, the description covers everything an agent needs: which inputs select which path, header transport, truncation behavior and its consequences, undetermined handling, and the assessed/not-assessed distinction. Nothing material is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already explains all five parameters; the description still adds meaning by framing them as two mutually exclusive input sets and giving concrete value examples (nginx, linux_kernel, lodash, npm/PyPI/Maven). It clarifies version semantics ('at that version') and the CPE-versus-registry constraint beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Whether a product or package at a given version is affected by known CVEs', and immediately splits the tool into two named paths (CPE vs registry) with the inputs that select each. What it does not do is differentiate itself from siblings such as check_sbom or cve_exposure, which an agent must infer from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear routing guidance between its own two modes: product+version for CPE, ecosystem+package+version for registry, plus explicit exclusion cues ('Leave out for the registry path', 'Give with package, not with product'). It stops short of saying when to use this versus scan_manifest or check_sbom, so the agent gets mode selection but not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.