{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/aiworkstation-cn/json-schema/aiworkstation-cn-topic-feed-response-schema.json",
  "title": "TopicFeedResponse",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aiworkstation-cn-openapi.json#/components/schemas/TopicFeedResponse",
  "properties": {
    "generated_at": {
      "type": "string",
      "title": "Generated At"
    },
    "status": {
      "type": "string",
      "title": "Status"
    },
    "partial": {
      "type": "boolean",
      "title": "Partial"
    },
    "stale": {
      "type": "boolean",
      "title": "Stale"
    },
    "items": {
      "items": {
        "$ref": "#/$defs/TopicCluster"
      },
      "type": "array",
      "title": "Items"
    },
    "source_status": {
      "items": {
        "$ref": "#/$defs/SourceStatus"
      },
      "type": "array",
      "title": "Source Status"
    },
    "total": {
      "type": "integer",
      "title": "Total",
      "default": 0
    },
    "signal_total": {
      "type": "integer",
      "title": "Signal Total",
      "default": 0
    },
    "raw_signal_total": {
      "type": "integer",
      "title": "Raw Signal Total",
      "default": 0
    },
    "pool_total": {
      "type": "integer",
      "title": "Pool Total",
      "default": 0
    },
    "offset": {
      "type": "integer",
      "title": "Offset",
      "default": 0
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 12
    },
    "has_more": {
      "type": "boolean",
      "title": "Has More",
      "default": false
    },
    "stage_counts": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Stage Counts"
    },
    "facets": {
      "additionalProperties": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "type": "object",
      "title": "Facets"
    },
    "refreshing": {
      "type": "boolean",
      "title": "Refreshing",
      "default": false
    },
    "snapshot_age_seconds": {
      "type": "integer",
      "title": "Snapshot Age Seconds",
      "default": 0
    },
    "history_available": {
      "type": "boolean",
      "title": "History Available",
      "default": false
    },
    "coverage": {
      "additionalProperties": true,
      "type": "object",
      "title": "Coverage"
    },
    "signal_counts": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Signal Counts"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "generated_at",
    "status",
    "partial",
    "stale",
    "items",
    "source_status"
  ],
  "$defs": {
    "SourceStatus": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "item_count": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Item Count",
          "default": 0
        },
        "last_success_at": {
          "type": "string",
          "title": "Last Success At",
          "default": ""
        },
        "region": {
          "type": "string",
          "title": "Region",
          "default": "GLOBAL"
        },
        "platform": {
          "type": "string",
          "title": "Platform",
          "default": "web"
        },
        "note": {
          "type": "string",
          "title": "Note",
          "default": ""
        },
        "last_attempt_at": {
          "type": "string",
          "title": "Last Attempt At",
          "default": ""
        },
        "cache_expires_at": {
          "type": "string",
          "title": "Cache Expires At",
          "default": ""
        },
        "freshness_seconds": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Freshness Seconds"
        },
        "consecutive_failures": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Consecutive Failures",
          "default": 0
        },
        "circuit_open": {
          "type": "boolean",
          "title": "Circuit Open",
          "default": false
        },
        "next_probe_at": {
          "type": "string",
          "title": "Next Probe At",
          "default": ""
        },
        "active": {
          "type": "boolean",
          "title": "Active",
          "default": true
        },
        "refresh_interval_seconds": {
          "type": "integer",
          "maximum": 86400.0,
          "minimum": 60.0,
          "title": "Refresh Interval Seconds",
          "default": 1800
        },
        "next_refresh_at": {
          "type": "string",
          "title": "Next Refresh At",
          "default": ""
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "id",
        "name",
        "status"
      ],
      "title": "SourceStatus",
      "description": "Health and freshness of a single independently degradable source."
    },
    "TopicCluster": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "title": {
          "type": "string",
          "title": "Title"
        },
        "title_en": {
          "type": "string",
          "title": "Title En"
        },
        "summary": {
          "type": "string",
          "title": "Summary"
        },
        "summary_en": {
          "type": "string",
          "title": "Summary En"
        },
        "what_happened": {
          "type": "string",
          "title": "What Happened",
          "default": ""
        },
        "what_happened_en": {
          "type": "string",
          "title": "What Happened En",
          "default": ""
        },
        "why_worth_research": {
          "type": "string",
          "title": "Why Worth Research",
          "default": ""
        },
        "why_worth_research_en": {
          "type": "string",
          "title": "Why Worth Research En",
          "default": ""
        },
        "source": {
          "type": "string",
          "title": "Source"
        },
        "source_id": {
          "type": "string",
          "title": "Source Id"
        },
        "source_url": {
          "type": "string",
          "title": "Source Url"
        },
        "platform": {
          "type": "string",
          "title": "Platform"
        },
        "observed_platforms": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Observed Platforms"
        },
        "region": {
          "type": "string",
          "title": "Region"
        },
        "category": {
          "type": "string",
          "title": "Category"
        },
        "category_id": {
          "type": "string",
          "title": "Category Id",
          "default": "general"
        },
        "category_en": {
          "type": "string",
          "title": "Category En",
          "default": "General"
        },
        "trend_stage": {
          "type": "string",
          "title": "Trend Stage"
        },
        "opportunity_score": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Opportunity Score"
        },
        "rank": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rank"
        },
        "heat": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Heat"
        },
        "published_at": {
          "type": "string",
          "title": "Published At",
          "default": ""
        },
        "first_seen_at": {
          "type": "string",
          "title": "First Seen At"
        },
        "target_platforms": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Target Platforms"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Tags"
        },
        "evidence": {
          "items": {
            "$ref": "#/$defs/TopicEvidence"
          },
          "type": "array",
          "title": "Evidence"
        },
        "signal_count": {
          "type": "integer",
          "minimum": 1.0,
          "title": "Signal Count",
          "default": 1
        },
        "trend": {
          "anyOf": [
            {
              "$ref": "#/$defs/TopicTrendMetrics"
            },
            {
              "type": "null"
            }
          ]
        },
        "score_breakdown": {
          "$ref": "#/$defs/TopicScoreBreakdown"
        },
        "primary_category": {
          "type": "string",
          "enum": [
            "world",
            "business",
            "technology",
            "society_health",
            "culture",
            "sports",
            "lifestyle",
            "climate"
          ],
          "title": "Primary Category",
          "default": "world"
        },
        "secondary_tags": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 2,
          "title": "Secondary Tags"
        },
        "content_type": {
          "type": "string",
          "title": "Content Type",
          "default": "news_event"
        },
        "sensitivity_level": {
          "type": "string",
          "title": "Sensitivity Level",
          "default": "normal"
        },
        "collector_id": {
          "type": "string",
          "title": "Collector Id",
          "default": ""
        },
        "origin_platform": {
          "type": "string",
          "title": "Origin Platform",
          "default": ""
        },
        "publisher": {
          "type": "string",
          "title": "Publisher",
          "default": ""
        },
        "canonical_url": {
          "type": "string",
          "title": "Canonical Url",
          "default": ""
        },
        "original_title": {
          "type": "string",
          "title": "Original Title",
          "default": ""
        },
        "title_localization_state": {
          "type": "string",
          "maxLength": 24,
          "title": "Title Localization State",
          "default": "source"
        },
        "source_role": {
          "type": "string",
          "title": "Source Role",
          "default": "discovery"
        },
        "quality_tier": {
          "type": "string",
          "title": "Quality Tier",
          "default": "standard"
        },
        "independent_origin_id": {
          "type": "string",
          "title": "Independent Origin Id",
          "default": ""
        },
        "event_signature": {
          "type": "string",
          "title": "Event Signature",
          "default": ""
        },
        "cluster_confidence": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Cluster Confidence",
          "default": 0
        },
        "classification_confidence": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Classification Confidence",
          "default": 0
        },
        "classification_method": {
          "type": "string",
          "maxLength": 40,
          "title": "Classification Method",
          "default": "semantic_rules"
        },
        "trend_score": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Trend Score",
          "default": 0
        },
        "editorial_score": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Editorial Score",
          "default": 0
        },
        "confidence_score": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Confidence Score",
          "default": 0
        },
        "market_fit_score": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Market Fit Score",
          "default": 0
        },
        "editorial_lane": {
          "type": "string",
          "title": "Editorial Lane",
          "default": "raw"
        },
        "editorial_lanes": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 8,
          "title": "Editorial Lanes"
        },
        "evidence_state": {
          "type": "string",
          "title": "Evidence State",
          "default": "unverified"
        },
        "source_market": {
          "type": "string",
          "title": "Source Market",
          "default": "GLOBAL"
        },
        "source_languages": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 12,
          "title": "Source Languages"
        },
        "home_market": {
          "type": "string",
          "title": "Home Market",
          "default": ""
        },
        "market_lead_direction": {
          "type": "string",
          "title": "Market Lead Direction",
          "default": "regional_signal"
        },
        "rejection_reasons": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 12,
          "title": "Rejection Reasons"
        },
        "last_source_update_at": {
          "type": "string",
          "title": "Last Source Update At",
          "default": ""
        },
        "next_refresh_at": {
          "type": "string",
          "title": "Next Refresh At",
          "default": ""
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "id",
        "title",
        "title_en",
        "summary",
        "summary_en",
        "source",
        "source_id",
        "source_url",
        "platform",
        "region",
        "category",
        "trend_stage",
        "opportunity_score",
        "first_seen_at"
      ],
      "title": "TopicCluster",
      "description": "Frontend-facing topic card produced from one or more signals."
    },
    "TopicEvidence": {
      "properties": {
        "source_id": {
          "type": "string",
          "title": "Source Id"
        },
        "source": {
          "type": "string",
          "title": "Source"
        },
        "url": {
          "type": "string",
          "title": "Url",
          "default": ""
        },
        "rank": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rank"
        },
        "heat": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Heat"
        },
        "observed_at": {
          "type": "string",
          "title": "Observed At"
        },
        "original_title": {
          "type": "string",
          "title": "Original Title",
          "default": ""
        },
        "published_at": {
          "type": "string",
          "title": "Published At",
          "default": ""
        },
        "collector_id": {
          "type": "string",
          "title": "Collector Id",
          "default": ""
        },
        "origin_platform": {
          "type": "string",
          "title": "Origin Platform",
          "default": ""
        },
        "publisher": {
          "type": "string",
          "title": "Publisher",
          "default": ""
        },
        "canonical_url": {
          "type": "string",
          "title": "Canonical Url",
          "default": ""
        },
        "document_id": {
          "type": "string",
          "title": "Document Id",
          "default": ""
        },
        "source_role": {
          "type": "string",
          "title": "Source Role",
          "default": "discovery"
        },
        "quality_tier": {
          "type": "string",
          "title": "Quality Tier",
          "default": "standard"
        },
        "independent_origin_id": {
          "type": "string",
          "title": "Independent Origin Id",
          "default": ""
        },
        "source_market": {
          "type": "string",
          "title": "Source Market",
          "default": "GLOBAL"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "source_id",
        "source",
        "observed_at"
      ],
      "title": "TopicEvidence",
      "description": "Public-safe evidence attached to an aggregated topic card."
    },
    "TopicScoreBreakdown": {
      "properties": {
        "freshness": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Freshness",
          "default": 0
        },
        "velocity": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Velocity",
          "default": 0
        },
        "independent_sources": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Independent Sources",
          "default": 0
        },
        "cross_region": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Cross Region",
          "default": 0
        },
        "absolute_heat": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Absolute Heat",
          "default": 0
        },
        "evidence": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Evidence",
          "default": 0
        },
        "trend": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Trend",
          "default": 0
        },
        "editorial": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Editorial",
          "default": 0
        },
        "confidence": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Confidence",
          "default": 0
        },
        "market_fit": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Market Fit",
          "default": 0
        },
        "methodology": {
          "type": "string",
          "maxLength": 80,
          "title": "Methodology",
          "default": "topic-editorial-v3"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "TopicScoreBreakdown"
    },
    "TopicTrendMetrics": {
      "properties": {
        "history_points": {
          "type": "integer",
          "minimum": 0.0,
          "title": "History Points",
          "default": 0
        },
        "tracked_hours": {
          "type": "number",
          "minimum": 0.0,
          "title": "Tracked Hours",
          "default": 0
        },
        "first_observed_at": {
          "type": "string",
          "title": "First Observed At",
          "default": ""
        },
        "last_observed_at": {
          "type": "string",
          "title": "Last Observed At",
          "default": ""
        },
        "best_rank": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Best Rank"
        },
        "peak_heat": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Peak Heat"
        },
        "score_change_24h": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Score Change 24H"
        },
        "score_change_7d": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Score Change 7D"
        },
        "source_count": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Source Count",
          "default": 0
        },
        "is_new_24h": {
          "type": "boolean",
          "title": "Is New 24H",
          "default": false
        },
        "velocity_1h": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 100.0,
              "minimum": -100.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Velocity 1H"
        },
        "velocity_6h": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 100.0,
              "minimum": -100.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Velocity 6H"
        },
        "velocity_24h": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 100.0,
              "minimum": -100.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Velocity 24H"
        },
        "source_spread_hours": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Spread Hours"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "TopicTrendMetrics",
      "description": "History-derived movement; absent until the radar has observations."
    }
  }
}