{
  "$schema": "../_schema.json",
  "format": "xlsx",
  "element": "slicer",
  "parent": "sheet",
  "operations": {
    "add": true,
    "set": true,
    "get": true,
    "query": true,
    "remove": true
  },
  "paths": {
    "positional": ["/SheetName/slicer[N]"]
  },
  "note": "Slicers require an existing pivot table target. 'field' must match an existing cacheField name in the pivot's cache.",
  "properties": {
    "pivotTable": {
      "type": "string",
      "description": "path or reference to an existing pivot table. Bare names resolve against the host sheet's pivots.",
      "aliases": ["pivot", "source", "tableName"],
      "add": true, "set": true, "get": true,
      "examples": ["--prop pivotTable='/Sheet1/pivottable[1]'", "--prop tableName=Pivot1"],
      "readback": "pivot reference",
      "enforcement": "report"
    },
    "field": {
      "type": "string",
      "description": "pivot field name. Must match an existing cacheField (case-insensitive). Add-time only — Set ignores this key (slicers are anchored to their cache field at creation).",
      "aliases": ["column"],
      "add": true, "set": false, "get": true,
      "examples": ["--prop field=Region", "--prop column=Region"],
      "readback": "field name",
      "enforcement": "report"
    },
    "caption": {
      "type": "string",
      "description": "user-facing caption shown in the slicer header. Defaults to the field name.",
      "add": true, "set": true, "get": true,
      "examples": ["--prop caption='Filter by Region'"],
      "readback": "caption",
      "enforcement": "report"
    },
    "name": {
      "type": "string",
      "description": "slicer name. Sanitized; defaults to 'Slicer_<fieldName>'.",
      "add": true, "set": true, "get": true,
      "examples": ["--prop name=RegionSlicer"],
      "readback": "slicer name",
      "enforcement": "report"
    },
    "rowHeight": {
      "type": "number",
      "description": "row height of each slicer item, in EMU. Default 225425 (~17.5pt).",
      "add": true, "set": true, "get": true,
      "examples": ["--prop rowHeight=250000"],
      "readback": "row height in EMU",
      "enforcement": "report"
    },
    "columnCount": {
      "type": "number",
      "description": "number of columns in the slicer button grid. Range 1..20000.",
      "add": true, "set": true, "get": true,
      "examples": ["--prop columnCount=2"],
      "readback": "number of columns",
      "enforcement": "report"
    },
    "pivotCacheId": {
      "type": "number",
      "description": "extension pivot cache id (x14 cacheField extension). Read-only — auto-assigned at slicer creation.",
      "add": false, "set": false, "get": true,
      "readback": "pivot cache index (read-only)",
      "enforcement": "report"
    },
    "itemCount": {
      "type": "number",
      "description": "total number of items (buttons) in the slicer cache. Read-only — derived from the pivot's shared items.",
      "add": false, "set": false, "get": true,
      "readback": "total slicer item count",
      "enforcement": "report"
    },
    "cache": { "type":"string", "add":false, "set":false, "get":true, "description":"slicer cache name (Slicer @cache attribute).", "readback":"slicer cache name", "enforcement":"report" }
  }
}
