{
  "title": "Wikimedia Media Monitor - Image Discovery & License Metadata",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "queries": {
      "title": "Media searches",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": [
        "solar panels"
      ],
      "description": "Up to ten values. Blank uses solar panels."
    },
    "keywords": {
      "title": "Filter returned titles",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "Optional case-insensitive OR filter on returned titles within the requested source window. This does not expand source coverage."
    },
    "maxResults": {
      "title": "Maximum saved observations",
      "type": "integer",
      "default": 5,
      "minimum": 1,
      "maximum": 500,
      "description": "Global saved-row cap across this run. Does not promise complete source coverage."
    },
    "itemsPerQuery": {
      "title": "Results requested per query",
      "type": "integer",
      "default": 5,
      "minimum": 1,
      "maximum": 50,
      "description": "One source page per input. No pagination or full search coverage."
    },
    "comparePrevious": {
      "title": "Compare with saved observations",
      "type": "boolean",
      "default": false,
      "description": "First comparison run establishes a baseline. Reuse the same inputs and snapshot name. One writer per snapshot."
    },
    "onlyChanges": {
      "title": "Save only new or changed observations",
      "type": "boolean",
      "default": false,
      "description": "Enables comparison. An unchanged run can correctly return zero rows."
    },
    "snapshotName": {
      "title": "Snapshot name",
      "type": "string",
      "editor": "textfield",
      "default": "default",
      "description": "1–80 letters, numbers, underscores or hyphens. Use a distinct name for independent workflows."
    },
    "maxRunSeconds": {
      "title": "Run time budget (seconds)",
      "type": "integer",
      "default": 60,
      "minimum": 30,
      "maximum": 180,
      "description": "Requests share the remaining time budget. The platform timeout may stop work earlier."
    }
  }
}
