Handbook · Categories and classes
Categories and classes
Where in the UI. Structure tab. Use the mode buttons Template, Categories, Expressions, and Classes. Category definitions and properties live on Categories; class packages live on Classes; attach a category or class to an element on Template.
Categories are named bags of properties you can assign to items. Classes are reusable packages of categories plus lifecycle/API scripts.
Hierarchy
A category may have a parent. Assigning a child includes every ancestor property. Children should declare only new fields. Empty categories are allowed as folders.
Bindings to a property must use the category id that owns that property — not the child’s id — even if the user assigned the child. The editor pickers usually fill this in; JSON edits often get it wrong.
Category flags
tagPolicy—category_only,global_plus_category, orglobal_onlycontrols which tag pools appear in the app.hideFromCategoryManagement— hide from the category manager; items can still have it.hideEditEntryProperties— hide property editors in Edit Entry; presence chips remain.
Property knobs
Every property has a type (text, enum, table, …), optional default, min/max/pattern, aiLookup (include in AI item fill), scriptWritable (scripts may write), and light UI hints. Tables need a column schema. table is a bounded ring (CTBL). fileTable is CSV parts without a row cap.
Classes
A class is a reusable package. Switch Structure to Classes to author it. You can add:
- Class — the package itself. Wire parent → child to extend another class.
- Category (category ref) — which categories items that use this class must carry.
- Script and Action — lifecycle and API for the class.
- Edit filter — which field changes may run class “on edited” scripts.
- Variables — default item-variable keys this class owns.
On the Template canvas, attach a class to an element with Class ref. To run a class-exported script from a wire, use Class API Call rather than copying the script onto every element.