{
  "title": "Companies House Filing Monitor - UK Company Changes",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "companyNumbers": {
      "title": "UK company numbers",
      "type": "array",
      "editor": "stringList",
      "description": "Explicit watchlist of at most 20 Companies House numbers, including leading zeros or a two-letter prefix. Empty input uses Tesco 00445790. No bulk company discovery.",
      "prefill": [
        "00445790"
      ],
      "sectionCaption": "1 · Choose a small company watchlist",
      "sectionDescription": "Explicit company numbers only; no company search or bulk discovery."
    },
    "filingTypes": {
      "title": "Filing type codes",
      "type": "array",
      "editor": "stringList",
      "description": "Optional exact published codes, such as AA, CS01 or SH03. Match is case insensitive; multiple codes are ORed.",
      "prefill": [],
      "sectionCaption": "2 · Select filing types and page window",
      "sectionDescription": "Date and type filters inspect only the selected source pages."
    },
    "filedFrom": {
      "title": "Filed on or after",
      "type": "string",
      "editor": "textfield",
      "description": "Optional inclusive YYYY-MM-DD bound on the date filed at Companies House, not the effective date mentioned in a document."
    },
    "filedTo": {
      "title": "Filed on or before",
      "type": "string",
      "editor": "textfield",
      "description": "Optional inclusive YYYY-MM-DD filed-date upper bound. Only the selected source pages are inspected."
    },
    "maxSourcePages": {
      "title": "Maximum pages per company",
      "type": "integer",
      "description": "Read 1–3 official filing-history pages per company. The chosen window is validated before output; additional older pages are not inferred or searched.",
      "default": 1,
      "minimum": 1,
      "maximum": 3
    },
    "maxResults": {
      "title": "Maximum saved filings",
      "type": "integer",
      "description": "Upper bound on paid saved rows. Unchanged observations skipped by onlyChanges do not consume this limit.",
      "default": 5,
      "minimum": 1,
      "maximum": 1000
    },
    "comparePrevious": {
      "title": "Compare with saved observations",
      "type": "boolean",
      "description": "Compare within this exact configured watchlist/scope. The first run reports new observations; history advances only after confirmed saved output.",
      "default": false,
      "sectionCaption": "3 · Optional saved filing comparisons",
      "sectionDescription": "Only saved rows advance history; unchanged repeats can correctly have zero rows."
    },
    "onlyChanges": {
      "title": "Only new or changed observations",
      "type": "boolean",
      "description": "Enables comparison and skips unchanged observations. First observations are emitted. A valid no-change run has zero results and a warning.",
      "default": false
    },
    "snapshotName": {
      "title": "Snapshot name",
      "type": "string",
      "editor": "textfield",
      "description": "1–80 letters, numbers, underscores or hyphens. Use one writer per name/scope. Concurrent modification is checked before saving, but the store is not an atomic lock.",
      "default": "default"
    },
    "maxRunSeconds": {
      "title": "Run time budget (seconds)",
      "type": "integer",
      "description": "Own wall-clock deadline, also bounded by the platform deadline with a 25-second safety reserve. Network requests and retry delays stay within it.",
      "default": 240,
      "minimum": 30,
      "maximum": 900,
      "sectionCaption": "4 · Run budget",
      "sectionDescription": "Source failures and deadline stops remain visible in SUMMARY."
    }
  },
  "required": [],
  "description": "Choose public company numbers and a bounded filing-list window, with optional saved comparisons. Results provide filing metadata and official document links; documents are not downloaded or financially assessed."
}
