changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "description": "A possible campaign / suspected cluster - the live shape (state: 'live') or, for a key whose history is retained but is no longer live, the thinner archived shape (state: 'archived'). Shared-infrastructure grouping of public detections, not an attribution claim.",
+ "oneOf": [
+ {
+ "properties": {
+ "active_count": {
+ "type": "integer"
+ },
+ "algorithm_version": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "brands": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "confidence": {
+ "enum": [
+ "possible campaign",
+ "suspected cluster"
+ ],
+ "type": "string"
+ },
+ "data_status": {
+ "enum": [
+ "ok",
+ "stale",
+ "missing"
+ ],
+ "type": "string"
+ },
+ "evidence_summary": {
+ "type": "array"
+ },
+ "first_seen": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "generated_at": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "key": {
+ "description": "Stable campaign identifier.",
+ "type": "string"
+ },
+ "last_activity": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "members": {
+ "type": "array"
+ },
+ "relationships": {
+ "description": "Per-pair evidence drill-down: which member pairs actually formed this cluster and by what evidence, sorted strongest first, capped at 50.",
+ "type": "array"
+ },
+ "relationships_truncated": {
+ "type": "boolean"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "state": {
+ "const": "live"
+ }
+ },
+ "required": [
+ "state",
+ "key",
+ "size",
+ "members"
+ ],
+ "title": "LiveCampaign",
+ "type": "object"
+ },
+ {
+ "properties": {
+ "confidence_score": {
+ "type": "number"
+ },
+ "data_status": {
+ "enum": [
+ "ok",
+ "stale",
+ "missing"
+ ],
+ "type": "string"
+ },
+ "end_state": {
+ "enum": [
+ "dissolved",
+ "merged",
+ "split",
+ "unknown",
+ null
+ ],
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "first_tracked": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "key": {
+ "type": "string"
+ },
+ "label": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_seen": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "members": {
+ "type": "array"
+ },
+ "size": {
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "state": {
+ "const": "archived"
+ },
+ "successors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "state",
+ "key",
+ "members",
+ "url"
+ ],
+ "title": "ArchivedCampaign",
+ "type": "object"
+ }
+ ],
+ "properties": {
+ "state": {
+ "enum": [
+ "live",
+ "archived"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "state"
+ ],
+ "type": "object"
+}