{
  "title": "Wayback Archive History - Capture Metadata & Changes",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "urls": {
      "title": "Exact URLs to inspect",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": [
        "https://example.com/"
      ],
      "description": "Up to five public HTTP(S) URLs. Empty uses example.com. Exact URL queries only; no wildcards, credentials or private network addresses."
    },
    "capturesPerUrl": {
      "title": "Capture limit per URL",
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 3,
      "description": "Fast latest CDX metadata, up to this many captures. The source can return fewer; this is not exhaustive archive enumeration."
    },
    "fromDate": {
      "title": "Earliest capture date",
      "type": "string",
      "editor": "textfield",
      "description": "Optional real YYYY-MM-DD UTC date, inclusive."
    },
    "toDate": {
      "title": "Latest capture date",
      "type": "string",
      "editor": "textfield",
      "description": "Optional real YYYY-MM-DD UTC date, inclusive."
    },
    "maxResults": {
      "title": "Total saved capture cap",
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 15,
      "description": "Maximum rows across URLs. A cap that leaves selected observations unread prevents history updates."
    },
    "comparePrevious": {
      "title": "Compare saved archive observations",
      "type": "boolean",
      "default": false,
      "description": "Compare capture metadata with the last complete run for this exact URL/date/window scope. Missing captures are not removals."
    },
    "onlyChanges": {
      "title": "Save only new or changed observations",
      "type": "boolean",
      "default": false,
      "description": "Save only newly observed or changed capture metadata. Enables comparison; a successful unchanged run may save zero rows."
    },
    "snapshotName": {
      "title": "Snapshot name",
      "type": "string",
      "editor": "textfield",
      "default": "default",
      "description": "1–80 letters, numbers, underscores or hyphens. Reuse for the same watchlist; choose a new name for independent history."
    },
    "maxRunSeconds": {
      "title": "Run budget (seconds)",
      "type": "integer",
      "default": 90,
      "minimum": 30,
      "maximum": 120,
      "description": "Shared deadline for all source requests. Stops safely within this budget or the platform timeout, whichever is earlier."
    }
  }
}
