{"types":[{"type":"price","description":"A live price quote with a sparkline and OHLC summary.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"symbol":{"type":"string","minLength":1,"maxLength":16},"name":{"type":"string","minLength":1,"maxLength":120},"glyph":{"type":"string","minLength":1,"maxLength":4},"value":{"type":"number"},"change":{"type":"number"},"changePct":{"type":"number"},"open":{"type":"number"},"dayHigh":{"type":"number"},"dayLow":{"type":"number"},"currencySymbol":{"type":"string","minLength":1,"maxLength":8},"currency":{"type":"string","minLength":2,"maxLength":8},"spark":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":256},"axis":{"type":"array","items":{"type":"string","minLength":1,"maxLength":16},"minItems":2,"maxItems":12},"windowLabel":{"type":"string","minLength":1,"maxLength":40},"windowShort":{"type":"string","minLength":1,"maxLength":20}},"required":["symbol","name","value","change","changePct","spark"],"additionalProperties":false}},{"type":"chart","description":"A line chart of a single series over a window, with axis and OHLC summary.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"symbol":{"type":"string","minLength":1,"maxLength":16},"name":{"type":"string","minLength":1,"maxLength":120},"glyph":{"type":"string","minLength":1,"maxLength":4},"value":{"type":"number"},"change":{"type":"number"},"changePct":{"type":"number"},"open":{"type":"number"},"dayHigh":{"type":"number"},"dayLow":{"type":"number"},"currencySymbol":{"type":"string","minLength":1,"maxLength":8},"currency":{"type":"string","minLength":2,"maxLength":8},"points":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2048},"axis":{"type":"array","items":{"type":"string","minLength":1,"maxLength":16},"minItems":2,"maxItems":12},"period":{"type":"string","minLength":1,"maxLength":8},"windowLabel":{"type":"string","minLength":1,"maxLength":40},"windowShort":{"type":"string","minLength":1,"maxLength":20}},"required":["symbol","name","value","change","changePct","points","period"],"additionalProperties":false}},{"type":"kpi","description":"A single big number with optional delta and context.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"metric":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":40},"delta":{"type":"string","minLength":1,"maxLength":20},"deltaPos":{"type":"boolean"},"sub":{"type":"string","maxLength":200}},"required":["metric","value"],"additionalProperties":false}},{"type":"tweet","description":"A short post or tweet with author + counts.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"author":{"type":"string","minLength":1,"maxLength":80},"handle":{"type":"string","minLength":1,"maxLength":40},"text":{"type":"string","minLength":1,"maxLength":800},"likes":{"type":"string","maxLength":16},"replies":{"type":"integer","minimum":0},"url":{"type":"string","format":"uri"}},"required":["author","handle","text"],"additionalProperties":false}},{"type":"news","description":"A news headline with optional standfirst and link.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"headline":{"type":"string","minLength":1,"maxLength":240},"standfirst":{"type":"string","maxLength":400},"read":{"type":"string","maxLength":40},"url":{"type":"string","format":"uri"}},"required":["headline"],"additionalProperties":false}},{"type":"job","description":"A job listing matched to the user.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"role":{"type":"string","minLength":1,"maxLength":120},"company":{"type":"string","minLength":1,"maxLength":120},"location":{"type":"string","maxLength":120},"salary":{"type":"string","maxLength":60},"why":{"type":"string","maxLength":240},"url":{"type":"string","format":"uri"}},"required":["role","company"],"additionalProperties":false}},{"type":"image","description":"An image card with title and optional sub.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"title":{"type":"string","minLength":1,"maxLength":200},"sub":{"type":"string","maxLength":240},"aspect":{"type":"string","maxLength":16},"url":{"type":"string","format":"uri"},"alt":{"type":"string","maxLength":240}},"required":["title"],"additionalProperties":false}},{"type":"video","description":"A video card with duration and thumbnail.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"title":{"type":"string","minLength":1,"maxLength":200},"sub":{"type":"string","maxLength":240},"duration":{"type":"string","maxLength":16},"aspect":{"type":"string","maxLength":16},"url":{"type":"string","format":"uri"},"thumbnailUrl":{"type":"string","format":"uri"}},"required":["title"],"additionalProperties":false}},{"type":"audio","description":"An audio clip or podcast snippet.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"title":{"type":"string","minLength":1,"maxLength":200},"sub":{"type":"string","maxLength":240},"duration":{"type":"string","maxLength":16},"url":{"type":"string","format":"uri"},"artworkUrl":{"type":"string","format":"uri"}},"required":["title"],"additionalProperties":false}},{"type":"map","description":"A commute or route heads-up with origin/destination.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"title":{"type":"string","minLength":1,"maxLength":160},"sub":{"type":"string","maxLength":240},"from":{"type":"string","maxLength":60},"to":{"type":"string","maxLength":60},"minutes":{"type":"integer","minimum":0,"maximum":1440}},"required":["title"],"additionalProperties":false}},{"type":"poll","description":"A short poll with 2–8 options, each weighted by percent.","dataSchema":{"type":"object","properties":{"question":{"type":"string","minLength":1,"maxLength":240},"opts":{"type":"array","items":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"label":{"type":"string","minLength":1,"maxLength":80},"pct":{"type":"number","minimum":0,"maximum":100}},"required":["label","pct"],"additionalProperties":false},"minItems":2,"maxItems":8},"n":{"type":"integer","minimum":0}},"required":["question","opts"],"additionalProperties":false}},{"type":"quote","description":"A pull-quote or highlight, in a sidebar-rule or statement treatment.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["sidebar-rule","statement"]},"text":{"type":"string","minLength":1,"maxLength":600},"author":{"type":"string","maxLength":120},"source":{"type":"string","maxLength":160}},"required":["text"],"additionalProperties":false}},{"type":"code","description":"A code commit or build event.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"repo":{"type":"string","minLength":1,"maxLength":120},"commit":{"type":"string","minLength":1,"maxLength":240},"author":{"type":"string","maxLength":80},"files":{"type":"string","maxLength":40},"log":{"type":"string","maxLength":400},"url":{"type":"string","format":"uri"}},"required":["repo","commit"],"additionalProperties":false}},{"type":"list","description":"A bulleted or numbered list of text items, or a checklist.","dataSchema":{"anyOf":[{"type":"object","properties":{"variant":{"type":"string","enum":["checklist"]},"items":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":256},"done":{"type":"boolean"}},"required":["text","done"],"additionalProperties":false},"minItems":1,"maxItems":30}},"required":["variant","items"],"additionalProperties":false},{"type":"object","properties":{"variant":{"type":"string","enum":["display-drop-caps","uniform-bullets","hanging-mono"],"description":"Design variant to render."},"items":{"type":"array","items":{"type":"string","minLength":1,"maxLength":256},"minItems":1,"maxItems":30}},"required":["items"],"additionalProperties":false}]}},{"type":"weather","description":"A weather forecast card with conditions, UV, wind, and hourly data.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["hero","data-brick","hourly"],"description":"Design variant to render."},"temp":{"type":"number"},"tempUnit":{"type":"string"},"tempLabel":{"type":"string"},"condition":{"type":"string"},"description":{"type":"string"},"rainChancePct":{"type":"number"},"uvIndex":{"type":"number"},"uvLabel":{"type":"string"},"wind":{"type":"string"},"hourly":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string"},"temp":{"type":"number"},"icon":{"type":"string"},"isCurrent":{"type":"boolean"}},"required":["time","temp","icon"],"additionalProperties":false},"minItems":2,"maxItems":24}},"required":["temp","condition"],"additionalProperties":false}},{"type":"html","description":"A fully custom, purely visual pane: arbitrary HTML plus optional CSS, intended to fill the device's available space. JavaScript is not supported — scripts in the markup do not execute on the client.","dataSchema":{"type":"object","properties":{"variant":{"type":"string","enum":["v1"],"description":"Design variant to render (defaults to v1)."},"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":100000},"responsive":{"type":"boolean","default":true}},"required":["html"],"additionalProperties":false}}]}