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..02ccec3c --- /dev/null +++ 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/dataBinding/1.0.0/schema.json b/fabric/item/ontology/dataBinding/1.0.0/schema.json new file mode 100644 index 00000000..93eab327 --- /dev/null +++ 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 new file mode 100644 index 00000000..7ad10005 --- /dev/null +++ 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 new file mode 100644 index 00000000..6376e75c --- /dev/null +++ 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" + }, + "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..33b18587 --- /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 new file mode 100644 index 00000000..ed4b54dc --- /dev/null +++ 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"] + } + } +} 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