{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "page-descriptor.schema.json", "title": "PageDescriptor", "description": "Describes a UI page bound to an entity", "type": "object", "properties": { "name": { "type": "string", "description": "Unique URL-safe identifier for the page", "minLength": 1 }, "title": { "type": "string", "description": "Display title for the menu item and page header", "minLength": 1 }, "icon": { "type": "string", "description": "FontAwesome icon class (e.g., 'fa-solid fa-users')" }, "type": { "$ref": "page-type.schema.json" }, "entityName": { "type": "string", "description": "Full name of the root entity this page displays (e.g., 'Namespace.EntityName')", "minLength": 1 }, "groupByProperty": { "type": "string", "description": "Property name to group entities by (required for kanban). Must reference an enum property.", "minLength": 1 }, "order": { "type": "integer", "description": "Menu sort order (lower values appear first)", "default": 0 } }, "required": ["name", "title", "type", "entityName"], "if": { "properties": { "type": { "const": "kanban" } } }, "then": { "required": ["groupByProperty"] }, "additionalProperties": false }