From 871c2427b670129be5288b0e671398f9960f2912 Mon Sep 17 00:00:00 2001 From: "Michael Faber (he/him)" Date: Tue, 7 Oct 2025 11:10:14 -0500 Subject: [PATCH 1/5] [Report Definition] 25.10 version bumps --- fabric/item/report/README.md | 6 + .../visualContainer/2.3.0/schema.json | 309 ++++++++++++++++++ .../definition/visualContainer/CHANGELOG.md | 8 + 3 files changed, 323 insertions(+) create mode 100644 fabric/item/report/definition/visualContainer/2.3.0/schema.json diff --git a/fabric/item/report/README.md b/fabric/item/report/README.md index 944ee337..eb6a57af 100644 --- a/fabric/item/report/README.md +++ b/fabric/item/report/README.md @@ -1,5 +1,11 @@ # Releases +## October 2025 + +Documenting visual objects changes for new visuals and visual updates. + +- [visualContainer 2.3.0](./definition/visualContainer/CHANGELOG.md#2.3.0) + ## August 2025 A new PBIR-aligned ThemeVersion definition for ThemeMetadata. Support for Translytical Apps. diff --git a/fabric/item/report/definition/visualContainer/2.3.0/schema.json b/fabric/item/report/definition/visualContainer/2.3.0/schema.json new file mode 100644 index 00000000..3fd0202f --- /dev/null +++ b/fabric/item/report/definition/visualContainer/2.3.0/schema.json @@ -0,0 +1,309 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/report/definition/visualContainer/2.3.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Visual container", + "description": "Defines a single visual or visual group on a report page.", + "type": "object", + "properties": { + "$schema": { + "description": "Defines the schema to use for an item.", + "type": "string", + "const": "https://developer.microsoft.com/json-schemas/fabric/item/report/definition/visualContainer/2.3.0/schema.json" + }, + "name": { + "description": "A unique identifier for the visual across the whole page.", + "maxLength": 50, + "type": "string" + }, + "position": { + "$ref": "#/definitions/VisualContainerPosition", + "description": "Defines where the visual is position on the page and how big it should be, along\nwith z-index (stacking) for that visual.\nAlso defines the order in which visuals are navigated when using just keyboard (tabOrder)." + }, + "visual": { + "description": "Defines a chart to be shown inside of this container.", + "$ref": "../../visualConfiguration/2.2.0/schema-embedded.json" + }, + "visualGroup": { + "description": "Defines that this container should be used as a grouping container.", + "$ref": "#/definitions/VisualGroupConfig" + }, + "parentGroupName": { + "description": "Name of the parent group (visual container), if it is part of one.", + "type": "string" + }, + "filterConfig": { + "description": "Filters that apply to all this visual - on top of the filters defined for the report and page.", + "$ref": "../../filterConfiguration/1.2.0/schema-embedded.json" + }, + "isHidden": { + "description": "Marks the visual as hidden.", + "type": "boolean" + }, + "annotations": { + "description": "Additional information to be saved (for example comments, readme, etc) for this visual.", + "type": "array", + "items": { + "$ref": "#/definitions/Annotation" + } + }, + "howCreated": { + "description": "Source of creation of this visual.", + "type": "string", + "anyOf": [ + { + "const": "Default", + "description": "Used when it doesn't fall in any of the buckets below." + }, + { + "const": "Copilot", + "description": "Created by copilot." + }, + { + "const": "CheckboxTickedInFieldList", + "description": "Selecting data from field list." + }, + { + "const": "DraggedToCanvas", + "description": "Dragging data from field list to the canvas." + }, + { + "const": "VisualTypeIconClicked", + "description": "Clicking a specific visual icon in visualizations list." + }, + { + "const": "DraggedToFieldWell", + "description": "Dragging data from field list to field wells." + }, + { + "const": "InsertVisualButton", + "description": "Clicking the \"Insert visual\" button in ribbon." + }, + { + "const": "WhatIfParameterControl", + "description": "Automatically by what-if parameter." + }, + { + "const": "QnaAppBar", + "description": "Ask a question in app bar." + }, + { + "const": "QnaDoubleClick", + "description": "Double clicking on the canvas to generate a Q&A visual." + }, + { + "const": "QnaKeyboardShortcut", + "description": "Use keyboard shortcut for Q&A visual." + }, + { + "const": "FieldParameterControl", + "description": "Automatically by field parameters." + }, + { + "const": "CanvasBackgroundContextMenu", + "description": "Using on-object context menu for the canvas." + }, + { + "const": "ContextMenuPaste", + "description": "By using paste from context manu." + }, + { + "const": "CopyPaste", + "description": "By using copy paste." + }, + { + "const": "SummarizeVisualContainer", + "description": "By using context menu Summarize." + } + ] + } + }, + "additionalProperties": false, + "required": [ + "$schema", + "name", + "position" + ], + "definitions": { + "VisualContainerPosition": { + "type": "object", + "properties": { + "x": { + "description": "Horizontal position of the left edge of the visual.\nShould be between 0 and width of the containing page.", + "type": "number" + }, + "y": { + "description": "Vertical position of the top edge of the visual.\nShould be between 0 and height of the containing page.", + "type": "number" + }, + "z": { + "description": "Defines the stacking order for the visual.\nHigher z-index visuals are shown on top of the lower ones.", + "type": "number" + }, + "height": { + "description": "Height of the visual.\ny + height should be less than the height of the containing page.", + "type": "number" + }, + "width": { + "description": "Width of the visual.\nx + width should be less than the width of the containing page.", + "type": "number" + }, + "tabOrder": { + "description": "Defines the selection order for this visual when using keyboard (tab key)\nto navigate the visuals on the containing page.", + "type": "number" + }, + "angle": { + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "height", + "width", + "x", + "y" + ] + }, + "VisualGroupConfig": { + "type": "object", + "properties": { + "displayName": { + "description": "Display name for the group.", + "type": "string" + }, + "groupMode": { + "$ref": "#/definitions/GroupLayoutMode", + "description": "Defines how the visuals are organized inside this group." + }, + "objects": { + "description": "Specifies the formatting to be set for different \"objects\" of this group.", + "$ref": "#/definitions/VisualGroupFormattingObjects" + } + }, + "additionalProperties": false, + "required": [ + "displayName", + "groupMode" + ] + }, + "GroupLayoutMode": { + "type": "string", + "anyOf": [ + { + "const": "ScaleMode", + "description": "Visuals are scaled as group resizes to preserve the aspect ratio and avoid scrolling." + }, + { + "const": "ScrollMode", + "description": "Visuals are not resized, if the containing box for group is smaller than the space\nneeded for visuals, then scrollbar is added." + } + ] + }, + "VisualGroupFormattingObjects": { + "type": "object", + "properties": { + "background": { + "type": "array", + "items": { + "type": "object", + "properties": { + "selector": { + "description": "Defines the scope at which to apply the formatting for this object.\nCan also define rules for matching highlighted values and how multiple definitions for the same property should be ordered.", + "$ref": "../../formattingObjectDefinitions/1.4.0/schema.json#/definitions/Selector" + }, + "properties": { + "$ref": "../../visualConfiguration/2.2.0/schema-embedded.json#/definitions/Background", + "description": "Describes the properties of the object to apply formatting changes to." + } + }, + "additionalProperties": false, + "required": [ + "properties" + ] + } + }, + "lockAspect": { + "type": "array", + "items": { + "type": "object", + "properties": { + "selector": { + "description": "Defines the scope at which to apply the formatting for this object.\nCan also define rules for matching highlighted values and how multiple definitions for the same property should be ordered.", + "$ref": "../../formattingObjectDefinitions/1.4.0/schema.json#/definitions/Selector" + }, + "properties": { + "$ref": "../../visualConfiguration/2.2.0/schema-embedded.json#/definitions/LockAspect", + "description": "Describes the properties of the object to apply formatting changes to." + } + }, + "additionalProperties": false, + "required": [ + "properties" + ] + } + }, + "general": { + "type": "array", + "items": { + "type": "object", + "properties": { + "selector": { + "description": "Defines the scope at which to apply the formatting for this object.\nCan also define rules for matching highlighted values and how multiple definitions for the same property should be ordered.", + "$ref": "../../formattingObjectDefinitions/1.4.0/schema.json#/definitions/Selector" + }, + "properties": { + "$ref": "#/definitions/VisualGroupGeneralFormattingObjects", + "description": "Describes the properties of the object to apply formatting changes to." + } + }, + "additionalProperties": false, + "required": [ + "properties" + ] + } + } + }, + "additionalProperties": false + }, + "VisualGroupGeneralFormattingObjects": { + "type": "object", + "properties": { + "x": {}, + "y": {}, + "width": {}, + "height": {}, + "altText": {} + }, + "additionalProperties": false + }, + "Annotation": { + "type": "object", + "properties": { + "name": { + "description": "Unique name for the annotation.", + "type": "string" + }, + "value": { + "description": "A value for this annotation.", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "name", + "value" + ] + } + }, + "oneOf": [ + { + "required": [ + "visual" + ] + }, + { + "required": [ + "visualGroup" + ] + } + ] +} \ No newline at end of file diff --git a/fabric/item/report/definition/visualContainer/CHANGELOG.md b/fabric/item/report/definition/visualContainer/CHANGELOG.md index c104bc02..b380be03 100644 --- a/fabric/item/report/definition/visualContainer/CHANGELOG.md +++ b/fabric/item/report/definition/visualContainer/CHANGELOG.md @@ -1,5 +1,13 @@ # Visual Container Versions +### 2.3.0 + +Released in: October 2025
+Notes: +- Table "Grow to fit" +- Button slicer GA +- Card visual GA + ### 2.2.0 Released in: August 2025
From 185060299e779f929e5ef22b6056296ee7b0114c Mon Sep 17 00:00:00 2001 From: Akhil-Kokkula Date: Wed, 15 Oct 2025 17:15:05 -0700 Subject: [PATCH 2/5] initial directory setup --- fabric/item/ontology/contextualization/1.0.0/schema.json | 0 fabric/item/ontology/dashboardConfiguration/1.0.0/schema.json | 0 fabric/item/ontology/dataBinding/1.0.0/schema.json | 0 fabric/item/ontology/document/1.0.0/schema.json | 0 fabric/item/ontology/entityType/1.0.0/schema.json | 0 fabric/item/ontology/relationshipType/1.0.0/schema.json | 0 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 fabric/item/ontology/contextualization/1.0.0/schema.json create mode 100644 fabric/item/ontology/dashboardConfiguration/1.0.0/schema.json create mode 100644 fabric/item/ontology/dataBinding/1.0.0/schema.json create mode 100644 fabric/item/ontology/document/1.0.0/schema.json create mode 100644 fabric/item/ontology/entityType/1.0.0/schema.json create mode 100644 fabric/item/ontology/relationshipType/1.0.0/schema.json diff --git a/fabric/item/ontology/contextualization/1.0.0/schema.json b/fabric/item/ontology/contextualization/1.0.0/schema.json new file mode 100644 index 00000000..e69de29b diff --git a/fabric/item/ontology/dashboardConfiguration/1.0.0/schema.json b/fabric/item/ontology/dashboardConfiguration/1.0.0/schema.json new file mode 100644 index 00000000..e69de29b diff --git a/fabric/item/ontology/dataBinding/1.0.0/schema.json b/fabric/item/ontology/dataBinding/1.0.0/schema.json new file mode 100644 index 00000000..e69de29b diff --git a/fabric/item/ontology/document/1.0.0/schema.json b/fabric/item/ontology/document/1.0.0/schema.json new file mode 100644 index 00000000..e69de29b diff --git a/fabric/item/ontology/entityType/1.0.0/schema.json b/fabric/item/ontology/entityType/1.0.0/schema.json new file mode 100644 index 00000000..e69de29b diff --git a/fabric/item/ontology/relationshipType/1.0.0/schema.json b/fabric/item/ontology/relationshipType/1.0.0/schema.json new file mode 100644 index 00000000..e69de29b From c801d56b7a4dc333e6592aae9d14f5534ac80053 Mon Sep 17 00:00:00 2001 From: Akhil-Kokkula Date: Wed, 15 Oct 2025 23:14:32 -0700 Subject: [PATCH 3/5] pending review of schemas --- .../contextualization/1.0.0/schema.json | 81 +++++++++ .../dashboardConfiguration/1.0.0/schema.json | 0 .../ontology/dataBinding/1.0.0/schema.json | 169 ++++++++++++++++++ .../item/ontology/document/1.0.0/schema.json | 23 +++ .../ontology/entityType/1.0.0/schema.json | 110 ++++++++++++ .../item/ontology/overviews/1.0.0/schema.json | 143 +++++++++++++++ .../relationshipType/1.0.0/schema.json | 54 ++++++ 7 files changed, 580 insertions(+) delete mode 100644 fabric/item/ontology/dashboardConfiguration/1.0.0/schema.json create mode 100644 fabric/item/ontology/overviews/1.0.0/schema.json diff --git a/fabric/item/ontology/contextualization/1.0.0/schema.json b/fabric/item/ontology/contextualization/1.0.0/schema.json index e69de29b..7c964749 100644 --- a/fabric/item/ontology/contextualization/1.0.0/schema.json +++ b/fabric/item/ontology/contextualization/1.0.0/schema.json @@ -0,0 +1,81 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/ontology/contextualization/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "contextualization definition", + "type": "object", + "properties": { + "$schema": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string", + "format": "uuid", + "description": "The unique id of the contextualization" + }, + "dataBindingTable": { + "$ref": "#/definitions/LakehouseTableDataBindingProperties" + }, + "sourceKeyRefBindings": { + "type": "array", + "items": { + "$ref": "#/definitions/KeyRefBinding" + }, + "description": "Bindings from source columns to target properties" + }, + "targetKeyRefBindings": { + "type": "array", + "items": { + "$ref": "#/definitions/KeyRefBinding" + }, + "description": "Bindings from target columns to target properties" + } + }, + "definitions": { + "LakehouseTableDataBindingProperties": { + "type": "object", + "properties": { + "sourceType": { + "type": "string", + "const": "LakehouseTable", + "description": "The sourceType of the Data Binding" + }, + "workspaceId": { + "type": "string", + "format": "uuid", + "description": "The ID of the workspace where the customer's lakehouse table is located" + }, + "itemId": { + "type": "string", + "format": "uuid", + "description": "ArtifactId of the customer's lakehouse" + }, + "sourceTableName": { + "type": "string", + "description": "The name of the data table from the lakehouse" + }, + "sourceSchema": { + "type": "string", + "description": "The schema of the data table" + } + }, + "required": ["sourceType", "workspaceId", "itemId", "sourceTableName"] + }, + "KeyRefBinding": { + "type": "object", + "properties": { + "sourceColumnName": { + "type": "string", + "description": "The name of the source column" + }, + "targetPropertyId": { + "type": "string", + "description": "The target property identifier" + } + }, + "required": ["sourceColumnName", "targetPropertyId"] + } + } +} \ No newline at end of file diff --git a/fabric/item/ontology/dashboardConfiguration/1.0.0/schema.json b/fabric/item/ontology/dashboardConfiguration/1.0.0/schema.json deleted file mode 100644 index e69de29b..00000000 diff --git a/fabric/item/ontology/dataBinding/1.0.0/schema.json b/fabric/item/ontology/dataBinding/1.0.0/schema.json index e69de29b..871f8b5c 100644 --- a/fabric/item/ontology/dataBinding/1.0.0/schema.json +++ b/fabric/item/ontology/dataBinding/1.0.0/schema.json @@ -0,0 +1,169 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/ontology/dataBinding/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "data binding definition", + "type": "object", + "properties": { + "$schema": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string", + "format": "uuid", + "description": "Unique ID of the data binding" + }, + "dataBindingConfiguration": { + "$ref": "#/definitions/DataBindingConfiguration", + "description": "Configuration specific to the kind of data binding" + } + }, + "required": ["id", "dataBindingConfiguration"], + "definitions": { + "DataBindingConfiguration": { + "type": "object", + "properties": { + "dataBindingType": { + "type": "string", + "enum": ["TimeSeries", "NonTimeSeries"], + "description": "The type of data binding" + }, + "timestampColumnName": { + "type": "string", + "description": "Only required if dataBindingType is TimeSeries. This is the name of the timestamp column from the data table" + }, + "propertyBindings": { + "type": "array", + "items": { + "$ref": "#/definitions/EntityTypePropertyBinding" + }, + "description": "The bindings from source columns to entity type properties" + }, + "sourceTableProperties": { + "description": "Data source table properties" + } + }, + "required": ["dataBindingType", "sourceTableProperties"], + "allOf": [ + { + "if": { + "properties": { + "dataBindingType": { + "const": "TimeSeries" + } + } + }, + "then": { + "required": ["timestampColumnName"], + "properties": { + "sourceTableProperties": { + "oneOf": [ + { + "$ref": "#/definitions/LakehouseTableDataBindingProperties" + }, + { + "$ref": "#/definitions/EventhouseTableDataBindingProperties" + } + ] + } + } + } + }, + { + "if": { + "properties": { + "dataBindingType": { + "const": "NonTimeSeries" + } + } + }, + "then": { + "properties": { + "sourceTableProperties": { + "$ref": "#/definitions/LakehouseTableDataBindingProperties" + } + } + } + } + ] + }, + "EntityTypePropertyBinding": { + "type": "object", + "properties": { + "sourceColumnName": { + "type": "string", + "description": "The name of the source column in the data table" + }, + "targetPropertyId": { + "type": "string", + "description": "The target property ID in the entity type" + } + }, + "required": ["sourceColumnName", "targetPropertyId"] + }, + "LakehouseTableDataBindingProperties": { + "type": "object", + "properties": { + "sourceType": { + "type": "string", + "const": "LakehouseTable", + "description": "The sourceType of the Data Binding" + }, + "workspaceId": { + "type": "string", + "format": "uuid", + "description": "The ID of the workspace where the customer's lakehouse table is located" + }, + "itemId": { + "type": "string", + "format": "uuid", + "description": "ArtifactId of the customer's lakehouse" + }, + "sourceTableName": { + "type": "string", + "description": "The name of the data table from the lakehouse" + }, + "sourceSchema": { + "type": "string", + "description": "The schema of the data table" + } + }, + "required": ["sourceType", "workspaceId", "itemId", "sourceTableName"] + }, + "EventhouseTableDataBindingProperties": { + "type": "object", + "properties": { + "sourceType": { + "type": "string", + "const": "KustoTable", + "description": "The sourceType of the Data Binding" + }, + "workspaceId": { + "type": "string", + "format": "uuid", + "description": "The ID of the workspace where the customer's eventhouse is located" + }, + "itemId": { + "type": "string", + "format": "uuid", + "description": "ArtifactId of the customer's eventhouse" + }, + "clusterUri": { + "type": "string", + "description": "The URL to the Kusto cluster" + }, + "databaseName": { + "type": "string", + "description": "The name of the database in the Kusto cluster" + }, + "sourceTableName": { + "type": "string", + "description": "The name of the source table in the Kusto cluster" + } + }, + "required": ["sourceType", "workspaceId", "itemId", "clusterUri", "databaseName", "sourceTableName"] + } + } +} \ No newline at end of file diff --git a/fabric/item/ontology/document/1.0.0/schema.json b/fabric/item/ontology/document/1.0.0/schema.json index e69de29b..7ad10005 100644 --- a/fabric/item/ontology/document/1.0.0/schema.json +++ b/fabric/item/ontology/document/1.0.0/schema.json @@ -0,0 +1,23 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/ontology/document/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "document definition", + "type": "object", + "properties": { + "$schema": { + "type": [ + "string", + "null" + ] + }, + "displayText": { + "type": "string", + "description": "The display text for the document" + }, + "url": { + "type": "string", + "description": "The URL pointing to the document" + } + }, + "required": ["url"] +} diff --git a/fabric/item/ontology/entityType/1.0.0/schema.json b/fabric/item/ontology/entityType/1.0.0/schema.json index e69de29b..e4763670 100644 --- a/fabric/item/ontology/entityType/1.0.0/schema.json +++ b/fabric/item/ontology/entityType/1.0.0/schema.json @@ -0,0 +1,110 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/ontology/entityType/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "entity type definition", + "type": "object", + "properties": { + "$schema": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string", + "description": "Unique ID of the entity type" + }, + "namespace": { + "type": "string", + "const": "usertypes", + "description": "Namespace of the entity type should always be usertypes" + }, + "baseEntityTypeId": { + "type": [ + "string", + "null" + ], + "description": "Unique ID of the base entity type" + }, + "name": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,127}$", + "description": "Name of the entity type" + }, + "entityIdParts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The properties (by ID) that together uniquely identify an entity" + }, + "displayNamePropertyId": { + "type": [ + "string", + "null" + ], + "description": "The ID of the property that should be used as the display name for the entity" + }, + "namespaceType": { + "type": "string", + "const": "Custom", + "description": "NamespaceType of the entity type should always be Custom" + }, + "visibility": { + "type": "string", + "const": "Visible", + "description": "Visibility of the entity type should always be Visible" + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/definitions/EntityTypeProperty" + }, + "description": "List of entity type properties" + }, + "timeseriesProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/EntityTypeProperty" + }, + "description": "List of entity type timeseries properties" + } + }, + "required": ["id", "namespace", "name", "namespaceType"], + "definitions": { + "EntityTypeProperty": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique ID of the entity type property" + }, + "name": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,127}$", + "description": "Name of the entity type property. Must follow the regex pattern ^[a-zA-Z][a-zA-Z0-9_-]{0,127}$" + }, + "redefines": { + "type": [ + "string", + "null" + ], + "description": "Pointer to property inherited from base type that this property redefines" + }, + "baseTypeNamespaceType": { + "type": [ + "string", + "null" + ], + "description": "The namespace of the base entity type" + }, + "valueType": { + "type": "string", + "enum": ["String", "Boolean", "DateTime", "Object", "BigInt", "Double"], + "description": "Describes the value type of the entity type property" + } + }, + "required": ["id", "name", "valueType"] + } + } +} diff --git a/fabric/item/ontology/overviews/1.0.0/schema.json b/fabric/item/ontology/overviews/1.0.0/schema.json new file mode 100644 index 00000000..ebd82bac --- /dev/null +++ b/fabric/item/ontology/overviews/1.0.0/schema.json @@ -0,0 +1,143 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/ontology/overviews/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "overviews definition", + "type": "object", + "properties": { + "$schema": { + "type": [ + "string", + "null" + ] + }, + "widgets": { + "type": "array", + "items": { + "$ref": "#/definitions/DashboardWidget" + }, + "description": "The widgets on the dashboard" + }, + "settings": { + "$ref": "#/definitions/DashboardSettings", + "description": "The settings of the dashboard" + } + }, + "definitions": { + "DashboardWidget": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Unique ID of the widget" + }, + "type": { + "type": "string", + "enum": ["lineChart", "barChart", "file", "graph", "liveMap"], + "description": "Type of widget" + }, + "title": { + "type": "string", + "description": "The title of the widget" + }, + "yAxisPropertyId": { + "type": "string", + "description": "The property to display on the y-axis. Include this field only if type is lineChart or barChart" + } + }, + "required": ["id", "type"], + "if": { + "properties": { + "type": { + "enum": ["lineChart", "barChart"] + } + } + }, + "then": { + "properties": { + "yAxisPropertyId": { + "type": "string" + } + } + } + }, + "DashboardSettings": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["fixedTime", "customTime"], + "description": "Type of DashboardSettings" + }, + "interval": { + "type": "string", + "enum": ["OneMinute", "FiveMinutes", "FifteenMinutes", "ThirtyMinutes", "OneHour", "SixHours", "TwelveHours", "OneDay"], + "description": "Sample window values in seconds for the dashboard data" + }, + "aggregation": { + "type": "string", + "enum": ["Average", "Count", "Maximum", "Minimum", "Sum", "LastKnownValue"], + "description": "Aggregation function for the dashboard data" + }, + "fixedTimeRange": { + "type": "string", + "enum": ["Last30Minutes", "Last1Hour", "Last4Hours", "Last12Hours", "Last24Hours", "Last48Hours", "Last3Days", "Last7Days", "Last30Days"], + "description": "The fixed time range for the dashboard data. Include this field only if type is fixedTime" + }, + "timeRange": { + "$ref": "#/definitions/DashboardTimeRange", + "description": "Time range for the dashboard data. Include this field only if type is customTime" + } + }, + "required": ["type", "interval", "aggregation"], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "fixedTime" + } + } + }, + "then": { + "required": ["fixedTimeRange"], + "not": { + "required": ["timeRange"] + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "customTime" + } + } + }, + "then": { + "required": ["timeRange"], + "not": { + "required": ["fixedTimeRange"] + } + } + } + ] + }, + "DashboardTimeRange": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "date-time", + "description": "Start time for the custom time range" + }, + "endTime": { + "type": "string", + "format": "date-time", + "description": "End time for the custom time range" + } + }, + "required": ["startTime", "endTime"] + } + } +} diff --git a/fabric/item/ontology/relationshipType/1.0.0/schema.json b/fabric/item/ontology/relationshipType/1.0.0/schema.json index e69de29b..f3d7a0c9 100644 --- a/fabric/item/ontology/relationshipType/1.0.0/schema.json +++ b/fabric/item/ontology/relationshipType/1.0.0/schema.json @@ -0,0 +1,54 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/ontology/relationshipType/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "relationship type definition", + "type": "object", + "properties": { + "$schema": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string", + "description": "Unique ID of the relationship type" + }, + "namespace": { + "type": "string", + "const": "usertypes", + "description": "Namespace of the relationship type should always be usertypes" + }, + "name": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,127}$", + "description": "Name of the relationship type" + }, + "namespaceType": { + "type": "string", + "const": "Custom", + "description": "NamespaceType of the relationship type should always be Custom" + }, + "source": { + "$ref": "#/definitions/RelationshipEnd", + "description": "The relationship end that denotes the source" + }, + "target": { + "$ref": "#/definitions/RelationshipEnd", + "description": "The relationship end that denotes the target" + } + }, + "required": ["id", "namespace", "name", "namespaceType", "source", "target"], + "definitions": { + "RelationshipEnd": { + "type": "object", + "properties": { + "entityTypeId": { + "type": "string", + "description": "The entity type id of the relationship end that exists in the workspace" + } + }, + "required": ["entityTypeId"] + } + } +} From 70ab0e93c53e0e72691d186e99edcbc8721a13f1 Mon Sep 17 00:00:00 2001 From: Akhil-Kokkula Date: Thu, 16 Oct 2025 12:01:04 -0700 Subject: [PATCH 4/5] nit fix --- fabric/item/ontology/entityType/1.0.0/schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fabric/item/ontology/entityType/1.0.0/schema.json b/fabric/item/ontology/entityType/1.0.0/schema.json index e4763670..e91b8351 100644 --- a/fabric/item/ontology/entityType/1.0.0/schema.json +++ b/fabric/item/ontology/entityType/1.0.0/schema.json @@ -82,7 +82,7 @@ "name": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,127}$", - "description": "Name of the entity type property. Must follow the regex pattern ^[a-zA-Z][a-zA-Z0-9_-]{0,127}$" + "description": "Name of the entity type property" }, "redefines": { "type": [ From 924ba2f050b1a60e174d58f32d92c46bfdfc16af Mon Sep 17 00:00:00 2001 From: Akhil-Kokkula Date: Tue, 21 Oct 2025 08:54:49 -0700 Subject: [PATCH 5/5] standardize the use of id in schema files --- .../item/ontology/contextualization/1.0.0/schema.json | 2 +- fabric/item/ontology/dataBinding/1.0.0/schema.json | 8 ++++---- fabric/item/ontology/entityType/1.0.0/schema.json | 10 +++++----- fabric/item/ontology/overviews/1.0.0/schema.json | 2 +- .../item/ontology/relationshipType/1.0.0/schema.json | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/fabric/item/ontology/contextualization/1.0.0/schema.json b/fabric/item/ontology/contextualization/1.0.0/schema.json index 7c964749..02ccec3c 100644 --- a/fabric/item/ontology/contextualization/1.0.0/schema.json +++ b/fabric/item/ontology/contextualization/1.0.0/schema.json @@ -45,7 +45,7 @@ "workspaceId": { "type": "string", "format": "uuid", - "description": "The ID of the workspace where the customer's lakehouse table is located" + "description": "The id of the workspace where the customer's lakehouse table is located" }, "itemId": { "type": "string", diff --git a/fabric/item/ontology/dataBinding/1.0.0/schema.json b/fabric/item/ontology/dataBinding/1.0.0/schema.json index 871f8b5c..93eab327 100644 --- a/fabric/item/ontology/dataBinding/1.0.0/schema.json +++ b/fabric/item/ontology/dataBinding/1.0.0/schema.json @@ -13,7 +13,7 @@ "id": { "type": "string", "format": "uuid", - "description": "Unique ID of the data binding" + "description": "Unique id of the data binding" }, "dataBindingConfiguration": { "$ref": "#/definitions/DataBindingConfiguration", @@ -98,7 +98,7 @@ }, "targetPropertyId": { "type": "string", - "description": "The target property ID in the entity type" + "description": "The target property id in the entity type" } }, "required": ["sourceColumnName", "targetPropertyId"] @@ -114,7 +114,7 @@ "workspaceId": { "type": "string", "format": "uuid", - "description": "The ID of the workspace where the customer's lakehouse table is located" + "description": "The id of the workspace where the customer's lakehouse table is located" }, "itemId": { "type": "string", @@ -143,7 +143,7 @@ "workspaceId": { "type": "string", "format": "uuid", - "description": "The ID of the workspace where the customer's eventhouse is located" + "description": "The id of the workspace where the customer's eventhouse is located" }, "itemId": { "type": "string", diff --git a/fabric/item/ontology/entityType/1.0.0/schema.json b/fabric/item/ontology/entityType/1.0.0/schema.json index e91b8351..6376e75c 100644 --- a/fabric/item/ontology/entityType/1.0.0/schema.json +++ b/fabric/item/ontology/entityType/1.0.0/schema.json @@ -12,7 +12,7 @@ }, "id": { "type": "string", - "description": "Unique ID of the entity type" + "description": "Unique id of the entity type" }, "namespace": { "type": "string", @@ -24,7 +24,7 @@ "string", "null" ], - "description": "Unique ID of the base entity type" + "description": "Unique id of the base entity type" }, "name": { "type": "string", @@ -36,14 +36,14 @@ "items": { "type": "string" }, - "description": "The properties (by ID) that together uniquely identify an entity" + "description": "The properties (by id) that together uniquely identify an entity" }, "displayNamePropertyId": { "type": [ "string", "null" ], - "description": "The ID of the property that should be used as the display name for the entity" + "description": "The id of the property that should be used as the display name for the entity" }, "namespaceType": { "type": "string", @@ -77,7 +77,7 @@ "properties": { "id": { "type": "string", - "description": "Unique ID of the entity type property" + "description": "Unique id of the entity type property" }, "name": { "type": "string", diff --git a/fabric/item/ontology/overviews/1.0.0/schema.json b/fabric/item/ontology/overviews/1.0.0/schema.json index ebd82bac..33b18587 100644 --- a/fabric/item/ontology/overviews/1.0.0/schema.json +++ b/fabric/item/ontology/overviews/1.0.0/schema.json @@ -29,7 +29,7 @@ "id": { "type": "string", "format": "uuid", - "description": "Unique ID of the widget" + "description": "Unique id of the widget" }, "type": { "type": "string", diff --git a/fabric/item/ontology/relationshipType/1.0.0/schema.json b/fabric/item/ontology/relationshipType/1.0.0/schema.json index f3d7a0c9..ed4b54dc 100644 --- a/fabric/item/ontology/relationshipType/1.0.0/schema.json +++ b/fabric/item/ontology/relationshipType/1.0.0/schema.json @@ -12,7 +12,7 @@ }, "id": { "type": "string", - "description": "Unique ID of the relationship type" + "description": "Unique id of the relationship type" }, "namespace": { "type": "string",