{ "entity": "ComponentNode", "version": "1.0", "description": "Visual component node in a page tree with parent-child hierarchy and ordering", "tenantId": true, "fields": { "id": { "type": "uuid", "primary": true, "generated": true, "description": "Unique component node identifier" }, "pageId": { "type": "string", "required": true, "description": "Page this component belongs to" }, "parentId": { "type": "string", "optional": true, "nullable": true, "description": "Parent component ID (null for root components)" }, "type": { "type": "string", "required": true, "min_length": 1, "max_length": 100, "description": "Component type name" }, "childIds": { "type": "string", "required": true, "description": "Serialized list of child component IDs" }, "order": { "type": "integer", "required": true, "default": 0, "description": "Display order within parent scope (non-negative)" } }, "indexes": [ { "fields": ["tenantId"] }, { "fields": ["pageId"] }, { "fields": ["parentId"] }, { "fields": ["pageId", "parentId", "order"] } ], "relations": { "page": { "type": "belongs-to", "entity": "UiPage", "foreign_key": "pageId" } }, "acl": { "create": { "user": true }, "read": { "self": true, "admin": true }, "update": { "self": true }, "delete": { "self": true } } }