changedOutput schema / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "coverage": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "catalog": {
- "const": "CISA KEV catalog",
- "type": "string"
- },
- "catalog_count": {
- "description": "CISA's own count, in the catalog last fetched.",
- "type": [
- "number",
- "null"
- ]
- },
- "has_more": {
- "description": "Whether next_cursor names a further page.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "kev_listed_total": {
- "description": "Every CVE EchelonGraph holds as KEV-listed.",
- "type": [
- "number",
- "null"
- ]
- },
- "limit": {
- "type": [
- "number",
- "null"
- ]
- },
- "returned": {
- "description": "Rows in this page.",
- "type": [
- "number",
- "null"
- ]
- },
- "total": {
- "description": "CVEs matching the filters.",
- "type": [
- "number",
- "null"
- ]
- }
- },
- "required": [
- "catalog",
- "total",
- "returned",
- "kev_listed_total",
- "catalog_count",
- "limit",
- "has_more"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "What the answer covers; null where the answer says nothing about it."
- },
- "data": {
- "additionalProperties": {},
- "properties": {
- "catalog": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "catalog_count": {
- "type": [
- "number",
- "null"
- ]
- },
- "catalog_version": {
- "type": [
- "string",
- "null"
- ]
- },
- "date_released": {
- "type": [
- "string",
- "null"
- ]
- },
- "feed_url": {
- "type": [
- "string",
- "null"
- ]
- },
- "last_successful_fetch_at": {
- "type": [
- "string",
- "null"
- ]
- },
- "source": {
- "type": [
- "string",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "count": {
- "type": [
- "number",
- "null"
- ]
- },
- "filters": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "generated_at": {
- "type": [
- "string",
- "null"
- ]
- },
- "kev": {
- "description": "Newest kev_added_date first; rows within one date are ordered by cve_id.",
- "items": {
- "additionalProperties": {},
- "properties": {
- "cve_id": {
- "type": [
- "string",
- "null"
- ]
- },
- "cvss_v3_score": {
- "type": [
- "number",
- "null"
- ]
- },
- "eg_kev_tier": {
- "type": [
- "number",
- "null"
- ]
- },
- "epss_percentile": {
- "type": [
- "number",
- "null"
- ]
- },
- "epss_score": {
- "type": [
- "number",
- "null"
- ]
- },
- "kev_added_date": {
- "type": [
- "string",
- "null"
- ]
- },
- "kev_due_date": {
- "type": [
- "string",
- "null"
- ]
- },
- "kev_product": {
- "type": [
- "string",
- "null"
- ]
- },
- "kev_ransomware": {
- "type": [
- "boolean",
- "null"
- ]
- },
- "kev_vendor": {
- "type": [
- "string",
- "null"
- ]
- },
- "kev_vuln_name": {
- "type": [
- "string",
- "null"
- ]
- },
- "our_first_seen_kev": {
- "description": "When EchelonGraph's poller first recorded the CVE entering the catalog; null where no such record exists.",
- "type": [
- "string",
- "null"
- ]
- },
- "severity": {
- "type": [
- "string",
- "null"
- ]
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- "kev_listed_total": {
- "type": [
- "number",
- "null"
- ]
- },
- "limit": {
- "type": [
- "number",
- "null"
- ]
- },
- "method": {
- "type": [
- "string",
- "null"
- ]
- },
- "next_cursor": {
- "type": [
- "string",
- "null"
- ]
- },
- "notes": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- },
- "order": {
- "type": [
- "string",
- "null"
- ]
- },
- "total": {
- "type": [
- "number",
- "null"
- ]
- }
- },
- "type": "object"
- },
- "freshness": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "catalog_version": {
- "type": [
- "string",
- "null"
- ]
- },
- "date_released": {
- "type": [
- "string",
- "null"
- ]
- },
- "last_successful_fetch_at": {
- "description": "When CISA last answered our poll of its feed: a 200 we applied, or a 304 Not Modified.",
- "type": [
- "string",
- "null"
- ]
- }
- },
- "required": [
- "last_successful_fetch_at",
- "catalog_version",
- "date_released"
- ],
- "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"
- }
- },
- "required": [
- "state",
- "measured_at",
- "method",
- "coverage",
- "freshness",
- "notes",
- "data"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "coverage": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "catalog": {
- "const": "CISA KEV catalog",
- "type": "string"
- },
- "catalog_count": {
- "description": "CISA's own count, in the catalog last fetched.",
- "type": [
- "number",
- "null"
- ]
- },
- "has_more": {
- "description": "Whether next_cursor names a further page.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "kev_listed_total": {
- "description": "Every CVE EchelonGraph holds as KEV-listed.",
- "type": [
- "number",
- "null"
- ]
- },
- "limit": {
- "type": [
- "number",
- "null"
- ]
- },
- "returned": {
- "description": "Rows in this page.",
- "type": [
- "number",
- "null"
- ]
- },
- "total": {
- "description": "CVEs matching the filters.",
- "type": [
- "number",
- "null"
- ]
- }
- },
- "required": [
- "catalog",
- "total",
- "returned",
- "kev_listed_total",
- "catalog_count",
- "limit",
- "has_more"
- ],
- "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": {
+ "catalog": {
+ "const": "CISA KEV catalog",
+ "type": "string"
+ },
+ "catalog_count": {
+ "description": "CISA's own count, in the catalog last fetched.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "has_more": {
+ "description": "Whether next_cursor names a further page.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kev_listed_total": {
+ "description": "Every CVE EchelonGraph holds as KEV-listed.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "limit": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "returned": {
+ "description": "Rows in this page.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "total": {
+ "description": "CVEs matching the filters.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "catalog",
+ "total",
+ "returned",
+ "kev_listed_total",
+ "catalog_count",
+ "limit",
+ "has_more"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What the answer covers; null where the answer says nothing about it."
+ },
+ "data": {
+ "additionalProperties": {},
+ "properties": {
+ "catalog": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "catalog_count": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "catalog_version": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "date_released": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "feed_url": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_successful_fetch_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "source": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "count": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "filters": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "generated_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kev": {
+ "description": "Newest kev_added_date first; rows within one date are ordered by cve_id.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "cve_id": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "cvss_v3_score": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "eg_kev_tier": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "epss_percentile": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "epss_score": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "kev_added_date": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kev_due_date": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kev_product": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kev_ransomware": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kev_vendor": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kev_vuln_name": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "our_first_seen_kev": {
+ "description": "When EchelonGraph's poller first recorded the CVE entering the catalog; null where no such record exists.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "severity": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "kev_listed_total": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "limit": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "method": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "next_cursor": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "notes": {
+ "anyOf": [
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "order": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "total": {
+ "type": [
+ "number",
+ "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": false,
+ "properties": {
+ "catalog_version": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "date_released": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_successful_fetch_at": {
+ "description": "When CISA last answered our poll of its feed: a 200 we applied, or a 304 Not Modified.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "last_successful_fetch_at",
+ "catalog_version",
+ "date_released"
+ ],
+ "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": 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": {
+ "catalog": {
+ "const": "CISA KEV catalog",
+ "type": "string"
+ },
+ "catalog_count": {
+ "description": "CISA's own count, in the catalog last fetched.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "has_more": {
+ "description": "Whether next_cursor names a further page.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kev_listed_total": {
+ "description": "Every CVE EchelonGraph holds as KEV-listed.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "limit": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "returned": {
+ "description": "Rows in this page.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "total": {
+ "description": "CVEs matching the filters.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "catalog",
+ "total",
+ "returned",
+ "kev_listed_total",
+ "catalog_count",
+ "limit",
+ "has_more"
+ ],
+ "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"
+ }
+]