{
  "title": "Enterprise HDD & SSD Price, Stock & Condition Monitor",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "productUrls": {
      "title": "Exact product URLs",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "Up to 10 plain HTTPS ServerPartDeals product URLs. No login, query parameters or custom configurator."
    },
    "collectionUrls": {
      "title": "Public collection URLs",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": [
        "https://serverpartdeals.com/collections/recertified-seagate-exos"
      ],
      "description": "Up to 3 plain public collection URLs. When both lists are empty, use the standard collection. Only the first selected window is observed; this is not a whole-catalog crawl."
    },
    "productsPerSource": {
      "title": "Products in each selected source window",
      "type": "integer",
      "default": 5,
      "minimum": 1,
      "maximum": 20,
      "description": "Read at most this many products from each collection. Every variant is a separate output row, so set maxResults high enough for the selected products."
    },
    "onlyAvailable": {
      "title": "Only available offers",
      "type": "boolean",
      "default": false,
      "description": "Filter source-reported available offers after selecting the bounded source window. Availability is not a reservation or checkout guarantee."
    },
    "maxResults": {
      "title": "Maximum saved records",
      "type": "integer",
      "default": 5,
      "minimum": 1,
      "maximum": 100,
      "description": "Maximum saved rows. A cap inside the selected window produces partial coverage and does not advance comparison history."
    },
    "comparePrevious": {
      "title": "Compare with previous complete run",
      "type": "boolean",
      "default": false,
      "description": "Store source observations only after the entire selected window succeeds. New, changed and unchanged records include previous values. Missing records are never inferred closed or deleted."
    },
    "onlyChanges": {
      "title": "Save only new or changed records",
      "type": "boolean",
      "default": false,
      "description": "Enables comparison. Unchanged repeats can correctly save zero rows and incur no dataset-item charges."
    },
    "snapshotName": {
      "title": "Comparison snapshot",
      "type": "string",
      "editor": "textfield",
      "default": "default",
      "description": "1-80 letters, numbers, underscores or hyphens. Separate history for the source list, selected window and filters. Use a new name for an independent workflow."
    },
    "maxRunSeconds": {
      "title": "Run budget in seconds",
      "type": "integer",
      "default": 90,
      "minimum": 30,
      "maximum": 120,
      "description": "Total runtime budget, including source requests and output. The Actor stops before the budget with a truthful partial summary."
    }
  }
}
