Inject YAML model data into spec content: ObjectLink, Field, ObjectList, ObjectTable, Each, and If/Else.
Model data components let you pull data from your YAML models (objects, their fields, links, tags, and attributes) directly into Markdown content. Use them to build object tables and lists, link to objects by title, or inject a single field value anywhere in a sentence.
All of them read from the same source as the Objects diagram and
resolve the model from model_key (falling back to the current route’s model). The
examples across these pages use the deployment model from this project.
Object ids are model-relative
The object attribute and id patterns in filters are written relative to
the model — without the model_key prefix. With model_key="deployment",
the object deployment.iomodel.studio is referenced as
object="iomodel.studio".
Components at a glance
| Component | Kind | Purpose |
|---|---|---|
ObjectLink | inline | Link to an object (text defaults to the object title) |
Field | inline | Insert one field value of an object |
ObjectList | block | <ul> of links to objects matching a filter |
ObjectTable | block | Table of objects with configurable columns |
Each | block | Repeat a template per object / per links/tags/attributes |
If / Else | block | Show or hide content based on a field predicate |
How it works
These components are driven by a small shared model: a flat list of objects (with
model-relative ids) plus their fields, links, tags, and attributes.
ObjectLinkandFieldare inline — drop them into a sentence.ObjectListandObjectTableare block components that take a YAML body (filter, and for tables,columns).Eachis a loop: write the per-item body once, and it repeats for each item, exposing the current item toField/ObjectLink/If.If/Elseis a flat conditional for the current item (or a standalone object).
Id masks
Id patterns are matched relative to the model:
| Pattern | Matches |
|---|---|
iomodel.studio | exactly that object |
* | one level (* → iomodel; iomodel.* → iomodel.studio, iomodel.postgres) |
** | recursive (** → everything, including nested children) |
Start here
ObjectLink
Inline link to an object, text defaults to its title.
Field
Insert a single field value inline, with an optional fallback.
ObjectList
A list of object links from a YAML filter.
ObjectTable
A table of objects with configurable, linkable columns.
Each
Loop over objects or a single object’s links/tags/attributes.
If / Else
Conditionally show content based on a field predicate.
Constraints
Each/ObjectList/ObjectTablecannot be nested in one another.Ifcannot be nested, and supports a single<Else />(noelse if).- Links are always rendered by
ObjectLink(no[text](url)with components inside). - Filtering uses id masks + include/exclude only (no sorting/grouping/computed selects).
Last updated on