{
  "$ref": "#/definitions/InteractiveDocumentWithSchema",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "ATag": {
      "additionalProperties": false,
      "properties": {
        "a": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "href": {
                  "type": "string"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "rel": {
                  "type": "string"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "target": {
                  "type": "string"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "a"
      ],
      "type": "object"
    },
    "AggregateOp": {
      "enum": [
        "argmax",
        "argmin",
        "average",
        "count",
        "distinct",
        "max",
        "mean",
        "median",
        "min",
        "missing",
        "product",
        "q1",
        "q3",
        "ci0",
        "ci1",
        "stderr",
        "stdev",
        "stdevp",
        "sum",
        "valid",
        "values",
        "variance",
        "variancep",
        "exponential",
        "exponentialb"
      ],
      "type": "string"
    },
    "AggregateTransform": {
      "additionalProperties": false,
      "properties": {
        "aggregate_params": {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        "as": {
          "items": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": "array"
        },
        "cross": {
          "type": "boolean"
        },
        "drop": {
          "type": "boolean"
        },
        "fields": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/definitions/FieldRef"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": "array"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "ops": {
          "items": {
            "$ref": "#/definitions/AggregateOp"
          },
          "type": "array"
        },
        "signal": {
          "type": "string"
        },
        "type": {
          "const": "aggregate",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "AreaLabelMethod": {
      "enum": [
        "naive",
        "reduced-search",
        "floodfill"
      ],
      "type": "string"
    },
    "ArticleTag": {
      "additionalProperties": false,
      "properties": {
        "article": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "article"
      ],
      "type": "object"
    },
    "AttributeValue": {
      "anyOf": [
        {
          "$ref": "#/definitions/InterpolatedString"
        },
        {
          "$ref": "#/definitions/ConditionalValue"
        }
      ]
    },
    "BinTransform": {
      "additionalProperties": false,
      "properties": {
        "anchor": {
          "type": "number"
        },
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "base": {
          "description": "The number base to use for automatic bin determination (default is base 10).\n\n__Default value:__ `10`",
          "type": "number"
        },
        "divide": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E",
          "description": "Scale factors indicating allowable subdivisions. The default value is [5, 2], which indicates that for base 10 numbers (the default base), the method may consider dividing bin sizes by 5 and/or 2. For example, for an initial step size of 10, the method can check if bin sizes of 2 (= 10/5), 5 (= 10/2), or 1 (= 10/(5*2)) might also satisfy the given constraints.\n\n__Default value:__ `[5, 2]`",
          "minItems": 1
        },
        "extent": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "interval": {
          "type": "boolean"
        },
        "maxbins": {
          "description": "Maximum number of bins.\n\n__Default value:__ `6` for `row`, `column` and `shape` channels; `10` for other channels",
          "minimum": 2,
          "type": "number"
        },
        "minstep": {
          "description": "A minimum allowable step size (particularly useful for integer values).",
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "nice": {
          "description": "If true (the default), attempts to make the bin boundaries use human-friendly boundaries, such as multiples of ten.",
          "type": "boolean"
        },
        "signal": {
          "$ref": "#/definitions/SignalName"
        },
        "span": {
          "type": "number"
        },
        "step": {
          "description": "An exact step size to use between bins.\n\n__Note:__ If provided, options such as maxbins will be ignored.",
          "type": "number"
        },
        "steps": {
          "description": "An array of allowable step sizes to choose from.",
          "items": {
            "type": "number"
          },
          "minItems": 1,
          "type": "array"
        },
        "type": {
          "const": "bin",
          "type": "string"
        }
      },
      "required": [
        "type",
        "field",
        "extent"
      ],
      "type": "object"
    },
    "BindPath": {
      "type": "string"
    },
    "BlockquoteTag": {
      "additionalProperties": false,
      "properties": {
        "blockquote": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "cite": {
                  "type": "string"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "blockquote"
      ],
      "type": "object"
    },
    "BrTag": {
      "additionalProperties": false,
      "properties": {
        "br": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "br"
      ],
      "type": "object"
    },
    "CSSProperties": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object"
    },
    "Calculation": {
      "anyOf": [
        {
          "$ref": "#/definitions/ScalarCalculation"
        },
        {
          "$ref": "#/definitions/DataFrameCalculation"
        }
      ]
    },
    "ChartElement": {
      "additionalProperties": false,
      "description": "Chart use for visualizations",
      "properties": {
        "chartKey": {
          "description": "key of the chart spec in the page.resources.charts",
          "type": "string"
        },
        "type": {
          "const": "chart",
          "type": "string"
        }
      },
      "required": [
        "type",
        "chartKey"
      ],
      "type": "object"
    },
    "CheckboxElement": {
      "additionalProperties": false,
      "description": "Checkbox use for boolean values",
      "properties": {
        "label": {
          "description": "optional label if the variableId is not descriptive enough",
          "type": "string"
        },
        "type": {
          "const": "checkbox",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "type",
        "variableId"
      ],
      "type": "object"
    },
    "CodeTag": {
      "additionalProperties": false,
      "properties": {
        "code": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "code"
      ],
      "type": "object"
    },
    "CollectTransform": {
      "additionalProperties": false,
      "properties": {
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "collect",
          "type": "string"
        }
      },
      "required": [
        "type",
        "sort"
      ],
      "type": "object"
    },
    "CommentTag": {
      "additionalProperties": false,
      "properties": {
        "$comment": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "$comment"
      ],
      "type": "object"
    },
    "Compare": {
      "anyOf": [
        {
          "additionalProperties": false,
          "properties": {
            "field": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/definitions/ExprRef"
                }
              ]
            },
            "order": {
              "$ref": "#/definitions/SortOrder"
            }
          },
          "required": [
            "field"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "field": {
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/ExprRef"
                  }
                ]
              },
              "type": "array"
            },
            "order": {
              "items": {
                "$ref": "#/definitions/SortOrder"
              },
              "type": "array"
            }
          },
          "required": [
            "field"
          ],
          "type": "object"
        }
      ]
    },
    "ConditionalBase<(InterpolatedString|TemplateObject)>": {
      "additionalProperties": false,
      "properties": {
        "$<": {
          "type": "number"
        },
        "$<=": {
          "type": "number"
        },
        "$=": {
          "$ref": "#/definitions/PrimitiveValue"
        },
        "$>": {
          "type": "number"
        },
        "$>=": {
          "type": "number"
        },
        "$check": {
          "$ref": "#/definitions/BindPath"
        },
        "$else": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "$ref": "#/definitions/TemplateObject"
            }
          ]
        },
        "$in": {
          "items": {
            "$ref": "#/definitions/PrimitiveValue"
          },
          "type": "array"
        },
        "$join": {
          "enum": [
            "AND",
            "OR"
          ],
          "type": "string"
        },
        "$not": {
          "type": "boolean"
        },
        "$then": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "$ref": "#/definitions/TemplateObject"
            }
          ]
        }
      },
      "required": [
        "$check",
        "$then"
      ],
      "type": "object"
    },
    "ConditionalBase<CSSProperties>": {
      "additionalProperties": false,
      "properties": {
        "$<": {
          "type": "number"
        },
        "$<=": {
          "type": "number"
        },
        "$=": {
          "$ref": "#/definitions/PrimitiveValue"
        },
        "$>": {
          "type": "number"
        },
        "$>=": {
          "type": "number"
        },
        "$check": {
          "$ref": "#/definitions/BindPath"
        },
        "$else": {
          "$ref": "#/definitions/CSSProperties"
        },
        "$in": {
          "items": {
            "$ref": "#/definitions/PrimitiveValue"
          },
          "type": "array"
        },
        "$join": {
          "enum": [
            "AND",
            "OR"
          ],
          "type": "string"
        },
        "$not": {
          "type": "boolean"
        },
        "$then": {
          "$ref": "#/definitions/CSSProperties"
        }
      },
      "required": [
        "$check",
        "$then"
      ],
      "type": "object"
    },
    "ConditionalBase<InterpolatedString>": {
      "additionalProperties": false,
      "properties": {
        "$<": {
          "type": "number"
        },
        "$<=": {
          "type": "number"
        },
        "$=": {
          "$ref": "#/definitions/PrimitiveValue"
        },
        "$>": {
          "type": "number"
        },
        "$>=": {
          "type": "number"
        },
        "$check": {
          "$ref": "#/definitions/BindPath"
        },
        "$else": {
          "$ref": "#/definitions/InterpolatedString"
        },
        "$in": {
          "items": {
            "$ref": "#/definitions/PrimitiveValue"
          },
          "type": "array"
        },
        "$join": {
          "enum": [
            "AND",
            "OR"
          ],
          "type": "string"
        },
        "$not": {
          "type": "boolean"
        },
        "$then": {
          "$ref": "#/definitions/InterpolatedString"
        }
      },
      "required": [
        "$check",
        "$then"
      ],
      "type": "object"
    },
    "ConditionalValue": {
      "$ref": "#/definitions/ConditionalBase%3CInterpolatedString%3E"
    },
    "ConditionalValueOrTemplate": {
      "$ref": "#/definitions/ConditionalBase%3C(InterpolatedString%7CTemplateObject)%3E"
    },
    "ContourTransform": {
      "anyOf": [
        {
          "additionalProperties": false,
          "properties": {
            "bandwidth": {
              "type": "number"
            },
            "cellSize": {
              "type": "number"
            },
            "count": {
              "type": "number"
            },
            "nice": {
              "type": "number"
            },
            "signal": {
              "type": "string"
            },
            "size": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "type": {
              "const": "contour",
              "type": "string"
            },
            "values": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "x": {
              "$ref": "#/definitions/FieldRef"
            },
            "y": {
              "$ref": "#/definitions/FieldRef"
            }
          },
          "required": [
            "size",
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "bandwidth": {
              "type": "number"
            },
            "cellSize": {
              "type": "number"
            },
            "signal": {
              "type": "string"
            },
            "size": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "thresholds": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "type": {
              "const": "contour",
              "type": "string"
            },
            "values": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "x": {
              "$ref": "#/definitions/FieldRef"
            },
            "y": {
              "$ref": "#/definitions/FieldRef"
            }
          },
          "required": [
            "size",
            "type"
          ],
          "type": "object"
        }
      ]
    },
    "CountPatternTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "case": {
          "type": "string"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "pattern": {
          "type": "string"
        },
        "stopwords": {
          "type": "string"
        },
        "type": {
          "const": "countpattern",
          "type": "string"
        }
      },
      "required": [
        "type",
        "field"
      ],
      "type": "object"
    },
    "CrossFilterTransform": {
      "additionalProperties": false,
      "properties": {
        "fields": {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/definitions/TransformField"
              }
            ]
          },
          "type": "array"
        },
        "query": {
          "items": {
            "$ref": "#/definitions/Vector2%3Cnumber%3E"
          },
          "type": "array"
        },
        "signal": {
          "$ref": "#/definitions/SignalName"
        },
        "type": {
          "const": "crossfilter",
          "type": "string"
        }
      },
      "required": [
        "type",
        "fields",
        "query"
      ],
      "type": "object"
    },
    "CrossTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "filter": {
          "$ref": "#/definitions/ExprString"
        },
        "type": {
          "const": "cross",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "DataFrameCalculation": {
      "additionalProperties": false,
      "description": "DataFrame calculation for object arrays. Not for primitive/scalar values.",
      "properties": {
        "dataFrameTransformations": {
          "items": {
            "$ref": "#/definitions/Transforms"
          },
          "type": "array"
        },
        "dataSourceNames": {
          "description": "The upstream object array source dataSourceName(s) the dataFrameTransformations depends on.",
          "items": {
            "$ref": "#/definitions/VariableID"
          },
          "type": "array"
        }
      },
      "required": [
        "dataSourceNames",
        "dataFrameTransformations"
      ],
      "type": "object"
    },
    "DataLoader": {
      "anyOf": [
        {
          "$ref": "#/definitions/DataSource"
        },
        {
          "$ref": "#/definitions/DataLoaderBySpec"
        }
      ]
    },
    "DataLoaderBySpec": {
      "additionalProperties": false,
      "description": "LLM Should not use this type",
      "properties": {
        "spec": {
          "description": "Vega Specification - Not Vega-Lite",
          "type": "object"
        },
        "type": {
          "const": "spec",
          "type": "string"
        }
      },
      "required": [
        "type",
        "spec"
      ],
      "type": "object"
    },
    "DataName": {
      "type": "string"
    },
    "DataSource": {
      "anyOf": [
        {
          "additionalProperties": false,
          "properties": {
            "content": {
              "anyOf": [
                {
                  "items": {
                    "type": "object"
                  },
                  "type": "array"
                },
                {
                  "type": "string"
                },
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              ],
              "description": "object array or a string or string array of CSV / TSV / DSV"
            },
            "dataFrameTransformations": {
              "items": {
                "$ref": "#/definitions/Transforms"
              },
              "type": "array"
            },
            "dataSourceName": {
              "$ref": "#/definitions/VariableID",
              "description": "name of the data source, used to reference it in the UI, has same constraints as VariableID"
            },
            "delimiter": {
              "description": "only if format = dsv",
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/DataSourceBaseFormat",
              "description": "optional, default is 'json'"
            },
            "type": {
              "const": "inline",
              "type": "string"
            }
          },
          "required": [
            "content",
            "dataSourceName",
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "content": {
              "type": "string"
            },
            "dataFrameTransformations": {
              "items": {
                "$ref": "#/definitions/Transforms"
              },
              "type": "array"
            },
            "dataSourceName": {
              "$ref": "#/definitions/VariableID",
              "description": "name of the data source, used to reference it in the UI, has same constraints as VariableID"
            },
            "delimiter": {
              "description": "only if format = dsv",
              "type": "string"
            },
            "filename": {
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/DataSourceBaseFormat",
              "description": "optional, default is 'json'"
            },
            "type": {
              "const": "file",
              "type": "string"
            }
          },
          "required": [
            "content",
            "dataSourceName",
            "filename",
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "dataFrameTransformations": {
              "items": {
                "$ref": "#/definitions/Transforms"
              },
              "type": "array"
            },
            "dataSourceName": {
              "$ref": "#/definitions/VariableID",
              "description": "name of the data source, used to reference it in the UI, has same constraints as VariableID"
            },
            "delimiter": {
              "description": "only if format = dsv",
              "type": "string"
            },
            "docString": {
              "description": "Assistant should not populate this.",
              "type": "string"
            },
            "format": {
              "$ref": "#/definitions/DataSourceBaseFormat",
              "description": "optional, default is 'json'"
            },
            "returnType": {
              "$ref": "#/definitions/ReturnType"
            },
            "type": {
              "const": "url",
              "type": "string"
            },
            "url": {
              "$ref": "#/definitions/TemplatedUrl"
            }
          },
          "required": [
            "dataSourceName",
            "type",
            "url"
          ],
          "type": "object"
        }
      ],
      "description": "Union type for DataSource"
    },
    "DataSourceBaseFormat": {
      "enum": [
        "csv",
        "json",
        "tsv",
        "dsv"
      ],
      "type": "string"
    },
    "DensityMethod": {
      "enum": [
        "pdf",
        "cdf"
      ],
      "type": "string"
    },
    "DensityTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "distribution": {
          "$ref": "#/definitions/Distribution"
        },
        "extent": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "maxsteps": {
          "type": "number"
        },
        "method": {
          "$ref": "#/definitions/DensityMethod"
        },
        "minsteps": {
          "type": "number"
        },
        "steps": {
          "type": "number"
        },
        "type": {
          "const": "density",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "Distribution": {
      "anyOf": [
        {
          "$ref": "#/definitions/DistributionNormal"
        },
        {
          "$ref": "#/definitions/DistributionLogNormal"
        },
        {
          "$ref": "#/definitions/DistributionUniform"
        },
        {
          "$ref": "#/definitions/DistributionKDE"
        },
        {
          "$ref": "#/definitions/DistributionMixture"
        }
      ]
    },
    "DistributionKDE": {
      "additionalProperties": false,
      "properties": {
        "bandwidth": {
          "type": "number"
        },
        "field": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "from": {
          "$ref": "#/definitions/DataName"
        },
        "function": {
          "const": "kde",
          "type": "string"
        }
      },
      "required": [
        "function",
        "field"
      ],
      "type": "object"
    },
    "DistributionLogNormal": {
      "additionalProperties": false,
      "properties": {
        "function": {
          "const": "lognormal",
          "type": "string"
        },
        "mean": {
          "type": "number"
        },
        "stdev": {
          "type": "number"
        }
      },
      "required": [
        "function"
      ],
      "type": "object"
    },
    "DistributionMixture": {
      "additionalProperties": false,
      "properties": {
        "distributions": {
          "items": {
            "$ref": "#/definitions/Distribution"
          },
          "type": "array"
        },
        "field": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "function": {
          "const": "mixture",
          "type": "string"
        },
        "weights": {
          "items": {
            "type": "number"
          },
          "type": "array"
        }
      },
      "required": [
        "function",
        "field"
      ],
      "type": "object"
    },
    "DistributionNormal": {
      "additionalProperties": false,
      "properties": {
        "function": {
          "const": "normal",
          "type": "string"
        },
        "mean": {
          "type": "number"
        },
        "stdev": {
          "type": "number"
        }
      },
      "required": [
        "function"
      ],
      "type": "object"
    },
    "DistributionUniform": {
      "additionalProperties": false,
      "properties": {
        "function": {
          "const": "uniform",
          "type": "string"
        },
        "max": {
          "type": "number"
        },
        "min": {
          "type": "number"
        }
      },
      "required": [
        "function"
      ],
      "type": "object"
    },
    "DivTag": {
      "additionalProperties": false,
      "properties": {
        "div": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "div"
      ],
      "type": "object"
    },
    "DotBinTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "signal": {
          "$ref": "#/definitions/SignalName"
        },
        "smooth": {
          "type": "boolean"
        },
        "step": {
          "type": "number"
        },
        "type": {
          "const": "dotbin",
          "type": "string"
        }
      },
      "required": [
        "type",
        "field"
      ],
      "type": "object"
    },
    "DropdownElement": {
      "additionalProperties": false,
      "properties": {
        "dynamicOptions": {
          "$ref": "#/definitions/DynamicDropdownOptions"
        },
        "label": {
          "description": "optional label if the variableId is not descriptive enough",
          "type": "string"
        },
        "multiple": {
          "description": "allow multiple selections",
          "type": "boolean"
        },
        "options": {
          "description": "one of either options or dynamicOptions must be set",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "size": {
          "description": "number of options to show at once",
          "type": "number"
        },
        "type": {
          "const": "dropdown",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "type",
        "variableId"
      ],
      "type": "object"
    },
    "DynamicDropdownOptions": {
      "additionalProperties": false,
      "description": "Dropdown use for selecting from a list of options",
      "properties": {
        "dataSourceName": {
          "$ref": "#/definitions/VariableID",
          "description": "name of the data source to use for data"
        },
        "fieldName": {
          "description": "name of the field to use for options",
          "type": "string"
        }
      },
      "required": [
        "dataSourceName",
        "fieldName"
      ],
      "type": "object"
    },
    "ElementGroup": {
      "additionalProperties": false,
      "properties": {
        "elements": {
          "items": {
            "$ref": "#/definitions/PageElement"
          },
          "type": "array"
        },
        "groupId": {
          "type": "string"
        }
      },
      "required": [
        "groupId",
        "elements"
      ],
      "type": "object"
    },
    "EmTag": {
      "additionalProperties": false,
      "properties": {
        "em": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "em"
      ],
      "type": "object"
    },
    "Expr": {
      "type": "string"
    },
    "ExprRef": {
      "additionalProperties": false,
      "properties": {
        "expr": {
          "$ref": "#/definitions/Expr"
        }
      },
      "required": [
        "expr"
      ],
      "type": "object"
    },
    "ExprString": {
      "type": "string"
    },
    "ExtentTransform": {
      "additionalProperties": false,
      "properties": {
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "signal": {
          "type": "string"
        },
        "type": {
          "const": "extent",
          "type": "string"
        }
      },
      "required": [
        "type",
        "field"
      ],
      "type": "object"
    },
    "FieldParam": {
      "additionalProperties": false,
      "properties": {
        "field": {
          "type": "string"
        }
      },
      "required": [
        "field"
      ],
      "type": "object"
    },
    "FieldRef": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/definitions/TransformField"
        }
      ]
    },
    "FilterTransform": {
      "additionalProperties": false,
      "properties": {
        "expr": {
          "$ref": "#/definitions/ExprString"
        },
        "type": {
          "const": "filter",
          "type": "string"
        }
      },
      "required": [
        "type",
        "expr"
      ],
      "type": "object"
    },
    "FlattenTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "fields": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "index": {
          "type": "string"
        },
        "type": {
          "const": "flatten",
          "type": "string"
        }
      },
      "required": [
        "type",
        "fields"
      ],
      "type": "object"
    },
    "FoldTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "fields": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "type": {
          "const": "fold",
          "type": "string"
        }
      },
      "required": [
        "type",
        "fields"
      ],
      "type": "object"
    },
    "FontStyle": {
      "type": "string"
    },
    "FontWeight": {
      "enum": [
        "normal",
        "bold",
        "lighter",
        "bolder",
        100,
        200,
        300,
        400,
        500,
        600,
        700,
        800,
        900
      ],
      "type": [
        "string",
        "number"
      ]
    },
    "FooterTag": {
      "additionalProperties": false,
      "properties": {
        "footer": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "footer"
      ],
      "type": "object"
    },
    "Force": {
      "anyOf": [
        {
          "$ref": "#/definitions/ForceCenter"
        },
        {
          "$ref": "#/definitions/ForceCollide"
        },
        {
          "$ref": "#/definitions/ForceLink"
        },
        {
          "$ref": "#/definitions/ForceNBody"
        },
        {
          "$ref": "#/definitions/ForceX"
        },
        {
          "$ref": "#/definitions/ForceY"
        }
      ]
    },
    "ForceCenter": {
      "additionalProperties": false,
      "properties": {
        "force": {
          "const": "center",
          "type": "string"
        },
        "x": {
          "type": "number"
        },
        "y": {
          "type": "number"
        }
      },
      "required": [
        "force"
      ],
      "type": "object"
    },
    "ForceCollide": {
      "additionalProperties": false,
      "properties": {
        "force": {
          "const": "collide",
          "type": "string"
        },
        "iterations": {
          "type": "number"
        },
        "radius": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/ExprRef"
            }
          ]
        },
        "strength": {
          "type": "number"
        }
      },
      "required": [
        "force"
      ],
      "type": "object"
    },
    "ForceLink": {
      "additionalProperties": false,
      "properties": {
        "distance": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/ExprRef"
            }
          ]
        },
        "force": {
          "const": "link",
          "type": "string"
        },
        "id": {
          "$ref": "#/definitions/FieldRef"
        },
        "iterations": {
          "type": "number"
        },
        "links": {
          "$ref": "#/definitions/DataName"
        },
        "strength": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/ExprRef"
            }
          ]
        }
      },
      "required": [
        "force"
      ],
      "type": "object"
    },
    "ForceNBody": {
      "additionalProperties": false,
      "properties": {
        "distanceMax": {
          "type": "number"
        },
        "distanceMin": {
          "type": "number"
        },
        "force": {
          "const": "nbody",
          "type": "string"
        },
        "strength": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/ExprRef"
            }
          ]
        },
        "theta": {
          "type": "number"
        }
      },
      "required": [
        "force"
      ],
      "type": "object"
    },
    "ForceTransform": {
      "additionalProperties": false,
      "properties": {
        "alpha": {
          "type": "number"
        },
        "alphaMin": {
          "type": "number"
        },
        "alphaTarget": {
          "type": "number"
        },
        "forces": {
          "items": {
            "$ref": "#/definitions/Force"
          },
          "type": "array"
        },
        "iterations": {
          "type": "number"
        },
        "restart": {
          "type": "boolean"
        },
        "signal": {
          "$ref": "#/definitions/SignalName"
        },
        "static": {
          "type": "boolean"
        },
        "type": {
          "const": "force",
          "type": "string"
        },
        "velocityDecay": {
          "type": "number"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "ForceX": {
      "additionalProperties": false,
      "properties": {
        "force": {
          "const": "x",
          "type": "string"
        },
        "strength": {
          "type": "number"
        },
        "x": {
          "$ref": "#/definitions/FieldRef"
        }
      },
      "required": [
        "force"
      ],
      "type": "object"
    },
    "ForceY": {
      "additionalProperties": false,
      "properties": {
        "force": {
          "const": "y",
          "type": "string"
        },
        "strength": {
          "type": "number"
        },
        "y": {
          "$ref": "#/definitions/FieldRef"
        }
      },
      "required": [
        "force"
      ],
      "type": "object"
    },
    "FormulaTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "expr": {
          "$ref": "#/definitions/ExprString"
        },
        "initonly": {
          "type": "boolean"
        },
        "type": {
          "const": "formula",
          "type": "string"
        }
      },
      "required": [
        "type",
        "expr",
        "as"
      ],
      "type": "object"
    },
    "GeoJSONTransform": {
      "additionalProperties": false,
      "properties": {
        "fields": {
          "$ref": "#/definitions/Vector2%3CFieldRef%3E"
        },
        "geojson": {
          "$ref": "#/definitions/FieldRef"
        },
        "signal": {
          "$ref": "#/definitions/SignalName"
        },
        "type": {
          "const": "geojson",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "GeoPathTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "pointRadius": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/ExprRef"
            }
          ]
        },
        "projection": {
          "$ref": "#/definitions/ProjectionName"
        },
        "type": {
          "const": "geopath",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "GeoPointTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "fields": {
          "$ref": "#/definitions/Vector2%3CFieldRef%3E"
        },
        "projection": {
          "$ref": "#/definitions/ProjectionName"
        },
        "type": {
          "const": "geopoint",
          "type": "string"
        }
      },
      "required": [
        "type",
        "projection",
        "fields"
      ],
      "type": "object"
    },
    "GeoShapeTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "pointRadius": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/ExprRef"
            }
          ]
        },
        "projection": {
          "$ref": "#/definitions/ProjectionName"
        },
        "type": {
          "const": "geoshape",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "GoogleFontsSpec": {
      "additionalProperties": false,
      "properties": {
        "googleFontsUrl": {
          "type": "string"
        },
        "mapping": {
          "additionalProperties": false,
          "properties": {
            "body": {
              "type": "string"
            },
            "code": {
              "type": "string"
            },
            "headings": {
              "type": "string"
            },
            "hero": {
              "type": "string"
            },
            "table": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "sizing": {
          "additionalProperties": false,
          "properties": {
            "body": {
              "type": "number"
            },
            "code": {
              "type": "number"
            },
            "headings": {
              "type": "number"
            },
            "hero": {
              "type": "number"
            },
            "table": {
              "type": "number"
            }
          },
          "type": "object"
        }
      },
      "required": [
        "googleFontsUrl"
      ],
      "type": "object"
    },
    "GraticuleTransform": {
      "additionalProperties": false,
      "properties": {
        "extent": {
          "$ref": "#/definitions/Vector2%3CVector2%3Cnumber%3E%3E"
        },
        "extentMajor": {
          "$ref": "#/definitions/Vector2%3CVector2%3Cnumber%3E%3E"
        },
        "extentMinor": {
          "$ref": "#/definitions/Vector2%3CVector2%3Cnumber%3E%3E"
        },
        "precision": {
          "type": "number"
        },
        "signal": {
          "$ref": "#/definitions/SignalName"
        },
        "step": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "stepMajor": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "stepMinor": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "type": {
          "const": "graticule",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "H1Tag": {
      "additionalProperties": false,
      "properties": {
        "h1": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "h1"
      ],
      "type": "object"
    },
    "H2Tag": {
      "additionalProperties": false,
      "properties": {
        "h2": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "h2"
      ],
      "type": "object"
    },
    "H3Tag": {
      "additionalProperties": false,
      "properties": {
        "h3": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "h3"
      ],
      "type": "object"
    },
    "H4Tag": {
      "additionalProperties": false,
      "properties": {
        "h4": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "h4"
      ],
      "type": "object"
    },
    "H5Tag": {
      "additionalProperties": false,
      "properties": {
        "h5": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "h5"
      ],
      "type": "object"
    },
    "H6Tag": {
      "additionalProperties": false,
      "properties": {
        "h6": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "h6"
      ],
      "type": "object"
    },
    "HeaderTag": {
      "additionalProperties": false,
      "properties": {
        "header": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "header"
      ],
      "type": "object"
    },
    "HeatmapTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "color": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "field": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "resolve": {
          "enum": [
            "independent",
            "shared"
          ],
          "type": "string"
        },
        "type": {
          "const": "heatmap",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "HrTag": {
      "additionalProperties": false,
      "properties": {
        "hr": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "hr"
      ],
      "type": "object"
    },
    "IdentifierTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "type": {
          "const": "identifier",
          "type": "string"
        }
      },
      "required": [
        "type",
        "as"
      ],
      "type": "object"
    },
    "IfTag": {
      "additionalProperties": false,
      "properties": {
        "$if": {
          "$ref": "#/definitions/ConditionalValueOrTemplate"
        }
      },
      "required": [
        "$if"
      ],
      "type": "object"
    },
    "ImageElement": {
      "additionalProperties": false,
      "description": "Image element use for displaying images or server-generated visualizations",
      "properties": {
        "alt": {
          "type": "string"
        },
        "height": {
          "type": "number"
        },
        "type": {
          "const": "image",
          "type": "string"
        },
        "url": {
          "$ref": "#/definitions/TemplatedUrl"
        },
        "width": {
          "type": "number"
        }
      },
      "required": [
        "type",
        "url"
      ],
      "type": "object"
    },
    "ImgTag": {
      "additionalProperties": false,
      "properties": {
        "img": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "alt": {
                  "type": "string"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "height": {
                  "type": "string"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "src": {
                  "type": "string"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "width": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "img"
      ],
      "type": "object"
    },
    "ImputeMethod": {
      "enum": [
        "value",
        "median",
        "max",
        "min",
        "mean"
      ],
      "type": "string"
    },
    "ImputeTransform": {
      "additionalProperties": false,
      "properties": {
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "key": {
          "$ref": "#/definitions/FieldRef"
        },
        "keyvals": {
          "items": {},
          "type": "array"
        },
        "method": {
          "$ref": "#/definitions/ImputeMethod"
        },
        "type": {
          "const": "impute",
          "type": "string"
        },
        "value": {}
      },
      "required": [
        "type",
        "field",
        "key"
      ],
      "type": "object"
    },
    "InteractiveDocumentWithSchema": {
      "additionalProperties": false,
      "description": "JSON Schema version with $schema property for validation",
      "properties": {
        "$schema": {
          "type": "string"
        },
        "dataLoaders": {
          "description": "DataLoaders populate variables for tables and charts Note: 'image' is not a valid type for a variable, do not provide a dataLoader if returnType.type = 'image',  (ImageElements can load images from URLs directly without a DataLoader.)",
          "items": {
            "$ref": "#/definitions/DataLoader"
          },
          "type": "array"
        },
        "groups": {
          "description": "the first groupId should be 'main'",
          "items": {
            "$ref": "#/definitions/ElementGroup"
          },
          "type": "array"
        },
        "notes": {
          "description": "Optional comments from the author",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "resources": {
          "additionalProperties": false,
          "properties": {
            "charts": {
              "additionalProperties": {
                "$ref": "#/definitions/Vega_or_VegaLite_spec"
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "style": {
          "$ref": "#/definitions/PageStyle"
        },
        "title": {
          "type": "string"
        },
        "variables": {
          "items": {
            "$ref": "#/definitions/Variable"
          },
          "type": "array"
        }
      },
      "required": [
        "groups",
        "title"
      ],
      "type": "object"
    },
    "InteractiveElement": {
      "anyOf": [
        {
          "$ref": "#/definitions/ChartElement"
        },
        {
          "$ref": "#/definitions/CheckboxElement"
        },
        {
          "$ref": "#/definitions/DropdownElement"
        },
        {
          "$ref": "#/definitions/ImageElement"
        },
        {
          "$ref": "#/definitions/MermaidElement"
        },
        {
          "$ref": "#/definitions/NumberElement"
        },
        {
          "$ref": "#/definitions/PresetsElement"
        },
        {
          "$ref": "#/definitions/SliderElement"
        },
        {
          "$ref": "#/definitions/TabulatorElement"
        },
        {
          "$ref": "#/definitions/TextboxElement"
        },
        {
          "$ref": "#/definitions/TreebarkElement"
        }
      ],
      "description": "Union type for all possible interactive elements"
    },
    "InterpolatedString": {
      "type": "string"
    },
    "IsocontourTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": [
            "string",
            "null"
          ]
        },
        "field": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "levels": {
          "type": "number"
        },
        "nice": {
          "type": "boolean"
        },
        "resolve": {
          "enum": [
            "shared",
            "independent"
          ],
          "type": "string"
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "smooth": {
          "type": "boolean"
        },
        "thresholds": {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        "translate": {
          "anyOf": [
            {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "type": {
          "const": "isocontour",
          "type": "string"
        },
        "zero": {
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "JoinAggregateTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "items": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": "array"
        },
        "fields": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/definitions/FieldRef"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": "array"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "ops": {
          "items": {
            "$ref": "#/definitions/AggregateOp"
          },
          "type": "array"
        },
        "type": {
          "const": "joinaggregate",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "KDE2DTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "bandwidth": {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        "cellSize": {
          "type": "number"
        },
        "counts": {
          "type": "boolean"
        },
        "groupby": {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/definitions/TransformField"
              }
            ]
          },
          "type": "array"
        },
        "size": {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        "type": {
          "const": "kde2d",
          "type": "string"
        },
        "weight": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "x": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "y": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        }
      },
      "required": [
        "type",
        "size",
        "x",
        "y"
      ],
      "type": "object"
    },
    "KDEResolve": {
      "enum": [
        "shared",
        "independent"
      ],
      "type": "string"
    },
    "KDETransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "bandwidth": {
          "type": "number"
        },
        "counts": {
          "type": "boolean"
        },
        "cumulative": {
          "type": "boolean"
        },
        "extent": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "maxsteps": {
          "type": "number"
        },
        "minsteps": {
          "type": "number"
        },
        "resolve": {
          "$ref": "#/definitions/KDEResolve"
        },
        "steps": {
          "type": "number"
        },
        "type": {
          "const": "kde",
          "type": "string"
        }
      },
      "required": [
        "type",
        "field"
      ],
      "type": "object"
    },
    "LabelAnchor": {
      "enum": [
        "left",
        "right",
        "top",
        "bottom",
        "top-left",
        "top-right",
        "bottom-left",
        "bottom-right",
        "middle"
      ],
      "type": "string"
    },
    "LabelTransform": {
      "additionalProperties": false,
      "properties": {
        "anchor": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/definitions/LabelAnchor"
              },
              "type": "array"
            },
            {
              "$ref": "#/definitions/LabelAnchor"
            }
          ]
        },
        "as": {
          "$ref": "#/definitions/Vector7%3Cstring%3E"
        },
        "avoidBaseMark": {
          "type": "boolean"
        },
        "avoidMarks": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "lineAnchor": {
          "$ref": "#/definitions/LineLabelAnchor"
        },
        "markIndex": {
          "type": "number"
        },
        "method": {
          "$ref": "#/definitions/AreaLabelMethod"
        },
        "offset": {
          "anyOf": [
            {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            {
              "type": "number"
            }
          ]
        },
        "padding": {
          "type": [
            "number",
            "null"
          ]
        },
        "size": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "label",
          "type": "string"
        }
      },
      "required": [
        "type",
        "size"
      ],
      "type": "object"
    },
    "LiTag": {
      "additionalProperties": false,
      "properties": {
        "li": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "li"
      ],
      "type": "object"
    },
    "LineLabelAnchor": {
      "enum": [
        "start",
        "end"
      ],
      "type": "string"
    },
    "LinkPathOrient": {
      "enum": [
        "horizontal",
        "vertical",
        "radial"
      ],
      "type": "string"
    },
    "LinkPathShape": {
      "enum": [
        "line",
        "arc",
        "curve",
        "diagonal",
        "orthogonal"
      ],
      "type": "string"
    },
    "LinkPathTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "orient": {
          "$ref": "#/definitions/LinkPathOrient"
        },
        "shape": {
          "$ref": "#/definitions/LinkPathShape"
        },
        "sourceX": {
          "$ref": "#/definitions/FieldRef"
        },
        "sourceY": {
          "$ref": "#/definitions/FieldRef"
        },
        "targetX": {
          "$ref": "#/definitions/FieldRef"
        },
        "targetY": {
          "$ref": "#/definitions/FieldRef"
        },
        "type": {
          "const": "linkpath",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "LoessTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "bandwidth": {
          "type": "number"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "type": {
          "const": "loess",
          "type": "string"
        },
        "x": {
          "$ref": "#/definitions/FieldRef"
        },
        "y": {
          "$ref": "#/definitions/FieldRef"
        }
      },
      "required": [
        "type",
        "x",
        "y"
      ],
      "type": "object"
    },
    "LookupTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "default": {},
        "fields": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "from": {
          "$ref": "#/definitions/DataName"
        },
        "key": {
          "$ref": "#/definitions/FieldRef"
        },
        "type": {
          "const": "lookup",
          "type": "string"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        }
      },
      "required": [
        "type",
        "from",
        "key",
        "fields"
      ],
      "type": "object"
    },
    "MainTag": {
      "additionalProperties": false,
      "properties": {
        "main": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "main"
      ],
      "type": "object"
    },
    "MarkdownElement": {
      "description": "Use markdown elements to be verbose and descriptive. Do not use as labels for interactive elements. Embed dynamic variables in markdown using double curly braces {{variableId}} as a placeholder for their values.",
      "type": "string"
    },
    "MermaidElement": {
      "additionalProperties": false,
      "description": "Mermaid use for rendering Mermaid diagrams, either static or dynamic",
      "properties": {
        "diagramText": {
          "description": "Static option: the raw Mermaid diagram text",
          "type": "string"
        },
        "template": {
          "$ref": "#/definitions/MermaidTemplate",
          "description": "Dynamic option 1: data-driven template"
        },
        "type": {
          "const": "mermaid",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "MermaidTemplate": {
      "additionalProperties": false,
      "properties": {
        "dataSourceName": {
          "type": "string"
        },
        "header": {
          "type": "string"
        },
        "lineTemplates": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "required": [
        "header",
        "lineTemplates"
      ],
      "type": "object"
    },
    "NestTransform": {
      "additionalProperties": false,
      "properties": {
        "generate": {
          "type": "boolean"
        },
        "keys": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "type": {
          "const": "nest",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "NumberElement": {
      "additionalProperties": false,
      "description": "Number use for numeric input (integers and decimals)",
      "properties": {
        "label": {
          "description": "optional label if the variableId is not descriptive enough",
          "type": "string"
        },
        "max": {
          "type": "number"
        },
        "min": {
          "type": "number"
        },
        "placeholder": {
          "type": "string"
        },
        "step": {
          "type": "number"
        },
        "type": {
          "const": "number",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "type",
        "variableId"
      ],
      "type": "object"
    },
    "OlTag": {
      "additionalProperties": false,
      "properties": {
        "ol": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "ol"
      ],
      "type": "object"
    },
    "PTag": {
      "additionalProperties": false,
      "properties": {
        "p": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "p"
      ],
      "type": "object"
    },
    "PackTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector5%3Cstring%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "padding": {
          "type": "number"
        },
        "radius": {
          "$ref": "#/definitions/FieldRef"
        },
        "size": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "pack",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "PageElement": {
      "anyOf": [
        {
          "$ref": "#/definitions/MarkdownElement"
        },
        {
          "$ref": "#/definitions/InteractiveElement"
        }
      ],
      "description": "Union type for all possible elements"
    },
    "PageStyle": {
      "additionalProperties": false,
      "properties": {
        "css": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "CSS styles, either a string, or array of strings which will be concatenated. The array is for developer ergonomics for authoring and merging."
        },
        "googleFonts": {
          "$ref": "#/definitions/GoogleFontsSpec"
        }
      },
      "required": [
        "css"
      ],
      "type": "object"
    },
    "PartitionTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector6%3Cstring%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "padding": {
          "type": "number"
        },
        "round": {
          "type": "boolean"
        },
        "size": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "partition",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "PieTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "endAngle": {
          "type": "number"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "sort": {
          "type": "boolean"
        },
        "startAngle": {
          "type": "number"
        },
        "type": {
          "const": "pie",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "PivotTransform": {
      "additionalProperties": false,
      "properties": {
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "limit": {
          "type": "number"
        },
        "op": {
          "type": "string"
        },
        "type": {
          "const": "pivot",
          "type": "string"
        },
        "value": {
          "$ref": "#/definitions/FieldRef"
        }
      },
      "required": [
        "type",
        "field",
        "value"
      ],
      "type": "object"
    },
    "PreTag": {
      "additionalProperties": false,
      "properties": {
        "pre": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "pre"
      ],
      "type": "object"
    },
    "Preset": {
      "additionalProperties": false,
      "properties": {
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "state": {
          "additionalProperties": {},
          "type": "object"
        }
      },
      "required": [
        "name",
        "state"
      ],
      "type": "object"
    },
    "PresetsElement": {
      "additionalProperties": false,
      "description": "Presets use for storing and applying preset batches of signal states",
      "properties": {
        "presets": {
          "items": {
            "$ref": "#/definitions/Preset"
          },
          "type": "array"
        },
        "type": {
          "const": "presets",
          "type": "string"
        }
      },
      "required": [
        "presets",
        "type"
      ],
      "type": "object"
    },
    "PrimitiveValue": {
      "type": [
        "string",
        "number",
        "boolean"
      ]
    },
    "ProjectTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "items": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": "array"
        },
        "fields": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "type": {
          "const": "project",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "ProjectionName": {
      "type": "string"
    },
    "QuantileTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "probs": {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        "step": {
          "type": "number"
        },
        "type": {
          "const": "quantile",
          "type": "string"
        }
      },
      "required": [
        "type",
        "field"
      ],
      "type": "object"
    },
    "RegressionMethod": {
      "enum": [
        "linear",
        "exp",
        "log",
        "quad",
        "poly",
        "pow"
      ],
      "type": "string"
    },
    "RegressionTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "extent": {
          "items": {
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "method": {
          "$ref": "#/definitions/RegressionMethod"
        },
        "order": {
          "type": "number"
        },
        "params": {
          "type": "boolean"
        },
        "type": {
          "const": "regression",
          "type": "string"
        },
        "x": {
          "$ref": "#/definitions/FieldRef"
        },
        "y": {
          "$ref": "#/definitions/FieldRef"
        }
      },
      "required": [
        "type",
        "x",
        "y"
      ],
      "type": "object"
    },
    "RegularTags": {
      "anyOf": [
        {
          "$ref": "#/definitions/DivTag"
        },
        {
          "$ref": "#/definitions/SpanTag"
        },
        {
          "$ref": "#/definitions/PTag"
        },
        {
          "$ref": "#/definitions/HeaderTag"
        },
        {
          "$ref": "#/definitions/FooterTag"
        },
        {
          "$ref": "#/definitions/MainTag"
        },
        {
          "$ref": "#/definitions/SectionTag"
        },
        {
          "$ref": "#/definitions/ArticleTag"
        },
        {
          "$ref": "#/definitions/H1Tag"
        },
        {
          "$ref": "#/definitions/H2Tag"
        },
        {
          "$ref": "#/definitions/H3Tag"
        },
        {
          "$ref": "#/definitions/H4Tag"
        },
        {
          "$ref": "#/definitions/H5Tag"
        },
        {
          "$ref": "#/definitions/H6Tag"
        },
        {
          "$ref": "#/definitions/StrongTag"
        },
        {
          "$ref": "#/definitions/EmTag"
        },
        {
          "$ref": "#/definitions/BlockquoteTag"
        },
        {
          "$ref": "#/definitions/CodeTag"
        },
        {
          "$ref": "#/definitions/PreTag"
        },
        {
          "$ref": "#/definitions/UlTag"
        },
        {
          "$ref": "#/definitions/OlTag"
        },
        {
          "$ref": "#/definitions/LiTag"
        },
        {
          "$ref": "#/definitions/TableTag"
        },
        {
          "$ref": "#/definitions/TheadTag"
        },
        {
          "$ref": "#/definitions/TbodyTag"
        },
        {
          "$ref": "#/definitions/TrTag"
        },
        {
          "$ref": "#/definitions/ThTag"
        },
        {
          "$ref": "#/definitions/TdTag"
        },
        {
          "$ref": "#/definitions/ATag"
        },
        {
          "$ref": "#/definitions/ImgTag"
        },
        {
          "$ref": "#/definitions/BrTag"
        },
        {
          "$ref": "#/definitions/HrTag"
        },
        {
          "$ref": "#/definitions/CommentTag"
        }
      ]
    },
    "ReturnType": {
      "additionalProperties": false,
      "properties": {
        "isArray": {
          "description": "in our system, a pandas dataframe is an array of objects",
          "type": "boolean"
        },
        "type": {
          "$ref": "#/definitions/VariableType"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "SampleTransform": {
      "additionalProperties": false,
      "properties": {
        "size": {
          "type": "number"
        },
        "type": {
          "const": "sample",
          "type": "string"
        }
      },
      "required": [
        "type",
        "size"
      ],
      "type": "object"
    },
    "ScalarCalculation": {
      "additionalProperties": false,
      "description": "Scalar calculation for primitive values. Not for object arrays.",
      "properties": {
        "vegaExpression": {
          "description": "Vega expression language, used to calculate the value based on other variables.",
          "type": "string"
        }
      },
      "required": [
        "vegaExpression"
      ],
      "type": "object"
    },
    "SectionTag": {
      "additionalProperties": false,
      "properties": {
        "section": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "section"
      ],
      "type": "object"
    },
    "SequenceTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "start": {
          "type": "number"
        },
        "step": {
          "type": "number"
        },
        "stop": {
          "type": "number"
        },
        "type": {
          "const": "sequence",
          "type": "string"
        }
      },
      "required": [
        "type",
        "start",
        "stop"
      ],
      "type": "object"
    },
    "SignalName": {
      "type": "string"
    },
    "SliderElement": {
      "additionalProperties": false,
      "description": "Slider prefer sliders over textbox for numbers. Never use for boolean values.",
      "properties": {
        "label": {
          "description": "optional label if the variableId is not descriptive enough",
          "type": "string"
        },
        "max": {
          "type": "number"
        },
        "min": {
          "type": "number"
        },
        "step": {
          "type": "number"
        },
        "type": {
          "const": "slider",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "max",
        "min",
        "step",
        "type",
        "variableId"
      ],
      "type": "object"
    },
    "SortOrder": {
      "enum": [
        "ascending",
        "descending"
      ],
      "type": "string"
    },
    "SpanTag": {
      "additionalProperties": false,
      "properties": {
        "span": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "span"
      ],
      "type": "object"
    },
    "StackOffset": {
      "enum": [
        "zero",
        "center",
        "normalize"
      ],
      "type": "string"
    },
    "StackTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "offset": {
          "$ref": "#/definitions/StackOffset"
        },
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "stack",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "StratifyTransform": {
      "additionalProperties": false,
      "properties": {
        "key": {
          "$ref": "#/definitions/FieldRef"
        },
        "parentKey": {
          "$ref": "#/definitions/FieldRef"
        },
        "type": {
          "const": "stratify",
          "type": "string"
        }
      },
      "required": [
        "type",
        "key",
        "parentKey"
      ],
      "type": "object"
    },
    "StrongTag": {
      "additionalProperties": false,
      "properties": {
        "strong": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "strong"
      ],
      "type": "object"
    },
    "StyleValue": {
      "anyOf": [
        {
          "$ref": "#/definitions/CSSProperties"
        },
        {
          "$ref": "#/definitions/ConditionalBase%3CCSSProperties%3E"
        }
      ]
    },
    "TableTag": {
      "additionalProperties": false,
      "properties": {
        "table": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "summary": {
                  "type": "string"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "table"
      ],
      "type": "object"
    },
    "TabulatorElement": {
      "additionalProperties": false,
      "description": "Tabulator use for tabular data",
      "properties": {
        "dataSourceName": {
          "description": "Name of the data source to use for incoming data (output data is available via the variableId of this table element)",
          "type": "string"
        },
        "editable": {
          "type": "boolean"
        },
        "enableDownload": {
          "description": "Enable download buttons for CSV, JSON, and HTML formats",
          "type": "boolean"
        },
        "tabulatorOptions": {
          "description": "Tabulator options (must be JSON stringify-able, so no callbacks allowed)",
          "type": "object"
        },
        "type": {
          "const": "tabulator",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "dataSourceName",
        "type"
      ],
      "type": "object"
    },
    "TbodyTag": {
      "additionalProperties": false,
      "properties": {
        "tbody": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "tbody"
      ],
      "type": "object"
    },
    "TdTag": {
      "additionalProperties": false,
      "properties": {
        "td": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "colspan": {
                  "type": "string"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "rowspan": {
                  "type": "string"
                },
                "scope": {
                  "type": "string"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "td"
      ],
      "type": "object"
    },
    "TemplateElement": {
      "anyOf": [
        {
          "$ref": "#/definitions/InterpolatedString"
        },
        {
          "$ref": "#/definitions/TemplateObject"
        }
      ]
    },
    "TemplateObject": {
      "anyOf": [
        {
          "$ref": "#/definitions/IfTag"
        },
        {
          "$ref": "#/definitions/RegularTags"
        }
      ]
    },
    "TemplatedUrl": {
      "description": "A url, it may contain template variables, e.g. https://example.com/{{category}}/{{item}}",
      "type": "string"
    },
    "TextboxElement": {
      "additionalProperties": false,
      "description": "Textbox use sparingly - typically only for text input",
      "properties": {
        "label": {
          "description": "optional label if the variableId is not descriptive enough",
          "type": "string"
        },
        "multiline": {
          "type": "boolean"
        },
        "placeholder": {
          "type": "string"
        },
        "type": {
          "const": "textbox",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "type",
        "variableId"
      ],
      "type": "object"
    },
    "ThTag": {
      "additionalProperties": false,
      "properties": {
        "th": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "colspan": {
                  "type": "string"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "rowspan": {
                  "type": "string"
                },
                "scope": {
                  "type": "string"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "th"
      ],
      "type": "object"
    },
    "TheadTag": {
      "additionalProperties": false,
      "properties": {
        "thead": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "thead"
      ],
      "type": "object"
    },
    "TimeUnit": {
      "enum": [
        "year",
        "quarter",
        "month",
        "week",
        "day",
        "date",
        "dayofyear",
        "hours",
        "minutes",
        "seconds",
        "milliseconds"
      ],
      "type": "string"
    },
    "TimeUnitTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector2%3Cstring%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "interval": {
          "type": "boolean"
        },
        "signal": {
          "$ref": "#/definitions/SignalName"
        },
        "step": {
          "type": "number"
        },
        "timezone": {
          "$ref": "#/definitions/TimeZone"
        },
        "type": {
          "const": "timeunit",
          "type": "string"
        },
        "units": {
          "items": {
            "$ref": "#/definitions/TimeUnit"
          },
          "type": "array"
        }
      },
      "required": [
        "type",
        "field"
      ],
      "type": "object"
    },
    "TimeZone": {
      "enum": [
        "local",
        "utc"
      ],
      "type": "string"
    },
    "TrTag": {
      "additionalProperties": false,
      "properties": {
        "tr": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "tr"
      ],
      "type": "object"
    },
    "TransformField": {
      "anyOf": [
        {
          "$ref": "#/definitions/FieldParam"
        },
        {
          "$ref": "#/definitions/ExprRef"
        }
      ]
    },
    "Transforms": {
      "anyOf": [
        {
          "$ref": "#/definitions/AggregateTransform"
        },
        {
          "$ref": "#/definitions/BinTransform"
        },
        {
          "$ref": "#/definitions/CollectTransform"
        },
        {
          "$ref": "#/definitions/CountPatternTransform"
        },
        {
          "$ref": "#/definitions/ContourTransform"
        },
        {
          "$ref": "#/definitions/CrossTransform"
        },
        {
          "$ref": "#/definitions/CrossFilterTransform"
        },
        {
          "$ref": "#/definitions/DensityTransform"
        },
        {
          "$ref": "#/definitions/DotBinTransform"
        },
        {
          "$ref": "#/definitions/ExtentTransform"
        },
        {
          "$ref": "#/definitions/FilterTransform"
        },
        {
          "$ref": "#/definitions/FlattenTransform"
        },
        {
          "$ref": "#/definitions/FoldTransform"
        },
        {
          "$ref": "#/definitions/ForceTransform"
        },
        {
          "$ref": "#/definitions/FormulaTransform"
        },
        {
          "$ref": "#/definitions/HeatmapTransform"
        },
        {
          "$ref": "#/definitions/GeoJSONTransform"
        },
        {
          "$ref": "#/definitions/GeoPathTransform"
        },
        {
          "$ref": "#/definitions/GeoPointTransform"
        },
        {
          "$ref": "#/definitions/GeoShapeTransform"
        },
        {
          "$ref": "#/definitions/GraticuleTransform"
        },
        {
          "$ref": "#/definitions/IdentifierTransform"
        },
        {
          "$ref": "#/definitions/ImputeTransform"
        },
        {
          "$ref": "#/definitions/IsocontourTransform"
        },
        {
          "$ref": "#/definitions/JoinAggregateTransform"
        },
        {
          "$ref": "#/definitions/KDETransform"
        },
        {
          "$ref": "#/definitions/KDE2DTransform"
        },
        {
          "$ref": "#/definitions/LabelTransform"
        },
        {
          "$ref": "#/definitions/LinkPathTransform"
        },
        {
          "$ref": "#/definitions/LoessTransform"
        },
        {
          "$ref": "#/definitions/LookupTransform"
        },
        {
          "$ref": "#/definitions/NestTransform"
        },
        {
          "$ref": "#/definitions/PackTransform"
        },
        {
          "$ref": "#/definitions/PartitionTransform"
        },
        {
          "$ref": "#/definitions/PieTransform"
        },
        {
          "$ref": "#/definitions/PivotTransform"
        },
        {
          "$ref": "#/definitions/ProjectTransform"
        },
        {
          "$ref": "#/definitions/QuantileTransform"
        },
        {
          "$ref": "#/definitions/RegressionTransform"
        },
        {
          "$ref": "#/definitions/SampleTransform"
        },
        {
          "$ref": "#/definitions/SequenceTransform"
        },
        {
          "$ref": "#/definitions/StackTransform"
        },
        {
          "$ref": "#/definitions/StratifyTransform"
        },
        {
          "$ref": "#/definitions/TimeUnitTransform"
        },
        {
          "$ref": "#/definitions/TreeTransform"
        },
        {
          "$ref": "#/definitions/TreeLinksTransform"
        },
        {
          "$ref": "#/definitions/TreemapTransform"
        },
        {
          "$ref": "#/definitions/VoronoiTransform"
        },
        {
          "$ref": "#/definitions/WindowTransform"
        },
        {
          "$ref": "#/definitions/WordcloudTransform"
        }
      ]
    },
    "TreeLinksTransform": {
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "treelinks",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "TreeMethod": {
      "enum": [
        "tidy",
        "cluster"
      ],
      "type": "string"
    },
    "TreeTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector4%3Cstring%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "method": {
          "$ref": "#/definitions/TreeMethod"
        },
        "nodeSize": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "separation": {
          "type": "boolean"
        },
        "size": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "tree",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "TreebarkElement": {
      "additionalProperties": false,
      "description": "Treebark use for rendering cards and structured HTML from templates",
      "properties": {
        "data": {
          "description": "Static data object (optional)",
          "type": "object"
        },
        "template": {
          "$ref": "#/definitions/TemplateElement",
          "description": "Treebark template object for rendering HTML structure"
        },
        "type": {
          "const": "treebark",
          "type": "string"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "template",
        "type"
      ],
      "type": "object"
    },
    "TreemapMethod": {
      "enum": [
        "squarify",
        "resquarify",
        "binary",
        "dice",
        "slice",
        "slicedice"
      ],
      "type": "string"
    },
    "TreemapTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector6%3Cstring%3E"
        },
        "field": {
          "$ref": "#/definitions/FieldRef"
        },
        "method": {
          "$ref": "#/definitions/TreemapMethod"
        },
        "padding": {
          "type": "number"
        },
        "paddingBottom": {
          "type": "number"
        },
        "paddingInner": {
          "type": "number"
        },
        "paddingLeft": {
          "type": "number"
        },
        "paddingOuter": {
          "type": "number"
        },
        "paddingRight": {
          "type": "number"
        },
        "paddingTop": {
          "type": "number"
        },
        "ratio": {
          "type": "number"
        },
        "round": {
          "type": "boolean"
        },
        "size": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "treemap",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "UlTag": {
      "additionalProperties": false,
      "properties": {
        "ul": {
          "anyOf": [
            {
              "$ref": "#/definitions/InterpolatedString"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/InterpolatedString"
                  },
                  {
                    "$ref": "#/definitions/TemplateObject"
                  }
                ]
              },
              "type": "array"
            },
            {
              "additionalProperties": {
                "$ref": "#/definitions/AttributeValue"
              },
              "properties": {
                "$bind": {
                  "$ref": "#/definitions/BindPath"
                },
                "$children": {
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/InterpolatedString"
                      },
                      {
                        "$ref": "#/definitions/TemplateObject"
                      }
                    ]
                  },
                  "type": "array"
                },
                "class": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "id": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "role": {
                  "$ref": "#/definitions/AttributeValue"
                },
                "style": {
                  "$ref": "#/definitions/StyleValue"
                },
                "title": {
                  "$ref": "#/definitions/AttributeValue"
                }
              },
              "type": "object"
            }
          ]
        }
      },
      "required": [
        "ul"
      ],
      "type": "object"
    },
    "Variable": {
      "additionalProperties": false,
      "properties": {
        "calculation": {
          "$ref": "#/definitions/Calculation"
        },
        "initialValue": {
          "$ref": "#/definitions/VariableValue"
        },
        "isArray": {
          "type": "boolean"
        },
        "type": {
          "$ref": "#/definitions/VariableType"
        },
        "variableId": {
          "$ref": "#/definitions/VariableID"
        }
      },
      "required": [
        "variableId",
        "type",
        "initialValue"
      ],
      "type": "object"
    },
    "VariableID": {
      "description": "VariableID\n\n- The VariableID is an identifier for a variable.\n- Do NOT use operator characters in the VariableID, such as /|\\\\\\'\"`,.;:~-=+?!@#$%^&*()[]{}<> \n- Do NOT use space characters in the VariableID, but you may use underscores.\n- Do NOT prefix the VariableID with a digit.\n- Do NOT prefix/suffix the VariableID with the type, e.g. \"value_number\" is bad.\n- The following names are not allowed as VariableIDs: \"width\", \"height\", \"padding\", \"autosize\", \"background\", \"style\", \"parent\", \"datum\", \"item\", \"event\", \"cursor\", \"encodeUriComponent\"",
      "type": "string"
    },
    "VariableType": {
      "enum": [
        "number",
        "string",
        "boolean",
        "object"
      ],
      "type": "string"
    },
    "VariableValue": {
      "anyOf": [
        {
          "$ref": "#/definitions/VariableValuePrimitive"
        },
        {
          "$ref": "#/definitions/VariableValueArray"
        }
      ]
    },
    "VariableValueArray": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        {
          "items": {
            "type": "boolean"
          },
          "type": "array"
        },
        {
          "items": {
            "type": "object"
          },
          "type": "array"
        }
      ]
    },
    "VariableValuePrimitive": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "object"
        }
      ]
    },
    "Vector2<(number|null)>": {
      "items": {
        "type": [
          "number",
          "null"
        ]
      },
      "maxItems": 2,
      "minItems": 2,
      "type": "array"
    },
    "Vector2<FieldRef>": {
      "items": {
        "$ref": "#/definitions/FieldRef"
      },
      "maxItems": 2,
      "minItems": 2,
      "type": "array"
    },
    "Vector2<Vector2<number>>": {
      "items": {
        "$ref": "#/definitions/Vector2%3Cnumber%3E"
      },
      "maxItems": 2,
      "minItems": 2,
      "type": "array"
    },
    "Vector2<number>": {
      "items": {
        "type": "number"
      },
      "maxItems": 2,
      "minItems": 2,
      "type": "array"
    },
    "Vector2<string>": {
      "items": {
        "type": "string"
      },
      "maxItems": 2,
      "minItems": 2,
      "type": "array"
    },
    "Vector4<string>": {
      "items": {
        "type": "string"
      },
      "maxItems": 4,
      "minItems": 4,
      "type": "array"
    },
    "Vector5<string>": {
      "items": {
        "type": "string"
      },
      "maxItems": 5,
      "minItems": 5,
      "type": "array"
    },
    "Vector6<string>": {
      "items": {
        "type": "string"
      },
      "maxItems": 6,
      "minItems": 6,
      "type": "array"
    },
    "Vector7<string>": {
      "items": {
        "type": "string"
      },
      "maxItems": 7,
      "minItems": 7,
      "type": "array"
    },
    "Vega_or_VegaLite_spec": {
      "type": "object"
    },
    "VoronoiTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "type": "string"
        },
        "extent": {
          "$ref": "#/definitions/Vector2%3CVector2%3Cnumber%3E%3E"
        },
        "size": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "type": {
          "const": "voronoi",
          "type": "string"
        },
        "x": {
          "$ref": "#/definitions/FieldRef"
        },
        "y": {
          "$ref": "#/definitions/FieldRef"
        }
      },
      "required": [
        "type",
        "x",
        "y"
      ],
      "type": "object"
    },
    "WindowOnlyOp": {
      "enum": [
        "row_number",
        "rank",
        "dense_rank",
        "percent_rank",
        "cume_dist",
        "ntile",
        "lag",
        "lead",
        "first_value",
        "last_value",
        "nth_value",
        "prev_value",
        "next_value"
      ],
      "type": "string"
    },
    "WindowTransform": {
      "additionalProperties": false,
      "properties": {
        "aggregate_params": {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        "as": {
          "items": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": "array"
        },
        "fields": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/definitions/FieldRef"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": "array"
        },
        "frame": {
          "$ref": "#/definitions/Vector2%3C(number%7Cnull)%3E"
        },
        "groupby": {
          "items": {
            "$ref": "#/definitions/FieldRef"
          },
          "type": "array"
        },
        "ignorePeers": {
          "type": "boolean"
        },
        "ops": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/definitions/AggregateOp"
              },
              {
                "$ref": "#/definitions/WindowOnlyOp"
              }
            ]
          },
          "type": "array"
        },
        "params": {
          "items": {
            "type": [
              "number",
              "null"
            ]
          },
          "type": "array"
        },
        "sort": {
          "$ref": "#/definitions/Compare"
        },
        "type": {
          "const": "window",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "WordcloudSpiral": {
      "enum": [
        "archimedian",
        "rectangular"
      ],
      "type": "string"
    },
    "WordcloudTransform": {
      "additionalProperties": false,
      "properties": {
        "as": {
          "$ref": "#/definitions/Vector7%3Cstring%3E"
        },
        "font": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "fontSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "fontSizeRange": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "fontStyle": {
          "anyOf": [
            {
              "$ref": "#/definitions/FontStyle"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "fontWeight": {
          "anyOf": [
            {
              "$ref": "#/definitions/FontWeight"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "rotate": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "size": {
          "$ref": "#/definitions/Vector2%3Cnumber%3E"
        },
        "spiral": {
          "$ref": "#/definitions/WordcloudSpiral"
        },
        "text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/definitions/TransformField"
            }
          ]
        },
        "type": {
          "const": "wordcloud",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  }
}