Symbols
Symbols
The model
Every element has a symbol_id that points at a symbol SVG. Symbols carry the glyph (camera, microphone, person, …); the surrounding shape comes from the element's category, and the color treatment comes from the variant.
{
"id": "data.camera",
"symbol_id": "camera",
"category_id": "data-collected"
}
The referenced symbol is fetched via:
GET /api/v2/schemas/:version/symbols/:symbol_id.svg
See REST icon routes.
Release-pinning
A symbol with id camera in ai@2026-04-16-beta may differ byte-for-byte from camera in the next release. Consumers that pin on DTPR-Content-Hash will see the change. Symbols are therefore stored under the version prefix in the content store; there is no cross-version "global" symbol namespace.
File shape
Source symbols follow a narrow shape: a single <svg viewBox="0 0 36 36" …> wrapper around one or more <path> (occasionally <g>) elements. Leading BOM, XML prolog, and HTML comments are rejected at schema build time — the compositor assumes a clean <svg>…</svg> document.
When an element's icon is composed, the compositor strips the outer <svg> tags and inlines the inner fragment under a <g color="…"> wrapper whose color attribute depends on the variant.
Discovering symbol ids
Read element.symbol_id from GET /schemas/:version/elements/:element_id or get_element. Symbol ids match [a-zA-Z0-9_-].