changedOutput schema / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "coverage": {
- "description": "What the answer covers; null where the answer says nothing about it.",
- "type": "null"
- },
- "data": {
- "additionalProperties": {},
- "properties": {
- "poller": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "cves_ingested": {
- "description": "CVE records this instance's NVD poller wrote since the instance last started: never the feed's size or intake.",
- "type": [
- "number",
- "null"
- ]
- },
- "cves_skipped": {
- "description": "CVE records this instance's NVD poller skipped since the instance last started.",
- "type": [
- "number",
- "null"
- ]
- },
- "http_retries": {
- "description": "HTTP retries this instance's NVD poller made since the instance last started.",
- "type": [
- "number",
- "null"
- ]
- },
- "interval": {
- "description": "How often this instance's NVD poller polls.",
- "type": [
- "string",
- "null"
- ]
- },
- "last_poll_at": {
- "description": "When this instance's NVD poller last polled: never the feed's freshness.",
- "type": [
- "string",
- "null"
- ]
- },
- "last_poll_dur_ms": {
- "description": "How long that poll took, in milliseconds.",
- "type": [
- "number",
- "null"
- ]
- },
- "poll_count": {
- "description": "Polls this instance's NVD poller made since the instance last started.",
- "type": [
- "number",
- "null"
- ]
- },
- "poll_errors": {
- "description": "Polls of this instance's NVD poller that failed since the instance last started: never the feed's reliability.",
- "type": [
- "number",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "poller holds the in-memory counters of the NVD poller of the one API instance that answered (cves_ingested, cves_skipped, http_retries, poll_count, poll_errors, last_poll_at, last_poll_dur_ms, interval), counted since that instance last started and zeroed on every restart: they describe that instance, never the feed's size, intake, reliability or freshness. Whenever the answer carries poller the note says so."
- },
- "summary": {
- "additionalProperties": {},
- "properties": {
- "critical": {
- "type": [
- "number",
- "null"
- ]
- },
- "high": {
- "type": [
- "number",
- "null"
- ]
- },
- "last_updated": {
- "type": [
- "string",
- "null"
- ]
- },
- "low": {
- "type": [
- "number",
- "null"
- ]
- },
- "medium": {
- "type": [
- "number",
- "null"
- ]
- },
- "none": {
- "description": "The active CVEs with no severity band from any source: CVEs not yet scored, not a severity rating of None.",
- "type": [
- "number",
- "null"
- ]
- },
- "nvd_critical": {
- "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is Critical: NVD's label, as provenance, never EchelonGraph's severity band.",
- "type": [
- "number",
- "null"
- ]
- },
- "nvd_high": {
- "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is High: NVD's label, as provenance, never EchelonGraph's severity band.",
- "type": [
- "number",
- "null"
- ]
- },
- "nvd_low": {
- "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is Low: NVD's label, as provenance, never EchelonGraph's severity band.",
- "type": [
- "number",
- "null"
- ]
- },
- "nvd_medium": {
- "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is Medium: NVD's label, as provenance, never EchelonGraph's severity band.",
- "type": [
- "number",
- "null"
- ]
- },
- "nvd_none": {
- "description": "Of the active CVEs total counts, those with no Critical, High, Medium or Low NVD CVSS severity label, many of them with an NVD CVSS v2 score instead: neither a count of CVEs rated None nor the count of CVEs with no severity, which is none.",
- "type": [
- "number",
- "null"
- ]
- },
- "rejected": {
- "description": "The CVE records rejected (withdrawn) by their numbering authority, which total and every other count here leave out: withdrawn records, never vulnerabilities.",
- "type": [
- "number",
- "null"
- ]
- },
- "total": {
- "type": [
- "number",
- "null"
- ]
- },
- "unscored": {
- "description": "The same count as none, under its own name.",
- "type": [
- "number",
- "null"
- ]
- }
- },
- "type": "object"
- }
- },
- "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": {
- "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": {
+ "description": "What the answer covers; null where the answer says nothing about it.",
+ "type": "null"
+ },
+ "data": {
+ "additionalProperties": {},
+ "properties": {
+ "poller": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "cves_ingested": {
+ "description": "CVE records this instance's NVD poller wrote since the instance last started: never the feed's size or intake.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "cves_skipped": {
+ "description": "CVE records this instance's NVD poller skipped since the instance last started.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "http_retries": {
+ "description": "HTTP retries this instance's NVD poller made since the instance last started.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "interval": {
+ "description": "How often this instance's NVD poller polls.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_poll_at": {
+ "description": "When this instance's NVD poller last polled: never the feed's freshness.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_poll_dur_ms": {
+ "description": "How long that poll took, in milliseconds.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "poll_count": {
+ "description": "Polls this instance's NVD poller made since the instance last started.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "poll_errors": {
+ "description": "Polls of this instance's NVD poller that failed since the instance last started: never the feed's reliability.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "poller holds the in-memory counters of the NVD poller of the one API instance that answered (cves_ingested, cves_skipped, http_retries, poll_count, poll_errors, last_poll_at, last_poll_dur_ms, interval), counted since that instance last started and zeroed on every restart: they describe that instance, never the feed's size, intake, reliability or freshness. Whenever the answer carries poller the note says so. A poller field the answer sends in a JSON type other than the one described here is left out of data and named in the note, and a poller that is neither a JSON object nor null is left out whole: summary is relayed either way."
+ },
+ "summary": {
+ "additionalProperties": {},
+ "properties": {
+ "critical": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "high": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "last_updated": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "low": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "medium": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "none": {
+ "description": "The active CVEs with no severity band from any source: CVEs not yet scored, not a severity rating of None.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "nvd_critical": {
+ "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is Critical: NVD's label, as provenance, never EchelonGraph's severity band.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "nvd_high": {
+ "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is High: NVD's label, as provenance, never EchelonGraph's severity band.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "nvd_low": {
+ "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is Low: NVD's label, as provenance, never EchelonGraph's severity band.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "nvd_medium": {
+ "description": "Of the active CVEs total counts, those whose NVD CVSS severity label is Medium: NVD's label, as provenance, never EchelonGraph's severity band.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "nvd_none": {
+ "description": "Of the active CVEs total counts, those with no Critical, High, Medium or Low NVD CVSS severity label, many of them with an NVD CVSS v2 score instead: neither a count of CVEs rated None nor the count of CVEs with no severity, which is none.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "rejected": {
+ "description": "The CVE records rejected (withdrawn) by their numbering authority, which total and every other count here leave out: withdrawn records, never vulnerabilities.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "total": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "unscored": {
+ "description": "The same count as none, under its own name.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "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": {
+ "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"
+ }
+]