{
  "title": "Wikipedia Topic Attention Monitor",
  "type": "object",
  "schemaVersion": 1,
  "description": "Compare adjacent seven-day windows of official user-classified pageviews. Exact article titles or article URLs; no credentials. Missing dates are reported rather than assumed zero.",
  "properties": {
    "articles": {
      "title": "Wikipedia articles",
      "type": "array",
      "editor": "stringList",
      "description": "1-10 exact titles or HTTPS article URLs on the selected project. Omitted or empty uses OpenAI, YouTube and TikTok. Spaces become underscores; spelling and title case remain exact. URL fragments are ignored. Redirects, page moves and alternate titles are not merged.",
      "prefill": [
        "OpenAI",
        "YouTube",
        "TikTok"
      ],
      "maxItems": 10
    },
    "project": {
      "title": "Wikipedia project",
      "type": "string",
      "editor": "textfield",
      "description": "One explicit Wikipedia hostname for all articles, for example en.wikipedia.org or de.wikipedia.org. URLs must match it. Only the fixed Wikimedia Analytics API host is contacted.",
      "default": "en.wikipedia.org",
      "sectionCaption": "Dates and project"
    },
    "endDate": {
      "title": "Last day (UTC)",
      "type": "string",
      "editor": "textfield",
      "description": "Optional YYYY-MM-DD, inclusive. Omitted uses three days before today in UTC to allow publication delay. Must precede today and leave a full 14-day range since 2015-07-01. Current window ends here; the prior window is the preceding seven days."
    },
    "comparePrevious": {
      "title": "Compare saved observations",
      "type": "boolean",
      "description": "Use a named store to compare complete observations with the last confirmed saved row. First comparison establishes a baseline. This is separate from the adjacent-week calculation, which works on the first run. Use one writer per scope.",
      "default": false,
      "sectionCaption": "Saved observation history"
    },
    "onlyChanges": {
      "title": "Save only changed observations",
      "type": "boolean",
      "description": "Implies comparison. A first run saves initial rows; unchanged repeats can correctly save zero. Incomplete source windows never advance history.",
      "default": false
    },
    "snapshotName": {
      "title": "History name",
      "type": "string",
      "editor": "textfield",
      "description": "1-80 letters, numbers, underscores or hyphens. History also includes project, sorted titles and fixed-end-date or rolling mode. New input scope starts a separate baseline.",
      "default": "default"
    },
    "maxResults": {
      "title": "Maximum article observations",
      "type": "integer",
      "description": "1-10 confirmed saved article rows. A row includes its 14-day series. Unchanged skipped rows and diagnostics are not dataset results. A smaller cap can leave later articles unprocessed.",
      "default": 10,
      "minimum": 1,
      "maximum": 10,
      "sectionCaption": "Run limits"
    },
    "maxRunSeconds": {
      "title": "Maximum run seconds",
      "type": "integer",
      "description": "30-300 seconds, also shortened to 25 seconds before the platform timeout. Collection reserves five additional seconds for output. Sequential requests are capped at 15 seconds and 256 KiB, with at most one transient retry.",
      "default": 120,
      "minimum": 30,
      "maximum": 300
    }
  }
}
