changedOutput schema / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "coverage": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "complete_since": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "From when every change is a point; null when the API did not say, and then no part of the series is known complete."
- },
- "days_held": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "Score dates from first_day to last_day the record holds; null when none are listed."
- },
- "days_missing": {
- "description": "Score dates from first_day to last_day the record does not hold.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "days_partial": {
- "description": "Score dates held for some CVEs only.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "first_day": {
- "description": "The earliest FIRST score date the run log lists; null when it lists none.",
- "type": [
- "string",
- "null"
- ]
- },
- "last_day": {
- "type": [
- "string",
- "null"
- ]
- },
- "points": {
- "description": "How many points the series holds.",
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "points_before_complete_since": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "How many of them fall where changes are missing; null when the API did not say."
- },
- "points_truncated": {
- "type": "boolean"
- },
- "series_complete": {
- "description": "True only when the API says nothing in the record predates complete_since.",
- "type": "boolean"
- },
- "series_kind": {
- "enum": [
- "change_only"
- ],
- "type": "string"
- },
- "series_starts_at": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "series_kind",
- "series_starts_at",
- "complete_since",
- "series_complete",
- "points",
- "points_before_complete_since",
- "points_truncated",
- "first_day",
- "last_day",
- "days_held",
- "days_partial",
- "days_missing"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "What the answer covers; null where the answer says nothing about it."
- },
- "data": {
- "additionalProperties": {},
- "properties": {
- "complete_since": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "From when the record holds every change a refresh applied. Between series_starts_at and complete_since changes are missing, so a missing point there does not mean unchanged. Absent from an API older than #2867."
- },
- "coverage": {
- "anyOf": [
- {
- "additionalProperties": {},
- "properties": {
- "complete_since": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "From here on every change a refresh applied is a point; before it changes are missing."
- },
- "days_held": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "Score dates from first_day to last_day that a refresh applied completely."
- },
- "days_missing": {
- "anyOf": [
- {
- "items": {
- "description": "A FIRST score date, YYYY-MM-DD.",
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "description": "Score dates from first_day to last_day that no refresh applied."
- },
- "days_partial": {
- "anyOf": [
- {
- "items": {
- "description": "A FIRST score date, YYYY-MM-DD.",
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "description": "Score dates whose refreshes all failed part-way: some CVEs hold that day, some do not."
- },
- "first_day": {
- "anyOf": [
- {
- "description": "A FIRST score date, YYYY-MM-DD.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The earliest score date in the run log."
- },
- "last_day": {
- "anyOf": [
- {
- "description": "A FIRST score date, YYYY-MM-DD.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The latest score date in the run log."
- },
- "points_before_complete_since": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "This CVE's points in the part of the record that misses changes."
- },
- "recorded_from": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "series_starts_at: when recording began."
- },
- "refresh_runs_truncated": {
- "type": [
- "boolean",
- "null"
- ]
- },
- "run_log_since": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The first logged refresh: score dates before it are not listed, held or missing."
- },
- "runs_undated": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "series_complete": {
- "description": "True only when nothing in the record predates complete_since.",
- "type": [
- "boolean",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Which part of the record is complete and which FIRST score dates it holds."
- },
- "current": {
- "additionalProperties": {},
- "properties": {
- "epss_percentile": {
- "type": [
- "number",
- "null"
- ]
- },
- "epss_score": {
- "description": "The record's EPSS probability now; null when it holds none.",
- "type": [
- "number",
- "null"
- ]
- },
- "epss_updated_at": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "When EchelonGraph last wrote a changed EPSS value for this CVE."
- }
- },
- "type": "object"
- },
- "cve_id": {
- "type": "string"
- },
- "history_rows": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "Raw history rows read, before repeated records of one change were collapsed."
- },
- "latest_point_matches_current": {
- "description": "Whether the newest point equals current; false means a change is missing from the series; null when there is no point or no current value.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "points": {
- "description": "Recorded changes, oldest first. Never a daily series.",
- "items": {
- "additionalProperties": {},
- "properties": {
- "at": {
- "description": "When EchelonGraph recorded this change.",
- "type": "string"
- },
- "epss_percentile": {
- "description": "Its percentile (0 to 1), null where the record held none.",
- "type": [
- "number",
- "null"
- ]
- },
- "epss_score": {
- "description": "The EPSS probability (0 to 1) from that change on.",
- "type": "number"
- },
- "score_date": {
- "description": "FIRST's score date (YYYY-MM-DD) of the logged refresh that wrote this point; null where no logged refresh covers it.",
- "type": [
- "string",
- "null"
- ]
- }
- },
- "required": [
- "at",
- "epss_score"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "points_truncated": {
- "description": "True when only the newest rows were read, so the earliest points are missing.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "series_kind": {
- "description": "Always change_only: one point per recorded change, none for a day without one.",
- "enum": [
- "change_only"
- ],
- "type": "string"
- },
- "series_starts_at": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The earliest EPSS change EchelonGraph recorded for any CVE: when recording began. Null when nothing has been recorded."
- }
- },
- "required": [
- "cve_id",
- "series_kind",
- "series_starts_at",
- "current",
- "points"
- ],
- "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": {
- "complete_since": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "From when every change is a point; null when the API did not say, and then no part of the series is known complete."
- },
- "days_held": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "Score dates from first_day to last_day the record holds; null when none are listed."
- },
- "days_missing": {
- "description": "Score dates from first_day to last_day the record does not hold.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "days_partial": {
- "description": "Score dates held for some CVEs only.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "first_day": {
- "description": "The earliest FIRST score date the run log lists; null when it lists none.",
- "type": [
- "string",
- "null"
- ]
- },
- "last_day": {
- "type": [
- "string",
- "null"
- ]
- },
- "points": {
- "description": "How many points the series holds.",
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "points_before_complete_since": {
- "anyOf": [
- {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "description": "How many of them fall where changes are missing; null when the API did not say."
- },
- "points_truncated": {
- "type": "boolean"
- },
- "series_complete": {
- "description": "True only when the API says nothing in the record predates complete_since.",
- "type": "boolean"
- },
- "series_kind": {
- "enum": [
- "change_only"
- ],
- "type": "string"
- },
- "series_starts_at": {
- "anyOf": [
- {
- "description": "An RFC 3339 instant.",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "series_kind",
- "series_starts_at",
- "complete_since",
- "series_complete",
- "points",
- "points_before_complete_since",
- "points_truncated",
- "first_day",
- "last_day",
- "days_held",
- "days_partial",
- "days_missing"
- ],
- "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": {
+ "complete_since": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "From when every change is a point; null when the API did not say, and then no part of the series is known complete."
+ },
+ "days_held": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Score dates from first_day to last_day the record holds; null when none are listed."
+ },
+ "days_missing": {
+ "description": "Score dates from first_day to last_day the record does not hold.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "days_partial": {
+ "description": "Score dates held for some CVEs only.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "first_day": {
+ "description": "The earliest FIRST score date the run log lists; null when it lists none.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_day": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "points": {
+ "description": "How many points the series holds.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "points_before_complete_since": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How many of them fall where changes are missing; null when the API did not say."
+ },
+ "points_truncated": {
+ "type": "boolean"
+ },
+ "series_complete": {
+ "description": "True only when the API says nothing in the record predates complete_since.",
+ "type": "boolean"
+ },
+ "series_kind": {
+ "enum": [
+ "change_only"
+ ],
+ "type": "string"
+ },
+ "series_starts_at": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "series_kind",
+ "series_starts_at",
+ "complete_since",
+ "series_complete",
+ "points",
+ "points_before_complete_since",
+ "points_truncated",
+ "first_day",
+ "last_day",
+ "days_held",
+ "days_partial",
+ "days_missing"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What the answer covers; null where the answer says nothing about it."
+ },
+ "data": {
+ "additionalProperties": {},
+ "properties": {
+ "complete_since": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "From when the record holds every change a refresh applied. Between series_starts_at and complete_since changes are missing, so a missing point there does not mean unchanged. Absent from an API older than #2867."
+ },
+ "coverage": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "complete_since": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "From here on every change a refresh applied is a point; before it changes are missing."
+ },
+ "days_held": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Score dates from first_day to last_day that a refresh applied completely."
+ },
+ "days_missing": {
+ "anyOf": [
+ {
+ "items": {
+ "description": "A FIRST score date, YYYY-MM-DD.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Score dates from first_day to last_day that no refresh applied."
+ },
+ "days_partial": {
+ "anyOf": [
+ {
+ "items": {
+ "description": "A FIRST score date, YYYY-MM-DD.",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Score dates whose refreshes all failed part-way: some CVEs hold that day, some do not."
+ },
+ "first_day": {
+ "anyOf": [
+ {
+ "description": "A FIRST score date, YYYY-MM-DD.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The earliest score date in the run log."
+ },
+ "last_day": {
+ "anyOf": [
+ {
+ "description": "A FIRST score date, YYYY-MM-DD.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The latest score date in the run log."
+ },
+ "points_before_complete_since": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "This CVE's points in the part of the record that misses changes."
+ },
+ "recorded_from": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "series_starts_at: when recording began."
+ },
+ "refresh_runs_truncated": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "run_log_since": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The first logged refresh: score dates before it are not listed, held or missing."
+ },
+ "runs_undated": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "series_complete": {
+ "description": "True only when nothing in the record predates complete_since.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which part of the record is complete and which FIRST score dates it holds."
+ },
+ "current": {
+ "additionalProperties": {},
+ "properties": {
+ "epss_percentile": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "epss_score": {
+ "description": "The record's EPSS probability now; null when it holds none.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "epss_updated_at": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "When EchelonGraph last wrote a changed EPSS value for this CVE."
+ }
+ },
+ "type": "object"
+ },
+ "cve_id": {
+ "type": "string"
+ },
+ "history_rows": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Raw history rows read, before repeated records of one change were collapsed."
+ },
+ "latest_point_matches_current": {
+ "description": "Whether the newest point equals current; false means a change is missing from the series; null when there is no point or no current value.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "points": {
+ "description": "Recorded changes, oldest first. Never a daily series.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "at": {
+ "description": "When EchelonGraph recorded this change.",
+ "type": "string"
+ },
+ "epss_percentile": {
+ "description": "Its percentile (0 to 1), null where the record held none.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "epss_score": {
+ "description": "The EPSS probability (0 to 1) from that change on.",
+ "type": "number"
+ },
+ "score_date": {
+ "description": "FIRST's score date (YYYY-MM-DD) of the logged refresh that wrote this point; null where no logged refresh covers it.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "at",
+ "epss_score"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "points_truncated": {
+ "description": "True when only the newest rows were read, so the earliest points are missing.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "series_kind": {
+ "description": "Always change_only: one point per recorded change, none for a day without one.",
+ "enum": [
+ "change_only"
+ ],
+ "type": "string"
+ },
+ "series_starts_at": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The earliest EPSS change EchelonGraph recorded for any CVE: when recording began. Null when nothing has been recorded."
+ }
+ },
+ "required": [
+ "cve_id",
+ "series_kind",
+ "series_starts_at",
+ "current",
+ "points"
+ ],
+ "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": {
+ "complete_since": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "From when every change is a point; null when the API did not say, and then no part of the series is known complete."
+ },
+ "days_held": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Score dates from first_day to last_day the record holds; null when none are listed."
+ },
+ "days_missing": {
+ "description": "Score dates from first_day to last_day the record does not hold.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "days_partial": {
+ "description": "Score dates held for some CVEs only.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "first_day": {
+ "description": "The earliest FIRST score date the run log lists; null when it lists none.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_day": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "points": {
+ "description": "How many points the series holds.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "points_before_complete_since": {
+ "anyOf": [
+ {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How many of them fall where changes are missing; null when the API did not say."
+ },
+ "points_truncated": {
+ "type": "boolean"
+ },
+ "series_complete": {
+ "description": "True only when the API says nothing in the record predates complete_since.",
+ "type": "boolean"
+ },
+ "series_kind": {
+ "enum": [
+ "change_only"
+ ],
+ "type": "string"
+ },
+ "series_starts_at": {
+ "anyOf": [
+ {
+ "description": "An RFC 3339 instant.",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "series_kind",
+ "series_starts_at",
+ "complete_since",
+ "series_complete",
+ "points",
+ "points_before_complete_since",
+ "points_truncated",
+ "first_day",
+ "last_day",
+ "days_held",
+ "days_partial",
+ "days_missing"
+ ],
+ "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"
+ }
+]