{
  "title": "Eventbrite Event Monitor - Discovery, Dates & Price Changes",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "listingUrls": {
      "title": "Public browse pages",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": [
        "https://www.eventbrite.com/b/online/business/"
      ],
      "description": "Up to3 Eventbrite /b/location/topic/ or /d/location/topic/ URLs without query filters. Reads the visible public links only; no pagination. If both URL lists are empty, uses the online business browse page."
    },
    "eventUrls": {
      "title": "Exact event URLs",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": [],
      "description": "Up to20 public www.eventbrite.com/e/...-tickets-NUMBER URLs. Explicit events take priority over browse discoveries. Common tracking parameters are removed."
    },
    "maxEvents": {
      "title": "Maximum unique events to inspect",
      "type": "integer",
      "default": 3,
      "minimum": 1,
      "maximum": 20,
      "description": "First unique candidates selected, explicit events first. This limits detail reads independently of saved rows; SUMMARY reports candidates outside the selection."
    },
    "maxResults": {
      "title": "Maximum saved events",
      "type": "integer",
      "default": 3,
      "minimum": 1,
      "maximum": 20,
      "description": "Maximum confirmed event dataset rows. A stopped or failed selected-event check does not advance comparison history."
    },
    "comparePrevious": {
      "title": "Compare previous saved observations",
      "type": "boolean",
      "default": false,
      "description": "Compare with the last complete successful observation under the same input selection and snapshot name. First comparison establishes a baseline."
    },
    "onlyChanges": {
      "title": "Save only new or changed observations",
      "type": "boolean",
      "default": false,
      "description": "Enables comparison. Unchanged observations are skipped and incur no result event; an unchanged run may correctly produce zero rows."
    },
    "snapshotName": {
      "title": "Snapshot name",
      "type": "string",
      "editor": "textfield",
      "default": "default",
      "description": "Use 1-80 letters, numbers, underscores or hyphens. One active writer per watchlist and snapshot; new names create independent history."
    },
    "maxRunSeconds": {
      "title": "Run budget in seconds",
      "type": "integer",
      "default": 90,
      "minimum": 30,
      "maximum": 180,
      "description": "Shared deadline for all source reads and output. Failed, partial or spending-limited runs do not advance comparison history."
    }
  }
}
