From 12a72b19821fb3e0956fee35081e7d4739fdced6 Mon Sep 17 00:00:00 2001 From: Keerthi Yanda Date: Thu, 18 Jun 2026 10:06:49 -0400 Subject: [PATCH 1/9] Add Data Agent Topics manifest schema (topicsManifest/1.0.0) Adds the JSON schema for the Data Agent "topics-manifest.json" definition file, introduced to support the new Topics feature. The manifest maps each topic's stable id to a human-readable markdown file name; topic bodies live in sibling .md files referenced by fileName. The schema mirrors the conventions of the existing dataAgent definition schemas (draft-07, $id under developer.microsoft.com/json-schemas, $schema required). The fileName pattern enforces a lowercase kebab-case .md slug and rejects GUIDs. --- .../topicsManifest/1.0.0/schema.json | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json diff --git a/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json b/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json new file mode 100644 index 00000000..ed0da24b --- /dev/null +++ b/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json @@ -0,0 +1,53 @@ +{ + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Data Agent Topics Manifest", + "description": "The manifest of topics associated with a data source. Maps each topic's stable id to its human-readable markdown file name. The topic bodies live in sibling .md files referenced by fileName.", + "properties": { + "$schema": { + "type": [ + "string", + "null" + ], + "description": "The schema version of the topics manifest file (e.g., \"1.0.0\")." + }, + "topics": { + "type": [ + "array", + "null" + ], + "description": "The list of topics for this data source, sorted by id for deterministic export.", + "items": { + "type": "object", + "title": "Data Agent Topic Metadata", + "description": "Represents a single topic and the markdown file that holds its body.", + "properties": { + "id": { + "type": "string", + "description": "The stable, rename-safe identifier of the topic, which is a GUID.", + "format": "uuid" + }, + "fileName": { + "type": "string", + "description": "The human-readable markdown file name of the topic body, relative to the topics folder (e.g., \"revenue-definitions.md\"). Must be a lowercase kebab-case slug ending in .md and must not be a canonical GUID.", + "pattern": "^(?![0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\.md$)[a-z0-9]+(-[a-z0-9]+)*\\.md$" + }, + "displayName": { + "type": "string", + "description": "The user-facing display name of the topic." + }, + "description": { + "type": [ + "string", + "null" + ], + "description": "An optional short description of what the topic covers." + } + }, + "required": [ "id", "fileName", "displayName" ] + } + } + }, + "required": [ "$schema" ] +} From 8981653ca636b149096281694145e29b20f55fa5 Mon Sep 17 00:00:00 2001 From: KeerthiYandaOS Date: Thu, 18 Jun 2026 15:20:33 -0400 Subject: [PATCH 2/9] Sync topicsManifest schema with Fabric-APIs Swagger PR 994500 Align the Data Agent topicsManifest/1.0.0 schema with the DataAgentTopic model in Fabric-APIs PR 994500 (Add Topics sub-resource API for DataAgent datasources): - Drop displayName/description from manifest entries; topic name and description now live in the markdown body's YAML frontmatter (per the swagger content model). The manifest/List response carries only id + fileName. - Relax fileName to the swagger rule: alphanumeric, hyphens, and underscores, ending in .md, max length 256 (e.g. company-policies.md). Removes the prior lowercase-kebab-only restriction and the GUID rejection. - Entry now requires id + fileName. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../topicsManifest/1.0.0/schema.json | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json b/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json index ed0da24b..96cea94d 100644 --- a/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json +++ b/fabric/item/dataAgent/definition/topicsManifest/1.0.0/schema.json @@ -20,32 +20,22 @@ "description": "The list of topics for this data source, sorted by id for deterministic export.", "items": { "type": "object", - "title": "Data Agent Topic Metadata", - "description": "Represents a single topic and the markdown file that holds its body.", + "title": "Data Agent Topic", + "description": "Represents a single topic and the markdown file that holds its body. The topic's display name and description live in the markdown YAML frontmatter of the body file, not in this manifest.", "properties": { "id": { "type": "string", - "description": "The stable, rename-safe identifier of the topic, which is a GUID.", + "description": "The stable, rename-safe identifier of the topic (a GUID).", "format": "uuid" }, "fileName": { "type": "string", - "description": "The human-readable markdown file name of the topic body, relative to the topics folder (e.g., \"revenue-definitions.md\"). Must be a lowercase kebab-case slug ending in .md and must not be a canonical GUID.", - "pattern": "^(?![0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\.md$)[a-z0-9]+(-[a-z0-9]+)*\\.md$" - }, - "displayName": { - "type": "string", - "description": "The user-facing display name of the topic." - }, - "description": { - "type": [ - "string", - "null" - ], - "description": "An optional short description of what the topic covers." + "description": "The file name of the topic body in OneLake (e.g., \"company-policies.md\"). Must end with \".md\", contain only alphanumeric characters, hyphens, and underscores, and be unique within the data source. Maximum length is 256 characters.", + "pattern": "^[A-Za-z0-9_-]+\\.md$", + "maxLength": 256 } }, - "required": [ "id", "fileName", "displayName" ] + "required": [ "id", "fileName" ] } } }, From b215a9a64b3bf4d9fed94b9d8c39fd0c18d2b6c4 Mon Sep 17 00:00:00 2001 From: "Manish Singh Mehta (Lumel Technologies Inc)" Date: Fri, 19 Jun 2026 18:24:17 +0530 Subject: [PATCH 3/9] chore: updated plannning v1.0.0 schema --- .../definition/Definition/1.0.0/schema.json | 102 ++- .../PlanProperties/1.0.0/schema.json | 205 +++++ .../Planning/DataInput/1.0.0/schema.json | 56 +- .../Planning/InsertRows/1.0.0/schema.json | 13 +- .../Planning/Scenarios/1.0.0/schema.json | 11 +- .../Planning/Writeback/1.0.0/schema.json | 89 +- .../Sheets/CommentSettings/1.0.0/schema.json | 76 ++ .../definition/Sheets/Sheet/1.0.0/schema.json | 766 ++++++++++++++++++ 8 files changed, 1271 insertions(+), 47 deletions(-) create mode 100644 fabric/item/plan/definition/PlanProperties/1.0.0/schema.json create mode 100644 fabric/item/plan/definition/Sheets/CommentSettings/1.0.0/schema.json create mode 100644 fabric/item/plan/definition/Sheets/Sheet/1.0.0/schema.json diff --git a/fabric/item/plan/definition/Definition/1.0.0/schema.json b/fabric/item/plan/definition/Definition/1.0.0/schema.json index 77ea6010..4d849ccf 100644 --- a/fabric/item/plan/definition/Definition/1.0.0/schema.json +++ b/fabric/item/plan/definition/Definition/1.0.0/schema.json @@ -5,6 +5,7 @@ "type": "object", "required": [ "$schema", + "workloadItemName", "semanticModelReference", "sheets" ], @@ -14,6 +15,10 @@ "format": "uri", "const": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/definition/1.0.0/schema.json" }, + "workloadItemName": { + "type": "string", + "description": "User-facing name of the workload item." + }, "semanticModelReference": { "$ref": "#/definitions/SemanticModelReference" }, @@ -30,9 +35,25 @@ "SemanticModelReference": { "type": "object", "description": "Reference to the semantic model backing this plan.", - "required": [ - "connection", - "semanticModel" + "anyOf": [ + { + "required": [ + "connection", + "semanticModel" + ] + }, + { + "required": [ + "connectionId", + "semanticModelId", + "semanticModelName", + "semanticModelWorkspaceId", + "semanticModelWorkspaceName", + "directLakeMode", + "directQueryMode", + "sourceType" + ] + } ], "properties": { "connection": { @@ -40,6 +61,34 @@ }, "semanticModel": { "$ref": "https://developer.microsoft.com/json-schemas/fabric/common/itemReference/1.0.0/schema.json#/definitions/ItemReferenceOrVar" + }, + "connectionId": { + "type": "string", + "format": "uuid" + }, + "semanticModelId": { + "type": "string", + "format": "uuid" + }, + "semanticModelName": { + "type": "string" + }, + "semanticModelWorkspaceId": { + "type": "string", + "format": "uuid" + }, + "semanticModelWorkspaceName": { + "type": "string" + }, + "directLakeMode": { + "type": "boolean" + }, + "directQueryMode": { + "type": "boolean" + }, + "sourceType": { + "type": "string", + "enum": ["POWERTABLE", "INFOBRIDGE", "WORKLOAD"] } }, "additionalProperties": false @@ -48,15 +97,15 @@ "type": "object", "description": "A sheet declaration within the plan.", "required": [ - "id", "displayName", - "sheetType" + "sheetType", + "recordGuid" ], "properties": { - "id": { + "recordGuid": { "type": "string", "format": "uuid", - "description": "Unique identifier for the sheet." + "description": "Unique identifier for the sheet record." }, "displayName": { "type": "string", @@ -66,10 +115,43 @@ "type": "string", "description": "The type of sheet.", "enum": [ - "Planning", - "PowerTable", - "Intelligence" + "PLANNING", + "REPORTING", + "POWERTABLE", + "INFOBRIDGE", + "SUPER_FILTER", + "BI_REPORTING", + "BI_ADHOC_ANALYSIS", + "BI_DASHBOARD" ] + }, + "isHidden": { + "type": "boolean", + "description": "Indicates if the sheet is hidden." + }, + "order": { + "type": "number", + "description": "Order of the sheet within the report." + }, + "workloadItemEntityVisuals": { + "type": "array", + "description": "List of visuals associated with the sheet.", + "items": { + "type": "object", + "properties": { + "visualType": { + "type": "string", + "description": "Type of the visual.", + "enum": ["POWERTABLE", "PLANNING", "INFO_BRIDGE"] + }, + "visualId": { + "type": "string", + "format": "uuid", + "description": "Unique identifier for the visual." + } + }, + "additionalProperties": false + } } }, "additionalProperties": false diff --git a/fabric/item/plan/definition/PlanProperties/1.0.0/schema.json b/fabric/item/plan/definition/PlanProperties/1.0.0/schema.json new file mode 100644 index 00000000..28892798 --- /dev/null +++ b/fabric/item/plan/definition/PlanProperties/1.0.0/schema.json @@ -0,0 +1,205 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/planProperties/1.0.0/schema.json", + "description": "Plan-level UI and behavior properties for a Planning workload item.", + "type": "object", + "required": [ + "$schema", + "properties" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri", + "const": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/planProperties/1.0.0/schema.json" + }, + "properties": { + "$ref": "#/definitions/PlanProperties" + } + }, + "additionalProperties": false, + "definitions": { + "PlanProperties": { + "type": "object", + "required": [ + "workloadModeConfig" + ], + "properties": { + "theme": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "integer", + "description": "Theme type code." + } + }, + "additionalProperties": false + }, + "workloadModeConfig": { + "$ref": "#/definitions/WorkloadModeConfig" + }, + "workloadLevelFilterAssignments": { + "type": "array", + "items": {} + }, + "dataStreamerConfig": { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "workloadLevelVariables": { + "type": "array", + "items": {} + }, + "reportPageTooltipEntities": { + "type": "array", + "items": {} + }, + "syncVisualsState": { + "type": "object", + "additionalProperties": true + }, + "workloadLevelQueryFilterAssignments": { + "type": "array", + "items": {} + }, + "drillThroughConfig": { + "type": "object", + "additionalProperties": true + }, + "entityAdditionalProps": { + "type": "object", + "additionalProperties": true + }, + "favoriteCharts": { + "type": "array", + "items": {} + }, + "syncSlicerConfig": { + "type": "array", + "items": {} + }, + "pageGroupingMeta": { + "$ref": "#/definitions/PageGroupingMeta" + } + }, + "additionalProperties": { "type": "string" } + }, + "WorkloadModeConfig": { + "type": "object", + "required": [ + "EDIT", + "READ" + ], + "properties": { + "EDIT": { + "$ref": "#/definitions/EditModeConfig" + }, + "READ": { + "$ref": "#/definitions/ReadModeConfig" + } + }, + "additionalProperties": false + }, + "EditModeConfig": { + "type": "object", + "required": [ + "showFilterPane", + "showDataPane", + "showFieldsPane", + "showElementsPane", + "showBookmarksPane", + "showPersonalizePane", + "showCommentsPane", + "showVariablesPane" + ], + "properties": { + "showFilterPane": { + "type": "boolean" + }, + "showDataPane": { + "type": "boolean" + }, + "showFieldsPane": { + "type": "boolean" + }, + "showElementsPane": { + "type": "boolean" + }, + "showBookmarksPane": { + "type": "boolean" + }, + "showPersonalizePane": { + "type": "boolean" + }, + "showCommentsPane": { + "type": "boolean" + }, + "showVariablesPane": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ReadModeConfig": { + "type": "object", + "required": [ + "showFilterPane", + "showDataPane", + "showBookmarksPane", + "showPersonalizePane", + "showVariablesPane", + "showCommentsPane" + ], + "properties": { + "showFilterPane": { + "type": "boolean" + }, + "showDataPane": { + "type": "boolean" + }, + "showBookmarksPane": { + "type": "boolean" + }, + "showPersonalizePane": { + "type": "boolean" + }, + "showVariablesPane": { + "type": "boolean" + }, + "showCommentsPane": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "PageGroupingMeta": { + "type": "object", + "required": [ + "pageGroupMapping", + "pageGroups" + ], + "properties": { + "pageGroupMapping": { + "type": "object", + "additionalProperties": true + }, + "pageGroups": { + "type": "array", + "items": {} + } + }, + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/fabric/item/plan/definition/Planning/DataInput/1.0.0/schema.json b/fabric/item/plan/definition/Planning/DataInput/1.0.0/schema.json index e77fbe56..336c330b 100644 --- a/fabric/item/plan/definition/Planning/DataInput/1.0.0/schema.json +++ b/fabric/item/plan/definition/Planning/DataInput/1.0.0/schema.json @@ -3,15 +3,28 @@ "$id": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/planning/dataInput/1.0.0/schema.json", "title": "Data Input Columns", "description": "Array of data input column definitions for a Planning visual, including forecasts, text inputs, number inputs, and native measures.", - "type": "array", - "items": { - "$ref": "#/definitions/DataInputColumn" + "type": "object", + "required": [ + "$schema", + "columns" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri", + "const": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/planning/dataInput/1.0.0/schema.json" + }, + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/DataInputColumn" + } + } }, "definitions": { "DataInputColumn": { "type": "object", "required": [ - "$schema", "measureGuid", "visualId", "columnMeta", @@ -19,11 +32,6 @@ "dataInputType" ], "properties": { - "$schema": { - "type": "string", - "format": "uri", - "const": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/planning/dataInput/1.0.0/schema.json" - }, "measureGuid": { "type": "string", "description": "Unique identifier for the measure/column." @@ -114,6 +122,9 @@ }, "Native": { "$ref": "#/definitions/NativeMeasure" + }, + "Formula": { + "$ref": "#/definitions/FormulaMeasure" } }, "oneOf": [ @@ -158,6 +169,12 @@ }, "additionalProperties": false }, + "closed_period_source": { + "type": [ + "string", + "null" + ] + }, "closed_period_till": { "type": [ "string", @@ -179,13 +196,16 @@ "Forecast" ] }, + "forecast_value_retain_blanks": { + "type": "boolean" + }, "open_period_config": { "type": "object", "properties": { "method": { "type": "object", "additionalProperties": { - "type": "string" + "type": "string" } } }, @@ -197,7 +217,7 @@ "method": { "type": "object", "additionalProperties": { - "type": "string" + "type": "string" } } }, @@ -281,6 +301,20 @@ }, "additionalProperties": false }, + "FormulaMeasure": { + "type": "object", + "description": "Measure defined by a formula.", + "required": [ + "formula" + ], + "properties": { + "formula": { + "type": "string", + "description": "The formula expression for the measure." + } + }, + "additionalProperties": false + }, "EditConfig": { "type": "object", "properties": { diff --git a/fabric/item/plan/definition/Planning/InsertRows/1.0.0/schema.json b/fabric/item/plan/definition/Planning/InsertRows/1.0.0/schema.json index 18e725f0..0ed470c0 100644 --- a/fabric/item/plan/definition/Planning/InsertRows/1.0.0/schema.json +++ b/fabric/item/plan/definition/Planning/InsertRows/1.0.0/schema.json @@ -30,7 +30,6 @@ "visualId", "rowMeta", "name", - "status", "dimensionId" ], "properties": { @@ -50,6 +49,14 @@ ], "description": "Optional visual row configuration reference." }, + "rowPath": { + "type": ["string"], + "description": "Optional hierarchical path for the row." + }, + "derivedFromRowId": { + "type": ["string"], + "description": "Optional source row ID when row is derived." + }, "rowMeta": { "$ref": "#/definitions/RowMeta" }, @@ -57,10 +64,6 @@ "type": "string", "description": "Display name of the row." }, - "status": { - "type": "integer", - "description": "Status code of the row." - }, "dimensionId": { "type": "string", "description": "Dimension this row belongs to." diff --git a/fabric/item/plan/definition/Planning/Scenarios/1.0.0/schema.json b/fabric/item/plan/definition/Planning/Scenarios/1.0.0/schema.json index 06744c46..daacf977 100644 --- a/fabric/item/plan/definition/Planning/Scenarios/1.0.0/schema.json +++ b/fabric/item/plan/definition/Planning/Scenarios/1.0.0/schema.json @@ -40,8 +40,7 @@ "description": "Current status of the scenario.", "enum": [ "ACTIVE", - "INACTIVE", - "DRAFT" + "LOCK" ] }, "meta": { @@ -65,14 +64,6 @@ "type": "object", "additionalProperties": true } - }, - "userPermission": { - "type": "array", - "description": "User permissions for this scenario.", - "items": { - "type": "object", - "additionalProperties": true - } } }, "additionalProperties": false diff --git a/fabric/item/plan/definition/Planning/Writeback/1.0.0/schema.json b/fabric/item/plan/definition/Planning/Writeback/1.0.0/schema.json index c7ec7265..5ae52f13 100644 --- a/fabric/item/plan/definition/Planning/Writeback/1.0.0/schema.json +++ b/fabric/item/plan/definition/Planning/Writeback/1.0.0/schema.json @@ -19,8 +19,12 @@ "type": "integer", "description": "Writeback type code." }, - "destination": { - "$ref": "#/definitions/WritebackDestination" + "destinations": { + "type": "array", + "description": "List of writeback destinations.", + "items": { + "$ref": "#/definitions/WritebackDestination" + } }, "writebackFilter": { "type": "object", @@ -29,7 +33,8 @@ "type": "string", "enum": [ "none", - "filter" + "filter", + "calculatedRows" ] } }, @@ -93,6 +98,11 @@ "type": "boolean", "description": "Whether to write back as HTML." }, + "writebackConstraints": { + "type": "object", + "description": "Constraint configuration for writeback validation.", + "additionalProperties": true + }, "wbColumns": { "type": "array", "description": "Column definitions for the writeback table.", @@ -109,23 +119,80 @@ "WritebackDestination": { "type": "object", "required": [ - "connection", "tableName", - "schema", - "database" + "settings", + "settingsHash" + ], + "anyOf": [ + { + "required": ["connectionId"] + }, + { + "required": ["connection"] + } ], "properties": { + "tableName": { + "type": "string" + }, + "connectionId": { + "type": "string", + "format": "uuid" + }, "connection": { - "$ref": "https://developer.microsoft.com/json-schemas/fabric/common/connectionReference/1.0.0/schema.json#/definitions/ConnectionReferenceOrVar" + "description": "connection reference as variable resolves to connectionId.", + "anyOf": [ + { + "$ref": "https://developer.microsoft.com/json-schemas/fabric/common/connectionReference/1.0.0/schema.json#/definitions/ConnectionReferenceOrVar" + }, + { + "type": "null" + } + ] }, - "database": { - "$ref": "https://developer.microsoft.com/json-schemas/fabric/common/itemReference/1.0.0/schema.json#/definitions/ItemReferenceOrVar" + "settings": { + "$ref": "#/definitions/DestinationSettings" + }, + "settingsHash": { + "type": "string" + } + }, + "additionalProperties": false + }, + "DestinationSettings": { + "type": "object", + "required": ["dbSchema"], + "anyOf": [ + { + "required": ["dbName", "dbHost"] }, - "schema": { + { + "required": ["database"] + } + ], + "properties": { + "dbHost": { "type": "string" }, - "tableName": { + "dbName": { + "type": "string" + }, + "dbSchema": { + "type": "string" + }, + "dbDisplayName": { "type": "string" + }, + "database": { + "description": "database references variable resolves to db details.", + "anyOf": [ + { + "$ref": "https://developer.microsoft.com/json-schemas/fabric/common/itemReference/1.0.0/schema.json#/definitions/ItemReferenceOrVar" + }, + { + "type": "null" + } + ] } }, "additionalProperties": false diff --git a/fabric/item/plan/definition/Sheets/CommentSettings/1.0.0/schema.json b/fabric/item/plan/definition/Sheets/CommentSettings/1.0.0/schema.json new file mode 100644 index 00000000..3c830458 --- /dev/null +++ b/fabric/item/plan/definition/Sheets/CommentSettings/1.0.0/schema.json @@ -0,0 +1,76 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/sheets/commentSettings/1.0.0/schema.json", + "title": "Comment Settings", + "description": "Comment panel settings for a Planning visual.", + "type": "object", + "required": [ + "$schema", + "recordGuid", + "allowComment", + "enableCommentsColumn", + "notification" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri", + "const": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/sheets/commentSettings/1.0.0/schema.json" + }, + "recordGuid": { + "type": "string", + "format": "uuid" + }, + "keepCommentPanelOpen": { + "type": "boolean", + "description": "status for comment panel open status." + }, + "showStarredComments": { + "type": "boolean", + "description": "status for showing starred comments." + }, + "allowComment": { + "type": "boolean", + "description": "status for allowing comments." + }, + "enableCommentsColumn": { + "type": "boolean", + "description": "status for enabling comments column." + }, + "enableStatusColumn": { + "type": "boolean", + "description": "status for enabling status column." + }, + "rollUpComments": { + "type": "boolean", + "description": "status for rolling up comments." + }, + "commentIndicatorDisplay": { + "$ref": "#/definitions/CommentIndicatorDisplay" + }, + "notification": { + "type": "boolean", + "description": "status for showing notification." + } + }, + "additionalProperties": false, + "definitions": { + "CommentIndicatorDisplay": { + "type": "object", + "required": ["type", "pixel", "position"], + "properties": { + "type": { + "type": "string" + }, + "pixel": { + "type": "integer", + "minimum": 0 + }, + "position": { + "type": "string" + } + }, + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/fabric/item/plan/definition/Sheets/Sheet/1.0.0/schema.json b/fabric/item/plan/definition/Sheets/Sheet/1.0.0/schema.json new file mode 100644 index 00000000..c41bbf48 --- /dev/null +++ b/fabric/item/plan/definition/Sheets/Sheet/1.0.0/schema.json @@ -0,0 +1,766 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/sheets/sheet/1.0.0/schema.json", + "description": "Sheet-level UI and canvas properties for a Planning workload item.", + "type": "object", + "required": [ + "$schema", + "properties" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri", + "const": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/sheets/sheet/1.0.0/schema.json" + }, + "properties": { + "$ref": "#/definitions/SheetProperties" + } + }, + "additionalProperties": false, + "definitions": { + "SheetProperties": { + "type": "object", + "required": [ + "pageLevelFilterAssignments", + "entityLevelVariables", + "filterPanePosition", + "topPositionFilterExpandConfig", + "commentary", + "canvasStyle", + "assignmentColumnMap", + "visualGroupMap", + "sourceVisualsMeta", + "controlPanePosition" + ], + "properties": { + "pageLevelFilterAssignments": { + "type": "array", + "items": {} + }, + "entityLevelVariables": { + "type": "array", + "items": {} + }, + "filterPanePosition": { + "type": "string" + }, + "topPositionFilterExpandConfig": { + "$ref": "#/definitions/TopPositionFilterExpandConfig" + }, + "commentary": { + "$ref": "#/definitions/Commentary" + }, + "canvasStyle": { + "$ref": "#/definitions/CanvasStyle" + }, + "assignmentColumnMap": { + "type": "object", + "additionalProperties": true + }, + "visualGroupMap": { + "type": "object", + "additionalProperties": true + }, + "sourceVisualsMeta": { + "type": "object", + "additionalProperties": true + }, + "controlPanePosition": { + "type": "string" + } + } + }, + "TopPositionFilterExpandConfig": { + "type": "object", + "required": [ + "isFilterPaneCollapsed", + "expandedHeight" + ], + "properties": { + "isFilterPaneCollapsed": { + "type": "boolean" + }, + "expandedHeight": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "Commentary": { + "type": "object", + "required": [ + "notes", + "annotation" + ], + "properties": { + "notes": { + "$ref": "#/definitions/Notes" + }, + "annotation": { + "$ref": "#/definitions/Annotation" + } + }, + "additionalProperties": false + }, + "Notes": { + "type": "object", + "required": [ + "notesMap", + "settings", + "noteOrder", + "enableMarkerMode", + "markerData" + ], + "properties": { + "notesMap": { + "type": "object", + "additionalProperties": true + }, + "settings": { + "$ref": "#/definitions/NotesSettings" + }, + "noteOrder": { + "type": "array", + "items": {} + }, + "enableMarkerMode": { + "type": "boolean" + }, + "markerData": { + "type": "array", + "items": {} + } + }, + "additionalProperties": false + }, + "NotesSettings": { + "type": "object", + "required": [ + "enable", + "hideAllNotes", + "indicator", + "marker", + "displayStyle", + "floatSettings" + ], + "properties": { + "enable": { + "type": "boolean" + }, + "hideAllNotes": { + "type": "boolean" + }, + "indicator": { + "$ref": "#/definitions/NotesIndicator" + }, + "marker": { + "$ref": "#/definitions/NotesMarker" + }, + "displayStyle": { + "type": "string" + }, + "floatSettings": { + "$ref": "#/definitions/FloatSettings" + } + }, + "additionalProperties": false + }, + "NotesIndicator": { + "type": "object", + "required": [ + "size", + "type", + "fontSize", + "color", + "position" + ], + "properties": { + "size": { + "type": "integer" + }, + "type": { + "type": "string" + }, + "fontSize": { + "type": "integer" + }, + "color": { + "type": "string" + }, + "position": { + "type": "string" + } + }, + "additionalProperties": false + }, + "NotesMarker": { + "type": "object", + "required": [ + "pattern", + "style", + "size", + "color" + ], + "properties": { + "pattern": { + "type": "string" + }, + "style": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "color": { + "type": "string" + } + }, + "additionalProperties": false + }, + "FloatSettings": { + "type": "object", + "required": [ + "horizontalAlign", + "verticalAlign", + "shape", + "borderStyle", + "borderColor", + "borderWidth", + "arrowStyle", + "arrowEnd", + "arrowColor", + "arrowWidth", + "dragLineType", + "displayNoteAs" + ], + "properties": { + "horizontalAlign": { + "type": "string" + }, + "verticalAlign": { + "type": "string" + }, + "shape": { + "type": "string" + }, + "borderStyle": { + "type": "string" + }, + "borderColor": { + "type": "string" + }, + "borderWidth": { + "type": "integer" + }, + "arrowStyle": { + "type": "string" + }, + "arrowEnd": { + "type": "string" + }, + "arrowColor": { + "type": "string" + }, + "arrowWidth": { + "type": "integer" + }, + "dragLineType": { + "type": "string" + }, + "displayNoteAs": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Annotation": { + "type": "object", + "required": [ + "settings" + ], + "properties": { + "settings": { + "$ref": "#/definitions/AnnotationSettings" + } + }, + "additionalProperties": false + }, + "AnnotationSettings": { + "type": "object", + "required": [ + "hideAllAnnotations", + "indicator", + "title", + "annotationText", + "style" + ], + "properties": { + "hideAllAnnotations": { + "type": "boolean" + }, + "indicator": { + "$ref": "#/definitions/AnnotationIndicator" + }, + "title": { + "type": "object", + "additionalProperties": true + }, + "annotationText": { + "type": "object", + "additionalProperties": true + }, + "style": { + "$ref": "#/definitions/AnnotationStyle" + } + }, + "additionalProperties": false + }, + "AnnotationIndicator": { + "type": "object", + "required": [ + "type", + "size", + "color" + ], + "properties": { + "type": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "color": { + "type": "string" + } + }, + "additionalProperties": false + }, + "AnnotationStyle": { + "type": "object", + "required": [ + "cornerRadius", + "borderAndCorner", + "shadow", + "padding" + ], + "properties": { + "cornerRadius": { + "$ref": "#/definitions/CornerRadius" + }, + "borderAndCorner": { + "$ref": "#/definitions/EnabledFlag" + }, + "shadow": { + "$ref": "#/definitions/EnabledFlag" + }, + "padding": { + "$ref": "#/definitions/Padding" + } + }, + "additionalProperties": false + }, + "CornerRadius": { + "type": "object", + "required": [ + "radiusTopLeft", + "radiusTopRight", + "radiusBottomLeft", + "radiusBottomRight", + "isCustomCornerRadius", + "isEnabled" + ], + "properties": { + "radiusTopLeft": { + "type": "integer" + }, + "radiusTopRight": { + "type": "integer" + }, + "radiusBottomLeft": { + "type": "integer" + }, + "radiusBottomRight": { + "type": "integer" + }, + "isCustomCornerRadius": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "EnabledFlag": { + "type": "object", + "required": [ + "isEnabled" + ], + "properties": { + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Padding": { + "type": "object", + "required": [ + "top", + "right", + "bottom", + "left", + "isCustomPadding" + ], + "properties": { + "top": { + "type": "integer" + }, + "right": { + "type": "integer" + }, + "bottom": { + "type": "integer" + }, + "left": { + "type": "integer" + }, + "isCustomPadding": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CanvasStyle": { + "type": "object", + "required": [ + "dimension", + "background", + "wallpaper", + "border", + "shadow", + "cornerRadius", + "isLocked", + "gridLineSettings", + "showVisualGuide", + "showSmartGuide", + "verticalAlign", + "scrollToZoom", + "mobileCanvas", + "isAutoLayoutDisabled" + ], + "properties": { + "dimension": { + "$ref": "#/definitions/Dimension" + }, + "background": { + "$ref": "#/definitions/Background" + }, + "wallpaper": { + "$ref": "#/definitions/Wallpaper" + }, + "border": { + "$ref": "#/definitions/Border" + }, + "shadow": { + "$ref": "#/definitions/Shadow" + }, + "cornerRadius": { + "$ref": "#/definitions/CanvasCornerRadius" + }, + "isLocked": { + "type": "boolean" + }, + "gridLineSettings": { + "$ref": "#/definitions/GridLineSettings" + }, + "showVisualGuide": { + "type": "boolean" + }, + "showSmartGuide": { + "type": "boolean" + }, + "verticalAlign": { + "type": "string" + }, + "scrollToZoom": { + "type": "boolean" + }, + "mobileCanvas": { + "$ref": "#/definitions/MobileCanvas" + }, + "isAutoLayoutDisabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Dimension": { + "type": "object", + "required": [ + "type", + "width", + "height", + "elementScalingUnit" + ], + "properties": { + "type": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "elementScalingUnit": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Background": { + "type": "object", + "required": [ + "type", + "value", + "isEnabled", + "fillMode", + "opacity", + "color", + "imageUrl" + ], + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "fillMode": { + "type": "string" + }, + "opacity": { + "type": "number" + }, + "color": { + "type": "string" + }, + "imageUrl": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Wallpaper": { + "type": "object", + "required": [ + "value", + "isEnabled", + "opacity" + ], + "properties": { + "value": { + "$ref": "#/definitions/WallpaperValue" + }, + "isEnabled": { + "type": "boolean" + }, + "opacity": { + "type": "number" + } + }, + "additionalProperties": false + }, + "WallpaperValue": { + "type": "object", + "required": [ + "type", + "color", + "imageUrl" + ], + "properties": { + "type": { + "type": "string" + }, + "color": { + "type": "string" + }, + "imageUrl": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Border": { + "type": "object", + "required": [ + "color", + "side", + "width", + "isEnabled" + ], + "properties": { + "color": { + "type": "string" + }, + "side": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Shadow": { + "type": "object", + "required": [ + "blur", + "color", + "isEnabled", + "placement", + "side", + "width", + "opacity", + "distance", + "angle" + ], + "properties": { + "blur": { + "type": "integer" + }, + "color": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "placement": { + "type": "string" + }, + "side": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "opacity": { + "type": "number" + }, + "distance": { + "type": "integer" + }, + "angle": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "CanvasCornerRadius": { + "type": "object", + "required": [ + "isEnabled", + "isCustomCornerRadius", + "radiusBottomLeft", + "radiusBottomRight", + "radiusTopLeft", + "radiusTopRight" + ], + "properties": { + "isEnabled": { + "type": "boolean" + }, + "isCustomCornerRadius": { + "type": "boolean" + }, + "radiusBottomLeft": { + "type": "integer" + }, + "radiusBottomRight": { + "type": "integer" + }, + "radiusTopLeft": { + "type": "integer" + }, + "radiusTopRight": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "GridLineSettings": { + "type": "object", + "required": [ + "showGridLines", + "snapToGrid", + "gridRows", + "gridColumns", + "gridLayoutType" + ], + "properties": { + "showGridLines": { + "type": "boolean" + }, + "snapToGrid": { + "type": "boolean" + }, + "gridRows": { + "type": [ + "integer", + "null" + ] + }, + "gridColumns": { + "type": [ + "integer", + "null" + ] + }, + "gridLayoutType": { + "type": "string" + } + }, + "additionalProperties": false + }, + "MobileCanvas": { + "type": "object", + "required": [ + "editModeDimension", + "runtimeDimension" + ], + "properties": { + "editModeDimension": { + "$ref": "#/definitions/Size" + }, + "runtimeDimension": { + "$ref": "#/definitions/Size" + } + }, + "additionalProperties": false + }, + "Size": { + "type": "object", + "required": [ + "width", + "height" + ], + "properties": { + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + } + }, + "additionalProperties": false + } + } +} \ No newline at end of file From c941b66bfdddb9dff636e53d7c8d4af17e036738 Mon Sep 17 00:00:00 2001 From: jameskanmsft Date: Fri, 19 Jun 2026 13:13:08 -0700 Subject: [PATCH 4/9] Update schema.json by removing agent identity Removed identity property and updated description in configuration. --- .../definition/1.0.0/schema.json | 29 +------------------ 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/fabric/item/operationsAgents/definition/1.0.0/schema.json b/fabric/item/operationsAgents/definition/1.0.0/schema.json index a1e8b3ca..761d89a9 100644 --- a/fabric/item/operationsAgents/definition/1.0.0/schema.json +++ b/fabric/item/operationsAgents/definition/1.0.0/schema.json @@ -8,7 +8,7 @@ "configuration": { "type": "object", "title": "Operations Agent Configuration", - "description": "User specified configuration containing instructions, data sources, actions, message destination, and identity of the agent.", + "description": "User specified configuration containing instructions, data sources, actions, and message destination of the agent.", "properties": { "instructions": { "type": "string", @@ -33,9 +33,6 @@ }, "messageDestination": { "$ref": "#/definitions/messageDestination" - }, - "identity": { - "$ref": "#/definitions/agentIdentity" } }, "required": [ @@ -234,30 +231,6 @@ "channelId" ], "additionalProperties": false - }, - "agentIdentity": { - "type": "object", - "description": "Identity information for the agent, used for agent OBO / app-only scenarios on ALM import/export.", - "properties": { - "principalId": { - "type": "string", - "description": "The principal ID for the agent identity." - }, - "blueprintId": { - "type": "string", - "description": "The agent identity blueprint ID." - }, - "mode": { - "type": "string", - "enum": ["Delegated"], - "description": "Execution mode." - }, - "sponsor": { - "type": "string", - "description": "The UPN of the sponsor user. Required when messageDestination is a non-Recipient kind." - } - }, - "additionalProperties": false } } } From c874f0a057b436adf81878eb89ae5f6f06a0fdfb Mon Sep 17 00:00:00 2001 From: jameskanmsft Date: Fri, 19 Jun 2026 15:53:48 -0700 Subject: [PATCH 5/9] Enhance operations agent configuration schema Updated the description in the configuration schema to include user-provided identity fields. Added identity reference to the properties. --- .../definition/1.0.0/schema.json | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/fabric/item/operationsAgents/definition/1.0.0/schema.json b/fabric/item/operationsAgents/definition/1.0.0/schema.json index 761d89a9..76e0f24a 100644 --- a/fabric/item/operationsAgents/definition/1.0.0/schema.json +++ b/fabric/item/operationsAgents/definition/1.0.0/schema.json @@ -8,7 +8,7 @@ "configuration": { "type": "object", "title": "Operations Agent Configuration", - "description": "User specified configuration containing instructions, data sources, actions, and message destination of the agent.", + "description": "User specified configuration containing instructions, data sources, actions, message destination, and user-provided identity fields of the agent.", "properties": { "instructions": { "type": "string", @@ -33,6 +33,9 @@ }, "messageDestination": { "$ref": "#/definitions/messageDestination" + }, + "identity": { + "$ref": "#/definitions/agentIdentity" } }, "required": [ @@ -231,6 +234,20 @@ "channelId" ], "additionalProperties": false + }, + "agentIdentity": { + "type": "object", + "description": "User-provided identity settings for definition payloads. Server-generated identity fields are read-only and excluded.", + "properties": { + "sponsor": { + "type": "string", + "description": "Sponsor alias provided by the user." + } + }, + "required": [ + "sponsor" + ], + "additionalProperties": false } } } From c257446801a6aae0301d581b14ffb3acb63c0b7d Mon Sep 17 00:00:00 2001 From: jameskanmsft Date: Fri, 19 Jun 2026 16:00:34 -0700 Subject: [PATCH 6/9] Revise Operations Agent schema for updates and deprecations Updated the Operations Agent artifact definition schema to reflect breaking changes and enhancements, including deprecating 'goals' and 'recipient' properties. --- .../definition/1.0.0/schema.json | 473 +++++++++--------- 1 file changed, 231 insertions(+), 242 deletions(-) diff --git a/fabric/item/operationsAgents/definition/1.0.0/schema.json b/fabric/item/operationsAgents/definition/1.0.0/schema.json index 76e0f24a..e1fbb360 100644 --- a/fabric/item/operationsAgents/definition/1.0.0/schema.json +++ b/fabric/item/operationsAgents/definition/1.0.0/schema.json @@ -1,253 +1,242 @@ +--- +title: Operations agent definition +description: Learn how to structure an operations agent item definition when using the Microsoft Fabric REST API. +ms.title: Microsoft Fabric operations agent item definition +author: jeromez +ms.author: jeromez +ms.service: fabric +ms.date: 05/14/2026 +--- + +# Operations Agent definition + +This article provides a breakdown of the definition structure for operations agent items. + +> [!WARNING] +> As of June 2026, we have updated the Operations Agent artifact definition schema to account for several feature enhancements for GA release. Among these updates are **two breaking changes**; importing an Operations Agent artifact definition with these two legacy fields may not work as expected. Please update the definition per the following guidance. +> +> **1. `Configuration.goals` property is deprecated.** To simplify the configuration, we have removed the `goals` property completely. You now provide the goals and instructions together in the `instructions` property. +> +> **2. `Configuration.recipient` property is deprecated and replaced with `messageDestination`.** We have recently enabled Teams channels as a destination for agent notifications. To support this, you can now specify whether the recipient should be a `Recipient` upn string, or a `teamId` and `channelId` for Teams channels. An example of `messageDestination` that continues to use a upn recipient: +> +> ```json +> { "messageDestination": { "kind": "Recipient", "recipient": "contoso@microsoft.com" } } +> ``` + + +## Definition parts + +| Definition part path | type | Required | Description | +|--|--|--|--| +| `Configurations.json` | [OperationsAgentDefinition](#operationsagentdefinition-contents) (JSON) | true | Root definition containing configuration (instructions, data sources, actions), playbook, and run state | + +## OperationsAgentDefinition contents + +Root shape of the definition payload. + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| configuration | [OperationsAgentConfiguration](#operationsagentconfiguration-contents) | true | User-authored configuration: instructions, data sources, and actions | +| playbook | Object | true | Playbook definition (reserved for future expansion). Provide an empty object `{}` if not authored | +| shouldRun | Boolean | true | Whether the agent should currently run (`true`) or stay stopped (`false`) | + +### OperationsAgentConfiguration contents + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| instructions | String | true | Explicit instructions / procedures the agent should follow | +| dataSources | Object (dictionary of [DataSource](#datasource-contents) or [variable reference](#variable-references-in-datasources)) | true | Map of user-chosen data source aliases to data source objects (or variable reference strings) | +| actions | Object (dictionary of [Action](#action-contents)) | true | Map of user-chosen action aliases to action objects | +| messageDestination | [MessageDestination](#messagedestination-contents) | false | Where the agent sends notifications. Polymorphic — use the `kind` discriminator to select the destination type | +| identity | [AgentIdentity](#agentidentity-contents) | false | User-provided identity settings for the agent. For GA, only `sponsor` is supported in definition payloads | + +Notes: + +- The keys inside `dataSources` and `actions` are user-defined aliases (for example, `primaryKusto`, `notifyFlow`). +- Provide at least one data source and one action for a meaningful agent. + +### DataSource contents + +Represents a Fabric data source the agent can read from. + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| id | String (GUID) | true | Unique identifier for the data source reference | +| type | String (enum) | true | Data source type. See supported values below | +| workspaceId | String (GUID) | true | Workspace ID containing the data source | + +Supported `type` values: + +- `KustoDatabase` +- `Ontology` + +#### Variable references in dataSources + +In place of an inline `DataSource` object, a `dataSources` entry value can be a variable reference string that points at a variable in a Fabric variable library. The string must use the format `$(///)`. + +Example: + +```json +"dataSources": { + "primaryKusto": "$(/MyWorkspace/MyLibrary/MyKustoDb)" +} +``` + +You can mix inline data source objects and variable references in the same `dataSources` map. The variable library item itself isn't part of the operations agent definition — deploy it separately (for example, through a Fabric deployment pipeline) so the referenced variables resolve in the target workspace. + +### Action contents + +Represents an action the agent can invoke. Action is polymorphic — the concrete shape is selected by the `kind` discriminator. + +Common properties: + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| id | String (GUID) | true | Unique identifier for the action reference | +| displayName | String | true | The display name for the action | +| description | String | true | The description for the action | +| kind | String (enum) | true | Action kind. See supported values below | +| connection | [FabricItemConnection](#fabricitemconnection-contents) | conditional | Required when `kind` is `FabricJobAction`. Specifies the Fabric item and job to invoke. Not used for other kinds | +| parameters | [Parameter](#parameter-contents)[] | false | Optional parameter metadata list | + +Supported `kind` values: + +- `PowerAutomateAction` — a Power Automate flow action. No extra required fields. +- `FabricJobAction` — runs a job on a Fabric item. Requires an additional `connection` object of type [FabricItemConnection](#fabricitemconnection-contents). + +#### FabricItemConnection contents + +Specifies the Fabric item and job to invoke for a `FabricJobAction`. + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| jobArtifactId | String (GUID) | true | Item ID of the Fabric item to run the job on | +| jobWorkspaceId | String (GUID) | true | Workspace ID containing the item | +| itemType | String | true | The Fabric item type (for example, `DataPipeline`, `Notebook`) | +| jobType | String | true | The job type to invoke on the item (for example, `Pipeline`, `RunNotebook`) | +| subItemId | String | false | Identifier for the sub-item being targeted by the job, when applicable | + +### Parameter contents + +Metadata describing an action parameter (name & optional description). Doesn't include value binding (values are supplied operationally when the action runs or elsewhere in configuration not shown here). + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| name | String | true | Parameter name | +| description | String | false | Human-friendly description | + +### MessageDestination contents + +Polymorphic destination for agent notifications. Use the `kind` discriminator to select the concrete type. + +Supported `kind` values: + +- `Recipient` — a specific user, identified by UPN. + + | Name | Type | Required | Description | + |------|------|----------|-------------| + | kind | String (const `Recipient`) | true | Discriminator | + | recipient | String | true | The UPN of the recipient | + +- `TeamsChannel` — a Microsoft Teams channel. + + | Name | Type | Required | Description | + |------|------|----------|-------------| + | kind | String (const `TeamsChannel`) | true | Discriminator | + | teamId | String | true | The Teams team ID | + | channelId | String | true | The Teams channel ID | + +### AgentIdentity contents + +User-provided identity settings for the agent in definition payloads. + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| sponsor | String | false | Sponsor alias provided by the user | + +Server-generated fields are read-only and must not be included in definition payloads: `blueprintId`, default `mode`, and `principalId`. + +## OperationsAgentDefinition JSON skeleton + +Minimal structural skeleton (showing required properties): + +```json { - "$id": "https://developer.microsoft.com/json-schemas/fabric/item/operationsAgents/definition/1.0.0/schema.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Operations Agent", - "description": "Artifact definition of Operations Agent.", - "type": "object", - "properties": { - "configuration": { - "type": "object", - "title": "Operations Agent Configuration", - "description": "User specified configuration containing instructions, data sources, actions, message destination, and user-provided identity fields of the agent.", - "properties": { - "instructions": { - "type": "string", - "description": "Explicit instructions or procedures for the agent to follow." - }, - "dataSources": { - "type": "object", - "description": "Map of user-chosen data source aliases to data source objects or variable reference strings.", - "additionalProperties": { - "oneOf": [ - { "$ref": "#/definitions/dataSource" }, - { "$ref": "#/definitions/variableReference" } - ] - } - }, - "actions": { - "type": "object", - "description": "Map of user-chosen action aliases to action objects.", - "additionalProperties": { - "$ref": "#/definitions/action" - } - }, - "messageDestination": { - "$ref": "#/definitions/messageDestination" - }, - "identity": { - "$ref": "#/definitions/agentIdentity" - } - }, - "required": [ - "instructions", - "dataSources", - "actions" - ] - }, - "playbook": { - "type": "object" - }, - "shouldRun": { - "type": "boolean", - "description": "Whether the agent should be running." - } + "configuration": { + "instructions": "", + "dataSources": {}, + "actions": {} }, - "required": [ - "configuration", - "playbook", - "shouldRun" - ], - "additionalProperties": false, - "definitions": { - "variableReference": { - "type": "string", - "description": "Reference to a variable in a Fabric variable library, in the form $(///).", - "pattern": "^\\$\\(/[^/]+/[^/]+/[^/]+\\)$" - }, - "dataSource": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "KustoDatabase", - "Ontology" - ] - }, - "workspaceId": { - "type": "string", - "format": "uuid" - } - }, - "required": [ - "id", - "type", - "workspaceId" - ] - }, - "action": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "displayName": { - "type": "string" - }, - "description": { - "type": "string" - }, - "kind": { - "type": "string", - "enum": [ - "PowerAutomateAction", - "FabricJobAction" - ] - }, - "parameters": { - "type": "array", - "items": { - "$ref": "#/definitions/parameter" - } - }, - "connection": { - "$ref": "#/definitions/fabricItemConnection" - } + "playbook": {}, + "shouldRun": true +} +``` + +## OperationsAgentDefinition example + +```json +{ + "configuration": { + "instructions": "Monitor our database metrics. If query timeouts exceed 5 in a minute, send an alert through Power Automate. If no new data arrives in a 24 hour period, +run the remediation pipeline.", + "dataSources": { + "primaryKusto": { + "id": "11111111-2222-3333-4444-555555555555", + "type": "KustoDatabase", + "workspaceId": "66666666-7777-8888-9999-aaaaaaaaaaaa" }, - "required": [ - "id", - "displayName", - "description", - "kind" - ], - "allOf": [ - { - "if": { - "properties": { "kind": { "const": "FabricJobAction" } }, - "required": ["kind"] - }, - "then": { - "required": ["connection"] - } - } - ] - }, - "fabricItemConnection": { - "type": "object", - "description": "Specifies the Fabric item and job to invoke for a FabricJobAction.", - "properties": { - "jobArtifactId": { - "type": "string", - "format": "uuid", - "description": "Artifact (item) ID of the Fabric item to run the job on." - }, - "jobWorkspaceId": { - "type": "string", - "format": "uuid", - "description": "Workspace ID containing the item." - }, - "itemType": { - "type": "string", - "description": "The Fabric item type (for example, DataPipeline, Notebook)." - }, - "jobType": { - "type": "string", - "description": "The job type to invoke on the item (for example, Pipeline, RunNotebook)." - }, - "subItemId": { - "type": "string", - "description": "Identifier for the sub-item being targeted by the job, when applicable." - } + "domainOntology": { + "id": "22222222-3333-4444-5555-666666666666", + "type": "Ontology", + "workspaceId": "66666666-7777-8888-9999-aaaaaaaaaaaa" }, - "required": [ - "jobArtifactId", - "jobWorkspaceId", - "itemType", - "jobType" - ], - "additionalProperties": false + "variableSourced": "$(/MyWorkspace/MyLibrary/MyKustoDb)" }, - "parameter": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - } + "actions": { + "notifyFlow": { + "id": "bbbbbbbb-cccc-dddd-eeee-ffffffffffff", + "kind": "PowerAutomateAction", + "displayName": "PowerAutomateAlert", + "description": "A PowerAutomate action to send out alert", + "parameters": [ + { "name": "Severity", "description": "Alert severity level" } + ] }, - "required": [ - "name" - ], - "additionalProperties": false + "runPipeline": { + "id": "cccccccc-dddd-eeee-ffff-000000000000", + "kind": "FabricJobAction", + "displayName": "Run remediation pipeline", + "description": "Triggers a Fabric data pipeline job for remediation", + "connection": { + "jobArtifactId": "11111111-2222-3333-4444-555555555555", + "jobWorkspaceId": "66666666-7777-8888-9999-aaaaaaaaaaaa", + "itemType": "DataPipeline", + "jobType": "Pipeline", + "subItemId": "sub-1" + }, + "parameters": [ + { "name": "incidentId", "description": "The incident to remediate" } + ] + } }, "messageDestination": { - "description": "Polymorphic destination for agent notifications. Selected by the kind discriminator.", - "oneOf": [ - { "$ref": "#/definitions/recipientDestination" }, - { "$ref": "#/definitions/teamsChannelDestination" } - ] + "kind": "TeamsChannel", + "teamId": "19:abcd1234@thread.tacv2", + "channelId": "19:xyz5678@thread.tacv2" }, - "recipientDestination": { - "type": "object", - "properties": { - "kind": { - "type": "string", - "const": "Recipient" - }, - "recipient": { - "type": "string", - "description": "The UPN of the recipient." - } - }, - "required": [ - "kind", - "recipient" - ], - "additionalProperties": false - }, - "teamsChannelDestination": { - "type": "object", - "properties": { - "kind": { - "type": "string", - "const": "TeamsChannel" - }, - "teamId": { - "type": "string", - "description": "The Teams team ID." - }, - "channelId": { - "type": "string", - "description": "The Teams channel ID." - } - }, - "required": [ - "kind", - "teamId", - "channelId" - ], - "additionalProperties": false - }, - "agentIdentity": { - "type": "object", - "description": "User-provided identity settings for definition payloads. Server-generated identity fields are read-only and excluded.", - "properties": { - "sponsor": { - "type": "string", - "description": "Sponsor alias provided by the user." - } - }, - "required": [ - "sponsor" - ], - "additionalProperties": false + "identity": { + "sponsor": "<>" } - } + }, + "playbook": {}, + "shouldRun": true } +``` + +## Notes + +- All GUID strings must be valid UUIDs. +- Provide an empty object for `playbook` until extended schema details are published. +- Use concise, action-oriented, and imperative steps in `instructions`. +- Keys under `dataSources` and `actions` should be unique within their respective objects. +- Future schema versions may introduce more data source `type` values and action `kind` values; validation rejects unknown values. From cde2932c47ac8f45fdaf9787baccaebea9cc70a4 Mon Sep 17 00:00:00 2001 From: jameskanmsft Date: Fri, 19 Jun 2026 16:01:18 -0700 Subject: [PATCH 7/9] Revise Operations Agent schema for breaking changes Updated the Operations Agent artifact definition schema to reflect breaking changes, including deprecating 'goals' and 'recipient' properties. Added new 'messageDestination' property to support Teams channels. --- .../definition/1.0.0/schema.json | 470 +++++++++--------- 1 file changed, 239 insertions(+), 231 deletions(-) diff --git a/fabric/item/operationsAgents/definition/1.0.0/schema.json b/fabric/item/operationsAgents/definition/1.0.0/schema.json index e1fbb360..7c7bcd0e 100644 --- a/fabric/item/operationsAgents/definition/1.0.0/schema.json +++ b/fabric/item/operationsAgents/definition/1.0.0/schema.json @@ -1,242 +1,250 @@ ---- -title: Operations agent definition -description: Learn how to structure an operations agent item definition when using the Microsoft Fabric REST API. -ms.title: Microsoft Fabric operations agent item definition -author: jeromez -ms.author: jeromez -ms.service: fabric -ms.date: 05/14/2026 ---- - -# Operations Agent definition - -This article provides a breakdown of the definition structure for operations agent items. - -> [!WARNING] -> As of June 2026, we have updated the Operations Agent artifact definition schema to account for several feature enhancements for GA release. Among these updates are **two breaking changes**; importing an Operations Agent artifact definition with these two legacy fields may not work as expected. Please update the definition per the following guidance. -> -> **1. `Configuration.goals` property is deprecated.** To simplify the configuration, we have removed the `goals` property completely. You now provide the goals and instructions together in the `instructions` property. -> -> **2. `Configuration.recipient` property is deprecated and replaced with `messageDestination`.** We have recently enabled Teams channels as a destination for agent notifications. To support this, you can now specify whether the recipient should be a `Recipient` upn string, or a `teamId` and `channelId` for Teams channels. An example of `messageDestination` that continues to use a upn recipient: -> -> ```json -> { "messageDestination": { "kind": "Recipient", "recipient": "contoso@microsoft.com" } } -> ``` - - -## Definition parts - -| Definition part path | type | Required | Description | -|--|--|--|--| -| `Configurations.json` | [OperationsAgentDefinition](#operationsagentdefinition-contents) (JSON) | true | Root definition containing configuration (instructions, data sources, actions), playbook, and run state | - -## OperationsAgentDefinition contents - -Root shape of the definition payload. - -| Name | Type | Required | Description | -|------|------|----------|-------------| -| configuration | [OperationsAgentConfiguration](#operationsagentconfiguration-contents) | true | User-authored configuration: instructions, data sources, and actions | -| playbook | Object | true | Playbook definition (reserved for future expansion). Provide an empty object `{}` if not authored | -| shouldRun | Boolean | true | Whether the agent should currently run (`true`) or stay stopped (`false`) | - -### OperationsAgentConfiguration contents - -| Name | Type | Required | Description | -|------|------|----------|-------------| -| instructions | String | true | Explicit instructions / procedures the agent should follow | -| dataSources | Object (dictionary of [DataSource](#datasource-contents) or [variable reference](#variable-references-in-datasources)) | true | Map of user-chosen data source aliases to data source objects (or variable reference strings) | -| actions | Object (dictionary of [Action](#action-contents)) | true | Map of user-chosen action aliases to action objects | -| messageDestination | [MessageDestination](#messagedestination-contents) | false | Where the agent sends notifications. Polymorphic — use the `kind` discriminator to select the destination type | -| identity | [AgentIdentity](#agentidentity-contents) | false | User-provided identity settings for the agent. For GA, only `sponsor` is supported in definition payloads | - -Notes: - -- The keys inside `dataSources` and `actions` are user-defined aliases (for example, `primaryKusto`, `notifyFlow`). -- Provide at least one data source and one action for a meaningful agent. - -### DataSource contents - -Represents a Fabric data source the agent can read from. - -| Name | Type | Required | Description | -|------|------|----------|-------------| -| id | String (GUID) | true | Unique identifier for the data source reference | -| type | String (enum) | true | Data source type. See supported values below | -| workspaceId | String (GUID) | true | Workspace ID containing the data source | - -Supported `type` values: - -- `KustoDatabase` -- `Ontology` - -#### Variable references in dataSources - -In place of an inline `DataSource` object, a `dataSources` entry value can be a variable reference string that points at a variable in a Fabric variable library. The string must use the format `$(///)`. - -Example: - -```json -"dataSources": { - "primaryKusto": "$(/MyWorkspace/MyLibrary/MyKustoDb)" -} -``` - -You can mix inline data source objects and variable references in the same `dataSources` map. The variable library item itself isn't part of the operations agent definition — deploy it separately (for example, through a Fabric deployment pipeline) so the referenced variables resolve in the target workspace. - -### Action contents - -Represents an action the agent can invoke. Action is polymorphic — the concrete shape is selected by the `kind` discriminator. - -Common properties: - -| Name | Type | Required | Description | -|------|------|----------|-------------| -| id | String (GUID) | true | Unique identifier for the action reference | -| displayName | String | true | The display name for the action | -| description | String | true | The description for the action | -| kind | String (enum) | true | Action kind. See supported values below | -| connection | [FabricItemConnection](#fabricitemconnection-contents) | conditional | Required when `kind` is `FabricJobAction`. Specifies the Fabric item and job to invoke. Not used for other kinds | -| parameters | [Parameter](#parameter-contents)[] | false | Optional parameter metadata list | - -Supported `kind` values: - -- `PowerAutomateAction` — a Power Automate flow action. No extra required fields. -- `FabricJobAction` — runs a job on a Fabric item. Requires an additional `connection` object of type [FabricItemConnection](#fabricitemconnection-contents). - -#### FabricItemConnection contents - -Specifies the Fabric item and job to invoke for a `FabricJobAction`. - -| Name | Type | Required | Description | -|------|------|----------|-------------| -| jobArtifactId | String (GUID) | true | Item ID of the Fabric item to run the job on | -| jobWorkspaceId | String (GUID) | true | Workspace ID containing the item | -| itemType | String | true | The Fabric item type (for example, `DataPipeline`, `Notebook`) | -| jobType | String | true | The job type to invoke on the item (for example, `Pipeline`, `RunNotebook`) | -| subItemId | String | false | Identifier for the sub-item being targeted by the job, when applicable | - -### Parameter contents - -Metadata describing an action parameter (name & optional description). Doesn't include value binding (values are supplied operationally when the action runs or elsewhere in configuration not shown here). - -| Name | Type | Required | Description | -|------|------|----------|-------------| -| name | String | true | Parameter name | -| description | String | false | Human-friendly description | - -### MessageDestination contents - -Polymorphic destination for agent notifications. Use the `kind` discriminator to select the concrete type. - -Supported `kind` values: - -- `Recipient` — a specific user, identified by UPN. - - | Name | Type | Required | Description | - |------|------|----------|-------------| - | kind | String (const `Recipient`) | true | Discriminator | - | recipient | String | true | The UPN of the recipient | - -- `TeamsChannel` — a Microsoft Teams channel. - - | Name | Type | Required | Description | - |------|------|----------|-------------| - | kind | String (const `TeamsChannel`) | true | Discriminator | - | teamId | String | true | The Teams team ID | - | channelId | String | true | The Teams channel ID | - -### AgentIdentity contents - -User-provided identity settings for the agent in definition payloads. - -| Name | Type | Required | Description | -|------|------|----------|-------------| -| sponsor | String | false | Sponsor alias provided by the user | - -Server-generated fields are read-only and must not be included in definition payloads: `blueprintId`, default `mode`, and `principalId`. - -## OperationsAgentDefinition JSON skeleton - -Minimal structural skeleton (showing required properties): - -```json { - "configuration": { - "instructions": "", - "dataSources": {}, - "actions": {} + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/operationsAgents/definition/1.0.0/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Operations Agent", + "description": "Artifact definition of Operations Agent.", + "type": "object", + "properties": { + "configuration": { + "type": "object", + "title": "Operations Agent Configuration", + "description": "User specified configuration containing instructions, data sources, actions, message destination, and user-provided identity fields of the agent.", + "properties": { + "instructions": { + "type": "string", + "description": "Explicit instructions or procedures for the agent to follow." + }, + "dataSources": { + "type": "object", + "description": "Map of user-chosen data source aliases to data source objects or variable reference strings.", + "additionalProperties": { + "oneOf": [ + { "$ref": "#/definitions/dataSource" }, + { "$ref": "#/definitions/variableReference" } + ] + } + }, + "actions": { + "type": "object", + "description": "Map of user-chosen action aliases to action objects.", + "additionalProperties": { + "$ref": "#/definitions/action" + } + }, + "messageDestination": { + "$ref": "#/definitions/messageDestination" + }, + "identity": { + "$ref": "#/definitions/agentIdentity" + } + }, + "required": [ + "instructions", + "dataSources", + "actions" + ] + }, + "playbook": { + "type": "object" + }, + "shouldRun": { + "type": "boolean", + "description": "Whether the agent should be running." + } }, - "playbook": {}, - "shouldRun": true -} -``` - -## OperationsAgentDefinition example - -```json -{ - "configuration": { - "instructions": "Monitor our database metrics. If query timeouts exceed 5 in a minute, send an alert through Power Automate. If no new data arrives in a 24 hour period, -run the remediation pipeline.", - "dataSources": { - "primaryKusto": { - "id": "11111111-2222-3333-4444-555555555555", - "type": "KustoDatabase", - "workspaceId": "66666666-7777-8888-9999-aaaaaaaaaaaa" + "required": [ + "configuration", + "playbook", + "shouldRun" + ], + "additionalProperties": false, + "definitions": { + "variableReference": { + "type": "string", + "description": "Reference to a variable in a Fabric variable library, in the form $(///).", + "pattern": "^\\$\\(/[^/]+/[^/]+/[^/]+\\)$" + }, + "dataSource": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "type": { + "type": "string", + "enum": [ + "KustoDatabase", + "Ontology" + ] + }, + "workspaceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "id", + "type", + "workspaceId" + ] + }, + "action": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "displayName": { + "type": "string" + }, + "description": { + "type": "string" + }, + "kind": { + "type": "string", + "enum": [ + "PowerAutomateAction", + "FabricJobAction" + ] + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/parameter" + } + }, + "connection": { + "$ref": "#/definitions/fabricItemConnection" + } }, - "domainOntology": { - "id": "22222222-3333-4444-5555-666666666666", - "type": "Ontology", - "workspaceId": "66666666-7777-8888-9999-aaaaaaaaaaaa" + "required": [ + "id", + "displayName", + "description", + "kind" + ], + "allOf": [ + { + "if": { + "properties": { "kind": { "const": "FabricJobAction" } }, + "required": ["kind"] + }, + "then": { + "required": ["connection"] + } + } + ] + }, + "fabricItemConnection": { + "type": "object", + "description": "Specifies the Fabric item and job to invoke for a FabricJobAction.", + "properties": { + "jobArtifactId": { + "type": "string", + "format": "uuid", + "description": "Artifact (item) ID of the Fabric item to run the job on." + }, + "jobWorkspaceId": { + "type": "string", + "format": "uuid", + "description": "Workspace ID containing the item." + }, + "itemType": { + "type": "string", + "description": "The Fabric item type (for example, DataPipeline, Notebook)." + }, + "jobType": { + "type": "string", + "description": "The job type to invoke on the item (for example, Pipeline, RunNotebook)." + }, + "subItemId": { + "type": "string", + "description": "Identifier for the sub-item being targeted by the job, when applicable." + } }, - "variableSourced": "$(/MyWorkspace/MyLibrary/MyKustoDb)" + "required": [ + "jobArtifactId", + "jobWorkspaceId", + "itemType", + "jobType" + ], + "additionalProperties": false }, - "actions": { - "notifyFlow": { - "id": "bbbbbbbb-cccc-dddd-eeee-ffffffffffff", - "kind": "PowerAutomateAction", - "displayName": "PowerAutomateAlert", - "description": "A PowerAutomate action to send out alert", - "parameters": [ - { "name": "Severity", "description": "Alert severity level" } - ] + "parameter": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } }, - "runPipeline": { - "id": "cccccccc-dddd-eeee-ffff-000000000000", - "kind": "FabricJobAction", - "displayName": "Run remediation pipeline", - "description": "Triggers a Fabric data pipeline job for remediation", - "connection": { - "jobArtifactId": "11111111-2222-3333-4444-555555555555", - "jobWorkspaceId": "66666666-7777-8888-9999-aaaaaaaaaaaa", - "itemType": "DataPipeline", - "jobType": "Pipeline", - "subItemId": "sub-1" - }, - "parameters": [ - { "name": "incidentId", "description": "The incident to remediate" } - ] - } + "required": [ + "name" + ], + "additionalProperties": false }, "messageDestination": { - "kind": "TeamsChannel", - "teamId": "19:abcd1234@thread.tacv2", - "channelId": "19:xyz5678@thread.tacv2" + "description": "Polymorphic destination for agent notifications. Selected by the kind discriminator.", + "oneOf": [ + { "$ref": "#/definitions/recipientDestination" }, + { "$ref": "#/definitions/teamsChannelDestination" } + ] }, - "identity": { - "sponsor": "<>" + "recipientDestination": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "const": "Recipient" + }, + "recipient": { + "type": "string", + "description": "The UPN of the recipient." + } + }, + "required": [ + "kind", + "recipient" + ], + "additionalProperties": false + }, + "teamsChannelDestination": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "const": "TeamsChannel" + }, + "teamId": { + "type": "string", + "description": "The Teams team ID." + }, + "channelId": { + "type": "string", + "description": "The Teams channel ID." + } + }, + "required": [ + "kind", + "teamId", + "channelId" + ], + "additionalProperties": false + }, + "agentIdentity": { + "type": "object", + "description": "User-provided identity settings for definition payloads. Server-generated identity fields are read-only and excluded.", + "properties": { + "sponsor": { + "type": "string", + "description": "Sponsor alias provided by the user." + } + }, + "additionalProperties": false } - }, - "playbook": {}, - "shouldRun": true + } } -``` - -## Notes - -- All GUID strings must be valid UUIDs. -- Provide an empty object for `playbook` until extended schema details are published. -- Use concise, action-oriented, and imperative steps in `instructions`. -- Keys under `dataSources` and `actions` should be unique within their respective objects. -- Future schema versions may introduce more data source `type` values and action `kind` values; validation rejects unknown values. From 0fc8744802a62fe6e4c37a0ea51b0c0fc08f673c Mon Sep 17 00:00:00 2001 From: "Manish Singh Mehta (Lumel Technologies Inc)" Date: Thu, 25 Jun 2026 15:19:58 +0530 Subject: [PATCH 8/9] chore: added modelTemplate schema for planning --- .../Planning/modelTemplate/1.0.0/schema.json | 181 ++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 fabric/item/plan/definition/Planning/modelTemplate/1.0.0/schema.json diff --git a/fabric/item/plan/definition/Planning/modelTemplate/1.0.0/schema.json b/fabric/item/plan/definition/Planning/modelTemplate/1.0.0/schema.json new file mode 100644 index 00000000..59acfa6b --- /dev/null +++ b/fabric/item/plan/definition/Planning/modelTemplate/1.0.0/schema.json @@ -0,0 +1,181 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/planning/modelTemplate/1.0.0/schema.json", + "description": "Configuration schema for dynamic model templates and rows.", + "type": "object", + "required": [ + "$schema", + "properties" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri", + "const": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/planning/scenarios/1.0.0/schema.json" + }, + "properties": { + "$ref": "#/definitions/Properties" + } + }, + "additionalProperties": false, + "definitions": { + "Properties": { + "type": "object", + "required": [ + "dynamicRowTemplates" + ], + "properties": { + "dynamicRowTemplates": { + "type": "array", + "items": { + "$ref": "#/definitions/DynamicRowTemplate" + } + } + }, + "additionalProperties": false + }, + "DynamicRowTemplate": { + "type": "object", + "required": [ + "id", + "title", + "rows" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique template identifier." + }, + "title": { + "type": "string", + "description": "Display title of the template." + }, + "rows": { + "type": "array", + "items": { + "$ref": "#/definitions/Row" + } + } + }, + "additionalProperties": false + }, + "Row": { + "type": "object", + "required": [ + "id", + "row_type", + "title", + "include_in_total", + "parent_id", + "level", + "previous_row_id", + "disabled", + "column_aggregation" + ], + "properties": { + "id": { + "type": "string" + }, + "row_type": { + "$ref": "#/definitions/RowType" + }, + "title": { + "type": "string" + }, + "scaling_factor": { + "type": [ + "string", + "null" + ] + }, + "include_in_total": { + "type": "boolean" + }, + "parent_id": { + "type": "string" + }, + "level": { + "type": "integer", + "minimum": 0 + }, + "previous_row_id": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "bind_for_cross_filter": { + "type": [ + "string", + "object", + "null" + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "column_aggregation": { + "type": "string", + "enum": [ + "Sum", + "Average", + "Min", + "Max", + "Count" + ] + } + }, + "additionalProperties": false + }, + "RowType": { + "type": "object", + "required": [ + "StaticRow" + ], + "properties": { + "StaticRow": { + "$ref": "#/definitions/StaticRow" + } + }, + "additionalProperties": false + }, + "StaticRow": { + "type": "object", + "required": [ + "distribute_parent_value_to_child", + "default_value", + "row_edit_mode" + ], + "properties": { + "distribute_parent_value_to_child": { + "type": "boolean" + }, + "default_value": { + "$ref": "#/definitions/DefaultValue" + }, + "row_edit_mode": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + }, + "DefaultValue": { + "type": "object", + "required": [ + "Static" + ], + "properties": { + "Static": { + "type": "string" + } + }, + "additionalProperties": false + } + } +} \ No newline at end of file From 1045f4381c1734067a45b29f7b3201848242f362 Mon Sep 17 00:00:00 2001 From: Sagar Vaghela Date: Mon, 29 Jun 2026 19:46:47 +0530 Subject: [PATCH 9/9] feat: cube-alm added schema for cube files --- fabric/item/plan/definition/cube/schema.json | 801 +++++++++++++++++++ 1 file changed, 801 insertions(+) create mode 100644 fabric/item/plan/definition/cube/schema.json diff --git a/fabric/item/plan/definition/cube/schema.json b/fabric/item/plan/definition/cube/schema.json new file mode 100644 index 00000000..eb87c129 --- /dev/null +++ b/fabric/item/plan/definition/cube/schema.json @@ -0,0 +1,801 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://developer.microsoft.com/json-schemas/fabric/item/plan/definition/cube/schema.json", + "title": "Cube Configuration", + "description": "Schema for cube partition payloads including partition definitions, cube partition measures, and mapping tables.", + "type": "object", + "additionalProperties": false, + "required": [ + "cubePartitions", + "cubePartitionMeasures", + "cubePartitionMeasureMappings", + "cubePartitionMeasureDataInputColumnMappings" + ], + "properties": { + "$schema": { + "description": "Part of the JSON Schema standard, this optional keyword declares the URL of the schema that the file conforms to.", + "type": "string" + }, + "cubePartitions": { + "type": "array", + "items": { + "$ref": "#/definitions/CubePartition" + } + }, + "cubePartitionMeasures": { + "type": "array", + "items": { + "$ref": "#/definitions/CubePartitionMeasure" + } + }, + "cubePartitionMeasureMappings": { + "type": "array", + "items": { + "$ref": "#/definitions/CubePartitionMeasureMapping" + } + }, + "cubePartitionMeasureDataInputColumnMappings": { + "type": "array", + "items": { + "$ref": "#/definitions/CubePartitionMeasureDataInputColumnMapping" + } + } + }, + "definitions": { + "StatusCode": { + "type": "string", + "enum": ["ACTIVE"] + }, + "CubePartitionMeasureType": { + "type": "string", + "enum": ["FORECAST", "NUMBER", "FORMULA"] + }, + "Guid": { + "type": "string", + "format": "uuid" + }, + "DimensionId": { + "type": "string" + }, + "Dimension": { + "type": "object", + "additionalProperties": false, + "required": ["id", "label", "type", "dataType"], + "properties": { + "id": { + "$ref": "#/definitions/DimensionId" + }, + "label": { + "type": "string" + }, + "type": { + "type": "string" + }, + "distinctValueCount": { + "type": "integer", + "minimum": 0 + }, + "dataType": { + "type": "string" + } + } + }, + "TimeDimension": { + "$ref": "#/definitions/Dimension" + }, + "Measure": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "label", + "type", + "dataType", + "isNative", + "aggregationType" + ], + "properties": { + "id": { + "$ref": "#/definitions/DimensionId" + }, + "label": { + "type": "string" + }, + "type": { + "type": "string" + }, + "distinctValueCount": { + "type": "integer", + "minimum": 0 + }, + "dataType": { + "type": "string" + }, + "isNative": { + "type": "boolean" + }, + "aggregationType": { + "type": "string" + } + } + }, + "CubePartition": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordGuid", + "name", + "dimensions", + "timeDimensions", + "measures", + "rowCount" + ], + "properties": { + "id": { + "type": "integer" + }, + "status": { + "$ref": "#/definitions/StatusCode" + }, + "recordGuid": { + "$ref": "#/definitions/Guid" + }, + "name": { + "type": "string" + }, + "dimensions": { + "type": "array", + "items": { + "$ref": "#/definitions/Dimension" + } + }, + "timeDimensions": { + "type": "array", + "items": { + "$ref": "#/definitions/TimeDimension" + } + }, + "measures": { + "type": "array", + "items": { + "$ref": "#/definitions/Measure" + } + }, + "rowCount": { + "type": "integer", + "minimum": 0 + } + } + }, + "NumberColumnType": { + "type": "object", + "additionalProperties": false, + "properties": { + "min_value": { + "type": ["number", "null"] + }, + "max_value": { + "type": ["number", "null"] + }, + "distribute_parent_value_to_children": { + "type": "boolean" + }, + "default_value": { + "type": ["number", "null"] + }, + "minValue": { + "type": ["number", "null"] + }, + "maxValue": { + "type": ["number", "null"] + }, + "distributeParentValueToChildren": { + "type": "boolean" + }, + "defaultValue": { + "type": ["number", "null"] + } + } + }, + "AccessControl": { + "type": "object", + "additionalProperties": false, + "required": ["read", "write"], + "properties": { + "read": { + "type": "array", + "items": { + "type": "string" + } + }, + "write": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "DataInputMeasureSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "column_type": { + "type": "object", + "additionalProperties": false, + "properties": { + "Number": { + "$ref": "#/definitions/NumberColumnType" + } + } + }, + "columnType": { + "type": "object", + "additionalProperties": false, + "properties": { + "Number": { + "$ref": "#/definitions/NumberColumnType" + } + } + }, + "title": { + "type": "string" + }, + "access_control": { + "$ref": "#/definitions/AccessControl" + }, + "accessControl": { + "$ref": "#/definitions/AccessControl" + }, + "disable_write_access": { + "type": "boolean" + }, + "disableWriteAccess": { + "type": "boolean" + }, + "on_change_formula": { + "type": "string" + }, + "onChangeFormula": { + "type": "string" + }, + "allow_input": { + "oneOf": [ + { + "enum": ["ReadAndEdit", "ReadOnly"] + } + ] + }, + "allowInput": { + "oneOf": [ + { + "enum": ["ReadAndEdit", "ReadOnly"] + } + ] + }, + "cube_partition_measure_id": { + "type": "integer" + }, + "bound_to_filter_context": { + "type": "boolean" + } + } + }, + "MeasureTypeDictionary": { + "type": "object", + "description": "Dictionary of measure types. Supports known measure keys and dynamic keys from persisted column metadata.", + "properties": { + "Forecast": { + "$ref": "#/definitions/ForecastMeasure" + }, + "DataInput": { + "$ref": "#/definitions/DataInputMeasureSettings" + }, + "VisualColumn": { + "type": "object", + "additionalProperties": false, + "properties": { + "DataInput": { + "$ref": "#/definitions/DataInputMeasureSettings" + } + } + }, + "Native": { + "type": "object", + "additionalProperties": false, + "properties": { + "measure_role": { + "type": "string" + } + } + }, + "Formula": { + "$ref": "#/definitions/FormulaMeasure" + } + }, + "additionalProperties": { + "$ref": "#/definitions/DataInputMeasureSettings" + } + }, + "PeriodRange": { + "type": "object", + "required": ["start", "end"], + "additionalProperties": false, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + } + }, + "ForecastOpenPeriodItem": { + "type": "object", + "required": ["forecastMethod", "targetPeriodRange"], + "additionalProperties": false, + "properties": { + "sourceRange": { + "$ref": "#/definitions/PeriodRange" + }, + "measureId": { + "type": "string" + }, + "forecastMethod": { + "type": "string" + }, + "targetPeriodRange": { + "$ref": "#/definitions/PeriodRange" + } + } + }, + "ForecastOpenPeriodItemSnake": { + "type": "object", + "required": ["forecast_method", "target_period_range"], + "additionalProperties": false, + "properties": { + "source_range": { + "$ref": "#/definitions/PeriodRangeSnake" + }, + "measure_id": { + "type": "string" + }, + "forecast_method": { + "type": "string" + }, + "target_period_range": { + "$ref": "#/definitions/PeriodRangeSnake" + } + } + }, + "PeriodRangeSnake": { + "type": "object", + "required": ["start", "end"], + "additionalProperties": false, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + } + }, + "ForecastMeasure": { + "type": "object", + "additionalProperties": false, + "required": [ + "aggregationType", + "closedPeriodConfig", + "openPeriodConfig", + "openPeriodRange" + ], + "properties": { + "aggregationType": { + "type": "string" + }, + "closedPeriodConfig": { + "type": "object", + "required": ["measureId", "startTime", "endTime"], + "additionalProperties": false, + "properties": { + "measureId": { + "type": "string" + }, + "startTime": { + "type": "number" + }, + "endTime": { + "type": "number" + } + } + }, + "openPeriodConfig": { + "type": "array", + "items": { + "$ref": "#/definitions/ForecastOpenPeriodItem" + } + }, + "openPeriodRange": { + "$ref": "#/definitions/PeriodRange" + } + } + }, + "ForecastMeasureSnake": { + "type": "object", + "additionalProperties": false, + "properties": { + "aggregation_type": { + "type": "string" + }, + "closed_period_config": { + "type": "object", + "additionalProperties": true + }, + "open_period_config": { + "type": "array", + "items": { + "$ref": "#/definitions/ForecastOpenPeriodItemSnake" + } + }, + "open_period_range": { + "$ref": "#/definitions/PeriodRangeSnake" + } + } + }, + "FormulaMeasure": { + "type": "object", + "additionalProperties": false, + "properties": { + "formulaQuery": { + "type": "string" + }, + "formula_query": { + "type": "string" + }, + "multiDimensionSettings": { + "$ref": "#/definitions/MultiDimensionSettings" + }, + "multi_dimension_settings": { + "$ref": "#/definitions/MultiDimensionSettingsSnake" + } + }, + "anyOf": [ + { + "required": ["formulaQuery"] + }, + { + "required": ["formula_query"] + } + ] + }, + "MultiDimensionSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "visualMeasureIdMapping": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "nativeMeasureMappings": { + "type": "array", + "items": { + "$ref": "#/definitions/Measure" + } + } + } + }, + "MultiDimensionSettingsSnake": { + "type": "object", + "additionalProperties": false, + "properties": { + "visual_measure_id_mapping": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "native_measure_mappings": { + "type": "array", + "items": { + "$ref": "#/definitions/Measure" + } + } + } + }, + "CubePartitionMeasureConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "measure_type": { + "$ref": "#/definitions/MeasureTypeDictionary" + }, + "measureType": { + "$ref": "#/definitions/MeasureTypeCamel" + }, + "data_type": { + "oneOf": [ + { + "enum": ["Number", "Text"] + }, + { + "type": "string" + } + ] + }, + "dataType": { + "oneOf": [ + { + "enum": ["Number", "Text"] + }, + { + "type": "string" + } + ] + }, + "description": { + "type": "string" + }, + "aggregationType": { + "type": "string" + }, + "closedPeriodConfig": { + "type": "object", + "required": ["measureId", "startTime", "endTime"], + "additionalProperties": false, + "properties": { + "measureId": { + "type": "string" + }, + "startTime": { + "type": "number" + }, + "endTime": { + "type": "number" + } + } + }, + "openPeriodConfig": { + "type": "array", + "items": { + "type": "object", + "required": ["forecastMethod", "targetPeriodRange"], + "additionalProperties": false, + "properties": { + "sourceRange": { + "$ref": "#/definitions/PeriodRange" + }, + "measureId": { + "type": "string" + }, + "forecastMethod": { + "type": "string" + }, + "targetPeriodRange": { + "$ref": "#/definitions/PeriodRange" + } + } + } + }, + "openPeriodRange": { + "$ref": "#/definitions/PeriodRange" + }, + "formulaQuery": { + "type": "string" + }, + "multiDimensionSettings": { + "$ref": "#/definitions/MultiDimensionSettings" + }, + "nativeMeasureMappings": { + "type": "array", + "items": { + "$ref": "#/definitions/Measure" + } + }, + "aggregation_type": { + "type": "string" + }, + "closed_period_config": { + "type": "object", + "additionalProperties": true + }, + "open_period_config": { + "type": "array", + "items": { + "$ref": "#/definitions/ForecastOpenPeriodItemSnake" + } + }, + "open_period_range": { + "$ref": "#/definitions/PeriodRangeSnake" + }, + "formula_query": { + "type": "string" + }, + "multi_dimension_settings": { + "$ref": "#/definitions/MultiDimensionSettingsSnake" + }, + "native_measure_mappings": { + "type": "array", + "items": { + "$ref": "#/definitions/Measure" + } + } + } + }, + "MeasureTypeCamel": { + "type": "object", + "properties": { + "DataInput": { + "type": "object", + "additionalProperties": false, + "properties": { + "columnType": { + "type": "object", + "additionalProperties": false, + "properties": { + "Number": { + "$ref": "#/definitions/NumberColumnType" + } + } + }, + "title": { + "type": "string" + }, + "accessControl": { + "$ref": "#/definitions/AccessControl" + }, + "disableWriteAccess": { + "type": "boolean" + }, + "onChangeFormula": { + "type": "string" + }, + "allowInput": { + "oneOf": [ + { + "enum": ["ReadAndEdit", "ReadOnly"] + } + ] + } + } + } + }, + "additionalProperties": false + }, + "CubePartitionMeasure": { + "type": "object", + "additionalProperties": false, + "required": ["recordGuid", "name", "config", "type"], + "properties": { + "id": { + "type": "integer" + }, + "status": { + "$ref": "#/definitions/StatusCode" + }, + "recordGuid": { + "$ref": "#/definitions/Guid" + }, + "name": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/CubePartitionMeasureConfig" + }, + "type": { + "$ref": "#/definitions/CubePartitionMeasureType" + } + } + }, + "CubePartitionMeasureMapping": { + "type": "object", + "additionalProperties": false, + "required": ["recordGuid"], + "properties": { + "id": { + "type": "integer" + }, + "status": { + "$ref": "#/definitions/StatusCode" + }, + "recordGuid": { + "$ref": "#/definitions/Guid" + }, + "cubePartitionId": { + "type": "integer" + }, + "cubePartitionMeasureId": { + "type": "integer" + }, + "cubePartition_RefId": { + "$ref": "#/definitions/Guid" + }, + "cubePartitionMeasure_RefId": { + "$ref": "#/definitions/Guid" + } + }, + "anyOf": [ + { + "required": ["cubePartitionId", "cubePartitionMeasureId"] + }, + { + "required": ["cubePartition_RefId", "cubePartitionMeasure_RefId"] + } + ] + }, + "CubePartitionMeasureDataInputColumnMapping": { + "type": "object", + "additionalProperties": false, + "required": ["recordGuid"], + "properties": { + "id": { + "type": "integer" + }, + "status": { + "$ref": "#/definitions/StatusCode" + }, + "recordGuid": { + "$ref": "#/definitions/Guid" + }, + "dataInputColumnId": { + "type": "integer" + }, + "cubePartitionMeasureId": { + "type": "integer" + }, + "visualId": { + "type": "integer" + }, + "cubePartitionId": { + "type": ["integer", "null"] + }, + "filterHash": { + "type": ["string", "null"] + }, + "visual_RefId": { + "$ref": "#/definitions/Guid" + }, + "cubePartitionMeasure_RefId": { + "$ref": "#/definitions/Guid" + }, + "cubePartition_RefId": { + "oneOf": [ + { + "$ref": "#/definitions/Guid" + }, + { + "type": "null" + } + ] + }, + "dataInputColumnMeasureGuid": { + "type": "string" + } + }, + "anyOf": [ + { + "required": [ + "dataInputColumnId", + "cubePartitionMeasureId", + "visualId" + ] + }, + { + "required": [ + "dataInputColumnMeasureGuid", + "cubePartitionMeasure_RefId", + "visual_RefId" + ] + } + ] + } + } +}