Icon composition

Symbols

Release-pinned symbol SVGs referenced by element.symbol_id.

Symbols

Symbols are the "what" inside an element's icon. They are pinned to a specific schema release and stored as SVG documents.

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_-].

See also

Copyright © 2026