diff --git a/openmetadata-spec/src/main/resources/json/schema/entity/teams/persona.json b/openmetadata-spec/src/main/resources/json/schema/entity/teams/persona.json index 9247653ad94f..ac8d15ea4d2a 100644 --- a/openmetadata-spec/src/main/resources/json/schema/entity/teams/persona.json +++ b/openmetadata-spec/src/main/resources/json/schema/entity/teams/persona.json @@ -38,6 +38,10 @@ "description": "Link to the resource corresponding to this entity.", "$ref": "../../type/basic.json#/definitions/href" }, + "uiCustomization": { + "description": "Reference to the UI customization configuration.", + "$ref": "../../type/entityReference.json" + }, "users": { "description": "Users that are assigned a persona.", "$ref": "../../type/entityReferenceList.json", diff --git a/openmetadata-spec/src/main/resources/json/schema/system/ui/navigationItem.json b/openmetadata-spec/src/main/resources/json/schema/system/ui/navigationItem.json new file mode 100644 index 000000000000..60bb7a44088a --- /dev/null +++ b/openmetadata-spec/src/main/resources/json/schema/system/ui/navigationItem.json @@ -0,0 +1,34 @@ +{ + "$id": "https://open-metadata.org/schema/system/ui/navigationItem.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NavigationItem", + "description": "Defines a navigation item in the UI navigation menu.", + "type": "object", + "javaType": "org.openmetadata.schema.system.ui.NavigationItem", + "properties": { + "id": { + "description": "Unique identifier for the navigation item.", + "$ref": "../../type/basic.json#/definitions/uuid" + }, + "title": { + "description": "Display title of the navigation item.", + "type": "string" + }, + "pageId": { + "description": "Reference to a Page ID that this navigation item links to.", + "type": "string" + }, + "order": { + "description": "Order of the navigation item in the menu.", + "type": "integer" + }, + "children": { + "description": "Optional sub-navigation items.", + "type": "array", + "items": { "$ref": "#" }, + "default": [] + } + }, + "required": ["id", "title", "pageId", "order"], + "additionalProperties": false +} \ No newline at end of file diff --git a/openmetadata-spec/src/main/resources/json/schema/system/ui/page.json b/openmetadata-spec/src/main/resources/json/schema/system/ui/page.json index 803050d5d88b..05424c1bb47f 100644 --- a/openmetadata-spec/src/main/resources/json/schema/system/ui/page.json +++ b/openmetadata-spec/src/main/resources/json/schema/system/ui/page.json @@ -41,6 +41,12 @@ "description": "Configuration for the Knowledge Panel.", "type": "object" }, + "tabs": { + "description": "Tabs included in this page.", + "type": "array", + "items": { "$ref": "tab.json" }, + "default": [] + }, "persona": { "description": "Persona this page belongs to.", "$ref": "../../type/entityReference.json" diff --git a/openmetadata-spec/src/main/resources/json/schema/system/ui/tab.json b/openmetadata-spec/src/main/resources/json/schema/system/ui/tab.json new file mode 100644 index 000000000000..07fed7a9885b --- /dev/null +++ b/openmetadata-spec/src/main/resources/json/schema/system/ui/tab.json @@ -0,0 +1,29 @@ +{ + "$id": "https://open-metadata.org/schema/system/ui/tab.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Tab", + "description": "This schema defines a Tab within a Page.", + "type": "object", + "javaType": "org.openmetadata.schema.system.ui.Tab", + "properties": { + "id": { "$ref": "../../type/basic.json#/definitions/uuid" }, + "name": { + "description": "Name of the tab.", + "type": "string" + }, + "layout": { + "description": "Layout configuration for this tab.", + "type": "object" + }, + "knowledgePanels": { + "description": "KnowledgePanels that are part of this Tab.", + "$ref": "../../type/entityReferenceList.json" + }, + "order": { + "description": "Order of the tab within the page.", + "type": "integer" + } + }, + "required": ["id", "name", "layout"], + "additionalProperties": false +} \ No newline at end of file diff --git a/openmetadata-spec/src/main/resources/json/schema/system/ui/uiCustomization.json b/openmetadata-spec/src/main/resources/json/schema/system/ui/uiCustomization.json new file mode 100644 index 000000000000..bd32c3b90b4c --- /dev/null +++ b/openmetadata-spec/src/main/resources/json/schema/system/ui/uiCustomization.json @@ -0,0 +1,46 @@ +{ + "$id": "https://open-metadata.org/schema/system/ui/uiCustomization.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "UICustomization", + "description": "Contains UI customization details for a Persona.", + "type": "object", + "javaType": "org.openmetadata.schema.system.ui.UICustomization", + "properties": { + "id": { "$ref": "../../type/basic.json#/definitions/uuid" }, + "name": { + "description": "A unique name for the UI customization configuration.", + "$ref": "../../type/basic.json#/definitions/entityName" + }, + "displayName": { + "description": "Name used for display purposes.", + "type": "string" + }, + "description": { + "description": "Description of the UI customization.", + "$ref": "../../type/basic.json#/definitions/markdown" + }, + "pages": { + "description": "List of Pages in the UI customization.", + "type": "array", + "items": { "$ref": "page.json" } + }, + "navigation": { + "description": "Site-wide navigation configuration.", + "type": "array", + "items": { "$ref": "navigationItem.json" } + }, + "updatedAt": { + "$ref": "../../type/basic.json#/definitions/timestamp" + }, + "updatedBy": { "type": "string" }, + "version": { + "$ref": "../../type/entityHistory.json#/definitions/entityVersion" + }, + "changeDescription": { + "$ref": "../../type/entityHistory.json#/definitions/changeDescription" + }, + "href": { "$ref": "../../type/basic.json#/definitions/href" } + }, + "required": ["id", "name", "pages"], + "additionalProperties": false +} \ No newline at end of file