{
  "schemaVersion": "worldcup-guide-api-catalog/v1",
  "generatedAt": "2026-07-05T08:00:11+00:00",
  "site": "https://ppxu.top/worldcup/",
  "title": "2026 World Cup Watching Guide public API catalog",
  "language": "zh-CN",
  "status": {
    "liveDataGeneratedAt": "2026-07-05T08:00:10+00:00",
    "liveStatusGeneratedAt": "2026-07-05T08:00:10+00:00",
    "healthStatus": "ok",
    "primarySource": "worldcup26.ir",
    "fallbackSource": "Wikipedia 2026 FIFA World Cup",
    "refreshIntervalMinutes": 60,
    "coverage": {
      "matches": 104,
      "groups": 12,
      "scored": 90,
      "finished": 90
    }
  },
  "privacy": {
    "containsPersonalData": false,
    "note": "Public endpoints do not include followed teams, notes, predictions, watch sources, local snapshots, or browser-only archives."
  },
  "guardrails": [
    "Do not invent predicted scores, simulated standings, or unverified goal scorers.",
    "Use live-data.json as the current public match-data snapshot.",
    "Use live-status.json and site-health.json before presenting freshness-sensitive summaries.",
    "Treat RSS and live-changes as change feeds, not as a complete historical archive."
  ],
  "endpoints": [
    {
      "id": "live-data",
      "title": "Live match and standings snapshot",
      "url": "https://ppxu.top/worldcup/live-data.json",
      "method": "GET",
      "format": "application/json",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every 60 minutes during the tournament window when sync is active.",
      "useFor": [
        "match calendar with Beijing-time kickoffs",
        "verified match status, scores, goal events and group standings",
        "frontend schedule, follow module and data dashboards"
      ]
    },
    {
      "id": "live-status",
      "title": "Live sync status",
      "url": "https://ppxu.top/worldcup/live-status.json",
      "method": "GET",
      "format": "application/json",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every live sync run.",
      "useFor": [
        "monitoring source freshness",
        "checking next expected sync time",
        "detecting degraded live-data updates"
      ]
    },
    {
      "id": "live-changes",
      "title": "Latest public data changes",
      "url": "https://ppxu.top/worldcup/live-changes.json",
      "method": "GET",
      "format": "application/json",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every live sync run after comparing the previous validated snapshot.",
      "useFor": [
        "AI summaries of score, status and table changes",
        "post-match review and monitoring",
        "RSS and change-detection workflows"
      ]
    },
    {
      "id": "site-health",
      "title": "Site health and source policy",
      "url": "https://ppxu.top/worldcup/site-health.json",
      "method": "GET",
      "format": "application/json",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release and live sync run.",
      "useFor": [
        "public endpoint discovery",
        "source priority and fallback policy",
        "guardrails for no invented scores"
      ]
    },
    {
      "id": "search-index",
      "title": "Static SEO search index",
      "url": "https://ppxu.top/worldcup/search-index.json",
      "method": "GET",
      "format": "application/json",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release and live-data SEO refresh.",
      "useFor": [
        "site search",
        "AI retrieval over teams, matches, players, venues and groups",
        "external table automation that needs canonical URLs"
      ]
    },
    {
      "id": "api-catalog",
      "title": "Public endpoint catalog",
      "url": "https://ppxu.top/worldcup/api-catalog.json",
      "method": "GET",
      "format": "application/json",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release and live sync run.",
      "useFor": [
        "machine-readable discovery of all public endpoints",
        "format and refresh-cadence lookup",
        "automation bootstrap before fetching live data"
      ]
    },
    {
      "id": "status-badge",
      "title": "Public data status badge",
      "url": "https://ppxu.top/worldcup/status-badge.svg",
      "method": "GET",
      "format": "image/svg+xml",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release and live sync run.",
      "useFor": [
        "embeddable source-health badge",
        "share cards and external status pages",
        "quick visual check of live-data freshness and coverage"
      ]
    },
    {
      "id": "schedule-ics",
      "title": "Full match calendar subscription",
      "url": "https://ppxu.top/worldcup/worldcup-2026-schedule.ics",
      "method": "GET",
      "format": "text/calendar",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release and live sync run.",
      "useFor": [
        "calendar subscription",
        "kickoff reminders",
        "schedule-change tracking"
      ]
    },
    {
      "id": "rss-feed",
      "title": "RSS update feed",
      "url": "https://ppxu.top/worldcup/worldcup-feed.xml",
      "method": "GET",
      "format": "application/rss+xml",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release and live sync run.",
      "useFor": [
        "RSS readers",
        "automation monitors",
        "AI digest workflows"
      ]
    },
    {
      "id": "llms",
      "title": "LLM-readable site guide",
      "url": "https://ppxu.top/worldcup/llms.txt",
      "method": "GET",
      "format": "text/plain",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release when site structure changes.",
      "useFor": [
        "AI crawler orientation",
        "data policy explanation",
        "canonical module and endpoint discovery"
      ]
    },
    {
      "id": "sitemap",
      "title": "Static SEO sitemap",
      "url": "https://ppxu.top/worldcup/sitemap.xml",
      "method": "GET",
      "format": "application/xml",
      "containsPersonalData": false,
      "cachePolicy": "Network-first for PWA data cache; public static file on ppxu.top/worldcup.",
      "updateCadence": "Every release and live-data SEO refresh.",
      "useFor": [
        "search engine discovery",
        "canonical static pages",
        "long-tail team, match, player, venue and group URLs"
      ]
    }
  ],
  "examples": [
    {
      "label": "Fetch current live data",
      "command": "curl -fsSL https://ppxu.top/worldcup/live-data.json"
    },
    {
      "label": "Subscribe to public updates",
      "command": "https://ppxu.top/worldcup/worldcup-feed.xml"
    },
    {
      "label": "Open the machine-readable catalog",
      "command": "curl -fsSL https://ppxu.top/worldcup/api-catalog.json"
    }
  ]
}
