Other object families
Six families have a reserved block keyword, an address form and a place in the schema, but no encoder and no decoder. They address; they do not round trip.
category "change" {}
HCL201:
Block type 'category' is not supported yet
An error. The block yields no model and the import stops.
| Keyword | Address | Mongo collection | Identity field |
|---|---|---|---|
category |
category.<slug> |
category |
name |
dash |
dash.<slug> |
dashboard |
title |
board |
board.<slug> |
plugin_kanban |
name |
notification |
notification.<slug> |
notification |
event_key |
calendar |
calendar.<slug> |
calendar |
name |
schedule |
schedule.<slug> |
scheduler |
name |
cla export does not emit them either: an export enumerates resources, roles,
rules and topics, and nothing else.
What the addresses are for¶
They resolve. A reference from an object that is exported can point at one of these families, and the address survives the round trip:
role "release-manager" {
grant {
action = "action.topics.delete"
bounds {
id_category = category.release
}
}
}
category.release is looked up by name on the importing installation and
turned back into that installation's category id. The category itself must
already exist there — nothing in these families can be created from a file, so
a missing one is HCL230 Unresolved reference unless
--allow-missing is given.
The same applies to dashboards, boards, calendars and schedules referenced from anywhere.
Why dash and not dashboard¶
dashboard is a rule type, and rule types own their keyword. The dashboard
collection — saved dashboards — takes dash instead.
The opposite call was made for reports: the report keyword goes to the report
CI, because saved reports are objects people manage and move between installs,
while the report rule type is rare by comparison. That is why the rule type
takes the qualified keyword report_rule.
notification has no name¶
A notification document has no name field of any kind. Its real identity is
(event_key, action) plus a scopes hash. event_key is the closest single
field and is not unique on its own, so notification addresses lean on the
ordinary clash suffix — several
notifications for the same event become notification.foo,
notification.foo_1, notification.foo_2. That ordering is stable but the
names carry no meaning, which is one reason the family has no encoder yet.
Configuration that is not in HCL at all¶
Nothing under config/, no cla config setting, no license, no plugin
installation and no index or collection state is part of the HCL surface.
cla export writes objects; it is not a backup. For a backup, use
cla db-dump.
Runtime state is excluded for the same reason: jobs, git revisions, items,
assets, posts, reviews and the rest of the internal
classes exist in enormous numbers and mean
nothing on another installation. --internal includes them if you genuinely
need them, on both export and import.
Classes from features and from plugins outside the core distribution are external and left out of an export too, until their author or the person exporting says otherwise.
Topics¶
Topics have their own family and their own export gate. They are documented separately.