changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "additionalProperties": false,
+ "properties": {
+ "observations": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "assertion_results": {
+ "items": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "actual": {
+ "type": "number"
+ },
+ "expected": {
+ "type": "number"
+ },
+ "kind": {
+ "const": "status",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "expected",
+ "actual",
+ "passed"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "actual_fingerprint": {
+ "additionalProperties": false,
+ "properties": {
+ "sha256": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "sha256"
+ ],
+ "type": "object"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "header_equals",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "actual_fingerprint",
+ "passed"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "error_code": {
+ "type": "string"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "header_equals",
+ "type": "string"
+ },
+ "passed": {
+ "const": false,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "passed",
+ "error_code"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "actual_fingerprint": {
+ "additionalProperties": false,
+ "properties": {
+ "sha256": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "sha256"
+ ],
+ "type": "object"
+ },
+ "expected": {},
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "json_equals",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "actual_fingerprint",
+ "passed"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "error_code": {
+ "type": "string"
+ },
+ "expected": {},
+ "key": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "json_equals",
+ "type": "string"
+ },
+ "passed": {
+ "const": false,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "expected",
+ "passed",
+ "error_code"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "contains": {
+ "type": "boolean"
+ },
+ "expected": {
+ "type": "string"
+ },
+ "kind": {
+ "const": "body_contains",
+ "type": "string"
+ },
+ "passed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "expected",
+ "contains",
+ "passed"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "type": "array"
+ },
+ "body_sha256": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "body_truncated": {
+ "type": "boolean"
+ },
+ "bytes_observed": {
+ "type": "number"
+ },
+ "error_code": {
+ "type": "string"
+ },
+ "final_url": {
+ "type": "string"
+ },
+ "latency_ms": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "observed_at": {
+ "type": "string"
+ },
+ "probe_id": {
+ "type": "string"
+ },
+ "protocol": {
+ "const": "probe.evidence.v0",
+ "type": "string"
+ },
+ "redirect_chain": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "from_url": {
+ "type": "string"
+ },
+ "hop": {
+ "type": "number"
+ },
+ "location": {
+ "type": "string"
+ },
+ "rejection": {
+ "type": "string"
+ },
+ "resolved_url": {
+ "type": "string"
+ },
+ "status_code": {
+ "type": "number"
+ },
+ "validated": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "hop",
+ "from_url",
+ "status_code",
+ "validated"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "redirect_count": {
+ "type": "number"
+ },
+ "redirects_followed": {
+ "type": "boolean"
+ },
+ "status_code": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "target": {
+ "additionalProperties": false,
+ "properties": {
+ "host": {
+ "type": "string"
+ },
+ "method": {
+ "enum": [
+ "GET",
+ "HEAD"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "host",
+ "method"
+ ],
+ "type": "object"
+ },
+ "termination": {
+ "type": "string"
+ },
+ "verdict": {
+ "enum": [
+ "PASS",
+ "FAIL",
+ "ERROR"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "protocol",
+ "probe_id",
+ "observed_at",
+ "verdict",
+ "target",
+ "status_code",
+ "latency_ms",
+ "body_sha256",
+ "bytes_observed",
+ "body_truncated",
+ "assertion_results",
+ "redirects_followed",
+ "redirect_count",
+ "final_url",
+ "redirect_chain",
+ "termination"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "probe_id": {
+ "type": "string"
+ },
+ "protocol": {
+ "const": "probe.history.v0",
+ "type": "string"
+ },
+ "summary": {
+ "additionalProperties": false,
+ "properties": {
+ "agreement": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "changed_since_previous": {
+ "type": "boolean"
+ },
+ "counts": {
+ "additionalProperties": false,
+ "properties": {
+ "ERROR": {
+ "type": "number"
+ },
+ "FAIL": {
+ "type": "number"
+ },
+ "PASS": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "PASS",
+ "FAIL",
+ "ERROR"
+ ],
+ "type": "object"
+ },
+ "dominant_verdict": {
+ "anyOf": [
+ {
+ "enum": [
+ "PASS",
+ "FAIL"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "observations": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "observations",
+ "counts",
+ "dominant_verdict",
+ "agreement",
+ "changed_since_previous"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "protocol",
+ "probe_id",
+ "observations",
+ "summary"
+ ],
+ "type": "object"
+}