{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "The timeline block (data). Reads: the first 100 rows of `source`, in the source's order. Shape: one row per event: an ISO-8601 `at`, a `title`, optional detail, actor and tone columns.",
  "properties": {
    "timeline": {
      "additionalProperties": false,
      "properties": {
        "actor": {
          "description": "The column naming who or what acted.",
          "pattern": "^[a-z][a-z0-9_]{0,62}$",
          "type": "string"
        },
        "at": {
          "description": "The column holding each event's time (ISO-8601 text).",
          "pattern": "^[a-z][a-z0-9_]{0,62}$",
          "type": "string"
        },
        "detail": {
          "description": "The column holding a line of detail.",
          "pattern": "^[a-z][a-z0-9_]{0,62}$",
          "type": "string"
        },
        "id": {
          "description": "The block's id: its Markdown anchor and its actions' route (`/act/<id>/<action>`). Default `<type>-<n>`, n counting blocks of this type depth-first from 1.",
          "pattern": "^[a-z][a-z0-9-]{1,38}$",
          "type": "string"
        },
        "source": {
          "description": "The source whose rows are the events (at most 100 shown).",
          "pattern": "^[a-z][a-z0-9_]{0,62}$",
          "type": "string"
        },
        "title": {
          "description": "The column holding each event's title.",
          "pattern": "^[a-z][a-z0-9_]{0,62}$",
          "type": "string"
        },
        "tone": {
          "description": "The column holding each event's tone: neutral, ok, warn, bad or info.",
          "pattern": "^[a-z][a-z0-9_]{0,62}$",
          "type": "string"
        }
      },
      "required": [
        "source",
        "at",
        "title"
      ],
      "type": "object"
    }
  },
  "required": [
    "timeline"
  ],
  "title": "timeline",
  "type": "object"
}