02 — Concepts
Entity Model
The entity model is the runtime configuration that describes what the application can manage.
It includes:
- entity types,
- hierarchy rules,
- property groups,
- property definitions,
- tag groups,
- tags,
- relationship definitions,
- templates,
- view definitions,
- permissions metadata,
- validation rules.
Entity Type
An entity type describes a category of entity.
Examples:
customer
site
building
room
asset
credential
connection_method
tag
groupAn entity type should define:
- key,
- name,
- description,
- icon,
- whether it can appear in hierarchy,
- whether it can be a root,
- whether it can contain children,
- allowed parent types,
- allowed child types,
- allowed property groups,
- allowed tag groups,
- allowed relationship types,
- lifecycle policy.
Property Group
A property group organizes related properties into a UI and validation section.
Examples:
Device
Network
BACnet
Commissioning
CredentialsProperty groups make forms and detail pages easier to use.
Property Definition
A property definition describes a single typed field that can be attached to entities.
Examples:
hostname
ip_address
serial_number
firmware_version
bacnet_device_id
commissioning_statusA property definition should define:
- key,
- display name,
- data type,
- validation rules,
- required/optional status,
- searchable/filterable behavior,
- sensitivity,
- default value,
- display order.
Sensitive values should not be stored as ordinary property values. They should use Vault-backed secret references.
Tag Group
A tag group organizes related tags.
Examples:
Criticality
Vendor
Commissioning Status
EnvironmentA tag group can define whether selection is:
- single-select,
- multi-select,
- system-managed,
- user-managed.
Relationship Definition
A relationship definition describes a permitted association between entity types.
Examples:
asset depends_on asset
asset uses credential
asset connects_to asset
connection_method applies_to site
user manages assetRelationship definitions are separate from hierarchy.
Hierarchy answers:
Where is this entity located?Relationships answer:
How is this entity associated with another entity?Template
A template is a reusable bundle of configuration for creating entities.
Example:
BACnet Controller Template
├── Entity Type: asset
├── Property Groups: Device, Network, BACnet
├── Tag Groups: Vendor, Criticality, Commissioning Status
└── Default Relationships: uses_credential allowedTemplates should speed up entity creation without hiding the underlying entity model.
Model Version
A model version is a snapshot of the metadata configuration.
The platform should support draft and published versions:
Draft Model
editable, validated, not used by runtime users
Published Model
active, used by API and frontendGenerated CRUD API
The generated CRUD API is a generic API layer that uses the published metadata model to validate and manipulate entities.
It should be type-aware, permission-aware, and audit-aware.
It should not bypass application services for sensitive workflows.