[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-powerbi-report-management":3,"mdc-ovv4ac-key":36,"related-org-microsoft-powerbi-report-management":6040,"related-repo-microsoft-powerbi-report-management":6237},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"powerbi-report-management","manage Power BI reports in Microsoft Fabric","Manage Power BI report workspace items and PBIR definitions in Microsoft Fabric via `az rest` CLI against the Fabric REST API. Use when the user wants to: (1) upload or publish a PBIR\u002Freport definition to Fabric, (2) get or download report definitions, (3) update report item definitions or properties, (4) list workspace reports, (5) delete reports. For editing PBIR files, pages, visuals, filters, themes, or formatting, use `powerbi-report-authoring`. For business questions over report data, use `fabriciq`. Triggers: upload PBIR report definition, upload Power BI report, download PBIR definition, publish PBIR definition, publish Power BI report to Fabric, manage Power BI reports, list workspace reports.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Management","management","tag",{"name":17,"slug":18,"type":15},"Reporting","reporting",{"name":20,"slug":21,"type":15},"Microsoft Fabric","microsoft-fabric",{"name":23,"slug":24,"type":15},"Power BI","power-bi",858,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills-for-fabric","2026-07-07T06:53:36.626857",null,237,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"A collection of skills and MCP systems to enable users of CLI, VSCode, Claude to operate over Microsoft Fabric","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills-for-fabric\u002Ftree\u002FHEAD\u002Fskills\u002Fpowerbi-report-management","---\nname: powerbi-report-management\ndescription: \"Manage Power BI report workspace items and PBIR definitions in Microsoft Fabric via `az rest` CLI against the Fabric REST API. Use when the user wants to: (1) upload or publish a PBIR\u002Freport definition to Fabric, (2) get or download report definitions, (3) update report item definitions or properties, (4) list workspace reports, (5) delete reports. For editing PBIR files, pages, visuals, filters, themes, or formatting, use `powerbi-report-authoring`. For business questions over report data, use `fabriciq`. Triggers: upload PBIR report definition, upload Power BI report, download PBIR definition, publish PBIR definition, publish Power BI report to Fabric, manage Power BI reports, list workspace reports.\"\nmetadata:\n  version: 0.1.0\n---\n\n> **Update Check — ONCE PER SESSION (mandatory)**\n> The first time this skill is used in a session, run the **check-updates** skill before proceeding.\n> - **GitHub Copilot CLI \u002F VS Code**: invoke the `check-updates` skill.\n> - **Claude Code \u002F Cowork \u002F Cursor \u002F Windsurf \u002F Codex**: compare local vs remote package.json version.\n> - Skip if the check was already performed earlier in this session.\n\n> **CRITICAL NOTES**\n> 1. To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering\n> 2. To find the item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace and, then, use JMESPath filtering\n\n# Power BI Report Management\n\nManage Power BI reports in Microsoft Fabric workspaces using `az rest` against\nthe Fabric REST API. This skill covers the full CRUD lifecycle for report items\nand their PBIR definitions.\n\n> **Scope**: Report item CRUD and definition management only. For report layout\n> authoring (pages, visuals, filters, formatting), use `powerbi-report-authoring`.\n\n> **Boundary**: This skill transports PBIR definitions to and from Fabric. PBIR\n> content authoring remains owned by `powerbi-report-authoring`.\n\n## Companion Skills\n\nThis skill is one of three that partition the Power BI authoring surface.\nEach owns a single concern; route work to the right one.\n\n| Skill | Owns | Use for |\n|---|---|---|\n| `powerbi-report-authoring` | Report content (PBIR JSON authoring) | Pages, visuals, filters, formatting, themes, expressions, `definition.pbir`, `version.json`, `report.json` |\n| `powerbi-report-management` (this skill) | Report transport to\u002Ffrom Fabric | List, create, get, update, delete report items; download\u002Fupload PBIR definitions |\n| Semantic-model authoring skill | Semantic model authoring + deployment | Create\u002Fedit measures\u002Ftables\u002Frelationships, TMDL, deploy semantic models to Fabric |\n\n**When publishing a local `.pbip` to Fabric**, this skill is the entry\npoint. If the user wants to publish the local semantic model alongside\nthe report, this skill delegates the model deploy to\nan available semantic-model authoring skill, then resolves\nthe resulting `semanticModelId` and binds the report to it. See the\n[Publishing a local .pbip](#publishing-a-local-pbip) workflow.\n\n## Tool Stack\n\n| Tool | Role | Install |\n|---|---|---|\n| `az` CLI | **Primary**: `az rest` for Fabric REST API calls, `az login` for auth | Pre-installed in most dev environments |\n| `jq` | Parse and construct JSON payloads | Standard CLI tool — see [COMMON-CLI.md § Tool Selection Rationale](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#tool-selection-rationale) |\n| `base64` | Encode\u002Fdecode PBIR file content for definition payloads | Built-in on Linux\u002FmacOS · Windows: use PowerShell `[Convert]::ToBase64String()` \u002F `FromBase64String()` |\n\n> **Agent check** — verify before first operation:\n>\n> ```bash\n> az version 2>\u002Fdev\u002Fnull || echo \"INSTALL: https:\u002F\u002Flearn.microsoft.com\u002Fcli\u002Fazure\u002Finstall-azure-cli\"\n> ```\n\n## Authentication\n\nAll calls use the Fabric API audience. Using the wrong audience returns a 401.\n\n| API | Audience (`--resource`) |\n|---|---|\n| Fabric Report Items API | `https:\u002F\u002Fapi.fabric.microsoft.com` |\n\nFor the shared authentication model, token audiences, and identity types, see\n[COMMON-CORE.md § Authentication & Token Acquisition](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#authentication--token-acquisition).\n\nFor full authentication recipes (interactive, device-code, service principal, managed identity),\nsee [COMMON-CLI.md § Authentication Recipes](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes).\n\n## Finding Workspaces and Reports\n\n> **Shared patterns** — workspace and item resolution, pagination, and LRO polling\n> are documented in the common skill library.\n> Read [COMMON-CLI.md § Finding Workspaces and Items in Fabric](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#finding-workspaces-and-items-in-fabric)\n> **before** using the CRUD operations below.\n\n### Resolve Report ID by Name\n\nOnce you have the workspace ID (per COMMON-CLI.md), resolve the report:\n\n```bash\nREPORT_NAME=\"Sales Report\"\nREPORT_ID=$(az rest --method get \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\" \\\n  --query \"value[?displayName=='$REPORT_NAME'] | [0].id\" \\\n  --output tsv)\n```\n\n## Examples: CRUD Operations\n\n### List Reports\n\nReturns all reports in a workspace.\n\n- **Permissions**: Viewer workspace role\n- **Scopes**: `Workspace.Read.All` or `Workspace.ReadWrite.All`\n\n```bash\naz rest --method get \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\" \\\n  --query \"value[].{name:displayName, id:id, description:description}\" \\\n  --output table\n```\n\nSupports pagination via `continuationToken` query parameter.\n\n### Get Report (Properties)\n\nReturns properties of a specific report (name, description, ID, workspace, sensitivity label).\n\n- **Permissions**: Read permissions on the report\n- **Scopes**: `Report.Read.All` or `Report.ReadWrite.All`\n\n```bash\naz rest --method get \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\"\n```\n\n### Get Report Definition\n\nDownloads the full PBIR definition. This is a **POST** (not GET) and supports LRO.\n\n- **Permissions**: Read and write permissions on the report\n- **Scopes**: `Report.ReadWrite.All` or `Item.ReadWrite.All`\n- **Limitation**: Blocked for reports with encrypted sensitivity labels\n\n**Always request `format=PBIR`** — without this parameter, older reports may\nreturn PBIR-Legacy format (a single `report.json` blob), which this skill does\nnot support.\n\n```bash\nRESPONSE=$(az rest --method post \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FgetDefinition?format=PBIR\" \\\n  --verbose 2>&1)\n\n# If 202 Accepted, extract operation ID and poll the LRO (see Long-Running Operations section)\n# If 200 OK, the response contains the definition parts\n```\n\n> **Format check**: After retrieving the definition, verify\n> `definition.format == \"PBIR\"`. If it is `\"PBIR-Legacy\"`, this skill does not\n> support that format.\n\n#### Decode Definition Parts to Local Files\n\n> **Note**: `getDefinition` often returns `202 Accepted` (LRO). Check the\n> Long-Running Operations section to extract the operation ID and poll for the\n> result before decoding.\n\n```bash\n# After retrieving the definition (from 200 response or LRO result):\necho \"$DEFINITION_JSON\" | jq -r '.definition.parts[] | \"\\(.path)\\t\\(.payload)\"' | \\\n  while IFS=$'\\t' read -r path payload; do\n    mkdir -p \"$(dirname \".\u002Freport-definition\u002F$path\")\"\n    echo \"$payload\" | base64 -d > \".\u002Freport-definition\u002F$path\"\n  done\n```\n\n### Create Report (with Definition)\n\nCreates a new report with a PBIR definition. Supports LRO.\n\n- **Permissions**: Contributor workspace role\n- **Scopes**: `Report.ReadWrite.All` or `Item.ReadWrite.All`\n\n```bash\n# Walk .\u002Freport-definition\u002F and build the parts[] array — every file under the\n# directory is encoded and uploaded. Includes definition.pbir, report.json,\n# version.json, pages\u002Fpages.json, every pages\u002F\u003Cpage>\u002Fpage.json, and every\n# pages\u002F\u003Cpage>\u002Fvisuals\u002F\u003Cvisual>\u002Fvisual.json.\nPARTS=$(find .\u002Freport-definition -type f -not -name '.*' -not -name 'Thumbs.db' | while read -r file; do\n  rel=\"${file#.\u002Freport-definition\u002F}\"\n  payload=$(base64 \u003C \"$file\" | tr -d '\\n')\n  jq -nc --arg p \"$rel\" --arg b \"$payload\" \\\n    '{path:$p, payload:$b, payloadType:\"InlineBase64\"}'\ndone | jq -sc '.')\n\njq -n \\\n  --arg name \"My New Report\" \\\n  --arg desc \"Created via Fabric API\" \\\n  --argjson parts \"$PARTS\" \\\n  '{displayName:$name, description:$desc, definition:{parts:$parts}}' \\\n  > create-report.json\n\naz rest --method post \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @create-report.json \\\n  --verbose 2>&1\n```\n\n> **PowerShell** — use `Get-ChildItem -Recurse -File` to walk the directory and\n> `[Convert]::ToBase64String([System.IO.File]::ReadAllBytes($_.FullName))` to\n> encode each file (instead of `base64 | tr -d '\\n'`).\n\n> **Important**: `definition.pbir` is always required. The directory walk above\n> includes every file under `.\u002Freport-definition\u002F` automatically — make sure\n> your local directory mirrors the full PBIR layout (top-level files, plus all\n> `pages\u002F\u003Cpage>\u002Fpage.json` and `pages\u002F\u003Cpage>\u002Fvisuals\u002F\u003Cvisual>\u002Fvisual.json`\n> files) before encoding.\n\n### Update Report Definition\n\nOverwrites the entire definition. This is a **POST** and supports LRO.\n\n- **Permissions**: Read and write permissions on the report\n- **Scopes**: `Report.ReadWrite.All` or `Item.ReadWrite.All`\n\n```bash\n# Rebuild parts[] from .\u002Freport-definition\u002F after edits (same walk as Create).\nPARTS=$(find .\u002Freport-definition -type f -not -name '.*' -not -name 'Thumbs.db' | while read -r file; do\n  rel=\"${file#.\u002Freport-definition\u002F}\"\n  payload=$(base64 \u003C \"$file\" | tr -d '\\n')\n  jq -nc --arg p \"$rel\" --arg b \"$payload\" \\\n    '{path:$p, payload:$b, payloadType:\"InlineBase64\"}'\ndone | jq -sc '.')\n\njq -n --argjson parts \"$PARTS\" \\\n  '{definition:{parts:$parts}}' \\\n  > update-definition.json\n\naz rest --method post \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FupdateDefinition\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @update-definition.json \\\n  --verbose 2>&1\n```\n\n> **Critical**: `updateDefinition` replaces the **entire** definition. Include\n> ALL parts — modified and unmodified. Omitting parts deletes them.\n\nOptional query parameter `?updateMetadata=true` updates item metadata from\n`.platform` file if included.\n\n### Update Report (Properties)\n\nUpdates display name and\u002For description only (not the definition).\n\n- **Permissions**: Read and write permissions on the report\n- **Scopes**: `Report.ReadWrite.All` or `Item.ReadWrite.All`\n\n```bash\ncat > update-report.json \u003C\u003C 'EOF'\n{\n  \"displayName\": \"Renamed Report\",\n  \"description\": \"Updated description\"\n}\nEOF\n\naz rest --method patch \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @update-report.json\n```\n\n### Delete Report\n\nDeletes a report. Supports soft-delete (default) and hard-delete.\n\n- **Permissions**: Write permissions on the report\n- **Scopes**: `Report.ReadWrite.All` or `Item.ReadWrite.All`\n\n```bash\n# Soft delete (recoverable)\naz rest --method delete \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\"\n\n# Hard delete (permanent)\naz rest --method delete \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID?hardDelete=true\"\n```\n\n## Long-Running Operations (LRO)\n\n`Create Report`, `Get Report Definition`, and `Update Report Definition` may\nreturn `202 Accepted` instead of an immediate result. Capture\n`x-ms-operation-id` from the verbose output and poll until terminal state per\n[COMMON-CLI.md § Long-Running Operations](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#long-running-operations-lro-pattern).\n\nThe management-specific guardrails below take precedence over the generic\npattern when they conflict.\n\n> **⚠️ Never retry a create POST after receiving 202.** A `202 Accepted`\n> response means the operation was accepted and is likely being processed\n> server-side. Retrying the POST risks creating duplicates.\n>\n> **Always write `--verbose` output to a file** to reliably capture the\n> `x-ms-operation-id` header on every attempt — this is the only reliable\n> way to track the operation. Regex extraction from in-memory strings is\n> fragile across shells and platforms. Once captured, poll the operation\n> to completion just like any other LRO call.\n>\n> ```powershell\n> # PowerShell — reliable operation ID capture\n> az rest --method post ... --verbose 2>&1 | Out-File \"$env:TEMP\\lro-response.txt\" -Encoding utf8\n> $opId = (Select-String -Path \"$env:TEMP\\lro-response.txt\" -Pattern \"x-ms-operation-id.*?'([a-f0-9-]+)'\" | Select-Object -First 1).Matches.Groups[1].Value\n> ```\n>\n> As a last resort, if the operation ID is still lost despite writing to\n> a file, list reports in the workspace to locate the created report —\n> but this should not be the normal path.\n\nFor more details, see [Long-Running Operations](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Farticles\u002Flong-running-operation).\n\n## PBIR Definition Structure\n\nReports use the PBIR format — a folder of JSON files:\n\n```text\nReport\u002F\n├── definition.pbir                              # Semantic model reference (required)\n├── definition\u002F\n│   ├── report.json                              # Report-level settings (required)\n│   ├── version.json                             # Format version (required)\n│   ├── pages\u002F\n│   │   ├── pages.json                           # Page listing (required)\n│   │   ├── \u003CpageId>\u002F\n│   │   │   ├── page.json                        # Page layout\n│   │   │   ├── visuals\u002F\n│   │   │   │   ├── \u003CvisualId>\u002F\n│   │   │   │   │   ├── visual.json              # Visual config\n│   │   │   │   │   ├── mobile.json              # Mobile layout (optional)\n│   ├── bookmarks\u002F                               # Bookmarks (optional)\n├── StaticResources\u002F                             # Custom themes, images (optional)\n```\n\nAll parts are base64-encoded in API payloads using `\"payloadType\": \"InlineBase64\"`.\n\n### definition.pbir — Semantic Model Reference\n\nFor Fabric API, use `byConnection` (not `byPath`):\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fdeveloper.microsoft.com\u002Fjson-schemas\u002Ffabric\u002Fitem\u002Freport\u002FdefinitionProperties\u002F2.0.0\u002Fschema.json\",\n  \"version\": \"4.0\",\n  \"datasetReference\": {\n    \"byConnection\": {\n      \"connectionString\": \"semanticmodelid=\u003CSemanticModelId>\"\n    }\n  }\n}\n```\n\n## Must\u002FPrefer\u002FAvoid\n\n### MUST\n\n- **ALL PBIR content MUST go through the `powerbi-report-authoring` skill** — this is the single most important rule. Whether creating a brand-new report or modifying an existing one, every PBIR file (`definition.pbir`, `report.json`, `version.json`, `pages.json`, page configs, visuals, filters, formatting, themes, expressions) must be authored using `powerbi-report-authoring`. Follow its guidance for correct PBIR structure, schemas, and field values. Use its CLI tools for validation. Never construct any PBIR JSON from memory or guesswork — not even \"simple\" files like `definition.pbir` or `version.json`. This skill is strictly for API transport (download, encode, upload) — it does not author PBIR content.\n- **Always pass `--resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"`** to `az rest` — omitting it causes silent auth failures.\n- **Always pass `?format=PBIR`** on `getDefinition` — without it, older reports return PBIR-Legacy format which is not supported by this skill.\n- **Only work with PBIR format** — if a definition comes back with `\"format\": \"PBIR-Legacy\"`, stop and tell the user that PBIR-Legacy is not supported.\n- **Include ALL definition parts** in `updateDefinition` — modified + unmodified. The API replaces the entire definition; omitting parts deletes them.\n- **Base64-encode all part payloads** — every `payload` value must be base64-encoded.\n- **Use `byConnection`** in `definition.pbir` for Fabric API — `byPath` is for local\u002FGit scenarios only.\n- **Poll LRO to completion** — `Create`, `getDefinition`, and `updateDefinition` return `202 Accepted`. Poll until terminal state.\n- **Always use `--verbose` on LRO operations** — `az rest` does not expose response headers by default. Without `--verbose`, you cannot capture the `x-ms-operation-id` header needed for polling, and there is no other way to retrieve it after the fact.\n- **Clean up temporary files** — delete any local temp directories and files (decoded definitions, JSON payloads) created during the workflow once the operation completes. These can be large and accumulate on the user's machine.\n- **Verify semantic-model bindings after the target model is resolved** — once the report's target semantic model is known (whether by a fresh deploy through an available semantic-model authoring skill or by selecting an existing workspace model), download its TMDL and compare all PBIR bindings (`Entity`, `queryRef`, `nativeQueryRef`, filter `Source`\u002F`Entity` references) against the model's table\u002Fcolumn\u002Fmeasure names. This applies to **both** branches: even a hand-off deploy may rename or transform the model during publish, so the diff is not optional. If names differ but models are structurally equivalent (same columns\u002Fmeasures), remap all table-qualified bindings via `powerbi-report-authoring`. If the models are not structurally equivalent, prompt the user before attempting to re-author — explain which tables\u002Fcolumns\u002Fmeasures don't match and ask whether to proceed.\n- **Local edits stay local by default** — when a user requests changes to a local `.pbip` report, apply the changes to the local files only. Do not publish to Fabric unless the user explicitly asks to publish, upload, or push the report. Even if the report was previously published to Fabric, treat subsequent edits as local-only until told otherwise. **When the user does request publishing a local `.pbip`**, follow the [Publishing a local .pbip](#publishing-a-local-pbip) workflow: (a) confirm the target workspace once up front, (b) prompt publish-the-local-model vs. connect-to-an-existing-workspace-model, (c) on the publish-model branch, check whether a semantic-model authoring skill is available in the current session and degrade gracefully if not, (d) confirm create-new vs. update-existing for the report itself.\n\n### PREFER\n\n- **Soft delete** over hard delete — allows recovery.\n- **`az rest` with JMESPath `--query`** for filtering — built-in JSON parsing, no extra tools needed.\n\n### AVOID\n\n- **Hand-writing or directly constructing PBIR JSON** — whether creating new files or modifying existing ones, all PBIR content (`definition.pbir`, `report.json`, `version.json`, pages, visuals, filters, formatting, themes, expressions) must go through the `powerbi-report-authoring` skill. Never construct any PBIR JSON from memory or guesswork — not even \"simple\" structural files. No exceptions.\n- **PBIR-Legacy format** — do not create, read, or update PBIR-Legacy definitions. Only modern PBIR format is supported.\n- **Sending only modified parts** in `updateDefinition` — the API replaces the full definition; missing parts are deleted.\n- **Using `byPath`** in `definition.pbir` for API payloads — only works for local\u002FGit scenarios.\n- **Hardcoded workspace\u002Freport IDs** — resolve dynamically via the List APIs.\n- **Skipping LRO polling** — definition operations may be async; always check for 202 responses.\n- **Omitting `?format=PBIR`** on `getDefinition` — may return unusable PBIR-Legacy format.\n- **Retrying a create POST after receiving 202** — risks creating duplicates. See the [LRO section](#long-running-operations-lro) for the correct recovery pattern.\n\n## Agentic Workflow\n\n### Publishing a local `.pbip`\n\nThis is the primary entry point when a user has a local `.pbip` (report\nplus sibling `.SemanticModel`) on disk and asks to publish, upload, push,\nor deploy the report to a Fabric workspace.\n\n**1. Detect that the source is a local `.pbip`.** Any of these signals:\n\n- A `\u003CName>.pbip` file in or above the working directory.\n- A `\u003CName>.Report` folder with a sibling `\u003CName>.SemanticModel` folder.\n- The report's `definition.pbir` uses `byPath` (local\u002FGit form) rather\n  than `byConnection` (API form).\n- Presence of a `.pbi\u002F` cache folder.\n\nIf the source is *not* a local `.pbip` (e.g., the report was already\ndownloaded from Fabric and only the `.Report` folder is present with a\n`byConnection` `definition.pbir`), use the\n[Modifying an existing report in Fabric](#modifying-an-existing-report-in-fabric)\nworkflow instead.\n\n**2. Confirm the target workspace once.** Resolve and store the workspace\nID by name (per [COMMON-CLI.md](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#finding-workspaces-and-items-in-fabric)).\nThis single workspace is reused for both the model deploy (if applicable)\nand the report publish — never split them.\n\n**3. Prompt the user about the semantic model.** Ask explicitly — do not\nsilently choose:\n\n> \"Do you want me to publish the local semantic model to this workspace\n> too, or connect this report to an existing semantic model already in\n> the workspace?\"\n\n**4a. Branch: \"Publish the local model\".**\n\n- Check whether a semantic-model authoring skill is\n  available in the current session.\n  - **Available** → hand off to that workflow to\n    create or update the semantic model. Pass: target workspace ID,\n    the local `.SemanticModel` folder path (TMDL source), and the\n    desired model display name. Wait for that skill's workflow to\n    reach terminal success before proceeding.\n  - **Not available** → tell the user a semantic-model authoring skill is not\n    loaded in this session and that publishing the local model is not\n    possible without it. Then degrade to branch 4b\n    (connect-to-existing) and re-prompt for which workspace model to\n    bind the report to.\n\n**4b. Branch: \"Connect to an existing model in the workspace\".**\n\n- List semantic models in the target workspace and confirm the target\n  model with the user. Resolve `semanticModelId` by name.\n\n**5. Resolve `semanticModelId`.** Regardless of branch, the report needs\na concrete model ID to bind to:\n\n- After 4a: list semantic models in the target workspace and find the\n  model just deployed by name (the model skill verifies by listing\n  workspace items but does not return an ID).\n- After 4b: this was already done.\n\n**6. Verify bindings against the resolved model (universal, both\nbranches).** Download the model TMDL and run the bindings diff per\nMUST [Verify semantic-model bindings after the target model is\nresolved](#must). Even on the publish-the-local-model branch, the\nmodel skill may rename tables or apply transforms during deploy, so\nthis diff is not optional. Remap any drift via `powerbi-report-authoring` skill\nor, if structurally divergent, prompt the user before re-authoring.\n\n**7. Rebind `definition.pbir` from `byPath` → `byConnection`.** Use\n`powerbi-report-authoring` to set:\n\n```json\n\"datasetReference\": {\n  \"byConnection\": {\n    \"connectionString\": \"semanticmodelid=\u003Cresolved-id>\"\n  }\n}\n```\n\nThe Fabric API rejects `byPath`; this swap is mandatory on every\nlocal-source publish.\n\n**8. Decide create-new vs. update-existing for the report.** Default the\nreport `displayName` to the `.pbip` filename without extension (e.g.\n`SalesDashboard.pbip` → `\"SalesDashboard\"`). Surface the default to the\nuser so they can override.\n\n- List reports in the target workspace and look up the chosen\n  `displayName`.\n  - **Not found** → create. Follow\n    [Create Report (with Definition)](#create-report-with-definition).\n  - **Found** → confirm with the user: overwrite the existing report\n    (`updateDefinition`), publish under a different name, or cancel.\n    Follow [Update Report Definition](#update-report-definition) on\n    overwrite.\n\n**9. Encode and upload.** Run the existing transport — base64-encode all\nPBIR parts (forward-slash paths!), build the `parts` payload, POST,\ncapture `x-ms-operation-id` (with `--verbose` written to a file), poll\nthe LRO to terminal success.\n\n**10. Clean up** any temporary files created during the flow.\n\n> **Note on report-side verification**: there is no reliable\n> programmatic way to confirm a report renders correctly post-publish —\n> the report lives at a Fabric Service URL and visual rendering\n> requires a browser session. Surface the workspace\u002Freport URL so the\n> user can verify in the browser.\n\n### Modifying an existing report in Fabric\n\n1. **Authenticate** → see [COMMON-CLI.md § Authentication Recipes](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes)\n2. **Find workspace** → Resolve workspace ID by name\n3. **List\u002Ffind report** → Resolve report ID by name\n4. **Download definition** → `getDefinition?format=PBIR` → poll LRO → decode parts to local files\n5. **Author PBIR content** → **Use the `powerbi-report-authoring` skill** for ALL changes. This covers every file: `definition.pbir`, `report.json`, `version.json`, `pages.json`, page configs, visuals, filters, formatting, themes, and expressions. Follow its guidance for correct structure, schemas, and field values. Use its CLI tools to validate. Never construct any PBIR JSON from memory or guesswork.\n6. **Upload changes** → Re-encode all local files to base64 → `updateDefinition` with ALL parts (modified + unmodified)\n7. **Clean up** → Delete all temporary local files and directories created during the workflow\n\n### Creating a new report in Fabric\n\n1. **Authenticate** → see [COMMON-CLI.md § Authentication Recipes](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes)\n2. **Find workspace** → Resolve workspace ID by name\n3. **Resolve semantic model** → Find the semantic model ID and workspace name for the `definition.pbir` connection string\n4. **Verify semantic-model bindings** → Download the target semantic model definition (TMDL) and compare all PBIR `Entity`, `queryRef`, `nativeQueryRef`, and filter references against the target table\u002Fcolumn names. If names differ but structure matches, remap all table-qualified bindings. If models are structurally different, prompt the user before proceeding — explain what doesn't match and ask whether to re-author the affected bindings\n5. **Author PBIR content** → **Use the `powerbi-report-authoring` skill** to generate the complete PBIR definition from scratch — `definition.pbir`, `report.json`, `version.json`, `pages.json`, page configs, and all visuals. Never construct any PBIR JSON from memory or guesswork.\n6. **Upload** → Encode all files to base64 → `POST \u002Freports` with `displayName` and all definition parts\n7. **Clean up** → Delete temporary local files\n\n## Troubleshooting\n\n| Error | Cause | Fix |\n|---|---|---|\n| `401 Unauthorized` | Wrong or missing `--resource` audience | Always pass `--resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"` |\n| `403 Forbidden` | Insufficient permissions | Check workspace role (Contributor+ for write ops) |\n| `404 Not Found` | Wrong workspace or report ID | Re-resolve IDs via List APIs |\n| `CorruptedPayload` | Malformed base64 or invalid PBIR JSON | Re-encode files; validate JSON before encoding |\n| `202` with no result | LRO not polled to completion | Implement LRO polling pattern |\n| `OperationNotSupportedForItem` | Report has encrypted sensitivity label | Cannot get definition for encrypted reports |\n| `ItemDisplayNameAlreadyInUse` | Duplicate name in workspace | Use a unique display name |\n| `format: \"PBIR-Legacy\"` | Report was created before PBIR was default | PBIR-Legacy is not supported by this skill |\n| Visuals empty \u002F no data after publish | PBIR entity names don't match workspace semantic model table names (e.g., local CSV table name vs workspace table name) | Download target semantic model TMDL, compare table names, update all `Entity`, `queryRef`, `nativeQueryRef`, and filter references to match |\n| `MissingDefinitionParts` on create\u002Fupdate even though all files are included | Definition part paths use backslashes (`definition\\report.json`) — the Fabric API requires forward slashes. On Windows, `path.join()` produces backslashes by default. | Normalize all `path` values in the payload to use forward slashes before uploading (e.g., `.replace(\u002F\\\\\\\\\u002Fg, '\u002F')` in Node.js, or `.Replace('\\\\', '\u002F')` in PowerShell). |\n| Duplicate reports appear in workspace after create | Create POST was retried after a `202 Accepted` response. Each retry risks creating a new report. | Never retry a create POST after `202`. See the [LRO section](#long-running-operations-lro) for reliable operation ID capture and recovery steps. Delete any duplicates with the Delete Report API. |\n| Visuals empty after publishing a local `.pbip` via the model hand-off | The semantic-model authoring skill may rename or transform tables\u002Fcolumns during deploy, so the freshly deployed model's TMDL no longer matches the report's PBIR bindings. | Re-run the TMDL-diff verification against the deployed model (per MUST [Verify semantic-model bindings after the target model is resolved](#must)) and remap drifted bindings via `powerbi-report-authoring` skill. |\n| Visuals empty after publish, despite TMDL diff being clean | `definition.pbir` `byConnection` still points at a stale model ID (e.g., from `.pbi\u002F` cache or an earlier publish), not the freshly resolved one. | Re-run step 7 of [Publishing a local .pbip](#publishing-a-local-pbip) to set `byConnection` to the actually resolved `semanticModelId`, then re-publish. |\n| Semantic-model authoring skill not available when user wants to publish the local model | No semantic-model authoring skill is loaded in the current session. | Inform the user and degrade to the connect-to-existing branch — re-prompt for which workspace model to bind the report to. Do not silently fall through. |\n| Model published to one workspace, report POSTed to another | Workspace was not confirmed up front, or two different workspaces were used for the model deploy and the report publish. | Enforce the single-workspace rule (step 2 of [Publishing a local .pbip](#publishing-a-local-pbip)). Recovery: either re-publish the report into the model's workspace, or move the model. |\n",{"data":37,"body":40},{"name":4,"description":6,"metadata":38},{"version":39},"0.1.0",{"type":41,"children":42},"root",[43,106,131,138,151,172,191,198,203,319,354,360,495,573,579,584,631,643,655,661,687,694,699,888,894,900,905,941,1061,1074,1080,1085,1118,1204,1210,1222,1264,1287,1430,1459,1466,1494,1735,1741,1746,1777,2449,2486,2528,2534,2545,2575,3106,3133,3154,3160,3165,3195,3393,3399,3404,3435,3625,3631,3677,3682,3765,3779,3785,3790,3800,3812,3818,3839,4040,4046,4052,4423,4429,4463,4469,4614,4620,4631,4651,4667,4742,4792,4809,4819,4827,4835,4873,4881,4896,4912,4925,4950,4987,5086,5098,5138,5196,5228,5238,5251,5256,5384,5390,5538,5544,6034],{"type":44,"tag":45,"props":46,"children":47},"element","blockquote",{},[48,68],{"type":44,"tag":49,"props":50,"children":51},"p",{},[52,59,61,66],{"type":44,"tag":53,"props":54,"children":55},"strong",{},[56],{"type":57,"value":58},"text","Update Check — ONCE PER SESSION (mandatory)",{"type":57,"value":60},"\nThe first time this skill is used in a session, run the ",{"type":44,"tag":53,"props":62,"children":63},{},[64],{"type":57,"value":65},"check-updates",{"type":57,"value":67}," skill before proceeding.",{"type":44,"tag":69,"props":70,"children":71},"ul",{},[72,91,101],{"type":44,"tag":73,"props":74,"children":75},"li",{},[76,81,83,89],{"type":44,"tag":53,"props":77,"children":78},{},[79],{"type":57,"value":80},"GitHub Copilot CLI \u002F VS Code",{"type":57,"value":82},": invoke the ",{"type":44,"tag":84,"props":85,"children":87},"code",{"className":86},[],[88],{"type":57,"value":65},{"type":57,"value":90}," skill.",{"type":44,"tag":73,"props":92,"children":93},{},[94,99],{"type":44,"tag":53,"props":95,"children":96},{},[97],{"type":57,"value":98},"Claude Code \u002F Cowork \u002F Cursor \u002F Windsurf \u002F Codex",{"type":57,"value":100},": compare local vs remote package.json version.",{"type":44,"tag":73,"props":102,"children":103},{},[104],{"type":57,"value":105},"Skip if the check was already performed earlier in this session.",{"type":44,"tag":45,"props":107,"children":108},{},[109,117],{"type":44,"tag":49,"props":110,"children":111},{},[112],{"type":44,"tag":53,"props":113,"children":114},{},[115],{"type":57,"value":116},"CRITICAL NOTES",{"type":44,"tag":118,"props":119,"children":120},"ol",{},[121,126],{"type":44,"tag":73,"props":122,"children":123},{},[124],{"type":57,"value":125},"To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering",{"type":44,"tag":73,"props":127,"children":128},{},[129],{"type":57,"value":130},"To find the item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace and, then, use JMESPath filtering",{"type":44,"tag":132,"props":133,"children":135},"h1",{"id":134},"power-bi-report-management",[136],{"type":57,"value":137},"Power BI Report Management",{"type":44,"tag":49,"props":139,"children":140},{},[141,143,149],{"type":57,"value":142},"Manage Power BI reports in Microsoft Fabric workspaces using ",{"type":44,"tag":84,"props":144,"children":146},{"className":145},[],[147],{"type":57,"value":148},"az rest",{"type":57,"value":150}," against\nthe Fabric REST API. This skill covers the full CRUD lifecycle for report items\nand their PBIR definitions.",{"type":44,"tag":45,"props":152,"children":153},{},[154],{"type":44,"tag":49,"props":155,"children":156},{},[157,162,164,170],{"type":44,"tag":53,"props":158,"children":159},{},[160],{"type":57,"value":161},"Scope",{"type":57,"value":163},": Report item CRUD and definition management only. For report layout\nauthoring (pages, visuals, filters, formatting), use ",{"type":44,"tag":84,"props":165,"children":167},{"className":166},[],[168],{"type":57,"value":169},"powerbi-report-authoring",{"type":57,"value":171},".",{"type":44,"tag":45,"props":173,"children":174},{},[175],{"type":44,"tag":49,"props":176,"children":177},{},[178,183,185,190],{"type":44,"tag":53,"props":179,"children":180},{},[181],{"type":57,"value":182},"Boundary",{"type":57,"value":184},": This skill transports PBIR definitions to and from Fabric. PBIR\ncontent authoring remains owned by ",{"type":44,"tag":84,"props":186,"children":188},{"className":187},[],[189],{"type":57,"value":169},{"type":57,"value":171},{"type":44,"tag":192,"props":193,"children":195},"h2",{"id":194},"companion-skills",[196],{"type":57,"value":197},"Companion Skills",{"type":44,"tag":49,"props":199,"children":200},{},[201],{"type":57,"value":202},"This skill is one of three that partition the Power BI authoring surface.\nEach owns a single concern; route work to the right one.",{"type":44,"tag":204,"props":205,"children":206},"table",{},[207,231],{"type":44,"tag":208,"props":209,"children":210},"thead",{},[211],{"type":44,"tag":212,"props":213,"children":214},"tr",{},[215,221,226],{"type":44,"tag":216,"props":217,"children":218},"th",{},[219],{"type":57,"value":220},"Skill",{"type":44,"tag":216,"props":222,"children":223},{},[224],{"type":57,"value":225},"Owns",{"type":44,"tag":216,"props":227,"children":228},{},[229],{"type":57,"value":230},"Use for",{"type":44,"tag":232,"props":233,"children":234},"tbody",{},[235,278,301],{"type":44,"tag":212,"props":236,"children":237},{},[238,247,252],{"type":44,"tag":239,"props":240,"children":241},"td",{},[242],{"type":44,"tag":84,"props":243,"children":245},{"className":244},[],[246],{"type":57,"value":169},{"type":44,"tag":239,"props":248,"children":249},{},[250],{"type":57,"value":251},"Report content (PBIR JSON authoring)",{"type":44,"tag":239,"props":253,"children":254},{},[255,257,263,265,271,272],{"type":57,"value":256},"Pages, visuals, filters, formatting, themes, expressions, ",{"type":44,"tag":84,"props":258,"children":260},{"className":259},[],[261],{"type":57,"value":262},"definition.pbir",{"type":57,"value":264},", ",{"type":44,"tag":84,"props":266,"children":268},{"className":267},[],[269],{"type":57,"value":270},"version.json",{"type":57,"value":264},{"type":44,"tag":84,"props":273,"children":275},{"className":274},[],[276],{"type":57,"value":277},"report.json",{"type":44,"tag":212,"props":279,"children":280},{},[281,291,296],{"type":44,"tag":239,"props":282,"children":283},{},[284,289],{"type":44,"tag":84,"props":285,"children":287},{"className":286},[],[288],{"type":57,"value":4},{"type":57,"value":290}," (this skill)",{"type":44,"tag":239,"props":292,"children":293},{},[294],{"type":57,"value":295},"Report transport to\u002Ffrom Fabric",{"type":44,"tag":239,"props":297,"children":298},{},[299],{"type":57,"value":300},"List, create, get, update, delete report items; download\u002Fupload PBIR definitions",{"type":44,"tag":212,"props":302,"children":303},{},[304,309,314],{"type":44,"tag":239,"props":305,"children":306},{},[307],{"type":57,"value":308},"Semantic-model authoring skill",{"type":44,"tag":239,"props":310,"children":311},{},[312],{"type":57,"value":313},"Semantic model authoring + deployment",{"type":44,"tag":239,"props":315,"children":316},{},[317],{"type":57,"value":318},"Create\u002Fedit measures\u002Ftables\u002Frelationships, TMDL, deploy semantic models to Fabric",{"type":44,"tag":49,"props":320,"children":321},{},[322,335,337,343,345,352],{"type":44,"tag":53,"props":323,"children":324},{},[325,327,333],{"type":57,"value":326},"When publishing a local ",{"type":44,"tag":84,"props":328,"children":330},{"className":329},[],[331],{"type":57,"value":332},".pbip",{"type":57,"value":334}," to Fabric",{"type":57,"value":336},", this skill is the entry\npoint. If the user wants to publish the local semantic model alongside\nthe report, this skill delegates the model deploy to\nan available semantic-model authoring skill, then resolves\nthe resulting ",{"type":44,"tag":84,"props":338,"children":340},{"className":339},[],[341],{"type":57,"value":342},"semanticModelId",{"type":57,"value":344}," and binds the report to it. See the\n",{"type":44,"tag":346,"props":347,"children":349},"a",{"href":348},"#publishing-a-local-pbip",[350],{"type":57,"value":351},"Publishing a local .pbip",{"type":57,"value":353}," workflow.",{"type":44,"tag":192,"props":355,"children":357},{"id":356},"tool-stack",[358],{"type":57,"value":359},"Tool Stack",{"type":44,"tag":204,"props":361,"children":362},{},[363,384],{"type":44,"tag":208,"props":364,"children":365},{},[366],{"type":44,"tag":212,"props":367,"children":368},{},[369,374,379],{"type":44,"tag":216,"props":370,"children":371},{},[372],{"type":57,"value":373},"Tool",{"type":44,"tag":216,"props":375,"children":376},{},[377],{"type":57,"value":378},"Role",{"type":44,"tag":216,"props":380,"children":381},{},[382],{"type":57,"value":383},"Install",{"type":44,"tag":232,"props":385,"children":386},{},[387,431,459],{"type":44,"tag":212,"props":388,"children":389},{},[390,401,426],{"type":44,"tag":239,"props":391,"children":392},{},[393,399],{"type":44,"tag":84,"props":394,"children":396},{"className":395},[],[397],{"type":57,"value":398},"az",{"type":57,"value":400}," CLI",{"type":44,"tag":239,"props":402,"children":403},{},[404,409,411,416,418,424],{"type":44,"tag":53,"props":405,"children":406},{},[407],{"type":57,"value":408},"Primary",{"type":57,"value":410},": ",{"type":44,"tag":84,"props":412,"children":414},{"className":413},[],[415],{"type":57,"value":148},{"type":57,"value":417}," for Fabric REST API calls, ",{"type":44,"tag":84,"props":419,"children":421},{"className":420},[],[422],{"type":57,"value":423},"az login",{"type":57,"value":425}," for auth",{"type":44,"tag":239,"props":427,"children":428},{},[429],{"type":57,"value":430},"Pre-installed in most dev environments",{"type":44,"tag":212,"props":432,"children":433},{},[434,443,448],{"type":44,"tag":239,"props":435,"children":436},{},[437],{"type":44,"tag":84,"props":438,"children":440},{"className":439},[],[441],{"type":57,"value":442},"jq",{"type":44,"tag":239,"props":444,"children":445},{},[446],{"type":57,"value":447},"Parse and construct JSON payloads",{"type":44,"tag":239,"props":449,"children":450},{},[451,453],{"type":57,"value":452},"Standard CLI tool — see ",{"type":44,"tag":346,"props":454,"children":456},{"href":455},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#tool-selection-rationale",[457],{"type":57,"value":458},"COMMON-CLI.md § Tool Selection Rationale",{"type":44,"tag":212,"props":460,"children":461},{},[462,471,476],{"type":44,"tag":239,"props":463,"children":464},{},[465],{"type":44,"tag":84,"props":466,"children":468},{"className":467},[],[469],{"type":57,"value":470},"base64",{"type":44,"tag":239,"props":472,"children":473},{},[474],{"type":57,"value":475},"Encode\u002Fdecode PBIR file content for definition payloads",{"type":44,"tag":239,"props":477,"children":478},{},[479,481,487,489],{"type":57,"value":480},"Built-in on Linux\u002FmacOS · Windows: use PowerShell ",{"type":44,"tag":84,"props":482,"children":484},{"className":483},[],[485],{"type":57,"value":486},"[Convert]::ToBase64String()",{"type":57,"value":488}," \u002F ",{"type":44,"tag":84,"props":490,"children":492},{"className":491},[],[493],{"type":57,"value":494},"FromBase64String()",{"type":44,"tag":45,"props":496,"children":497},{},[498,508],{"type":44,"tag":49,"props":499,"children":500},{},[501,506],{"type":44,"tag":53,"props":502,"children":503},{},[504],{"type":57,"value":505},"Agent check",{"type":57,"value":507}," — verify before first operation:",{"type":44,"tag":509,"props":510,"children":515},"pre",{"className":511,"code":512,"language":513,"meta":514,"style":514},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","az version 2>\u002Fdev\u002Fnull || echo \"INSTALL: https:\u002F\u002Flearn.microsoft.com\u002Fcli\u002Fazure\u002Finstall-azure-cli\"\n","bash","",[516],{"type":44,"tag":84,"props":517,"children":518},{"__ignoreMap":514},[519],{"type":44,"tag":520,"props":521,"children":524},"span",{"class":522,"line":523},"line",1,[525,530,536,542,547,552,558,563,568],{"type":44,"tag":520,"props":526,"children":528},{"style":527},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[529],{"type":57,"value":398},{"type":44,"tag":520,"props":531,"children":533},{"style":532},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[534],{"type":57,"value":535}," version",{"type":44,"tag":520,"props":537,"children":539},{"style":538},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[540],{"type":57,"value":541}," 2>",{"type":44,"tag":520,"props":543,"children":544},{"style":532},[545],{"type":57,"value":546},"\u002Fdev\u002Fnull",{"type":44,"tag":520,"props":548,"children":549},{"style":538},[550],{"type":57,"value":551}," ||",{"type":44,"tag":520,"props":553,"children":555},{"style":554},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[556],{"type":57,"value":557}," echo",{"type":44,"tag":520,"props":559,"children":560},{"style":538},[561],{"type":57,"value":562}," \"",{"type":44,"tag":520,"props":564,"children":565},{"style":532},[566],{"type":57,"value":567},"INSTALL: https:\u002F\u002Flearn.microsoft.com\u002Fcli\u002Fazure\u002Finstall-azure-cli",{"type":44,"tag":520,"props":569,"children":570},{"style":538},[571],{"type":57,"value":572},"\"\n",{"type":44,"tag":192,"props":574,"children":576},{"id":575},"authentication",[577],{"type":57,"value":578},"Authentication",{"type":44,"tag":49,"props":580,"children":581},{},[582],{"type":57,"value":583},"All calls use the Fabric API audience. Using the wrong audience returns a 401.",{"type":44,"tag":204,"props":585,"children":586},{},[587,611],{"type":44,"tag":208,"props":588,"children":589},{},[590],{"type":44,"tag":212,"props":591,"children":592},{},[593,598],{"type":44,"tag":216,"props":594,"children":595},{},[596],{"type":57,"value":597},"API",{"type":44,"tag":216,"props":599,"children":600},{},[601,603,609],{"type":57,"value":602},"Audience (",{"type":44,"tag":84,"props":604,"children":606},{"className":605},[],[607],{"type":57,"value":608},"--resource",{"type":57,"value":610},")",{"type":44,"tag":232,"props":612,"children":613},{},[614],{"type":44,"tag":212,"props":615,"children":616},{},[617,622],{"type":44,"tag":239,"props":618,"children":619},{},[620],{"type":57,"value":621},"Fabric Report Items API",{"type":44,"tag":239,"props":623,"children":624},{},[625],{"type":44,"tag":84,"props":626,"children":628},{"className":627},[],[629],{"type":57,"value":630},"https:\u002F\u002Fapi.fabric.microsoft.com",{"type":44,"tag":49,"props":632,"children":633},{},[634,636,642],{"type":57,"value":635},"For the shared authentication model, token audiences, and identity types, see\n",{"type":44,"tag":346,"props":637,"children":639},{"href":638},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#authentication--token-acquisition",[640],{"type":57,"value":641},"COMMON-CORE.md § Authentication & Token Acquisition",{"type":57,"value":171},{"type":44,"tag":49,"props":644,"children":645},{},[646,648,654],{"type":57,"value":647},"For full authentication recipes (interactive, device-code, service principal, managed identity),\nsee ",{"type":44,"tag":346,"props":649,"children":651},{"href":650},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes",[652],{"type":57,"value":653},"COMMON-CLI.md § Authentication Recipes",{"type":57,"value":171},{"type":44,"tag":192,"props":656,"children":658},{"id":657},"finding-workspaces-and-reports",[659],{"type":57,"value":660},"Finding Workspaces and Reports",{"type":44,"tag":45,"props":662,"children":663},{},[664],{"type":44,"tag":49,"props":665,"children":666},{},[667,672,674,680,685],{"type":44,"tag":53,"props":668,"children":669},{},[670],{"type":57,"value":671},"Shared patterns",{"type":57,"value":673}," — workspace and item resolution, pagination, and LRO polling\nare documented in the common skill library.\nRead ",{"type":44,"tag":346,"props":675,"children":677},{"href":676},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#finding-workspaces-and-items-in-fabric",[678],{"type":57,"value":679},"COMMON-CLI.md § Finding Workspaces and Items in Fabric",{"type":44,"tag":53,"props":681,"children":682},{},[683],{"type":57,"value":684},"before",{"type":57,"value":686}," using the CRUD operations below.",{"type":44,"tag":688,"props":689,"children":691},"h3",{"id":690},"resolve-report-id-by-name",[692],{"type":57,"value":693},"Resolve Report ID by Name",{"type":44,"tag":49,"props":695,"children":696},{},[697],{"type":57,"value":698},"Once you have the workspace ID (per COMMON-CLI.md), resolve the report:",{"type":44,"tag":509,"props":700,"children":702},{"className":511,"code":701,"language":513,"meta":514,"style":514},"REPORT_NAME=\"Sales Report\"\nREPORT_ID=$(az rest --method get \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\" \\\n  --query \"value[?displayName=='$REPORT_NAME'] | [0].id\" \\\n  --output tsv)\n",[703],{"type":44,"tag":84,"props":704,"children":705},{"__ignoreMap":514},[706,734,772,797,833,869],{"type":44,"tag":520,"props":707,"children":708},{"class":522,"line":523},[709,715,720,725,730],{"type":44,"tag":520,"props":710,"children":712},{"style":711},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[713],{"type":57,"value":714},"REPORT_NAME",{"type":44,"tag":520,"props":716,"children":717},{"style":538},[718],{"type":57,"value":719},"=",{"type":44,"tag":520,"props":721,"children":722},{"style":538},[723],{"type":57,"value":724},"\"",{"type":44,"tag":520,"props":726,"children":727},{"style":532},[728],{"type":57,"value":729},"Sales Report",{"type":44,"tag":520,"props":731,"children":732},{"style":538},[733],{"type":57,"value":572},{"type":44,"tag":520,"props":735,"children":737},{"class":522,"line":736},2,[738,743,748,752,757,762,767],{"type":44,"tag":520,"props":739,"children":740},{"style":711},[741],{"type":57,"value":742},"REPORT_ID",{"type":44,"tag":520,"props":744,"children":745},{"style":538},[746],{"type":57,"value":747},"=$(",{"type":44,"tag":520,"props":749,"children":750},{"style":527},[751],{"type":57,"value":398},{"type":44,"tag":520,"props":753,"children":754},{"style":532},[755],{"type":57,"value":756}," rest",{"type":44,"tag":520,"props":758,"children":759},{"style":532},[760],{"type":57,"value":761}," --method",{"type":44,"tag":520,"props":763,"children":764},{"style":532},[765],{"type":57,"value":766}," get",{"type":44,"tag":520,"props":768,"children":769},{"style":711},[770],{"type":57,"value":771}," \\\n",{"type":44,"tag":520,"props":773,"children":775},{"class":522,"line":774},3,[776,781,785,789,793],{"type":44,"tag":520,"props":777,"children":778},{"style":532},[779],{"type":57,"value":780},"  --resource",{"type":44,"tag":520,"props":782,"children":783},{"style":538},[784],{"type":57,"value":562},{"type":44,"tag":520,"props":786,"children":787},{"style":532},[788],{"type":57,"value":630},{"type":44,"tag":520,"props":790,"children":791},{"style":538},[792],{"type":57,"value":724},{"type":44,"tag":520,"props":794,"children":795},{"style":711},[796],{"type":57,"value":771},{"type":44,"tag":520,"props":798,"children":800},{"class":522,"line":799},4,[801,806,810,815,820,825,829],{"type":44,"tag":520,"props":802,"children":803},{"style":532},[804],{"type":57,"value":805},"  --url",{"type":44,"tag":520,"props":807,"children":808},{"style":538},[809],{"type":57,"value":562},{"type":44,"tag":520,"props":811,"children":812},{"style":532},[813],{"type":57,"value":814},"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F",{"type":44,"tag":520,"props":816,"children":817},{"style":711},[818],{"type":57,"value":819},"$WS_ID",{"type":44,"tag":520,"props":821,"children":822},{"style":532},[823],{"type":57,"value":824},"\u002Freports",{"type":44,"tag":520,"props":826,"children":827},{"style":538},[828],{"type":57,"value":724},{"type":44,"tag":520,"props":830,"children":831},{"style":711},[832],{"type":57,"value":771},{"type":44,"tag":520,"props":834,"children":836},{"class":522,"line":835},5,[837,842,846,851,856,861,865],{"type":44,"tag":520,"props":838,"children":839},{"style":532},[840],{"type":57,"value":841},"  --query",{"type":44,"tag":520,"props":843,"children":844},{"style":538},[845],{"type":57,"value":562},{"type":44,"tag":520,"props":847,"children":848},{"style":532},[849],{"type":57,"value":850},"value[?displayName=='",{"type":44,"tag":520,"props":852,"children":853},{"style":711},[854],{"type":57,"value":855},"$REPORT_NAME",{"type":44,"tag":520,"props":857,"children":858},{"style":532},[859],{"type":57,"value":860},"'] | [0].id",{"type":44,"tag":520,"props":862,"children":863},{"style":538},[864],{"type":57,"value":724},{"type":44,"tag":520,"props":866,"children":867},{"style":711},[868],{"type":57,"value":771},{"type":44,"tag":520,"props":870,"children":872},{"class":522,"line":871},6,[873,878,883],{"type":44,"tag":520,"props":874,"children":875},{"style":532},[876],{"type":57,"value":877},"  --output",{"type":44,"tag":520,"props":879,"children":880},{"style":532},[881],{"type":57,"value":882}," tsv",{"type":44,"tag":520,"props":884,"children":885},{"style":538},[886],{"type":57,"value":887},")\n",{"type":44,"tag":192,"props":889,"children":891},{"id":890},"examples-crud-operations",[892],{"type":57,"value":893},"Examples: CRUD Operations",{"type":44,"tag":688,"props":895,"children":897},{"id":896},"list-reports",[898],{"type":57,"value":899},"List Reports",{"type":44,"tag":49,"props":901,"children":902},{},[903],{"type":57,"value":904},"Returns all reports in a workspace.",{"type":44,"tag":69,"props":906,"children":907},{},[908,918],{"type":44,"tag":73,"props":909,"children":910},{},[911,916],{"type":44,"tag":53,"props":912,"children":913},{},[914],{"type":57,"value":915},"Permissions",{"type":57,"value":917},": Viewer workspace role",{"type":44,"tag":73,"props":919,"children":920},{},[921,926,927,933,935],{"type":44,"tag":53,"props":922,"children":923},{},[924],{"type":57,"value":925},"Scopes",{"type":57,"value":410},{"type":44,"tag":84,"props":928,"children":930},{"className":929},[],[931],{"type":57,"value":932},"Workspace.Read.All",{"type":57,"value":934}," or ",{"type":44,"tag":84,"props":936,"children":938},{"className":937},[],[939],{"type":57,"value":940},"Workspace.ReadWrite.All",{"type":44,"tag":509,"props":942,"children":944},{"className":511,"code":943,"language":513,"meta":514,"style":514},"az rest --method get \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\" \\\n  --query \"value[].{name:displayName, id:id, description:description}\" \\\n  --output table\n",[945],{"type":44,"tag":84,"props":946,"children":947},{"__ignoreMap":514},[948,971,994,1025,1049],{"type":44,"tag":520,"props":949,"children":950},{"class":522,"line":523},[951,955,959,963,967],{"type":44,"tag":520,"props":952,"children":953},{"style":527},[954],{"type":57,"value":398},{"type":44,"tag":520,"props":956,"children":957},{"style":532},[958],{"type":57,"value":756},{"type":44,"tag":520,"props":960,"children":961},{"style":532},[962],{"type":57,"value":761},{"type":44,"tag":520,"props":964,"children":965},{"style":532},[966],{"type":57,"value":766},{"type":44,"tag":520,"props":968,"children":969},{"style":711},[970],{"type":57,"value":771},{"type":44,"tag":520,"props":972,"children":973},{"class":522,"line":736},[974,978,982,986,990],{"type":44,"tag":520,"props":975,"children":976},{"style":532},[977],{"type":57,"value":780},{"type":44,"tag":520,"props":979,"children":980},{"style":538},[981],{"type":57,"value":562},{"type":44,"tag":520,"props":983,"children":984},{"style":532},[985],{"type":57,"value":630},{"type":44,"tag":520,"props":987,"children":988},{"style":538},[989],{"type":57,"value":724},{"type":44,"tag":520,"props":991,"children":992},{"style":711},[993],{"type":57,"value":771},{"type":44,"tag":520,"props":995,"children":996},{"class":522,"line":774},[997,1001,1005,1009,1013,1017,1021],{"type":44,"tag":520,"props":998,"children":999},{"style":532},[1000],{"type":57,"value":805},{"type":44,"tag":520,"props":1002,"children":1003},{"style":538},[1004],{"type":57,"value":562},{"type":44,"tag":520,"props":1006,"children":1007},{"style":532},[1008],{"type":57,"value":814},{"type":44,"tag":520,"props":1010,"children":1011},{"style":711},[1012],{"type":57,"value":819},{"type":44,"tag":520,"props":1014,"children":1015},{"style":532},[1016],{"type":57,"value":824},{"type":44,"tag":520,"props":1018,"children":1019},{"style":538},[1020],{"type":57,"value":724},{"type":44,"tag":520,"props":1022,"children":1023},{"style":711},[1024],{"type":57,"value":771},{"type":44,"tag":520,"props":1026,"children":1027},{"class":522,"line":799},[1028,1032,1036,1041,1045],{"type":44,"tag":520,"props":1029,"children":1030},{"style":532},[1031],{"type":57,"value":841},{"type":44,"tag":520,"props":1033,"children":1034},{"style":538},[1035],{"type":57,"value":562},{"type":44,"tag":520,"props":1037,"children":1038},{"style":532},[1039],{"type":57,"value":1040},"value[].{name:displayName, id:id, description:description}",{"type":44,"tag":520,"props":1042,"children":1043},{"style":538},[1044],{"type":57,"value":724},{"type":44,"tag":520,"props":1046,"children":1047},{"style":711},[1048],{"type":57,"value":771},{"type":44,"tag":520,"props":1050,"children":1051},{"class":522,"line":835},[1052,1056],{"type":44,"tag":520,"props":1053,"children":1054},{"style":532},[1055],{"type":57,"value":877},{"type":44,"tag":520,"props":1057,"children":1058},{"style":532},[1059],{"type":57,"value":1060}," table\n",{"type":44,"tag":49,"props":1062,"children":1063},{},[1064,1066,1072],{"type":57,"value":1065},"Supports pagination via ",{"type":44,"tag":84,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":57,"value":1071},"continuationToken",{"type":57,"value":1073}," query parameter.",{"type":44,"tag":688,"props":1075,"children":1077},{"id":1076},"get-report-properties",[1078],{"type":57,"value":1079},"Get Report (Properties)",{"type":44,"tag":49,"props":1081,"children":1082},{},[1083],{"type":57,"value":1084},"Returns properties of a specific report (name, description, ID, workspace, sensitivity label).",{"type":44,"tag":69,"props":1086,"children":1087},{},[1088,1097],{"type":44,"tag":73,"props":1089,"children":1090},{},[1091,1095],{"type":44,"tag":53,"props":1092,"children":1093},{},[1094],{"type":57,"value":915},{"type":57,"value":1096},": Read permissions on the report",{"type":44,"tag":73,"props":1098,"children":1099},{},[1100,1104,1105,1111,1112],{"type":44,"tag":53,"props":1101,"children":1102},{},[1103],{"type":57,"value":925},{"type":57,"value":410},{"type":44,"tag":84,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":57,"value":1110},"Report.Read.All",{"type":57,"value":934},{"type":44,"tag":84,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":57,"value":1117},"Report.ReadWrite.All",{"type":44,"tag":509,"props":1119,"children":1121},{"className":511,"code":1120,"language":513,"meta":514,"style":514},"az rest --method get \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\"\n",[1122],{"type":44,"tag":84,"props":1123,"children":1124},{"__ignoreMap":514},[1125,1148,1171],{"type":44,"tag":520,"props":1126,"children":1127},{"class":522,"line":523},[1128,1132,1136,1140,1144],{"type":44,"tag":520,"props":1129,"children":1130},{"style":527},[1131],{"type":57,"value":398},{"type":44,"tag":520,"props":1133,"children":1134},{"style":532},[1135],{"type":57,"value":756},{"type":44,"tag":520,"props":1137,"children":1138},{"style":532},[1139],{"type":57,"value":761},{"type":44,"tag":520,"props":1141,"children":1142},{"style":532},[1143],{"type":57,"value":766},{"type":44,"tag":520,"props":1145,"children":1146},{"style":711},[1147],{"type":57,"value":771},{"type":44,"tag":520,"props":1149,"children":1150},{"class":522,"line":736},[1151,1155,1159,1163,1167],{"type":44,"tag":520,"props":1152,"children":1153},{"style":532},[1154],{"type":57,"value":780},{"type":44,"tag":520,"props":1156,"children":1157},{"style":538},[1158],{"type":57,"value":562},{"type":44,"tag":520,"props":1160,"children":1161},{"style":532},[1162],{"type":57,"value":630},{"type":44,"tag":520,"props":1164,"children":1165},{"style":538},[1166],{"type":57,"value":724},{"type":44,"tag":520,"props":1168,"children":1169},{"style":711},[1170],{"type":57,"value":771},{"type":44,"tag":520,"props":1172,"children":1173},{"class":522,"line":774},[1174,1178,1182,1186,1190,1195,1200],{"type":44,"tag":520,"props":1175,"children":1176},{"style":532},[1177],{"type":57,"value":805},{"type":44,"tag":520,"props":1179,"children":1180},{"style":538},[1181],{"type":57,"value":562},{"type":44,"tag":520,"props":1183,"children":1184},{"style":532},[1185],{"type":57,"value":814},{"type":44,"tag":520,"props":1187,"children":1188},{"style":711},[1189],{"type":57,"value":819},{"type":44,"tag":520,"props":1191,"children":1192},{"style":532},[1193],{"type":57,"value":1194},"\u002Freports\u002F",{"type":44,"tag":520,"props":1196,"children":1197},{"style":711},[1198],{"type":57,"value":1199},"$REPORT_ID",{"type":44,"tag":520,"props":1201,"children":1202},{"style":538},[1203],{"type":57,"value":572},{"type":44,"tag":688,"props":1205,"children":1207},{"id":1206},"get-report-definition",[1208],{"type":57,"value":1209},"Get Report Definition",{"type":44,"tag":49,"props":1211,"children":1212},{},[1213,1215,1220],{"type":57,"value":1214},"Downloads the full PBIR definition. This is a ",{"type":44,"tag":53,"props":1216,"children":1217},{},[1218],{"type":57,"value":1219},"POST",{"type":57,"value":1221}," (not GET) and supports LRO.",{"type":44,"tag":69,"props":1223,"children":1224},{},[1225,1234,1254],{"type":44,"tag":73,"props":1226,"children":1227},{},[1228,1232],{"type":44,"tag":53,"props":1229,"children":1230},{},[1231],{"type":57,"value":915},{"type":57,"value":1233},": Read and write permissions on the report",{"type":44,"tag":73,"props":1235,"children":1236},{},[1237,1241,1242,1247,1248],{"type":44,"tag":53,"props":1238,"children":1239},{},[1240],{"type":57,"value":925},{"type":57,"value":410},{"type":44,"tag":84,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":57,"value":1117},{"type":57,"value":934},{"type":44,"tag":84,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":57,"value":1253},"Item.ReadWrite.All",{"type":44,"tag":73,"props":1255,"children":1256},{},[1257,1262],{"type":44,"tag":53,"props":1258,"children":1259},{},[1260],{"type":57,"value":1261},"Limitation",{"type":57,"value":1263},": Blocked for reports with encrypted sensitivity labels",{"type":44,"tag":49,"props":1265,"children":1266},{},[1267,1278,1280,1285],{"type":44,"tag":53,"props":1268,"children":1269},{},[1270,1272],{"type":57,"value":1271},"Always request ",{"type":44,"tag":84,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":57,"value":1277},"format=PBIR",{"type":57,"value":1279}," — without this parameter, older reports may\nreturn PBIR-Legacy format (a single ",{"type":44,"tag":84,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":57,"value":277},{"type":57,"value":1286}," blob), which this skill does\nnot support.",{"type":44,"tag":509,"props":1288,"children":1290},{"className":511,"code":1289,"language":513,"meta":514,"style":514},"RESPONSE=$(az rest --method post \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FgetDefinition?format=PBIR\" \\\n  --verbose 2>&1)\n\n# If 202 Accepted, extract operation ID and poll the LRO (see Long-Running Operations section)\n# If 200 OK, the response contains the definition parts\n",[1291],{"type":44,"tag":84,"props":1292,"children":1293},{"__ignoreMap":514},[1294,1327,1350,1390,1403,1412,1421],{"type":44,"tag":520,"props":1295,"children":1296},{"class":522,"line":523},[1297,1302,1306,1310,1314,1318,1323],{"type":44,"tag":520,"props":1298,"children":1299},{"style":711},[1300],{"type":57,"value":1301},"RESPONSE",{"type":44,"tag":520,"props":1303,"children":1304},{"style":538},[1305],{"type":57,"value":747},{"type":44,"tag":520,"props":1307,"children":1308},{"style":527},[1309],{"type":57,"value":398},{"type":44,"tag":520,"props":1311,"children":1312},{"style":532},[1313],{"type":57,"value":756},{"type":44,"tag":520,"props":1315,"children":1316},{"style":532},[1317],{"type":57,"value":761},{"type":44,"tag":520,"props":1319,"children":1320},{"style":532},[1321],{"type":57,"value":1322}," post",{"type":44,"tag":520,"props":1324,"children":1325},{"style":711},[1326],{"type":57,"value":771},{"type":44,"tag":520,"props":1328,"children":1329},{"class":522,"line":736},[1330,1334,1338,1342,1346],{"type":44,"tag":520,"props":1331,"children":1332},{"style":532},[1333],{"type":57,"value":780},{"type":44,"tag":520,"props":1335,"children":1336},{"style":538},[1337],{"type":57,"value":562},{"type":44,"tag":520,"props":1339,"children":1340},{"style":532},[1341],{"type":57,"value":630},{"type":44,"tag":520,"props":1343,"children":1344},{"style":538},[1345],{"type":57,"value":724},{"type":44,"tag":520,"props":1347,"children":1348},{"style":711},[1349],{"type":57,"value":771},{"type":44,"tag":520,"props":1351,"children":1352},{"class":522,"line":774},[1353,1357,1361,1365,1369,1373,1377,1382,1386],{"type":44,"tag":520,"props":1354,"children":1355},{"style":532},[1356],{"type":57,"value":805},{"type":44,"tag":520,"props":1358,"children":1359},{"style":538},[1360],{"type":57,"value":562},{"type":44,"tag":520,"props":1362,"children":1363},{"style":532},[1364],{"type":57,"value":814},{"type":44,"tag":520,"props":1366,"children":1367},{"style":711},[1368],{"type":57,"value":819},{"type":44,"tag":520,"props":1370,"children":1371},{"style":532},[1372],{"type":57,"value":1194},{"type":44,"tag":520,"props":1374,"children":1375},{"style":711},[1376],{"type":57,"value":1199},{"type":44,"tag":520,"props":1378,"children":1379},{"style":532},[1380],{"type":57,"value":1381},"\u002FgetDefinition?format=PBIR",{"type":44,"tag":520,"props":1383,"children":1384},{"style":538},[1385],{"type":57,"value":724},{"type":44,"tag":520,"props":1387,"children":1388},{"style":711},[1389],{"type":57,"value":771},{"type":44,"tag":520,"props":1391,"children":1392},{"class":522,"line":799},[1393,1398],{"type":44,"tag":520,"props":1394,"children":1395},{"style":532},[1396],{"type":57,"value":1397},"  --verbose",{"type":44,"tag":520,"props":1399,"children":1400},{"style":538},[1401],{"type":57,"value":1402}," 2>&1)\n",{"type":44,"tag":520,"props":1404,"children":1405},{"class":522,"line":835},[1406],{"type":44,"tag":520,"props":1407,"children":1409},{"emptyLinePlaceholder":1408},true,[1410],{"type":57,"value":1411},"\n",{"type":44,"tag":520,"props":1413,"children":1414},{"class":522,"line":871},[1415],{"type":44,"tag":520,"props":1416,"children":1418},{"style":1417},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1419],{"type":57,"value":1420},"# If 202 Accepted, extract operation ID and poll the LRO (see Long-Running Operations section)\n",{"type":44,"tag":520,"props":1422,"children":1424},{"class":522,"line":1423},7,[1425],{"type":44,"tag":520,"props":1426,"children":1427},{"style":1417},[1428],{"type":57,"value":1429},"# If 200 OK, the response contains the definition parts\n",{"type":44,"tag":45,"props":1431,"children":1432},{},[1433],{"type":44,"tag":49,"props":1434,"children":1435},{},[1436,1441,1443,1449,1451,1457],{"type":44,"tag":53,"props":1437,"children":1438},{},[1439],{"type":57,"value":1440},"Format check",{"type":57,"value":1442},": After retrieving the definition, verify\n",{"type":44,"tag":84,"props":1444,"children":1446},{"className":1445},[],[1447],{"type":57,"value":1448},"definition.format == \"PBIR\"",{"type":57,"value":1450},". If it is ",{"type":44,"tag":84,"props":1452,"children":1454},{"className":1453},[],[1455],{"type":57,"value":1456},"\"PBIR-Legacy\"",{"type":57,"value":1458},", this skill does not\nsupport that format.",{"type":44,"tag":1460,"props":1461,"children":1463},"h4",{"id":1462},"decode-definition-parts-to-local-files",[1464],{"type":57,"value":1465},"Decode Definition Parts to Local Files",{"type":44,"tag":45,"props":1467,"children":1468},{},[1469],{"type":44,"tag":49,"props":1470,"children":1471},{},[1472,1477,1478,1484,1486,1492],{"type":44,"tag":53,"props":1473,"children":1474},{},[1475],{"type":57,"value":1476},"Note",{"type":57,"value":410},{"type":44,"tag":84,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":57,"value":1483},"getDefinition",{"type":57,"value":1485}," often returns ",{"type":44,"tag":84,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":57,"value":1491},"202 Accepted",{"type":57,"value":1493}," (LRO). Check the\nLong-Running Operations section to extract the operation ID and poll for the\nresult before decoding.",{"type":44,"tag":509,"props":1495,"children":1497},{"className":511,"code":1496,"language":513,"meta":514,"style":514},"# After retrieving the definition (from 200 response or LRO result):\necho \"$DEFINITION_JSON\" | jq -r '.definition.parts[] | \"\\(.path)\\t\\(.payload)\"' | \\\n  while IFS=$'\\t' read -r path payload; do\n    mkdir -p \"$(dirname \".\u002Freport-definition\u002F$path\")\"\n    echo \"$payload\" | base64 -d > \".\u002Freport-definition\u002F$path\"\n  done\n",[1498],{"type":44,"tag":84,"props":1499,"children":1500},{"__ignoreMap":514},[1501,1509,1568,1629,1671,1727],{"type":44,"tag":520,"props":1502,"children":1503},{"class":522,"line":523},[1504],{"type":44,"tag":520,"props":1505,"children":1506},{"style":1417},[1507],{"type":57,"value":1508},"# After retrieving the definition (from 200 response or LRO result):\n",{"type":44,"tag":520,"props":1510,"children":1511},{"class":522,"line":736},[1512,1517,1521,1526,1530,1535,1540,1545,1550,1555,1560,1564],{"type":44,"tag":520,"props":1513,"children":1514},{"style":554},[1515],{"type":57,"value":1516},"echo",{"type":44,"tag":520,"props":1518,"children":1519},{"style":538},[1520],{"type":57,"value":562},{"type":44,"tag":520,"props":1522,"children":1523},{"style":711},[1524],{"type":57,"value":1525},"$DEFINITION_JSON",{"type":44,"tag":520,"props":1527,"children":1528},{"style":538},[1529],{"type":57,"value":724},{"type":44,"tag":520,"props":1531,"children":1532},{"style":538},[1533],{"type":57,"value":1534}," |",{"type":44,"tag":520,"props":1536,"children":1537},{"style":527},[1538],{"type":57,"value":1539}," jq",{"type":44,"tag":520,"props":1541,"children":1542},{"style":532},[1543],{"type":57,"value":1544}," -r",{"type":44,"tag":520,"props":1546,"children":1547},{"style":538},[1548],{"type":57,"value":1549}," '",{"type":44,"tag":520,"props":1551,"children":1552},{"style":532},[1553],{"type":57,"value":1554},".definition.parts[] | \"\\(.path)\\t\\(.payload)\"",{"type":44,"tag":520,"props":1556,"children":1557},{"style":538},[1558],{"type":57,"value":1559},"'",{"type":44,"tag":520,"props":1561,"children":1562},{"style":538},[1563],{"type":57,"value":1534},{"type":44,"tag":520,"props":1565,"children":1566},{"style":711},[1567],{"type":57,"value":771},{"type":44,"tag":520,"props":1569,"children":1570},{"class":522,"line":774},[1571,1577,1582,1586,1591,1596,1600,1605,1609,1614,1619,1624],{"type":44,"tag":520,"props":1572,"children":1574},{"style":1573},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1575],{"type":57,"value":1576},"  while",{"type":44,"tag":520,"props":1578,"children":1579},{"style":532},[1580],{"type":57,"value":1581}," IFS",{"type":44,"tag":520,"props":1583,"children":1584},{"style":538},[1585],{"type":57,"value":719},{"type":44,"tag":520,"props":1587,"children":1588},{"style":538},[1589],{"type":57,"value":1590},"$'",{"type":44,"tag":520,"props":1592,"children":1593},{"style":711},[1594],{"type":57,"value":1595},"\\t",{"type":44,"tag":520,"props":1597,"children":1598},{"style":538},[1599],{"type":57,"value":1559},{"type":44,"tag":520,"props":1601,"children":1602},{"style":532},[1603],{"type":57,"value":1604}," read",{"type":44,"tag":520,"props":1606,"children":1607},{"style":532},[1608],{"type":57,"value":1544},{"type":44,"tag":520,"props":1610,"children":1611},{"style":532},[1612],{"type":57,"value":1613}," path",{"type":44,"tag":520,"props":1615,"children":1616},{"style":532},[1617],{"type":57,"value":1618}," payload",{"type":44,"tag":520,"props":1620,"children":1621},{"style":538},[1622],{"type":57,"value":1623},";",{"type":44,"tag":520,"props":1625,"children":1626},{"style":1573},[1627],{"type":57,"value":1628}," do\n",{"type":44,"tag":520,"props":1630,"children":1631},{"class":522,"line":799},[1632,1637,1642,1647,1652,1656,1661,1666],{"type":44,"tag":520,"props":1633,"children":1634},{"style":527},[1635],{"type":57,"value":1636},"    mkdir",{"type":44,"tag":520,"props":1638,"children":1639},{"style":532},[1640],{"type":57,"value":1641}," -p",{"type":44,"tag":520,"props":1643,"children":1644},{"style":538},[1645],{"type":57,"value":1646}," \"$(",{"type":44,"tag":520,"props":1648,"children":1649},{"style":527},[1650],{"type":57,"value":1651},"dirname",{"type":44,"tag":520,"props":1653,"children":1654},{"style":538},[1655],{"type":57,"value":562},{"type":44,"tag":520,"props":1657,"children":1658},{"style":532},[1659],{"type":57,"value":1660},".\u002Freport-definition\u002F",{"type":44,"tag":520,"props":1662,"children":1663},{"style":711},[1664],{"type":57,"value":1665},"$path",{"type":44,"tag":520,"props":1667,"children":1668},{"style":538},[1669],{"type":57,"value":1670},"\")\"\n",{"type":44,"tag":520,"props":1672,"children":1673},{"class":522,"line":835},[1674,1679,1683,1688,1692,1696,1701,1706,1711,1715,1719,1723],{"type":44,"tag":520,"props":1675,"children":1676},{"style":554},[1677],{"type":57,"value":1678},"    echo",{"type":44,"tag":520,"props":1680,"children":1681},{"style":538},[1682],{"type":57,"value":562},{"type":44,"tag":520,"props":1684,"children":1685},{"style":711},[1686],{"type":57,"value":1687},"$payload",{"type":44,"tag":520,"props":1689,"children":1690},{"style":538},[1691],{"type":57,"value":724},{"type":44,"tag":520,"props":1693,"children":1694},{"style":538},[1695],{"type":57,"value":1534},{"type":44,"tag":520,"props":1697,"children":1698},{"style":527},[1699],{"type":57,"value":1700}," base64",{"type":44,"tag":520,"props":1702,"children":1703},{"style":532},[1704],{"type":57,"value":1705}," -d",{"type":44,"tag":520,"props":1707,"children":1708},{"style":538},[1709],{"type":57,"value":1710}," >",{"type":44,"tag":520,"props":1712,"children":1713},{"style":538},[1714],{"type":57,"value":562},{"type":44,"tag":520,"props":1716,"children":1717},{"style":532},[1718],{"type":57,"value":1660},{"type":44,"tag":520,"props":1720,"children":1721},{"style":711},[1722],{"type":57,"value":1665},{"type":44,"tag":520,"props":1724,"children":1725},{"style":538},[1726],{"type":57,"value":572},{"type":44,"tag":520,"props":1728,"children":1729},{"class":522,"line":871},[1730],{"type":44,"tag":520,"props":1731,"children":1732},{"style":1573},[1733],{"type":57,"value":1734},"  done\n",{"type":44,"tag":688,"props":1736,"children":1738},{"id":1737},"create-report-with-definition",[1739],{"type":57,"value":1740},"Create Report (with Definition)",{"type":44,"tag":49,"props":1742,"children":1743},{},[1744],{"type":57,"value":1745},"Creates a new report with a PBIR definition. Supports LRO.",{"type":44,"tag":69,"props":1747,"children":1748},{},[1749,1758],{"type":44,"tag":73,"props":1750,"children":1751},{},[1752,1756],{"type":44,"tag":53,"props":1753,"children":1754},{},[1755],{"type":57,"value":915},{"type":57,"value":1757},": Contributor workspace role",{"type":44,"tag":73,"props":1759,"children":1760},{},[1761,1765,1766,1771,1772],{"type":44,"tag":53,"props":1762,"children":1763},{},[1764],{"type":57,"value":925},{"type":57,"value":410},{"type":44,"tag":84,"props":1767,"children":1769},{"className":1768},[],[1770],{"type":57,"value":1117},{"type":57,"value":934},{"type":44,"tag":84,"props":1773,"children":1775},{"className":1774},[],[1776],{"type":57,"value":1253},{"type":44,"tag":509,"props":1778,"children":1780},{"className":511,"code":1779,"language":513,"meta":514,"style":514},"# Walk .\u002Freport-definition\u002F and build the parts[] array — every file under the\n# directory is encoded and uploaded. Includes definition.pbir, report.json,\n# version.json, pages\u002Fpages.json, every pages\u002F\u003Cpage>\u002Fpage.json, and every\n# pages\u002F\u003Cpage>\u002Fvisuals\u002F\u003Cvisual>\u002Fvisual.json.\nPARTS=$(find .\u002Freport-definition -type f -not -name '.*' -not -name 'Thumbs.db' | while read -r file; do\n  rel=\"${file#.\u002Freport-definition\u002F}\"\n  payload=$(base64 \u003C \"$file\" | tr -d '\\n')\n  jq -nc --arg p \"$rel\" --arg b \"$payload\" \\\n    '{path:$p, payload:$b, payloadType:\"InlineBase64\"}'\ndone | jq -sc '.')\n\njq -n \\\n  --arg name \"My New Report\" \\\n  --arg desc \"Created via Fabric API\" \\\n  --argjson parts \"$PARTS\" \\\n  '{displayName:$name, description:$desc, definition:{parts:$parts}}' \\\n  > create-report.json\n\naz rest --method post \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @create-report.json \\\n  --verbose 2>&1\n",[1781],{"type":44,"tag":84,"props":1782,"children":1783},{"__ignoreMap":514},[1784,1792,1800,1808,1816,1922,1968,2032,2094,2113,2151,2159,2176,2207,2237,2268,2290,2304,2312,2336,2360,2392,2418,2436],{"type":44,"tag":520,"props":1785,"children":1786},{"class":522,"line":523},[1787],{"type":44,"tag":520,"props":1788,"children":1789},{"style":1417},[1790],{"type":57,"value":1791},"# Walk .\u002Freport-definition\u002F and build the parts[] array — every file under the\n",{"type":44,"tag":520,"props":1793,"children":1794},{"class":522,"line":736},[1795],{"type":44,"tag":520,"props":1796,"children":1797},{"style":1417},[1798],{"type":57,"value":1799},"# directory is encoded and uploaded. Includes definition.pbir, report.json,\n",{"type":44,"tag":520,"props":1801,"children":1802},{"class":522,"line":774},[1803],{"type":44,"tag":520,"props":1804,"children":1805},{"style":1417},[1806],{"type":57,"value":1807},"# version.json, pages\u002Fpages.json, every pages\u002F\u003Cpage>\u002Fpage.json, and every\n",{"type":44,"tag":520,"props":1809,"children":1810},{"class":522,"line":799},[1811],{"type":44,"tag":520,"props":1812,"children":1813},{"style":1417},[1814],{"type":57,"value":1815},"# pages\u002F\u003Cpage>\u002Fvisuals\u002F\u003Cvisual>\u002Fvisual.json.\n",{"type":44,"tag":520,"props":1817,"children":1818},{"class":522,"line":835},[1819,1824,1828,1833,1838,1843,1848,1853,1858,1862,1867,1871,1875,1879,1883,1888,1892,1896,1901,1905,1909,1914,1918],{"type":44,"tag":520,"props":1820,"children":1821},{"style":711},[1822],{"type":57,"value":1823},"PARTS",{"type":44,"tag":520,"props":1825,"children":1826},{"style":538},[1827],{"type":57,"value":747},{"type":44,"tag":520,"props":1829,"children":1830},{"style":527},[1831],{"type":57,"value":1832},"find",{"type":44,"tag":520,"props":1834,"children":1835},{"style":532},[1836],{"type":57,"value":1837}," .\u002Freport-definition",{"type":44,"tag":520,"props":1839,"children":1840},{"style":532},[1841],{"type":57,"value":1842}," -type",{"type":44,"tag":520,"props":1844,"children":1845},{"style":532},[1846],{"type":57,"value":1847}," f",{"type":44,"tag":520,"props":1849,"children":1850},{"style":532},[1851],{"type":57,"value":1852}," -not",{"type":44,"tag":520,"props":1854,"children":1855},{"style":532},[1856],{"type":57,"value":1857}," -name",{"type":44,"tag":520,"props":1859,"children":1860},{"style":538},[1861],{"type":57,"value":1549},{"type":44,"tag":520,"props":1863,"children":1864},{"style":532},[1865],{"type":57,"value":1866},".*",{"type":44,"tag":520,"props":1868,"children":1869},{"style":538},[1870],{"type":57,"value":1559},{"type":44,"tag":520,"props":1872,"children":1873},{"style":532},[1874],{"type":57,"value":1852},{"type":44,"tag":520,"props":1876,"children":1877},{"style":532},[1878],{"type":57,"value":1857},{"type":44,"tag":520,"props":1880,"children":1881},{"style":538},[1882],{"type":57,"value":1549},{"type":44,"tag":520,"props":1884,"children":1885},{"style":532},[1886],{"type":57,"value":1887},"Thumbs.db",{"type":44,"tag":520,"props":1889,"children":1890},{"style":538},[1891],{"type":57,"value":1559},{"type":44,"tag":520,"props":1893,"children":1894},{"style":538},[1895],{"type":57,"value":1534},{"type":44,"tag":520,"props":1897,"children":1898},{"style":1573},[1899],{"type":57,"value":1900}," while",{"type":44,"tag":520,"props":1902,"children":1903},{"style":554},[1904],{"type":57,"value":1604},{"type":44,"tag":520,"props":1906,"children":1907},{"style":532},[1908],{"type":57,"value":1544},{"type":44,"tag":520,"props":1910,"children":1911},{"style":532},[1912],{"type":57,"value":1913}," file",{"type":44,"tag":520,"props":1915,"children":1916},{"style":538},[1917],{"type":57,"value":1623},{"type":44,"tag":520,"props":1919,"children":1920},{"style":1573},[1921],{"type":57,"value":1628},{"type":44,"tag":520,"props":1923,"children":1924},{"class":522,"line":871},[1925,1930,1934,1939,1944,1949,1953,1958,1963],{"type":44,"tag":520,"props":1926,"children":1927},{"style":711},[1928],{"type":57,"value":1929},"  rel",{"type":44,"tag":520,"props":1931,"children":1932},{"style":538},[1933],{"type":57,"value":719},{"type":44,"tag":520,"props":1935,"children":1936},{"style":538},[1937],{"type":57,"value":1938},"\"${",{"type":44,"tag":520,"props":1940,"children":1941},{"style":711},[1942],{"type":57,"value":1943},"file",{"type":44,"tag":520,"props":1945,"children":1946},{"style":538},[1947],{"type":57,"value":1948},"#",{"type":44,"tag":520,"props":1950,"children":1951},{"style":532},[1952],{"type":57,"value":171},{"type":44,"tag":520,"props":1954,"children":1955},{"style":538},[1956],{"type":57,"value":1957},"\u002F",{"type":44,"tag":520,"props":1959,"children":1960},{"style":711},[1961],{"type":57,"value":1962},"report-definition",{"type":44,"tag":520,"props":1964,"children":1965},{"style":538},[1966],{"type":57,"value":1967},"\u002F}\"\n",{"type":44,"tag":520,"props":1969,"children":1970},{"class":522,"line":1423},[1971,1976,1980,1984,1989,1993,1998,2002,2006,2011,2015,2019,2024,2028],{"type":44,"tag":520,"props":1972,"children":1973},{"style":711},[1974],{"type":57,"value":1975},"  payload",{"type":44,"tag":520,"props":1977,"children":1978},{"style":538},[1979],{"type":57,"value":747},{"type":44,"tag":520,"props":1981,"children":1982},{"style":527},[1983],{"type":57,"value":470},{"type":44,"tag":520,"props":1985,"children":1986},{"style":538},[1987],{"type":57,"value":1988}," \u003C",{"type":44,"tag":520,"props":1990,"children":1991},{"style":538},[1992],{"type":57,"value":562},{"type":44,"tag":520,"props":1994,"children":1995},{"style":711},[1996],{"type":57,"value":1997},"$file",{"type":44,"tag":520,"props":1999,"children":2000},{"style":538},[2001],{"type":57,"value":724},{"type":44,"tag":520,"props":2003,"children":2004},{"style":538},[2005],{"type":57,"value":1534},{"type":44,"tag":520,"props":2007,"children":2008},{"style":527},[2009],{"type":57,"value":2010}," tr",{"type":44,"tag":520,"props":2012,"children":2013},{"style":532},[2014],{"type":57,"value":1705},{"type":44,"tag":520,"props":2016,"children":2017},{"style":538},[2018],{"type":57,"value":1549},{"type":44,"tag":520,"props":2020,"children":2021},{"style":532},[2022],{"type":57,"value":2023},"\\n",{"type":44,"tag":520,"props":2025,"children":2026},{"style":538},[2027],{"type":57,"value":1559},{"type":44,"tag":520,"props":2029,"children":2030},{"style":538},[2031],{"type":57,"value":887},{"type":44,"tag":520,"props":2033,"children":2035},{"class":522,"line":2034},8,[2036,2041,2046,2051,2056,2060,2065,2069,2073,2078,2082,2086,2090],{"type":44,"tag":520,"props":2037,"children":2038},{"style":527},[2039],{"type":57,"value":2040},"  jq",{"type":44,"tag":520,"props":2042,"children":2043},{"style":532},[2044],{"type":57,"value":2045}," -nc",{"type":44,"tag":520,"props":2047,"children":2048},{"style":532},[2049],{"type":57,"value":2050}," --arg",{"type":44,"tag":520,"props":2052,"children":2053},{"style":532},[2054],{"type":57,"value":2055}," p",{"type":44,"tag":520,"props":2057,"children":2058},{"style":538},[2059],{"type":57,"value":562},{"type":44,"tag":520,"props":2061,"children":2062},{"style":711},[2063],{"type":57,"value":2064},"$rel",{"type":44,"tag":520,"props":2066,"children":2067},{"style":538},[2068],{"type":57,"value":724},{"type":44,"tag":520,"props":2070,"children":2071},{"style":532},[2072],{"type":57,"value":2050},{"type":44,"tag":520,"props":2074,"children":2075},{"style":532},[2076],{"type":57,"value":2077}," b",{"type":44,"tag":520,"props":2079,"children":2080},{"style":538},[2081],{"type":57,"value":562},{"type":44,"tag":520,"props":2083,"children":2084},{"style":711},[2085],{"type":57,"value":1687},{"type":44,"tag":520,"props":2087,"children":2088},{"style":538},[2089],{"type":57,"value":724},{"type":44,"tag":520,"props":2091,"children":2092},{"style":711},[2093],{"type":57,"value":771},{"type":44,"tag":520,"props":2095,"children":2097},{"class":522,"line":2096},9,[2098,2103,2108],{"type":44,"tag":520,"props":2099,"children":2100},{"style":538},[2101],{"type":57,"value":2102},"    '",{"type":44,"tag":520,"props":2104,"children":2105},{"style":532},[2106],{"type":57,"value":2107},"{path:$p, payload:$b, payloadType:\"InlineBase64\"}",{"type":44,"tag":520,"props":2109,"children":2110},{"style":538},[2111],{"type":57,"value":2112},"'\n",{"type":44,"tag":520,"props":2114,"children":2116},{"class":522,"line":2115},10,[2117,2122,2126,2130,2135,2139,2143,2147],{"type":44,"tag":520,"props":2118,"children":2119},{"style":1573},[2120],{"type":57,"value":2121},"done",{"type":44,"tag":520,"props":2123,"children":2124},{"style":538},[2125],{"type":57,"value":1534},{"type":44,"tag":520,"props":2127,"children":2128},{"style":527},[2129],{"type":57,"value":1539},{"type":44,"tag":520,"props":2131,"children":2132},{"style":532},[2133],{"type":57,"value":2134}," -sc",{"type":44,"tag":520,"props":2136,"children":2137},{"style":538},[2138],{"type":57,"value":1549},{"type":44,"tag":520,"props":2140,"children":2141},{"style":532},[2142],{"type":57,"value":171},{"type":44,"tag":520,"props":2144,"children":2145},{"style":538},[2146],{"type":57,"value":1559},{"type":44,"tag":520,"props":2148,"children":2149},{"style":538},[2150],{"type":57,"value":887},{"type":44,"tag":520,"props":2152,"children":2154},{"class":522,"line":2153},11,[2155],{"type":44,"tag":520,"props":2156,"children":2157},{"emptyLinePlaceholder":1408},[2158],{"type":57,"value":1411},{"type":44,"tag":520,"props":2160,"children":2162},{"class":522,"line":2161},12,[2163,2167,2172],{"type":44,"tag":520,"props":2164,"children":2165},{"style":527},[2166],{"type":57,"value":442},{"type":44,"tag":520,"props":2168,"children":2169},{"style":532},[2170],{"type":57,"value":2171}," -n",{"type":44,"tag":520,"props":2173,"children":2174},{"style":711},[2175],{"type":57,"value":771},{"type":44,"tag":520,"props":2177,"children":2179},{"class":522,"line":2178},13,[2180,2185,2190,2194,2199,2203],{"type":44,"tag":520,"props":2181,"children":2182},{"style":532},[2183],{"type":57,"value":2184},"  --arg",{"type":44,"tag":520,"props":2186,"children":2187},{"style":532},[2188],{"type":57,"value":2189}," name",{"type":44,"tag":520,"props":2191,"children":2192},{"style":538},[2193],{"type":57,"value":562},{"type":44,"tag":520,"props":2195,"children":2196},{"style":532},[2197],{"type":57,"value":2198},"My New Report",{"type":44,"tag":520,"props":2200,"children":2201},{"style":538},[2202],{"type":57,"value":724},{"type":44,"tag":520,"props":2204,"children":2205},{"style":711},[2206],{"type":57,"value":771},{"type":44,"tag":520,"props":2208,"children":2210},{"class":522,"line":2209},14,[2211,2215,2220,2224,2229,2233],{"type":44,"tag":520,"props":2212,"children":2213},{"style":532},[2214],{"type":57,"value":2184},{"type":44,"tag":520,"props":2216,"children":2217},{"style":532},[2218],{"type":57,"value":2219}," desc",{"type":44,"tag":520,"props":2221,"children":2222},{"style":538},[2223],{"type":57,"value":562},{"type":44,"tag":520,"props":2225,"children":2226},{"style":532},[2227],{"type":57,"value":2228},"Created via Fabric API",{"type":44,"tag":520,"props":2230,"children":2231},{"style":538},[2232],{"type":57,"value":724},{"type":44,"tag":520,"props":2234,"children":2235},{"style":711},[2236],{"type":57,"value":771},{"type":44,"tag":520,"props":2238,"children":2240},{"class":522,"line":2239},15,[2241,2246,2251,2255,2260,2264],{"type":44,"tag":520,"props":2242,"children":2243},{"style":532},[2244],{"type":57,"value":2245},"  --argjson",{"type":44,"tag":520,"props":2247,"children":2248},{"style":532},[2249],{"type":57,"value":2250}," parts",{"type":44,"tag":520,"props":2252,"children":2253},{"style":538},[2254],{"type":57,"value":562},{"type":44,"tag":520,"props":2256,"children":2257},{"style":711},[2258],{"type":57,"value":2259},"$PARTS",{"type":44,"tag":520,"props":2261,"children":2262},{"style":538},[2263],{"type":57,"value":724},{"type":44,"tag":520,"props":2265,"children":2266},{"style":711},[2267],{"type":57,"value":771},{"type":44,"tag":520,"props":2269,"children":2271},{"class":522,"line":2270},16,[2272,2277,2282,2286],{"type":44,"tag":520,"props":2273,"children":2274},{"style":538},[2275],{"type":57,"value":2276},"  '",{"type":44,"tag":520,"props":2278,"children":2279},{"style":532},[2280],{"type":57,"value":2281},"{displayName:$name, description:$desc, definition:{parts:$parts}}",{"type":44,"tag":520,"props":2283,"children":2284},{"style":538},[2285],{"type":57,"value":1559},{"type":44,"tag":520,"props":2287,"children":2288},{"style":711},[2289],{"type":57,"value":771},{"type":44,"tag":520,"props":2291,"children":2293},{"class":522,"line":2292},17,[2294,2299],{"type":44,"tag":520,"props":2295,"children":2296},{"style":538},[2297],{"type":57,"value":2298},"  >",{"type":44,"tag":520,"props":2300,"children":2301},{"style":532},[2302],{"type":57,"value":2303}," create-report.json\n",{"type":44,"tag":520,"props":2305,"children":2307},{"class":522,"line":2306},18,[2308],{"type":44,"tag":520,"props":2309,"children":2310},{"emptyLinePlaceholder":1408},[2311],{"type":57,"value":1411},{"type":44,"tag":520,"props":2313,"children":2315},{"class":522,"line":2314},19,[2316,2320,2324,2328,2332],{"type":44,"tag":520,"props":2317,"children":2318},{"style":527},[2319],{"type":57,"value":398},{"type":44,"tag":520,"props":2321,"children":2322},{"style":532},[2323],{"type":57,"value":756},{"type":44,"tag":520,"props":2325,"children":2326},{"style":532},[2327],{"type":57,"value":761},{"type":44,"tag":520,"props":2329,"children":2330},{"style":532},[2331],{"type":57,"value":1322},{"type":44,"tag":520,"props":2333,"children":2334},{"style":711},[2335],{"type":57,"value":771},{"type":44,"tag":520,"props":2337,"children":2339},{"class":522,"line":2338},20,[2340,2344,2348,2352,2356],{"type":44,"tag":520,"props":2341,"children":2342},{"style":532},[2343],{"type":57,"value":780},{"type":44,"tag":520,"props":2345,"children":2346},{"style":538},[2347],{"type":57,"value":562},{"type":44,"tag":520,"props":2349,"children":2350},{"style":532},[2351],{"type":57,"value":630},{"type":44,"tag":520,"props":2353,"children":2354},{"style":538},[2355],{"type":57,"value":724},{"type":44,"tag":520,"props":2357,"children":2358},{"style":711},[2359],{"type":57,"value":771},{"type":44,"tag":520,"props":2361,"children":2363},{"class":522,"line":2362},21,[2364,2368,2372,2376,2380,2384,2388],{"type":44,"tag":520,"props":2365,"children":2366},{"style":532},[2367],{"type":57,"value":805},{"type":44,"tag":520,"props":2369,"children":2370},{"style":538},[2371],{"type":57,"value":562},{"type":44,"tag":520,"props":2373,"children":2374},{"style":532},[2375],{"type":57,"value":814},{"type":44,"tag":520,"props":2377,"children":2378},{"style":711},[2379],{"type":57,"value":819},{"type":44,"tag":520,"props":2381,"children":2382},{"style":532},[2383],{"type":57,"value":824},{"type":44,"tag":520,"props":2385,"children":2386},{"style":538},[2387],{"type":57,"value":724},{"type":44,"tag":520,"props":2389,"children":2390},{"style":711},[2391],{"type":57,"value":771},{"type":44,"tag":520,"props":2393,"children":2395},{"class":522,"line":2394},22,[2396,2401,2405,2410,2414],{"type":44,"tag":520,"props":2397,"children":2398},{"style":532},[2399],{"type":57,"value":2400},"  --headers",{"type":44,"tag":520,"props":2402,"children":2403},{"style":538},[2404],{"type":57,"value":562},{"type":44,"tag":520,"props":2406,"children":2407},{"style":532},[2408],{"type":57,"value":2409},"Content-Type=application\u002Fjson",{"type":44,"tag":520,"props":2411,"children":2412},{"style":538},[2413],{"type":57,"value":724},{"type":44,"tag":520,"props":2415,"children":2416},{"style":711},[2417],{"type":57,"value":771},{"type":44,"tag":520,"props":2419,"children":2421},{"class":522,"line":2420},23,[2422,2427,2432],{"type":44,"tag":520,"props":2423,"children":2424},{"style":532},[2425],{"type":57,"value":2426},"  --body",{"type":44,"tag":520,"props":2428,"children":2429},{"style":532},[2430],{"type":57,"value":2431}," @create-report.json",{"type":44,"tag":520,"props":2433,"children":2434},{"style":711},[2435],{"type":57,"value":771},{"type":44,"tag":520,"props":2437,"children":2439},{"class":522,"line":2438},24,[2440,2444],{"type":44,"tag":520,"props":2441,"children":2442},{"style":532},[2443],{"type":57,"value":1397},{"type":44,"tag":520,"props":2445,"children":2446},{"style":538},[2447],{"type":57,"value":2448}," 2>&1\n",{"type":44,"tag":45,"props":2450,"children":2451},{},[2452],{"type":44,"tag":49,"props":2453,"children":2454},{},[2455,2460,2462,2468,2470,2476,2478,2484],{"type":44,"tag":53,"props":2456,"children":2457},{},[2458],{"type":57,"value":2459},"PowerShell",{"type":57,"value":2461}," — use ",{"type":44,"tag":84,"props":2463,"children":2465},{"className":2464},[],[2466],{"type":57,"value":2467},"Get-ChildItem -Recurse -File",{"type":57,"value":2469}," to walk the directory and\n",{"type":44,"tag":84,"props":2471,"children":2473},{"className":2472},[],[2474],{"type":57,"value":2475},"[Convert]::ToBase64String([System.IO.File]::ReadAllBytes($_.FullName))",{"type":57,"value":2477}," to\nencode each file (instead of ",{"type":44,"tag":84,"props":2479,"children":2481},{"className":2480},[],[2482],{"type":57,"value":2483},"base64 | tr -d '\\n'",{"type":57,"value":2485},").",{"type":44,"tag":45,"props":2487,"children":2488},{},[2489],{"type":44,"tag":49,"props":2490,"children":2491},{},[2492,2497,2498,2503,2505,2510,2512,2518,2520,2526],{"type":44,"tag":53,"props":2493,"children":2494},{},[2495],{"type":57,"value":2496},"Important",{"type":57,"value":410},{"type":44,"tag":84,"props":2499,"children":2501},{"className":2500},[],[2502],{"type":57,"value":262},{"type":57,"value":2504}," is always required. The directory walk above\nincludes every file under ",{"type":44,"tag":84,"props":2506,"children":2508},{"className":2507},[],[2509],{"type":57,"value":1660},{"type":57,"value":2511}," automatically — make sure\nyour local directory mirrors the full PBIR layout (top-level files, plus all\n",{"type":44,"tag":84,"props":2513,"children":2515},{"className":2514},[],[2516],{"type":57,"value":2517},"pages\u002F\u003Cpage>\u002Fpage.json",{"type":57,"value":2519}," and ",{"type":44,"tag":84,"props":2521,"children":2523},{"className":2522},[],[2524],{"type":57,"value":2525},"pages\u002F\u003Cpage>\u002Fvisuals\u002F\u003Cvisual>\u002Fvisual.json",{"type":57,"value":2527},"\nfiles) before encoding.",{"type":44,"tag":688,"props":2529,"children":2531},{"id":2530},"update-report-definition",[2532],{"type":57,"value":2533},"Update Report Definition",{"type":44,"tag":49,"props":2535,"children":2536},{},[2537,2539,2543],{"type":57,"value":2538},"Overwrites the entire definition. This is a ",{"type":44,"tag":53,"props":2540,"children":2541},{},[2542],{"type":57,"value":1219},{"type":57,"value":2544}," and supports LRO.",{"type":44,"tag":69,"props":2546,"children":2547},{},[2548,2556],{"type":44,"tag":73,"props":2549,"children":2550},{},[2551,2555],{"type":44,"tag":53,"props":2552,"children":2553},{},[2554],{"type":57,"value":915},{"type":57,"value":1233},{"type":44,"tag":73,"props":2557,"children":2558},{},[2559,2563,2564,2569,2570],{"type":44,"tag":53,"props":2560,"children":2561},{},[2562],{"type":57,"value":925},{"type":57,"value":410},{"type":44,"tag":84,"props":2565,"children":2567},{"className":2566},[],[2568],{"type":57,"value":1117},{"type":57,"value":934},{"type":44,"tag":84,"props":2571,"children":2573},{"className":2572},[],[2574],{"type":57,"value":1253},{"type":44,"tag":509,"props":2576,"children":2578},{"className":511,"code":2577,"language":513,"meta":514,"style":514},"# Rebuild parts[] from .\u002Freport-definition\u002F after edits (same walk as Create).\nPARTS=$(find .\u002Freport-definition -type f -not -name '.*' -not -name 'Thumbs.db' | while read -r file; do\n  rel=\"${file#.\u002Freport-definition\u002F}\"\n  payload=$(base64 \u003C \"$file\" | tr -d '\\n')\n  jq -nc --arg p \"$rel\" --arg b \"$payload\" \\\n    '{path:$p, payload:$b, payloadType:\"InlineBase64\"}'\ndone | jq -sc '.')\n\njq -n --argjson parts \"$PARTS\" \\\n  '{definition:{parts:$parts}}' \\\n  > update-definition.json\n\naz rest --method post \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FupdateDefinition\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @update-definition.json \\\n  --verbose 2>&1\n",[2579],{"type":44,"tag":84,"props":2580,"children":2581},{"__ignoreMap":514},[2582,2590,2685,2724,2783,2838,2853,2888,2895,2931,2951,2963,2970,2993,3016,3056,3079,3095],{"type":44,"tag":520,"props":2583,"children":2584},{"class":522,"line":523},[2585],{"type":44,"tag":520,"props":2586,"children":2587},{"style":1417},[2588],{"type":57,"value":2589},"# Rebuild parts[] from .\u002Freport-definition\u002F after edits (same walk as Create).\n",{"type":44,"tag":520,"props":2591,"children":2592},{"class":522,"line":736},[2593,2597,2601,2605,2609,2613,2617,2621,2625,2629,2633,2637,2641,2645,2649,2653,2657,2661,2665,2669,2673,2677,2681],{"type":44,"tag":520,"props":2594,"children":2595},{"style":711},[2596],{"type":57,"value":1823},{"type":44,"tag":520,"props":2598,"children":2599},{"style":538},[2600],{"type":57,"value":747},{"type":44,"tag":520,"props":2602,"children":2603},{"style":527},[2604],{"type":57,"value":1832},{"type":44,"tag":520,"props":2606,"children":2607},{"style":532},[2608],{"type":57,"value":1837},{"type":44,"tag":520,"props":2610,"children":2611},{"style":532},[2612],{"type":57,"value":1842},{"type":44,"tag":520,"props":2614,"children":2615},{"style":532},[2616],{"type":57,"value":1847},{"type":44,"tag":520,"props":2618,"children":2619},{"style":532},[2620],{"type":57,"value":1852},{"type":44,"tag":520,"props":2622,"children":2623},{"style":532},[2624],{"type":57,"value":1857},{"type":44,"tag":520,"props":2626,"children":2627},{"style":538},[2628],{"type":57,"value":1549},{"type":44,"tag":520,"props":2630,"children":2631},{"style":532},[2632],{"type":57,"value":1866},{"type":44,"tag":520,"props":2634,"children":2635},{"style":538},[2636],{"type":57,"value":1559},{"type":44,"tag":520,"props":2638,"children":2639},{"style":532},[2640],{"type":57,"value":1852},{"type":44,"tag":520,"props":2642,"children":2643},{"style":532},[2644],{"type":57,"value":1857},{"type":44,"tag":520,"props":2646,"children":2647},{"style":538},[2648],{"type":57,"value":1549},{"type":44,"tag":520,"props":2650,"children":2651},{"style":532},[2652],{"type":57,"value":1887},{"type":44,"tag":520,"props":2654,"children":2655},{"style":538},[2656],{"type":57,"value":1559},{"type":44,"tag":520,"props":2658,"children":2659},{"style":538},[2660],{"type":57,"value":1534},{"type":44,"tag":520,"props":2662,"children":2663},{"style":1573},[2664],{"type":57,"value":1900},{"type":44,"tag":520,"props":2666,"children":2667},{"style":554},[2668],{"type":57,"value":1604},{"type":44,"tag":520,"props":2670,"children":2671},{"style":532},[2672],{"type":57,"value":1544},{"type":44,"tag":520,"props":2674,"children":2675},{"style":532},[2676],{"type":57,"value":1913},{"type":44,"tag":520,"props":2678,"children":2679},{"style":538},[2680],{"type":57,"value":1623},{"type":44,"tag":520,"props":2682,"children":2683},{"style":1573},[2684],{"type":57,"value":1628},{"type":44,"tag":520,"props":2686,"children":2687},{"class":522,"line":774},[2688,2692,2696,2700,2704,2708,2712,2716,2720],{"type":44,"tag":520,"props":2689,"children":2690},{"style":711},[2691],{"type":57,"value":1929},{"type":44,"tag":520,"props":2693,"children":2694},{"style":538},[2695],{"type":57,"value":719},{"type":44,"tag":520,"props":2697,"children":2698},{"style":538},[2699],{"type":57,"value":1938},{"type":44,"tag":520,"props":2701,"children":2702},{"style":711},[2703],{"type":57,"value":1943},{"type":44,"tag":520,"props":2705,"children":2706},{"style":538},[2707],{"type":57,"value":1948},{"type":44,"tag":520,"props":2709,"children":2710},{"style":532},[2711],{"type":57,"value":171},{"type":44,"tag":520,"props":2713,"children":2714},{"style":538},[2715],{"type":57,"value":1957},{"type":44,"tag":520,"props":2717,"children":2718},{"style":711},[2719],{"type":57,"value":1962},{"type":44,"tag":520,"props":2721,"children":2722},{"style":538},[2723],{"type":57,"value":1967},{"type":44,"tag":520,"props":2725,"children":2726},{"class":522,"line":799},[2727,2731,2735,2739,2743,2747,2751,2755,2759,2763,2767,2771,2775,2779],{"type":44,"tag":520,"props":2728,"children":2729},{"style":711},[2730],{"type":57,"value":1975},{"type":44,"tag":520,"props":2732,"children":2733},{"style":538},[2734],{"type":57,"value":747},{"type":44,"tag":520,"props":2736,"children":2737},{"style":527},[2738],{"type":57,"value":470},{"type":44,"tag":520,"props":2740,"children":2741},{"style":538},[2742],{"type":57,"value":1988},{"type":44,"tag":520,"props":2744,"children":2745},{"style":538},[2746],{"type":57,"value":562},{"type":44,"tag":520,"props":2748,"children":2749},{"style":711},[2750],{"type":57,"value":1997},{"type":44,"tag":520,"props":2752,"children":2753},{"style":538},[2754],{"type":57,"value":724},{"type":44,"tag":520,"props":2756,"children":2757},{"style":538},[2758],{"type":57,"value":1534},{"type":44,"tag":520,"props":2760,"children":2761},{"style":527},[2762],{"type":57,"value":2010},{"type":44,"tag":520,"props":2764,"children":2765},{"style":532},[2766],{"type":57,"value":1705},{"type":44,"tag":520,"props":2768,"children":2769},{"style":538},[2770],{"type":57,"value":1549},{"type":44,"tag":520,"props":2772,"children":2773},{"style":532},[2774],{"type":57,"value":2023},{"type":44,"tag":520,"props":2776,"children":2777},{"style":538},[2778],{"type":57,"value":1559},{"type":44,"tag":520,"props":2780,"children":2781},{"style":538},[2782],{"type":57,"value":887},{"type":44,"tag":520,"props":2784,"children":2785},{"class":522,"line":835},[2786,2790,2794,2798,2802,2806,2810,2814,2818,2822,2826,2830,2834],{"type":44,"tag":520,"props":2787,"children":2788},{"style":527},[2789],{"type":57,"value":2040},{"type":44,"tag":520,"props":2791,"children":2792},{"style":532},[2793],{"type":57,"value":2045},{"type":44,"tag":520,"props":2795,"children":2796},{"style":532},[2797],{"type":57,"value":2050},{"type":44,"tag":520,"props":2799,"children":2800},{"style":532},[2801],{"type":57,"value":2055},{"type":44,"tag":520,"props":2803,"children":2804},{"style":538},[2805],{"type":57,"value":562},{"type":44,"tag":520,"props":2807,"children":2808},{"style":711},[2809],{"type":57,"value":2064},{"type":44,"tag":520,"props":2811,"children":2812},{"style":538},[2813],{"type":57,"value":724},{"type":44,"tag":520,"props":2815,"children":2816},{"style":532},[2817],{"type":57,"value":2050},{"type":44,"tag":520,"props":2819,"children":2820},{"style":532},[2821],{"type":57,"value":2077},{"type":44,"tag":520,"props":2823,"children":2824},{"style":538},[2825],{"type":57,"value":562},{"type":44,"tag":520,"props":2827,"children":2828},{"style":711},[2829],{"type":57,"value":1687},{"type":44,"tag":520,"props":2831,"children":2832},{"style":538},[2833],{"type":57,"value":724},{"type":44,"tag":520,"props":2835,"children":2836},{"style":711},[2837],{"type":57,"value":771},{"type":44,"tag":520,"props":2839,"children":2840},{"class":522,"line":871},[2841,2845,2849],{"type":44,"tag":520,"props":2842,"children":2843},{"style":538},[2844],{"type":57,"value":2102},{"type":44,"tag":520,"props":2846,"children":2847},{"style":532},[2848],{"type":57,"value":2107},{"type":44,"tag":520,"props":2850,"children":2851},{"style":538},[2852],{"type":57,"value":2112},{"type":44,"tag":520,"props":2854,"children":2855},{"class":522,"line":1423},[2856,2860,2864,2868,2872,2876,2880,2884],{"type":44,"tag":520,"props":2857,"children":2858},{"style":1573},[2859],{"type":57,"value":2121},{"type":44,"tag":520,"props":2861,"children":2862},{"style":538},[2863],{"type":57,"value":1534},{"type":44,"tag":520,"props":2865,"children":2866},{"style":527},[2867],{"type":57,"value":1539},{"type":44,"tag":520,"props":2869,"children":2870},{"style":532},[2871],{"type":57,"value":2134},{"type":44,"tag":520,"props":2873,"children":2874},{"style":538},[2875],{"type":57,"value":1549},{"type":44,"tag":520,"props":2877,"children":2878},{"style":532},[2879],{"type":57,"value":171},{"type":44,"tag":520,"props":2881,"children":2882},{"style":538},[2883],{"type":57,"value":1559},{"type":44,"tag":520,"props":2885,"children":2886},{"style":538},[2887],{"type":57,"value":887},{"type":44,"tag":520,"props":2889,"children":2890},{"class":522,"line":2034},[2891],{"type":44,"tag":520,"props":2892,"children":2893},{"emptyLinePlaceholder":1408},[2894],{"type":57,"value":1411},{"type":44,"tag":520,"props":2896,"children":2897},{"class":522,"line":2096},[2898,2902,2906,2911,2915,2919,2923,2927],{"type":44,"tag":520,"props":2899,"children":2900},{"style":527},[2901],{"type":57,"value":442},{"type":44,"tag":520,"props":2903,"children":2904},{"style":532},[2905],{"type":57,"value":2171},{"type":44,"tag":520,"props":2907,"children":2908},{"style":532},[2909],{"type":57,"value":2910}," --argjson",{"type":44,"tag":520,"props":2912,"children":2913},{"style":532},[2914],{"type":57,"value":2250},{"type":44,"tag":520,"props":2916,"children":2917},{"style":538},[2918],{"type":57,"value":562},{"type":44,"tag":520,"props":2920,"children":2921},{"style":711},[2922],{"type":57,"value":2259},{"type":44,"tag":520,"props":2924,"children":2925},{"style":538},[2926],{"type":57,"value":724},{"type":44,"tag":520,"props":2928,"children":2929},{"style":711},[2930],{"type":57,"value":771},{"type":44,"tag":520,"props":2932,"children":2933},{"class":522,"line":2115},[2934,2938,2943,2947],{"type":44,"tag":520,"props":2935,"children":2936},{"style":538},[2937],{"type":57,"value":2276},{"type":44,"tag":520,"props":2939,"children":2940},{"style":532},[2941],{"type":57,"value":2942},"{definition:{parts:$parts}}",{"type":44,"tag":520,"props":2944,"children":2945},{"style":538},[2946],{"type":57,"value":1559},{"type":44,"tag":520,"props":2948,"children":2949},{"style":711},[2950],{"type":57,"value":771},{"type":44,"tag":520,"props":2952,"children":2953},{"class":522,"line":2153},[2954,2958],{"type":44,"tag":520,"props":2955,"children":2956},{"style":538},[2957],{"type":57,"value":2298},{"type":44,"tag":520,"props":2959,"children":2960},{"style":532},[2961],{"type":57,"value":2962}," update-definition.json\n",{"type":44,"tag":520,"props":2964,"children":2965},{"class":522,"line":2161},[2966],{"type":44,"tag":520,"props":2967,"children":2968},{"emptyLinePlaceholder":1408},[2969],{"type":57,"value":1411},{"type":44,"tag":520,"props":2971,"children":2972},{"class":522,"line":2178},[2973,2977,2981,2985,2989],{"type":44,"tag":520,"props":2974,"children":2975},{"style":527},[2976],{"type":57,"value":398},{"type":44,"tag":520,"props":2978,"children":2979},{"style":532},[2980],{"type":57,"value":756},{"type":44,"tag":520,"props":2982,"children":2983},{"style":532},[2984],{"type":57,"value":761},{"type":44,"tag":520,"props":2986,"children":2987},{"style":532},[2988],{"type":57,"value":1322},{"type":44,"tag":520,"props":2990,"children":2991},{"style":711},[2992],{"type":57,"value":771},{"type":44,"tag":520,"props":2994,"children":2995},{"class":522,"line":2209},[2996,3000,3004,3008,3012],{"type":44,"tag":520,"props":2997,"children":2998},{"style":532},[2999],{"type":57,"value":780},{"type":44,"tag":520,"props":3001,"children":3002},{"style":538},[3003],{"type":57,"value":562},{"type":44,"tag":520,"props":3005,"children":3006},{"style":532},[3007],{"type":57,"value":630},{"type":44,"tag":520,"props":3009,"children":3010},{"style":538},[3011],{"type":57,"value":724},{"type":44,"tag":520,"props":3013,"children":3014},{"style":711},[3015],{"type":57,"value":771},{"type":44,"tag":520,"props":3017,"children":3018},{"class":522,"line":2239},[3019,3023,3027,3031,3035,3039,3043,3048,3052],{"type":44,"tag":520,"props":3020,"children":3021},{"style":532},[3022],{"type":57,"value":805},{"type":44,"tag":520,"props":3024,"children":3025},{"style":538},[3026],{"type":57,"value":562},{"type":44,"tag":520,"props":3028,"children":3029},{"style":532},[3030],{"type":57,"value":814},{"type":44,"tag":520,"props":3032,"children":3033},{"style":711},[3034],{"type":57,"value":819},{"type":44,"tag":520,"props":3036,"children":3037},{"style":532},[3038],{"type":57,"value":1194},{"type":44,"tag":520,"props":3040,"children":3041},{"style":711},[3042],{"type":57,"value":1199},{"type":44,"tag":520,"props":3044,"children":3045},{"style":532},[3046],{"type":57,"value":3047},"\u002FupdateDefinition",{"type":44,"tag":520,"props":3049,"children":3050},{"style":538},[3051],{"type":57,"value":724},{"type":44,"tag":520,"props":3053,"children":3054},{"style":711},[3055],{"type":57,"value":771},{"type":44,"tag":520,"props":3057,"children":3058},{"class":522,"line":2270},[3059,3063,3067,3071,3075],{"type":44,"tag":520,"props":3060,"children":3061},{"style":532},[3062],{"type":57,"value":2400},{"type":44,"tag":520,"props":3064,"children":3065},{"style":538},[3066],{"type":57,"value":562},{"type":44,"tag":520,"props":3068,"children":3069},{"style":532},[3070],{"type":57,"value":2409},{"type":44,"tag":520,"props":3072,"children":3073},{"style":538},[3074],{"type":57,"value":724},{"type":44,"tag":520,"props":3076,"children":3077},{"style":711},[3078],{"type":57,"value":771},{"type":44,"tag":520,"props":3080,"children":3081},{"class":522,"line":2292},[3082,3086,3091],{"type":44,"tag":520,"props":3083,"children":3084},{"style":532},[3085],{"type":57,"value":2426},{"type":44,"tag":520,"props":3087,"children":3088},{"style":532},[3089],{"type":57,"value":3090}," @update-definition.json",{"type":44,"tag":520,"props":3092,"children":3093},{"style":711},[3094],{"type":57,"value":771},{"type":44,"tag":520,"props":3096,"children":3097},{"class":522,"line":2306},[3098,3102],{"type":44,"tag":520,"props":3099,"children":3100},{"style":532},[3101],{"type":57,"value":1397},{"type":44,"tag":520,"props":3103,"children":3104},{"style":538},[3105],{"type":57,"value":2448},{"type":44,"tag":45,"props":3107,"children":3108},{},[3109],{"type":44,"tag":49,"props":3110,"children":3111},{},[3112,3117,3118,3124,3126,3131],{"type":44,"tag":53,"props":3113,"children":3114},{},[3115],{"type":57,"value":3116},"Critical",{"type":57,"value":410},{"type":44,"tag":84,"props":3119,"children":3121},{"className":3120},[],[3122],{"type":57,"value":3123},"updateDefinition",{"type":57,"value":3125}," replaces the ",{"type":44,"tag":53,"props":3127,"children":3128},{},[3129],{"type":57,"value":3130},"entire",{"type":57,"value":3132}," definition. Include\nALL parts — modified and unmodified. Omitting parts deletes them.",{"type":44,"tag":49,"props":3134,"children":3135},{},[3136,3138,3144,3146,3152],{"type":57,"value":3137},"Optional query parameter ",{"type":44,"tag":84,"props":3139,"children":3141},{"className":3140},[],[3142],{"type":57,"value":3143},"?updateMetadata=true",{"type":57,"value":3145}," updates item metadata from\n",{"type":44,"tag":84,"props":3147,"children":3149},{"className":3148},[],[3150],{"type":57,"value":3151},".platform",{"type":57,"value":3153}," file if included.",{"type":44,"tag":688,"props":3155,"children":3157},{"id":3156},"update-report-properties",[3158],{"type":57,"value":3159},"Update Report (Properties)",{"type":44,"tag":49,"props":3161,"children":3162},{},[3163],{"type":57,"value":3164},"Updates display name and\u002For description only (not the definition).",{"type":44,"tag":69,"props":3166,"children":3167},{},[3168,3176],{"type":44,"tag":73,"props":3169,"children":3170},{},[3171,3175],{"type":44,"tag":53,"props":3172,"children":3173},{},[3174],{"type":57,"value":915},{"type":57,"value":1233},{"type":44,"tag":73,"props":3177,"children":3178},{},[3179,3183,3184,3189,3190],{"type":44,"tag":53,"props":3180,"children":3181},{},[3182],{"type":57,"value":925},{"type":57,"value":410},{"type":44,"tag":84,"props":3185,"children":3187},{"className":3186},[],[3188],{"type":57,"value":1117},{"type":57,"value":934},{"type":44,"tag":84,"props":3191,"children":3193},{"className":3192},[],[3194],{"type":57,"value":1253},{"type":44,"tag":509,"props":3196,"children":3198},{"className":511,"code":3197,"language":513,"meta":514,"style":514},"cat > update-report.json \u003C\u003C 'EOF'\n{\n  \"displayName\": \"Renamed Report\",\n  \"description\": \"Updated description\"\n}\nEOF\n\naz rest --method patch \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\" \\\n  --headers \"Content-Type=application\u002Fjson\" \\\n  --body @update-report.json\n",[3199],{"type":44,"tag":84,"props":3200,"children":3201},{"__ignoreMap":514},[3202,3229,3237,3245,3253,3261,3269,3276,3300,3323,3358,3381],{"type":44,"tag":520,"props":3203,"children":3204},{"class":522,"line":523},[3205,3210,3214,3219,3224],{"type":44,"tag":520,"props":3206,"children":3207},{"style":527},[3208],{"type":57,"value":3209},"cat",{"type":44,"tag":520,"props":3211,"children":3212},{"style":538},[3213],{"type":57,"value":1710},{"type":44,"tag":520,"props":3215,"children":3216},{"style":532},[3217],{"type":57,"value":3218}," update-report.json",{"type":44,"tag":520,"props":3220,"children":3221},{"style":538},[3222],{"type":57,"value":3223}," \u003C\u003C",{"type":44,"tag":520,"props":3225,"children":3226},{"style":538},[3227],{"type":57,"value":3228}," 'EOF'\n",{"type":44,"tag":520,"props":3230,"children":3231},{"class":522,"line":736},[3232],{"type":44,"tag":520,"props":3233,"children":3234},{"style":532},[3235],{"type":57,"value":3236},"{\n",{"type":44,"tag":520,"props":3238,"children":3239},{"class":522,"line":774},[3240],{"type":44,"tag":520,"props":3241,"children":3242},{"style":532},[3243],{"type":57,"value":3244},"  \"displayName\": \"Renamed Report\",\n",{"type":44,"tag":520,"props":3246,"children":3247},{"class":522,"line":799},[3248],{"type":44,"tag":520,"props":3249,"children":3250},{"style":532},[3251],{"type":57,"value":3252},"  \"description\": \"Updated description\"\n",{"type":44,"tag":520,"props":3254,"children":3255},{"class":522,"line":835},[3256],{"type":44,"tag":520,"props":3257,"children":3258},{"style":532},[3259],{"type":57,"value":3260},"}\n",{"type":44,"tag":520,"props":3262,"children":3263},{"class":522,"line":871},[3264],{"type":44,"tag":520,"props":3265,"children":3266},{"style":538},[3267],{"type":57,"value":3268},"EOF\n",{"type":44,"tag":520,"props":3270,"children":3271},{"class":522,"line":1423},[3272],{"type":44,"tag":520,"props":3273,"children":3274},{"emptyLinePlaceholder":1408},[3275],{"type":57,"value":1411},{"type":44,"tag":520,"props":3277,"children":3278},{"class":522,"line":2034},[3279,3283,3287,3291,3296],{"type":44,"tag":520,"props":3280,"children":3281},{"style":527},[3282],{"type":57,"value":398},{"type":44,"tag":520,"props":3284,"children":3285},{"style":532},[3286],{"type":57,"value":756},{"type":44,"tag":520,"props":3288,"children":3289},{"style":532},[3290],{"type":57,"value":761},{"type":44,"tag":520,"props":3292,"children":3293},{"style":532},[3294],{"type":57,"value":3295}," patch",{"type":44,"tag":520,"props":3297,"children":3298},{"style":711},[3299],{"type":57,"value":771},{"type":44,"tag":520,"props":3301,"children":3302},{"class":522,"line":2096},[3303,3307,3311,3315,3319],{"type":44,"tag":520,"props":3304,"children":3305},{"style":532},[3306],{"type":57,"value":780},{"type":44,"tag":520,"props":3308,"children":3309},{"style":538},[3310],{"type":57,"value":562},{"type":44,"tag":520,"props":3312,"children":3313},{"style":532},[3314],{"type":57,"value":630},{"type":44,"tag":520,"props":3316,"children":3317},{"style":538},[3318],{"type":57,"value":724},{"type":44,"tag":520,"props":3320,"children":3321},{"style":711},[3322],{"type":57,"value":771},{"type":44,"tag":520,"props":3324,"children":3325},{"class":522,"line":2115},[3326,3330,3334,3338,3342,3346,3350,3354],{"type":44,"tag":520,"props":3327,"children":3328},{"style":532},[3329],{"type":57,"value":805},{"type":44,"tag":520,"props":3331,"children":3332},{"style":538},[3333],{"type":57,"value":562},{"type":44,"tag":520,"props":3335,"children":3336},{"style":532},[3337],{"type":57,"value":814},{"type":44,"tag":520,"props":3339,"children":3340},{"style":711},[3341],{"type":57,"value":819},{"type":44,"tag":520,"props":3343,"children":3344},{"style":532},[3345],{"type":57,"value":1194},{"type":44,"tag":520,"props":3347,"children":3348},{"style":711},[3349],{"type":57,"value":1199},{"type":44,"tag":520,"props":3351,"children":3352},{"style":538},[3353],{"type":57,"value":724},{"type":44,"tag":520,"props":3355,"children":3356},{"style":711},[3357],{"type":57,"value":771},{"type":44,"tag":520,"props":3359,"children":3360},{"class":522,"line":2153},[3361,3365,3369,3373,3377],{"type":44,"tag":520,"props":3362,"children":3363},{"style":532},[3364],{"type":57,"value":2400},{"type":44,"tag":520,"props":3366,"children":3367},{"style":538},[3368],{"type":57,"value":562},{"type":44,"tag":520,"props":3370,"children":3371},{"style":532},[3372],{"type":57,"value":2409},{"type":44,"tag":520,"props":3374,"children":3375},{"style":538},[3376],{"type":57,"value":724},{"type":44,"tag":520,"props":3378,"children":3379},{"style":711},[3380],{"type":57,"value":771},{"type":44,"tag":520,"props":3382,"children":3383},{"class":522,"line":2161},[3384,3388],{"type":44,"tag":520,"props":3385,"children":3386},{"style":532},[3387],{"type":57,"value":2426},{"type":44,"tag":520,"props":3389,"children":3390},{"style":532},[3391],{"type":57,"value":3392}," @update-report.json\n",{"type":44,"tag":688,"props":3394,"children":3396},{"id":3395},"delete-report",[3397],{"type":57,"value":3398},"Delete Report",{"type":44,"tag":49,"props":3400,"children":3401},{},[3402],{"type":57,"value":3403},"Deletes a report. Supports soft-delete (default) and hard-delete.",{"type":44,"tag":69,"props":3405,"children":3406},{},[3407,3416],{"type":44,"tag":73,"props":3408,"children":3409},{},[3410,3414],{"type":44,"tag":53,"props":3411,"children":3412},{},[3413],{"type":57,"value":915},{"type":57,"value":3415},": Write permissions on the report",{"type":44,"tag":73,"props":3417,"children":3418},{},[3419,3423,3424,3429,3430],{"type":44,"tag":53,"props":3420,"children":3421},{},[3422],{"type":57,"value":925},{"type":57,"value":410},{"type":44,"tag":84,"props":3425,"children":3427},{"className":3426},[],[3428],{"type":57,"value":1117},{"type":57,"value":934},{"type":44,"tag":84,"props":3431,"children":3433},{"className":3432},[],[3434],{"type":57,"value":1253},{"type":44,"tag":509,"props":3436,"children":3438},{"className":511,"code":3437,"language":513,"meta":514,"style":514},"# Soft delete (recoverable)\naz rest --method delete \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID\"\n\n# Hard delete (permanent)\naz rest --method delete \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WS_ID\u002Freports\u002F$REPORT_ID?hardDelete=true\"\n",[3439],{"type":44,"tag":84,"props":3440,"children":3441},{"__ignoreMap":514},[3442,3450,3474,3497,3528,3535,3543,3566,3589],{"type":44,"tag":520,"props":3443,"children":3444},{"class":522,"line":523},[3445],{"type":44,"tag":520,"props":3446,"children":3447},{"style":1417},[3448],{"type":57,"value":3449},"# Soft delete (recoverable)\n",{"type":44,"tag":520,"props":3451,"children":3452},{"class":522,"line":736},[3453,3457,3461,3465,3470],{"type":44,"tag":520,"props":3454,"children":3455},{"style":527},[3456],{"type":57,"value":398},{"type":44,"tag":520,"props":3458,"children":3459},{"style":532},[3460],{"type":57,"value":756},{"type":44,"tag":520,"props":3462,"children":3463},{"style":532},[3464],{"type":57,"value":761},{"type":44,"tag":520,"props":3466,"children":3467},{"style":532},[3468],{"type":57,"value":3469}," delete",{"type":44,"tag":520,"props":3471,"children":3472},{"style":711},[3473],{"type":57,"value":771},{"type":44,"tag":520,"props":3475,"children":3476},{"class":522,"line":774},[3477,3481,3485,3489,3493],{"type":44,"tag":520,"props":3478,"children":3479},{"style":532},[3480],{"type":57,"value":780},{"type":44,"tag":520,"props":3482,"children":3483},{"style":538},[3484],{"type":57,"value":562},{"type":44,"tag":520,"props":3486,"children":3487},{"style":532},[3488],{"type":57,"value":630},{"type":44,"tag":520,"props":3490,"children":3491},{"style":538},[3492],{"type":57,"value":724},{"type":44,"tag":520,"props":3494,"children":3495},{"style":711},[3496],{"type":57,"value":771},{"type":44,"tag":520,"props":3498,"children":3499},{"class":522,"line":799},[3500,3504,3508,3512,3516,3520,3524],{"type":44,"tag":520,"props":3501,"children":3502},{"style":532},[3503],{"type":57,"value":805},{"type":44,"tag":520,"props":3505,"children":3506},{"style":538},[3507],{"type":57,"value":562},{"type":44,"tag":520,"props":3509,"children":3510},{"style":532},[3511],{"type":57,"value":814},{"type":44,"tag":520,"props":3513,"children":3514},{"style":711},[3515],{"type":57,"value":819},{"type":44,"tag":520,"props":3517,"children":3518},{"style":532},[3519],{"type":57,"value":1194},{"type":44,"tag":520,"props":3521,"children":3522},{"style":711},[3523],{"type":57,"value":1199},{"type":44,"tag":520,"props":3525,"children":3526},{"style":538},[3527],{"type":57,"value":572},{"type":44,"tag":520,"props":3529,"children":3530},{"class":522,"line":835},[3531],{"type":44,"tag":520,"props":3532,"children":3533},{"emptyLinePlaceholder":1408},[3534],{"type":57,"value":1411},{"type":44,"tag":520,"props":3536,"children":3537},{"class":522,"line":871},[3538],{"type":44,"tag":520,"props":3539,"children":3540},{"style":1417},[3541],{"type":57,"value":3542},"# Hard delete (permanent)\n",{"type":44,"tag":520,"props":3544,"children":3545},{"class":522,"line":1423},[3546,3550,3554,3558,3562],{"type":44,"tag":520,"props":3547,"children":3548},{"style":527},[3549],{"type":57,"value":398},{"type":44,"tag":520,"props":3551,"children":3552},{"style":532},[3553],{"type":57,"value":756},{"type":44,"tag":520,"props":3555,"children":3556},{"style":532},[3557],{"type":57,"value":761},{"type":44,"tag":520,"props":3559,"children":3560},{"style":532},[3561],{"type":57,"value":3469},{"type":44,"tag":520,"props":3563,"children":3564},{"style":711},[3565],{"type":57,"value":771},{"type":44,"tag":520,"props":3567,"children":3568},{"class":522,"line":2034},[3569,3573,3577,3581,3585],{"type":44,"tag":520,"props":3570,"children":3571},{"style":532},[3572],{"type":57,"value":780},{"type":44,"tag":520,"props":3574,"children":3575},{"style":538},[3576],{"type":57,"value":562},{"type":44,"tag":520,"props":3578,"children":3579},{"style":532},[3580],{"type":57,"value":630},{"type":44,"tag":520,"props":3582,"children":3583},{"style":538},[3584],{"type":57,"value":724},{"type":44,"tag":520,"props":3586,"children":3587},{"style":711},[3588],{"type":57,"value":771},{"type":44,"tag":520,"props":3590,"children":3591},{"class":522,"line":2096},[3592,3596,3600,3604,3608,3612,3616,3621],{"type":44,"tag":520,"props":3593,"children":3594},{"style":532},[3595],{"type":57,"value":805},{"type":44,"tag":520,"props":3597,"children":3598},{"style":538},[3599],{"type":57,"value":562},{"type":44,"tag":520,"props":3601,"children":3602},{"style":532},[3603],{"type":57,"value":814},{"type":44,"tag":520,"props":3605,"children":3606},{"style":711},[3607],{"type":57,"value":819},{"type":44,"tag":520,"props":3609,"children":3610},{"style":532},[3611],{"type":57,"value":1194},{"type":44,"tag":520,"props":3613,"children":3614},{"style":711},[3615],{"type":57,"value":1199},{"type":44,"tag":520,"props":3617,"children":3618},{"style":532},[3619],{"type":57,"value":3620},"?hardDelete=true",{"type":44,"tag":520,"props":3622,"children":3623},{"style":538},[3624],{"type":57,"value":572},{"type":44,"tag":192,"props":3626,"children":3628},{"id":3627},"long-running-operations-lro",[3629],{"type":57,"value":3630},"Long-Running Operations (LRO)",{"type":44,"tag":49,"props":3632,"children":3633},{},[3634,3640,3641,3646,3648,3653,3655,3660,3662,3668,3670,3676],{"type":44,"tag":84,"props":3635,"children":3637},{"className":3636},[],[3638],{"type":57,"value":3639},"Create Report",{"type":57,"value":264},{"type":44,"tag":84,"props":3642,"children":3644},{"className":3643},[],[3645],{"type":57,"value":1209},{"type":57,"value":3647},", and ",{"type":44,"tag":84,"props":3649,"children":3651},{"className":3650},[],[3652],{"type":57,"value":2533},{"type":57,"value":3654}," may\nreturn ",{"type":44,"tag":84,"props":3656,"children":3658},{"className":3657},[],[3659],{"type":57,"value":1491},{"type":57,"value":3661}," instead of an immediate result. Capture\n",{"type":44,"tag":84,"props":3663,"children":3665},{"className":3664},[],[3666],{"type":57,"value":3667},"x-ms-operation-id",{"type":57,"value":3669}," from the verbose output and poll until terminal state per\n",{"type":44,"tag":346,"props":3671,"children":3673},{"href":3672},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#long-running-operations-lro-pattern",[3674],{"type":57,"value":3675},"COMMON-CLI.md § Long-Running Operations",{"type":57,"value":171},{"type":44,"tag":49,"props":3678,"children":3679},{},[3680],{"type":57,"value":3681},"The management-specific guardrails below take precedence over the generic\npattern when they conflict.",{"type":44,"tag":45,"props":3683,"children":3684},{},[3685,3702,3727,3760],{"type":44,"tag":49,"props":3686,"children":3687},{},[3688,3693,3695,3700],{"type":44,"tag":53,"props":3689,"children":3690},{},[3691],{"type":57,"value":3692},"⚠️ Never retry a create POST after receiving 202.",{"type":57,"value":3694}," A ",{"type":44,"tag":84,"props":3696,"children":3698},{"className":3697},[],[3699],{"type":57,"value":1491},{"type":57,"value":3701},"\nresponse means the operation was accepted and is likely being processed\nserver-side. Retrying the POST risks creating duplicates.",{"type":44,"tag":49,"props":3703,"children":3704},{},[3705,3718,3720,3725],{"type":44,"tag":53,"props":3706,"children":3707},{},[3708,3710,3716],{"type":57,"value":3709},"Always write ",{"type":44,"tag":84,"props":3711,"children":3713},{"className":3712},[],[3714],{"type":57,"value":3715},"--verbose",{"type":57,"value":3717}," output to a file",{"type":57,"value":3719}," to reliably capture the\n",{"type":44,"tag":84,"props":3721,"children":3723},{"className":3722},[],[3724],{"type":57,"value":3667},{"type":57,"value":3726}," header on every attempt — this is the only reliable\nway to track the operation. Regex extraction from in-memory strings is\nfragile across shells and platforms. Once captured, poll the operation\nto completion just like any other LRO call.",{"type":44,"tag":509,"props":3728,"children":3732},{"className":3729,"code":3730,"language":3731,"meta":514,"style":514},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# PowerShell — reliable operation ID capture\naz rest --method post ... --verbose 2>&1 | Out-File \"$env:TEMP\\lro-response.txt\" -Encoding utf8\n$opId = (Select-String -Path \"$env:TEMP\\lro-response.txt\" -Pattern \"x-ms-operation-id.*?'([a-f0-9-]+)'\" | Select-Object -First 1).Matches.Groups[1].Value\n","powershell",[3733],{"type":44,"tag":84,"props":3734,"children":3735},{"__ignoreMap":514},[3736,3744,3752],{"type":44,"tag":520,"props":3737,"children":3738},{"class":522,"line":523},[3739],{"type":44,"tag":520,"props":3740,"children":3741},{},[3742],{"type":57,"value":3743},"# PowerShell — reliable operation ID capture\n",{"type":44,"tag":520,"props":3745,"children":3746},{"class":522,"line":736},[3747],{"type":44,"tag":520,"props":3748,"children":3749},{},[3750],{"type":57,"value":3751},"az rest --method post ... --verbose 2>&1 | Out-File \"$env:TEMP\\lro-response.txt\" -Encoding utf8\n",{"type":44,"tag":520,"props":3753,"children":3754},{"class":522,"line":774},[3755],{"type":44,"tag":520,"props":3756,"children":3757},{},[3758],{"type":57,"value":3759},"$opId = (Select-String -Path \"$env:TEMP\\lro-response.txt\" -Pattern \"x-ms-operation-id.*?'([a-f0-9-]+)'\" | Select-Object -First 1).Matches.Groups[1].Value\n",{"type":44,"tag":49,"props":3761,"children":3762},{},[3763],{"type":57,"value":3764},"As a last resort, if the operation ID is still lost despite writing to\na file, list reports in the workspace to locate the created report —\nbut this should not be the normal path.",{"type":44,"tag":49,"props":3766,"children":3767},{},[3768,3770,3778],{"type":57,"value":3769},"For more details, see ",{"type":44,"tag":346,"props":3771,"children":3775},{"href":3772,"rel":3773},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Frest\u002Fapi\u002Ffabric\u002Farticles\u002Flong-running-operation",[3774],"nofollow",[3776],{"type":57,"value":3777},"Long-Running Operations",{"type":57,"value":171},{"type":44,"tag":192,"props":3780,"children":3782},{"id":3781},"pbir-definition-structure",[3783],{"type":57,"value":3784},"PBIR Definition Structure",{"type":44,"tag":49,"props":3786,"children":3787},{},[3788],{"type":57,"value":3789},"Reports use the PBIR format — a folder of JSON files:",{"type":44,"tag":509,"props":3791,"children":3795},{"className":3792,"code":3794,"language":57,"meta":514},[3793],"language-text","Report\u002F\n├── definition.pbir                              # Semantic model reference (required)\n├── definition\u002F\n│   ├── report.json                              # Report-level settings (required)\n│   ├── version.json                             # Format version (required)\n│   ├── pages\u002F\n│   │   ├── pages.json                           # Page listing (required)\n│   │   ├── \u003CpageId>\u002F\n│   │   │   ├── page.json                        # Page layout\n│   │   │   ├── visuals\u002F\n│   │   │   │   ├── \u003CvisualId>\u002F\n│   │   │   │   │   ├── visual.json              # Visual config\n│   │   │   │   │   ├── mobile.json              # Mobile layout (optional)\n│   ├── bookmarks\u002F                               # Bookmarks (optional)\n├── StaticResources\u002F                             # Custom themes, images (optional)\n",[3796],{"type":44,"tag":84,"props":3797,"children":3798},{"__ignoreMap":514},[3799],{"type":57,"value":3794},{"type":44,"tag":49,"props":3801,"children":3802},{},[3803,3805,3811],{"type":57,"value":3804},"All parts are base64-encoded in API payloads using ",{"type":44,"tag":84,"props":3806,"children":3808},{"className":3807},[],[3809],{"type":57,"value":3810},"\"payloadType\": \"InlineBase64\"",{"type":57,"value":171},{"type":44,"tag":688,"props":3813,"children":3815},{"id":3814},"definitionpbir-semantic-model-reference",[3816],{"type":57,"value":3817},"definition.pbir — Semantic Model Reference",{"type":44,"tag":49,"props":3819,"children":3820},{},[3821,3823,3829,3831,3837],{"type":57,"value":3822},"For Fabric API, use ",{"type":44,"tag":84,"props":3824,"children":3826},{"className":3825},[],[3827],{"type":57,"value":3828},"byConnection",{"type":57,"value":3830}," (not ",{"type":44,"tag":84,"props":3832,"children":3834},{"className":3833},[],[3835],{"type":57,"value":3836},"byPath",{"type":57,"value":3838},"):",{"type":44,"tag":509,"props":3840,"children":3844},{"className":3841,"code":3842,"language":3843,"meta":514,"style":514},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"$schema\": \"https:\u002F\u002Fdeveloper.microsoft.com\u002Fjson-schemas\u002Ffabric\u002Fitem\u002Freport\u002FdefinitionProperties\u002F2.0.0\u002Fschema.json\",\n  \"version\": \"4.0\",\n  \"datasetReference\": {\n    \"byConnection\": {\n      \"connectionString\": \"semanticmodelid=\u003CSemanticModelId>\"\n    }\n  }\n}\n","json",[3845],{"type":44,"tag":84,"props":3846,"children":3847},{"__ignoreMap":514},[3848,3855,3896,3933,3958,3982,4017,4025,4033],{"type":44,"tag":520,"props":3849,"children":3850},{"class":522,"line":523},[3851],{"type":44,"tag":520,"props":3852,"children":3853},{"style":538},[3854],{"type":57,"value":3236},{"type":44,"tag":520,"props":3856,"children":3857},{"class":522,"line":736},[3858,3863,3869,3873,3878,3882,3887,3891],{"type":44,"tag":520,"props":3859,"children":3860},{"style":538},[3861],{"type":57,"value":3862},"  \"",{"type":44,"tag":520,"props":3864,"children":3866},{"style":3865},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[3867],{"type":57,"value":3868},"$schema",{"type":44,"tag":520,"props":3870,"children":3871},{"style":538},[3872],{"type":57,"value":724},{"type":44,"tag":520,"props":3874,"children":3875},{"style":538},[3876],{"type":57,"value":3877},":",{"type":44,"tag":520,"props":3879,"children":3880},{"style":538},[3881],{"type":57,"value":562},{"type":44,"tag":520,"props":3883,"children":3884},{"style":532},[3885],{"type":57,"value":3886},"https:\u002F\u002Fdeveloper.microsoft.com\u002Fjson-schemas\u002Ffabric\u002Fitem\u002Freport\u002FdefinitionProperties\u002F2.0.0\u002Fschema.json",{"type":44,"tag":520,"props":3888,"children":3889},{"style":538},[3890],{"type":57,"value":724},{"type":44,"tag":520,"props":3892,"children":3893},{"style":538},[3894],{"type":57,"value":3895},",\n",{"type":44,"tag":520,"props":3897,"children":3898},{"class":522,"line":774},[3899,3903,3908,3912,3916,3920,3925,3929],{"type":44,"tag":520,"props":3900,"children":3901},{"style":538},[3902],{"type":57,"value":3862},{"type":44,"tag":520,"props":3904,"children":3905},{"style":3865},[3906],{"type":57,"value":3907},"version",{"type":44,"tag":520,"props":3909,"children":3910},{"style":538},[3911],{"type":57,"value":724},{"type":44,"tag":520,"props":3913,"children":3914},{"style":538},[3915],{"type":57,"value":3877},{"type":44,"tag":520,"props":3917,"children":3918},{"style":538},[3919],{"type":57,"value":562},{"type":44,"tag":520,"props":3921,"children":3922},{"style":532},[3923],{"type":57,"value":3924},"4.0",{"type":44,"tag":520,"props":3926,"children":3927},{"style":538},[3928],{"type":57,"value":724},{"type":44,"tag":520,"props":3930,"children":3931},{"style":538},[3932],{"type":57,"value":3895},{"type":44,"tag":520,"props":3934,"children":3935},{"class":522,"line":799},[3936,3940,3945,3949,3953],{"type":44,"tag":520,"props":3937,"children":3938},{"style":538},[3939],{"type":57,"value":3862},{"type":44,"tag":520,"props":3941,"children":3942},{"style":3865},[3943],{"type":57,"value":3944},"datasetReference",{"type":44,"tag":520,"props":3946,"children":3947},{"style":538},[3948],{"type":57,"value":724},{"type":44,"tag":520,"props":3950,"children":3951},{"style":538},[3952],{"type":57,"value":3877},{"type":44,"tag":520,"props":3954,"children":3955},{"style":538},[3956],{"type":57,"value":3957}," {\n",{"type":44,"tag":520,"props":3959,"children":3960},{"class":522,"line":835},[3961,3966,3970,3974,3978],{"type":44,"tag":520,"props":3962,"children":3963},{"style":538},[3964],{"type":57,"value":3965},"    \"",{"type":44,"tag":520,"props":3967,"children":3968},{"style":527},[3969],{"type":57,"value":3828},{"type":44,"tag":520,"props":3971,"children":3972},{"style":538},[3973],{"type":57,"value":724},{"type":44,"tag":520,"props":3975,"children":3976},{"style":538},[3977],{"type":57,"value":3877},{"type":44,"tag":520,"props":3979,"children":3980},{"style":538},[3981],{"type":57,"value":3957},{"type":44,"tag":520,"props":3983,"children":3984},{"class":522,"line":871},[3985,3990,3996,4000,4004,4008,4013],{"type":44,"tag":520,"props":3986,"children":3987},{"style":538},[3988],{"type":57,"value":3989},"      \"",{"type":44,"tag":520,"props":3991,"children":3993},{"style":3992},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[3994],{"type":57,"value":3995},"connectionString",{"type":44,"tag":520,"props":3997,"children":3998},{"style":538},[3999],{"type":57,"value":724},{"type":44,"tag":520,"props":4001,"children":4002},{"style":538},[4003],{"type":57,"value":3877},{"type":44,"tag":520,"props":4005,"children":4006},{"style":538},[4007],{"type":57,"value":562},{"type":44,"tag":520,"props":4009,"children":4010},{"style":532},[4011],{"type":57,"value":4012},"semanticmodelid=\u003CSemanticModelId>",{"type":44,"tag":520,"props":4014,"children":4015},{"style":538},[4016],{"type":57,"value":572},{"type":44,"tag":520,"props":4018,"children":4019},{"class":522,"line":1423},[4020],{"type":44,"tag":520,"props":4021,"children":4022},{"style":538},[4023],{"type":57,"value":4024},"    }\n",{"type":44,"tag":520,"props":4026,"children":4027},{"class":522,"line":2034},[4028],{"type":44,"tag":520,"props":4029,"children":4030},{"style":538},[4031],{"type":57,"value":4032},"  }\n",{"type":44,"tag":520,"props":4034,"children":4035},{"class":522,"line":2096},[4036],{"type":44,"tag":520,"props":4037,"children":4038},{"style":538},[4039],{"type":57,"value":3260},{"type":44,"tag":192,"props":4041,"children":4043},{"id":4042},"mustpreferavoid",[4044],{"type":57,"value":4045},"Must\u002FPrefer\u002FAvoid",{"type":44,"tag":688,"props":4047,"children":4049},{"id":4048},"must",[4050],{"type":57,"value":4051},"MUST",{"type":44,"tag":69,"props":4053,"children":4054},{},[4055,4118,4141,4163,4181,4198,4216,4244,4281,4318,4328,4388],{"type":44,"tag":73,"props":4056,"children":4057},{},[4058,4070,4072,4077,4078,4083,4084,4089,4090,4096,4098,4103,4105,4110,4111,4116],{"type":44,"tag":53,"props":4059,"children":4060},{},[4061,4063,4068],{"type":57,"value":4062},"ALL PBIR content MUST go through the ",{"type":44,"tag":84,"props":4064,"children":4066},{"className":4065},[],[4067],{"type":57,"value":169},{"type":57,"value":4069}," skill",{"type":57,"value":4071}," — this is the single most important rule. Whether creating a brand-new report or modifying an existing one, every PBIR file (",{"type":44,"tag":84,"props":4073,"children":4075},{"className":4074},[],[4076],{"type":57,"value":262},{"type":57,"value":264},{"type":44,"tag":84,"props":4079,"children":4081},{"className":4080},[],[4082],{"type":57,"value":277},{"type":57,"value":264},{"type":44,"tag":84,"props":4085,"children":4087},{"className":4086},[],[4088],{"type":57,"value":270},{"type":57,"value":264},{"type":44,"tag":84,"props":4091,"children":4093},{"className":4092},[],[4094],{"type":57,"value":4095},"pages.json",{"type":57,"value":4097},", page configs, visuals, filters, formatting, themes, expressions) must be authored using ",{"type":44,"tag":84,"props":4099,"children":4101},{"className":4100},[],[4102],{"type":57,"value":169},{"type":57,"value":4104},". Follow its guidance for correct PBIR structure, schemas, and field values. Use its CLI tools for validation. Never construct any PBIR JSON from memory or guesswork — not even \"simple\" files like ",{"type":44,"tag":84,"props":4106,"children":4108},{"className":4107},[],[4109],{"type":57,"value":262},{"type":57,"value":934},{"type":44,"tag":84,"props":4112,"children":4114},{"className":4113},[],[4115],{"type":57,"value":270},{"type":57,"value":4117},". This skill is strictly for API transport (download, encode, upload) — it does not author PBIR content.",{"type":44,"tag":73,"props":4119,"children":4120},{},[4121,4132,4134,4139],{"type":44,"tag":53,"props":4122,"children":4123},{},[4124,4126],{"type":57,"value":4125},"Always pass ",{"type":44,"tag":84,"props":4127,"children":4129},{"className":4128},[],[4130],{"type":57,"value":4131},"--resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"",{"type":57,"value":4133}," to ",{"type":44,"tag":84,"props":4135,"children":4137},{"className":4136},[],[4138],{"type":57,"value":148},{"type":57,"value":4140}," — omitting it causes silent auth failures.",{"type":44,"tag":73,"props":4142,"children":4143},{},[4144,4154,4156,4161],{"type":44,"tag":53,"props":4145,"children":4146},{},[4147,4148],{"type":57,"value":4125},{"type":44,"tag":84,"props":4149,"children":4151},{"className":4150},[],[4152],{"type":57,"value":4153},"?format=PBIR",{"type":57,"value":4155}," on ",{"type":44,"tag":84,"props":4157,"children":4159},{"className":4158},[],[4160],{"type":57,"value":1483},{"type":57,"value":4162}," — without it, older reports return PBIR-Legacy format which is not supported by this skill.",{"type":44,"tag":73,"props":4164,"children":4165},{},[4166,4171,4173,4179],{"type":44,"tag":53,"props":4167,"children":4168},{},[4169],{"type":57,"value":4170},"Only work with PBIR format",{"type":57,"value":4172}," — if a definition comes back with ",{"type":44,"tag":84,"props":4174,"children":4176},{"className":4175},[],[4177],{"type":57,"value":4178},"\"format\": \"PBIR-Legacy\"",{"type":57,"value":4180},", stop and tell the user that PBIR-Legacy is not supported.",{"type":44,"tag":73,"props":4182,"children":4183},{},[4184,4189,4191,4196],{"type":44,"tag":53,"props":4185,"children":4186},{},[4187],{"type":57,"value":4188},"Include ALL definition parts",{"type":57,"value":4190}," in ",{"type":44,"tag":84,"props":4192,"children":4194},{"className":4193},[],[4195],{"type":57,"value":3123},{"type":57,"value":4197}," — modified + unmodified. The API replaces the entire definition; omitting parts deletes them.",{"type":44,"tag":73,"props":4199,"children":4200},{},[4201,4206,4208,4214],{"type":44,"tag":53,"props":4202,"children":4203},{},[4204],{"type":57,"value":4205},"Base64-encode all part payloads",{"type":57,"value":4207}," — every ",{"type":44,"tag":84,"props":4209,"children":4211},{"className":4210},[],[4212],{"type":57,"value":4213},"payload",{"type":57,"value":4215}," value must be base64-encoded.",{"type":44,"tag":73,"props":4217,"children":4218},{},[4219,4229,4230,4235,4237,4242],{"type":44,"tag":53,"props":4220,"children":4221},{},[4222,4224],{"type":57,"value":4223},"Use ",{"type":44,"tag":84,"props":4225,"children":4227},{"className":4226},[],[4228],{"type":57,"value":3828},{"type":57,"value":4190},{"type":44,"tag":84,"props":4231,"children":4233},{"className":4232},[],[4234],{"type":57,"value":262},{"type":57,"value":4236}," for Fabric API — ",{"type":44,"tag":84,"props":4238,"children":4240},{"className":4239},[],[4241],{"type":57,"value":3836},{"type":57,"value":4243}," is for local\u002FGit scenarios only.",{"type":44,"tag":73,"props":4245,"children":4246},{},[4247,4252,4254,4260,4261,4266,4267,4272,4274,4279],{"type":44,"tag":53,"props":4248,"children":4249},{},[4250],{"type":57,"value":4251},"Poll LRO to completion",{"type":57,"value":4253}," — ",{"type":44,"tag":84,"props":4255,"children":4257},{"className":4256},[],[4258],{"type":57,"value":4259},"Create",{"type":57,"value":264},{"type":44,"tag":84,"props":4262,"children":4264},{"className":4263},[],[4265],{"type":57,"value":1483},{"type":57,"value":3647},{"type":44,"tag":84,"props":4268,"children":4270},{"className":4269},[],[4271],{"type":57,"value":3123},{"type":57,"value":4273}," return ",{"type":44,"tag":84,"props":4275,"children":4277},{"className":4276},[],[4278],{"type":57,"value":1491},{"type":57,"value":4280},". Poll until terminal state.",{"type":44,"tag":73,"props":4282,"children":4283},{},[4284,4296,4297,4302,4304,4309,4311,4316],{"type":44,"tag":53,"props":4285,"children":4286},{},[4287,4289,4294],{"type":57,"value":4288},"Always use ",{"type":44,"tag":84,"props":4290,"children":4292},{"className":4291},[],[4293],{"type":57,"value":3715},{"type":57,"value":4295}," on LRO operations",{"type":57,"value":4253},{"type":44,"tag":84,"props":4298,"children":4300},{"className":4299},[],[4301],{"type":57,"value":148},{"type":57,"value":4303}," does not expose response headers by default. Without ",{"type":44,"tag":84,"props":4305,"children":4307},{"className":4306},[],[4308],{"type":57,"value":3715},{"type":57,"value":4310},", you cannot capture the ",{"type":44,"tag":84,"props":4312,"children":4314},{"className":4313},[],[4315],{"type":57,"value":3667},{"type":57,"value":4317}," header needed for polling, and there is no other way to retrieve it after the fact.",{"type":44,"tag":73,"props":4319,"children":4320},{},[4321,4326],{"type":44,"tag":53,"props":4322,"children":4323},{},[4324],{"type":57,"value":4325},"Clean up temporary files",{"type":57,"value":4327}," — delete any local temp directories and files (decoded definitions, JSON payloads) created during the workflow once the operation completes. These can be large and accumulate on the user's machine.",{"type":44,"tag":73,"props":4329,"children":4330},{},[4331,4336,4338,4344,4345,4351,4352,4358,4360,4366,4367,4372,4374,4379,4381,4386],{"type":44,"tag":53,"props":4332,"children":4333},{},[4334],{"type":57,"value":4335},"Verify semantic-model bindings after the target model is resolved",{"type":57,"value":4337}," — once the report's target semantic model is known (whether by a fresh deploy through an available semantic-model authoring skill or by selecting an existing workspace model), download its TMDL and compare all PBIR bindings (",{"type":44,"tag":84,"props":4339,"children":4341},{"className":4340},[],[4342],{"type":57,"value":4343},"Entity",{"type":57,"value":264},{"type":44,"tag":84,"props":4346,"children":4348},{"className":4347},[],[4349],{"type":57,"value":4350},"queryRef",{"type":57,"value":264},{"type":44,"tag":84,"props":4353,"children":4355},{"className":4354},[],[4356],{"type":57,"value":4357},"nativeQueryRef",{"type":57,"value":4359},", filter ",{"type":44,"tag":84,"props":4361,"children":4363},{"className":4362},[],[4364],{"type":57,"value":4365},"Source",{"type":57,"value":1957},{"type":44,"tag":84,"props":4368,"children":4370},{"className":4369},[],[4371],{"type":57,"value":4343},{"type":57,"value":4373}," references) against the model's table\u002Fcolumn\u002Fmeasure names. This applies to ",{"type":44,"tag":53,"props":4375,"children":4376},{},[4377],{"type":57,"value":4378},"both",{"type":57,"value":4380}," branches: even a hand-off deploy may rename or transform the model during publish, so the diff is not optional. If names differ but models are structurally equivalent (same columns\u002Fmeasures), remap all table-qualified bindings via ",{"type":44,"tag":84,"props":4382,"children":4384},{"className":4383},[],[4385],{"type":57,"value":169},{"type":57,"value":4387},". If the models are not structurally equivalent, prompt the user before attempting to re-author — explain which tables\u002Fcolumns\u002Fmeasures don't match and ask whether to proceed.",{"type":44,"tag":73,"props":4389,"children":4390},{},[4391,4396,4398,4403,4405,4415,4417,4421],{"type":44,"tag":53,"props":4392,"children":4393},{},[4394],{"type":57,"value":4395},"Local edits stay local by default",{"type":57,"value":4397}," — when a user requests changes to a local ",{"type":44,"tag":84,"props":4399,"children":4401},{"className":4400},[],[4402],{"type":57,"value":332},{"type":57,"value":4404}," report, apply the changes to the local files only. Do not publish to Fabric unless the user explicitly asks to publish, upload, or push the report. Even if the report was previously published to Fabric, treat subsequent edits as local-only until told otherwise. ",{"type":44,"tag":53,"props":4406,"children":4407},{},[4408,4410],{"type":57,"value":4409},"When the user does request publishing a local ",{"type":44,"tag":84,"props":4411,"children":4413},{"className":4412},[],[4414],{"type":57,"value":332},{"type":57,"value":4416},", follow the ",{"type":44,"tag":346,"props":4418,"children":4419},{"href":348},[4420],{"type":57,"value":351},{"type":57,"value":4422}," workflow: (a) confirm the target workspace once up front, (b) prompt publish-the-local-model vs. connect-to-an-existing-workspace-model, (c) on the publish-model branch, check whether a semantic-model authoring skill is available in the current session and degrade gracefully if not, (d) confirm create-new vs. update-existing for the report itself.",{"type":44,"tag":688,"props":4424,"children":4426},{"id":4425},"prefer",[4427],{"type":57,"value":4428},"PREFER",{"type":44,"tag":69,"props":4430,"children":4431},{},[4432,4442],{"type":44,"tag":73,"props":4433,"children":4434},{},[4435,4440],{"type":44,"tag":53,"props":4436,"children":4437},{},[4438],{"type":57,"value":4439},"Soft delete",{"type":57,"value":4441}," over hard delete — allows recovery.",{"type":44,"tag":73,"props":4443,"children":4444},{},[4445,4461],{"type":44,"tag":53,"props":4446,"children":4447},{},[4448,4453,4455],{"type":44,"tag":84,"props":4449,"children":4451},{"className":4450},[],[4452],{"type":57,"value":148},{"type":57,"value":4454}," with JMESPath ",{"type":44,"tag":84,"props":4456,"children":4458},{"className":4457},[],[4459],{"type":57,"value":4460},"--query",{"type":57,"value":4462}," for filtering — built-in JSON parsing, no extra tools needed.",{"type":44,"tag":688,"props":4464,"children":4466},{"id":4465},"avoid",[4467],{"type":57,"value":4468},"AVOID",{"type":44,"tag":69,"props":4470,"children":4471},{},[4472,4508,4518,4534,4555,4565,4575,4596],{"type":44,"tag":73,"props":4473,"children":4474},{},[4475,4480,4482,4487,4488,4493,4494,4499,4501,4506],{"type":44,"tag":53,"props":4476,"children":4477},{},[4478],{"type":57,"value":4479},"Hand-writing or directly constructing PBIR JSON",{"type":57,"value":4481}," — whether creating new files or modifying existing ones, all PBIR content (",{"type":44,"tag":84,"props":4483,"children":4485},{"className":4484},[],[4486],{"type":57,"value":262},{"type":57,"value":264},{"type":44,"tag":84,"props":4489,"children":4491},{"className":4490},[],[4492],{"type":57,"value":277},{"type":57,"value":264},{"type":44,"tag":84,"props":4495,"children":4497},{"className":4496},[],[4498],{"type":57,"value":270},{"type":57,"value":4500},", pages, visuals, filters, formatting, themes, expressions) must go through the ",{"type":44,"tag":84,"props":4502,"children":4504},{"className":4503},[],[4505],{"type":57,"value":169},{"type":57,"value":4507}," skill. Never construct any PBIR JSON from memory or guesswork — not even \"simple\" structural files. No exceptions.",{"type":44,"tag":73,"props":4509,"children":4510},{},[4511,4516],{"type":44,"tag":53,"props":4512,"children":4513},{},[4514],{"type":57,"value":4515},"PBIR-Legacy format",{"type":57,"value":4517}," — do not create, read, or update PBIR-Legacy definitions. Only modern PBIR format is supported.",{"type":44,"tag":73,"props":4519,"children":4520},{},[4521,4526,4527,4532],{"type":44,"tag":53,"props":4522,"children":4523},{},[4524],{"type":57,"value":4525},"Sending only modified parts",{"type":57,"value":4190},{"type":44,"tag":84,"props":4528,"children":4530},{"className":4529},[],[4531],{"type":57,"value":3123},{"type":57,"value":4533}," — the API replaces the full definition; missing parts are deleted.",{"type":44,"tag":73,"props":4535,"children":4536},{},[4537,4547,4548,4553],{"type":44,"tag":53,"props":4538,"children":4539},{},[4540,4542],{"type":57,"value":4541},"Using ",{"type":44,"tag":84,"props":4543,"children":4545},{"className":4544},[],[4546],{"type":57,"value":3836},{"type":57,"value":4190},{"type":44,"tag":84,"props":4549,"children":4551},{"className":4550},[],[4552],{"type":57,"value":262},{"type":57,"value":4554}," for API payloads — only works for local\u002FGit scenarios.",{"type":44,"tag":73,"props":4556,"children":4557},{},[4558,4563],{"type":44,"tag":53,"props":4559,"children":4560},{},[4561],{"type":57,"value":4562},"Hardcoded workspace\u002Freport IDs",{"type":57,"value":4564}," — resolve dynamically via the List APIs.",{"type":44,"tag":73,"props":4566,"children":4567},{},[4568,4573],{"type":44,"tag":53,"props":4569,"children":4570},{},[4571],{"type":57,"value":4572},"Skipping LRO polling",{"type":57,"value":4574}," — definition operations may be async; always check for 202 responses.",{"type":44,"tag":73,"props":4576,"children":4577},{},[4578,4588,4589,4594],{"type":44,"tag":53,"props":4579,"children":4580},{},[4581,4583],{"type":57,"value":4582},"Omitting ",{"type":44,"tag":84,"props":4584,"children":4586},{"className":4585},[],[4587],{"type":57,"value":4153},{"type":57,"value":4155},{"type":44,"tag":84,"props":4590,"children":4592},{"className":4591},[],[4593],{"type":57,"value":1483},{"type":57,"value":4595}," — may return unusable PBIR-Legacy format.",{"type":44,"tag":73,"props":4597,"children":4598},{},[4599,4604,4606,4612],{"type":44,"tag":53,"props":4600,"children":4601},{},[4602],{"type":57,"value":4603},"Retrying a create POST after receiving 202",{"type":57,"value":4605}," — risks creating duplicates. See the ",{"type":44,"tag":346,"props":4607,"children":4609},{"href":4608},"#long-running-operations-lro",[4610],{"type":57,"value":4611},"LRO section",{"type":57,"value":4613}," for the correct recovery pattern.",{"type":44,"tag":192,"props":4615,"children":4617},{"id":4616},"agentic-workflow",[4618],{"type":57,"value":4619},"Agentic Workflow",{"type":44,"tag":688,"props":4621,"children":4623},{"id":4622},"publishing-a-local-pbip",[4624,4626],{"type":57,"value":4625},"Publishing a local ",{"type":44,"tag":84,"props":4627,"children":4629},{"className":4628},[],[4630],{"type":57,"value":332},{"type":44,"tag":49,"props":4632,"children":4633},{},[4634,4636,4641,4643,4649],{"type":57,"value":4635},"This is the primary entry point when a user has a local ",{"type":44,"tag":84,"props":4637,"children":4639},{"className":4638},[],[4640],{"type":57,"value":332},{"type":57,"value":4642}," (report\nplus sibling ",{"type":44,"tag":84,"props":4644,"children":4646},{"className":4645},[],[4647],{"type":57,"value":4648},".SemanticModel",{"type":57,"value":4650},") on disk and asks to publish, upload, push,\nor deploy the report to a Fabric workspace.",{"type":44,"tag":49,"props":4652,"children":4653},{},[4654,4665],{"type":44,"tag":53,"props":4655,"children":4656},{},[4657,4659,4664],{"type":57,"value":4658},"1. Detect that the source is a local ",{"type":44,"tag":84,"props":4660,"children":4662},{"className":4661},[],[4663],{"type":57,"value":332},{"type":57,"value":171},{"type":57,"value":4666}," Any of these signals:",{"type":44,"tag":69,"props":4668,"children":4669},{},[4670,4683,4703,4729],{"type":44,"tag":73,"props":4671,"children":4672},{},[4673,4675,4681],{"type":57,"value":4674},"A ",{"type":44,"tag":84,"props":4676,"children":4678},{"className":4677},[],[4679],{"type":57,"value":4680},"\u003CName>.pbip",{"type":57,"value":4682}," file in or above the working directory.",{"type":44,"tag":73,"props":4684,"children":4685},{},[4686,4687,4693,4695,4701],{"type":57,"value":4674},{"type":44,"tag":84,"props":4688,"children":4690},{"className":4689},[],[4691],{"type":57,"value":4692},"\u003CName>.Report",{"type":57,"value":4694}," folder with a sibling ",{"type":44,"tag":84,"props":4696,"children":4698},{"className":4697},[],[4699],{"type":57,"value":4700},"\u003CName>.SemanticModel",{"type":57,"value":4702}," folder.",{"type":44,"tag":73,"props":4704,"children":4705},{},[4706,4708,4713,4715,4720,4722,4727],{"type":57,"value":4707},"The report's ",{"type":44,"tag":84,"props":4709,"children":4711},{"className":4710},[],[4712],{"type":57,"value":262},{"type":57,"value":4714}," uses ",{"type":44,"tag":84,"props":4716,"children":4718},{"className":4717},[],[4719],{"type":57,"value":3836},{"type":57,"value":4721}," (local\u002FGit form) rather\nthan ",{"type":44,"tag":84,"props":4723,"children":4725},{"className":4724},[],[4726],{"type":57,"value":3828},{"type":57,"value":4728}," (API form).",{"type":44,"tag":73,"props":4730,"children":4731},{},[4732,4734,4740],{"type":57,"value":4733},"Presence of a ",{"type":44,"tag":84,"props":4735,"children":4737},{"className":4736},[],[4738],{"type":57,"value":4739},".pbi\u002F",{"type":57,"value":4741}," cache folder.",{"type":44,"tag":49,"props":4743,"children":4744},{},[4745,4747,4753,4755,4760,4762,4768,4770,4775,4777,4782,4784,4790],{"type":57,"value":4746},"If the source is ",{"type":44,"tag":4748,"props":4749,"children":4750},"em",{},[4751],{"type":57,"value":4752},"not",{"type":57,"value":4754}," a local ",{"type":44,"tag":84,"props":4756,"children":4758},{"className":4757},[],[4759],{"type":57,"value":332},{"type":57,"value":4761}," (e.g., the report was already\ndownloaded from Fabric and only the ",{"type":44,"tag":84,"props":4763,"children":4765},{"className":4764},[],[4766],{"type":57,"value":4767},".Report",{"type":57,"value":4769}," folder is present with a\n",{"type":44,"tag":84,"props":4771,"children":4773},{"className":4772},[],[4774],{"type":57,"value":3828},{"type":57,"value":4776}," ",{"type":44,"tag":84,"props":4778,"children":4780},{"className":4779},[],[4781],{"type":57,"value":262},{"type":57,"value":4783},"), use the\n",{"type":44,"tag":346,"props":4785,"children":4787},{"href":4786},"#modifying-an-existing-report-in-fabric",[4788],{"type":57,"value":4789},"Modifying an existing report in Fabric",{"type":57,"value":4791},"\nworkflow instead.",{"type":44,"tag":49,"props":4793,"children":4794},{},[4795,4800,4802,4807],{"type":44,"tag":53,"props":4796,"children":4797},{},[4798],{"type":57,"value":4799},"2. Confirm the target workspace once.",{"type":57,"value":4801}," Resolve and store the workspace\nID by name (per ",{"type":44,"tag":346,"props":4803,"children":4804},{"href":676},[4805],{"type":57,"value":4806},"COMMON-CLI.md",{"type":57,"value":4808},").\nThis single workspace is reused for both the model deploy (if applicable)\nand the report publish — never split them.",{"type":44,"tag":49,"props":4810,"children":4811},{},[4812,4817],{"type":44,"tag":53,"props":4813,"children":4814},{},[4815],{"type":57,"value":4816},"3. Prompt the user about the semantic model.",{"type":57,"value":4818}," Ask explicitly — do not\nsilently choose:",{"type":44,"tag":45,"props":4820,"children":4821},{},[4822],{"type":44,"tag":49,"props":4823,"children":4824},{},[4825],{"type":57,"value":4826},"\"Do you want me to publish the local semantic model to this workspace\ntoo, or connect this report to an existing semantic model already in\nthe workspace?\"",{"type":44,"tag":49,"props":4828,"children":4829},{},[4830],{"type":44,"tag":53,"props":4831,"children":4832},{},[4833],{"type":57,"value":4834},"4a. Branch: \"Publish the local model\".",{"type":44,"tag":69,"props":4836,"children":4837},{},[4838],{"type":44,"tag":73,"props":4839,"children":4840},{},[4841,4843],{"type":57,"value":4842},"Check whether a semantic-model authoring skill is\navailable in the current session.\n",{"type":44,"tag":69,"props":4844,"children":4845},{},[4846,4863],{"type":44,"tag":73,"props":4847,"children":4848},{},[4849,4854,4856,4861],{"type":44,"tag":53,"props":4850,"children":4851},{},[4852],{"type":57,"value":4853},"Available",{"type":57,"value":4855}," → hand off to that workflow to\ncreate or update the semantic model. Pass: target workspace ID,\nthe local ",{"type":44,"tag":84,"props":4857,"children":4859},{"className":4858},[],[4860],{"type":57,"value":4648},{"type":57,"value":4862}," folder path (TMDL source), and the\ndesired model display name. Wait for that skill's workflow to\nreach terminal success before proceeding.",{"type":44,"tag":73,"props":4864,"children":4865},{},[4866,4871],{"type":44,"tag":53,"props":4867,"children":4868},{},[4869],{"type":57,"value":4870},"Not available",{"type":57,"value":4872}," → tell the user a semantic-model authoring skill is not\nloaded in this session and that publishing the local model is not\npossible without it. Then degrade to branch 4b\n(connect-to-existing) and re-prompt for which workspace model to\nbind the report to.",{"type":44,"tag":49,"props":4874,"children":4875},{},[4876],{"type":44,"tag":53,"props":4877,"children":4878},{},[4879],{"type":57,"value":4880},"4b. Branch: \"Connect to an existing model in the workspace\".",{"type":44,"tag":69,"props":4882,"children":4883},{},[4884],{"type":44,"tag":73,"props":4885,"children":4886},{},[4887,4889,4894],{"type":57,"value":4888},"List semantic models in the target workspace and confirm the target\nmodel with the user. Resolve ",{"type":44,"tag":84,"props":4890,"children":4892},{"className":4891},[],[4893],{"type":57,"value":342},{"type":57,"value":4895}," by name.",{"type":44,"tag":49,"props":4897,"children":4898},{},[4899,4910],{"type":44,"tag":53,"props":4900,"children":4901},{},[4902,4904,4909],{"type":57,"value":4903},"5. Resolve ",{"type":44,"tag":84,"props":4905,"children":4907},{"className":4906},[],[4908],{"type":57,"value":342},{"type":57,"value":171},{"type":57,"value":4911}," Regardless of branch, the report needs\na concrete model ID to bind to:",{"type":44,"tag":69,"props":4913,"children":4914},{},[4915,4920],{"type":44,"tag":73,"props":4916,"children":4917},{},[4918],{"type":57,"value":4919},"After 4a: list semantic models in the target workspace and find the\nmodel just deployed by name (the model skill verifies by listing\nworkspace items but does not return an ID).",{"type":44,"tag":73,"props":4921,"children":4922},{},[4923],{"type":57,"value":4924},"After 4b: this was already done.",{"type":44,"tag":49,"props":4926,"children":4927},{},[4928,4933,4935,4941,4943,4948],{"type":44,"tag":53,"props":4929,"children":4930},{},[4931],{"type":57,"value":4932},"6. Verify bindings against the resolved model (universal, both\nbranches).",{"type":57,"value":4934}," Download the model TMDL and run the bindings diff per\nMUST ",{"type":44,"tag":346,"props":4936,"children":4938},{"href":4937},"#must",[4939],{"type":57,"value":4940},"Verify semantic-model bindings after the target model is\nresolved",{"type":57,"value":4942},". Even on the publish-the-local-model branch, the\nmodel skill may rename tables or apply transforms during deploy, so\nthis diff is not optional. Remap any drift via ",{"type":44,"tag":84,"props":4944,"children":4946},{"className":4945},[],[4947],{"type":57,"value":169},{"type":57,"value":4949}," skill\nor, if structurally divergent, prompt the user before re-authoring.",{"type":44,"tag":49,"props":4951,"children":4952},{},[4953,4978,4980,4985],{"type":44,"tag":53,"props":4954,"children":4955},{},[4956,4958,4963,4965,4970,4972,4977],{"type":57,"value":4957},"7. Rebind ",{"type":44,"tag":84,"props":4959,"children":4961},{"className":4960},[],[4962],{"type":57,"value":262},{"type":57,"value":4964}," from ",{"type":44,"tag":84,"props":4966,"children":4968},{"className":4967},[],[4969],{"type":57,"value":3836},{"type":57,"value":4971}," → ",{"type":44,"tag":84,"props":4973,"children":4975},{"className":4974},[],[4976],{"type":57,"value":3828},{"type":57,"value":171},{"type":57,"value":4979}," Use\n",{"type":44,"tag":84,"props":4981,"children":4983},{"className":4982},[],[4984],{"type":57,"value":169},{"type":57,"value":4986}," to set:",{"type":44,"tag":509,"props":4988,"children":4990},{"className":3841,"code":4989,"language":3843,"meta":514,"style":514},"\"datasetReference\": {\n  \"byConnection\": {\n    \"connectionString\": \"semanticmodelid=\u003Cresolved-id>\"\n  }\n}\n",[4991],{"type":44,"tag":84,"props":4992,"children":4993},{"__ignoreMap":514},[4994,5017,5040,5072,5079],{"type":44,"tag":520,"props":4995,"children":4996},{"class":522,"line":523},[4997,5001,5005,5009,5013],{"type":44,"tag":520,"props":4998,"children":4999},{"style":538},[5000],{"type":57,"value":724},{"type":44,"tag":520,"props":5002,"children":5003},{"style":532},[5004],{"type":57,"value":3944},{"type":44,"tag":520,"props":5006,"children":5007},{"style":538},[5008],{"type":57,"value":724},{"type":44,"tag":520,"props":5010,"children":5011},{"style":711},[5012],{"type":57,"value":410},{"type":44,"tag":520,"props":5014,"children":5015},{"style":538},[5016],{"type":57,"value":3236},{"type":44,"tag":520,"props":5018,"children":5019},{"class":522,"line":736},[5020,5024,5028,5032,5036],{"type":44,"tag":520,"props":5021,"children":5022},{"style":538},[5023],{"type":57,"value":3862},{"type":44,"tag":520,"props":5025,"children":5026},{"style":3865},[5027],{"type":57,"value":3828},{"type":44,"tag":520,"props":5029,"children":5030},{"style":538},[5031],{"type":57,"value":724},{"type":44,"tag":520,"props":5033,"children":5034},{"style":538},[5035],{"type":57,"value":3877},{"type":44,"tag":520,"props":5037,"children":5038},{"style":538},[5039],{"type":57,"value":3957},{"type":44,"tag":520,"props":5041,"children":5042},{"class":522,"line":774},[5043,5047,5051,5055,5059,5063,5068],{"type":44,"tag":520,"props":5044,"children":5045},{"style":538},[5046],{"type":57,"value":3965},{"type":44,"tag":520,"props":5048,"children":5049},{"style":527},[5050],{"type":57,"value":3995},{"type":44,"tag":520,"props":5052,"children":5053},{"style":538},[5054],{"type":57,"value":724},{"type":44,"tag":520,"props":5056,"children":5057},{"style":538},[5058],{"type":57,"value":3877},{"type":44,"tag":520,"props":5060,"children":5061},{"style":538},[5062],{"type":57,"value":562},{"type":44,"tag":520,"props":5064,"children":5065},{"style":532},[5066],{"type":57,"value":5067},"semanticmodelid=\u003Cresolved-id>",{"type":44,"tag":520,"props":5069,"children":5070},{"style":538},[5071],{"type":57,"value":572},{"type":44,"tag":520,"props":5073,"children":5074},{"class":522,"line":799},[5075],{"type":44,"tag":520,"props":5076,"children":5077},{"style":538},[5078],{"type":57,"value":4032},{"type":44,"tag":520,"props":5080,"children":5081},{"class":522,"line":835},[5082],{"type":44,"tag":520,"props":5083,"children":5084},{"style":538},[5085],{"type":57,"value":3260},{"type":44,"tag":49,"props":5087,"children":5088},{},[5089,5091,5096],{"type":57,"value":5090},"The Fabric API rejects ",{"type":44,"tag":84,"props":5092,"children":5094},{"className":5093},[],[5095],{"type":57,"value":3836},{"type":57,"value":5097},"; this swap is mandatory on every\nlocal-source publish.",{"type":44,"tag":49,"props":5099,"children":5100},{},[5101,5106,5108,5114,5116,5121,5123,5129,5130,5136],{"type":44,"tag":53,"props":5102,"children":5103},{},[5104],{"type":57,"value":5105},"8. Decide create-new vs. update-existing for the report.",{"type":57,"value":5107}," Default the\nreport ",{"type":44,"tag":84,"props":5109,"children":5111},{"className":5110},[],[5112],{"type":57,"value":5113},"displayName",{"type":57,"value":5115}," to the ",{"type":44,"tag":84,"props":5117,"children":5119},{"className":5118},[],[5120],{"type":57,"value":332},{"type":57,"value":5122}," filename without extension (e.g.\n",{"type":44,"tag":84,"props":5124,"children":5126},{"className":5125},[],[5127],{"type":57,"value":5128},"SalesDashboard.pbip",{"type":57,"value":4971},{"type":44,"tag":84,"props":5131,"children":5133},{"className":5132},[],[5134],{"type":57,"value":5135},"\"SalesDashboard\"",{"type":57,"value":5137},"). Surface the default to the\nuser so they can override.",{"type":44,"tag":69,"props":5139,"children":5140},{},[5141],{"type":44,"tag":73,"props":5142,"children":5143},{},[5144,5146,5151,5153],{"type":57,"value":5145},"List reports in the target workspace and look up the chosen\n",{"type":44,"tag":84,"props":5147,"children":5149},{"className":5148},[],[5150],{"type":57,"value":5113},{"type":57,"value":5152},".\n",{"type":44,"tag":69,"props":5154,"children":5155},{},[5156,5172],{"type":44,"tag":73,"props":5157,"children":5158},{},[5159,5164,5166,5171],{"type":44,"tag":53,"props":5160,"children":5161},{},[5162],{"type":57,"value":5163},"Not found",{"type":57,"value":5165}," → create. Follow\n",{"type":44,"tag":346,"props":5167,"children":5169},{"href":5168},"#create-report-with-definition",[5170],{"type":57,"value":1740},{"type":57,"value":171},{"type":44,"tag":73,"props":5173,"children":5174},{},[5175,5180,5182,5187,5189,5194],{"type":44,"tag":53,"props":5176,"children":5177},{},[5178],{"type":57,"value":5179},"Found",{"type":57,"value":5181}," → confirm with the user: overwrite the existing report\n(",{"type":44,"tag":84,"props":5183,"children":5185},{"className":5184},[],[5186],{"type":57,"value":3123},{"type":57,"value":5188},"), publish under a different name, or cancel.\nFollow ",{"type":44,"tag":346,"props":5190,"children":5192},{"href":5191},"#update-report-definition",[5193],{"type":57,"value":2533},{"type":57,"value":5195}," on\noverwrite.",{"type":44,"tag":49,"props":5197,"children":5198},{},[5199,5204,5206,5212,5214,5219,5221,5226],{"type":44,"tag":53,"props":5200,"children":5201},{},[5202],{"type":57,"value":5203},"9. Encode and upload.",{"type":57,"value":5205}," Run the existing transport — base64-encode all\nPBIR parts (forward-slash paths!), build the ",{"type":44,"tag":84,"props":5207,"children":5209},{"className":5208},[],[5210],{"type":57,"value":5211},"parts",{"type":57,"value":5213}," payload, POST,\ncapture ",{"type":44,"tag":84,"props":5215,"children":5217},{"className":5216},[],[5218],{"type":57,"value":3667},{"type":57,"value":5220}," (with ",{"type":44,"tag":84,"props":5222,"children":5224},{"className":5223},[],[5225],{"type":57,"value":3715},{"type":57,"value":5227}," written to a file), poll\nthe LRO to terminal success.",{"type":44,"tag":49,"props":5229,"children":5230},{},[5231,5236],{"type":44,"tag":53,"props":5232,"children":5233},{},[5234],{"type":57,"value":5235},"10. Clean up",{"type":57,"value":5237}," any temporary files created during the flow.",{"type":44,"tag":45,"props":5239,"children":5240},{},[5241],{"type":44,"tag":49,"props":5242,"children":5243},{},[5244,5249],{"type":44,"tag":53,"props":5245,"children":5246},{},[5247],{"type":57,"value":5248},"Note on report-side verification",{"type":57,"value":5250},": there is no reliable\nprogrammatic way to confirm a report renders correctly post-publish —\nthe report lives at a Fabric Service URL and visual rendering\nrequires a browser session. Surface the workspace\u002Freport URL so the\nuser can verify in the browser.",{"type":44,"tag":688,"props":5252,"children":5254},{"id":5253},"modifying-an-existing-report-in-fabric",[5255],{"type":57,"value":4789},{"type":44,"tag":118,"props":5257,"children":5258},{},[5259,5273,5283,5293,5310,5357,5374],{"type":44,"tag":73,"props":5260,"children":5261},{},[5262,5267,5269],{"type":44,"tag":53,"props":5263,"children":5264},{},[5265],{"type":57,"value":5266},"Authenticate",{"type":57,"value":5268}," → see ",{"type":44,"tag":346,"props":5270,"children":5271},{"href":650},[5272],{"type":57,"value":653},{"type":44,"tag":73,"props":5274,"children":5275},{},[5276,5281],{"type":44,"tag":53,"props":5277,"children":5278},{},[5279],{"type":57,"value":5280},"Find workspace",{"type":57,"value":5282}," → Resolve workspace ID by name",{"type":44,"tag":73,"props":5284,"children":5285},{},[5286,5291],{"type":44,"tag":53,"props":5287,"children":5288},{},[5289],{"type":57,"value":5290},"List\u002Ffind report",{"type":57,"value":5292}," → Resolve report ID by name",{"type":44,"tag":73,"props":5294,"children":5295},{},[5296,5301,5302,5308],{"type":44,"tag":53,"props":5297,"children":5298},{},[5299],{"type":57,"value":5300},"Download definition",{"type":57,"value":4971},{"type":44,"tag":84,"props":5303,"children":5305},{"className":5304},[],[5306],{"type":57,"value":5307},"getDefinition?format=PBIR",{"type":57,"value":5309}," → poll LRO → decode parts to local files",{"type":44,"tag":73,"props":5311,"children":5312},{},[5313,5318,5319,5330,5332,5337,5338,5343,5344,5349,5350,5355],{"type":44,"tag":53,"props":5314,"children":5315},{},[5316],{"type":57,"value":5317},"Author PBIR content",{"type":57,"value":4971},{"type":44,"tag":53,"props":5320,"children":5321},{},[5322,5324,5329],{"type":57,"value":5323},"Use the ",{"type":44,"tag":84,"props":5325,"children":5327},{"className":5326},[],[5328],{"type":57,"value":169},{"type":57,"value":4069},{"type":57,"value":5331}," for ALL changes. This covers every file: ",{"type":44,"tag":84,"props":5333,"children":5335},{"className":5334},[],[5336],{"type":57,"value":262},{"type":57,"value":264},{"type":44,"tag":84,"props":5339,"children":5341},{"className":5340},[],[5342],{"type":57,"value":277},{"type":57,"value":264},{"type":44,"tag":84,"props":5345,"children":5347},{"className":5346},[],[5348],{"type":57,"value":270},{"type":57,"value":264},{"type":44,"tag":84,"props":5351,"children":5353},{"className":5352},[],[5354],{"type":57,"value":4095},{"type":57,"value":5356},", page configs, visuals, filters, formatting, themes, and expressions. Follow its guidance for correct structure, schemas, and field values. Use its CLI tools to validate. Never construct any PBIR JSON from memory or guesswork.",{"type":44,"tag":73,"props":5358,"children":5359},{},[5360,5365,5367,5372],{"type":44,"tag":53,"props":5361,"children":5362},{},[5363],{"type":57,"value":5364},"Upload changes",{"type":57,"value":5366}," → Re-encode all local files to base64 → ",{"type":44,"tag":84,"props":5368,"children":5370},{"className":5369},[],[5371],{"type":57,"value":3123},{"type":57,"value":5373}," with ALL parts (modified + unmodified)",{"type":44,"tag":73,"props":5375,"children":5376},{},[5377,5382],{"type":44,"tag":53,"props":5378,"children":5379},{},[5380],{"type":57,"value":5381},"Clean up",{"type":57,"value":5383}," → Delete all temporary local files and directories created during the workflow",{"type":44,"tag":688,"props":5385,"children":5387},{"id":5386},"creating-a-new-report-in-fabric",[5388],{"type":57,"value":5389},"Creating a new report in Fabric",{"type":44,"tag":118,"props":5391,"children":5392},{},[5393,5405,5413,5430,5459,5504,5529],{"type":44,"tag":73,"props":5394,"children":5395},{},[5396,5400,5401],{"type":44,"tag":53,"props":5397,"children":5398},{},[5399],{"type":57,"value":5266},{"type":57,"value":5268},{"type":44,"tag":346,"props":5402,"children":5403},{"href":650},[5404],{"type":57,"value":653},{"type":44,"tag":73,"props":5406,"children":5407},{},[5408,5412],{"type":44,"tag":53,"props":5409,"children":5410},{},[5411],{"type":57,"value":5280},{"type":57,"value":5282},{"type":44,"tag":73,"props":5414,"children":5415},{},[5416,5421,5423,5428],{"type":44,"tag":53,"props":5417,"children":5418},{},[5419],{"type":57,"value":5420},"Resolve semantic model",{"type":57,"value":5422}," → Find the semantic model ID and workspace name for the ",{"type":44,"tag":84,"props":5424,"children":5426},{"className":5425},[],[5427],{"type":57,"value":262},{"type":57,"value":5429}," connection string",{"type":44,"tag":73,"props":5431,"children":5432},{},[5433,5438,5440,5445,5446,5451,5452,5457],{"type":44,"tag":53,"props":5434,"children":5435},{},[5436],{"type":57,"value":5437},"Verify semantic-model bindings",{"type":57,"value":5439}," → Download the target semantic model definition (TMDL) and compare all PBIR ",{"type":44,"tag":84,"props":5441,"children":5443},{"className":5442},[],[5444],{"type":57,"value":4343},{"type":57,"value":264},{"type":44,"tag":84,"props":5447,"children":5449},{"className":5448},[],[5450],{"type":57,"value":4350},{"type":57,"value":264},{"type":44,"tag":84,"props":5453,"children":5455},{"className":5454},[],[5456],{"type":57,"value":4357},{"type":57,"value":5458},", and filter references against the target table\u002Fcolumn names. If names differ but structure matches, remap all table-qualified bindings. If models are structurally different, prompt the user before proceeding — explain what doesn't match and ask whether to re-author the affected bindings",{"type":44,"tag":73,"props":5460,"children":5461},{},[5462,5466,5467,5477,5479,5484,5485,5490,5491,5496,5497,5502],{"type":44,"tag":53,"props":5463,"children":5464},{},[5465],{"type":57,"value":5317},{"type":57,"value":4971},{"type":44,"tag":53,"props":5468,"children":5469},{},[5470,5471,5476],{"type":57,"value":5323},{"type":44,"tag":84,"props":5472,"children":5474},{"className":5473},[],[5475],{"type":57,"value":169},{"type":57,"value":4069},{"type":57,"value":5478}," to generate the complete PBIR definition from scratch — ",{"type":44,"tag":84,"props":5480,"children":5482},{"className":5481},[],[5483],{"type":57,"value":262},{"type":57,"value":264},{"type":44,"tag":84,"props":5486,"children":5488},{"className":5487},[],[5489],{"type":57,"value":277},{"type":57,"value":264},{"type":44,"tag":84,"props":5492,"children":5494},{"className":5493},[],[5495],{"type":57,"value":270},{"type":57,"value":264},{"type":44,"tag":84,"props":5498,"children":5500},{"className":5499},[],[5501],{"type":57,"value":4095},{"type":57,"value":5503},", page configs, and all visuals. Never construct any PBIR JSON from memory or guesswork.",{"type":44,"tag":73,"props":5505,"children":5506},{},[5507,5512,5514,5520,5522,5527],{"type":44,"tag":53,"props":5508,"children":5509},{},[5510],{"type":57,"value":5511},"Upload",{"type":57,"value":5513}," → Encode all files to base64 → ",{"type":44,"tag":84,"props":5515,"children":5517},{"className":5516},[],[5518],{"type":57,"value":5519},"POST \u002Freports",{"type":57,"value":5521}," with ",{"type":44,"tag":84,"props":5523,"children":5525},{"className":5524},[],[5526],{"type":57,"value":5113},{"type":57,"value":5528}," and all definition parts",{"type":44,"tag":73,"props":5530,"children":5531},{},[5532,5536],{"type":44,"tag":53,"props":5533,"children":5534},{},[5535],{"type":57,"value":5381},{"type":57,"value":5537}," → Delete temporary local files",{"type":44,"tag":192,"props":5539,"children":5541},{"id":5540},"troubleshooting",[5542],{"type":57,"value":5543},"Troubleshooting",{"type":44,"tag":204,"props":5545,"children":5546},{},[5547,5568],{"type":44,"tag":208,"props":5548,"children":5549},{},[5550],{"type":44,"tag":212,"props":5551,"children":5552},{},[5553,5558,5563],{"type":44,"tag":216,"props":5554,"children":5555},{},[5556],{"type":57,"value":5557},"Error",{"type":44,"tag":216,"props":5559,"children":5560},{},[5561],{"type":57,"value":5562},"Cause",{"type":44,"tag":216,"props":5564,"children":5565},{},[5566],{"type":57,"value":5567},"Fix",{"type":44,"tag":232,"props":5569,"children":5570},{},[5571,5604,5626,5648,5670,5694,5716,5738,5760,5797,5861,5899,5936,5992,6010],{"type":44,"tag":212,"props":5572,"children":5573},{},[5574,5583,5595],{"type":44,"tag":239,"props":5575,"children":5576},{},[5577],{"type":44,"tag":84,"props":5578,"children":5580},{"className":5579},[],[5581],{"type":57,"value":5582},"401 Unauthorized",{"type":44,"tag":239,"props":5584,"children":5585},{},[5586,5588,5593],{"type":57,"value":5587},"Wrong or missing ",{"type":44,"tag":84,"props":5589,"children":5591},{"className":5590},[],[5592],{"type":57,"value":608},{"type":57,"value":5594}," audience",{"type":44,"tag":239,"props":5596,"children":5597},{},[5598,5599],{"type":57,"value":4125},{"type":44,"tag":84,"props":5600,"children":5602},{"className":5601},[],[5603],{"type":57,"value":4131},{"type":44,"tag":212,"props":5605,"children":5606},{},[5607,5616,5621],{"type":44,"tag":239,"props":5608,"children":5609},{},[5610],{"type":44,"tag":84,"props":5611,"children":5613},{"className":5612},[],[5614],{"type":57,"value":5615},"403 Forbidden",{"type":44,"tag":239,"props":5617,"children":5618},{},[5619],{"type":57,"value":5620},"Insufficient permissions",{"type":44,"tag":239,"props":5622,"children":5623},{},[5624],{"type":57,"value":5625},"Check workspace role (Contributor+ for write ops)",{"type":44,"tag":212,"props":5627,"children":5628},{},[5629,5638,5643],{"type":44,"tag":239,"props":5630,"children":5631},{},[5632],{"type":44,"tag":84,"props":5633,"children":5635},{"className":5634},[],[5636],{"type":57,"value":5637},"404 Not Found",{"type":44,"tag":239,"props":5639,"children":5640},{},[5641],{"type":57,"value":5642},"Wrong workspace or report ID",{"type":44,"tag":239,"props":5644,"children":5645},{},[5646],{"type":57,"value":5647},"Re-resolve IDs via List APIs",{"type":44,"tag":212,"props":5649,"children":5650},{},[5651,5660,5665],{"type":44,"tag":239,"props":5652,"children":5653},{},[5654],{"type":44,"tag":84,"props":5655,"children":5657},{"className":5656},[],[5658],{"type":57,"value":5659},"CorruptedPayload",{"type":44,"tag":239,"props":5661,"children":5662},{},[5663],{"type":57,"value":5664},"Malformed base64 or invalid PBIR JSON",{"type":44,"tag":239,"props":5666,"children":5667},{},[5668],{"type":57,"value":5669},"Re-encode files; validate JSON before encoding",{"type":44,"tag":212,"props":5671,"children":5672},{},[5673,5684,5689],{"type":44,"tag":239,"props":5674,"children":5675},{},[5676,5682],{"type":44,"tag":84,"props":5677,"children":5679},{"className":5678},[],[5680],{"type":57,"value":5681},"202",{"type":57,"value":5683}," with no result",{"type":44,"tag":239,"props":5685,"children":5686},{},[5687],{"type":57,"value":5688},"LRO not polled to completion",{"type":44,"tag":239,"props":5690,"children":5691},{},[5692],{"type":57,"value":5693},"Implement LRO polling pattern",{"type":44,"tag":212,"props":5695,"children":5696},{},[5697,5706,5711],{"type":44,"tag":239,"props":5698,"children":5699},{},[5700],{"type":44,"tag":84,"props":5701,"children":5703},{"className":5702},[],[5704],{"type":57,"value":5705},"OperationNotSupportedForItem",{"type":44,"tag":239,"props":5707,"children":5708},{},[5709],{"type":57,"value":5710},"Report has encrypted sensitivity label",{"type":44,"tag":239,"props":5712,"children":5713},{},[5714],{"type":57,"value":5715},"Cannot get definition for encrypted reports",{"type":44,"tag":212,"props":5717,"children":5718},{},[5719,5728,5733],{"type":44,"tag":239,"props":5720,"children":5721},{},[5722],{"type":44,"tag":84,"props":5723,"children":5725},{"className":5724},[],[5726],{"type":57,"value":5727},"ItemDisplayNameAlreadyInUse",{"type":44,"tag":239,"props":5729,"children":5730},{},[5731],{"type":57,"value":5732},"Duplicate name in workspace",{"type":44,"tag":239,"props":5734,"children":5735},{},[5736],{"type":57,"value":5737},"Use a unique display name",{"type":44,"tag":212,"props":5739,"children":5740},{},[5741,5750,5755],{"type":44,"tag":239,"props":5742,"children":5743},{},[5744],{"type":44,"tag":84,"props":5745,"children":5747},{"className":5746},[],[5748],{"type":57,"value":5749},"format: \"PBIR-Legacy\"",{"type":44,"tag":239,"props":5751,"children":5752},{},[5753],{"type":57,"value":5754},"Report was created before PBIR was default",{"type":44,"tag":239,"props":5756,"children":5757},{},[5758],{"type":57,"value":5759},"PBIR-Legacy is not supported by this skill",{"type":44,"tag":212,"props":5761,"children":5762},{},[5763,5768,5773],{"type":44,"tag":239,"props":5764,"children":5765},{},[5766],{"type":57,"value":5767},"Visuals empty \u002F no data after publish",{"type":44,"tag":239,"props":5769,"children":5770},{},[5771],{"type":57,"value":5772},"PBIR entity names don't match workspace semantic model table names (e.g., local CSV table name vs workspace table name)",{"type":44,"tag":239,"props":5774,"children":5775},{},[5776,5778,5783,5784,5789,5790,5795],{"type":57,"value":5777},"Download target semantic model TMDL, compare table names, update all ",{"type":44,"tag":84,"props":5779,"children":5781},{"className":5780},[],[5782],{"type":57,"value":4343},{"type":57,"value":264},{"type":44,"tag":84,"props":5785,"children":5787},{"className":5786},[],[5788],{"type":57,"value":4350},{"type":57,"value":264},{"type":44,"tag":84,"props":5791,"children":5793},{"className":5792},[],[5794],{"type":57,"value":4357},{"type":57,"value":5796},", and filter references to match",{"type":44,"tag":212,"props":5798,"children":5799},{},[5800,5811,5832],{"type":44,"tag":239,"props":5801,"children":5802},{},[5803,5809],{"type":44,"tag":84,"props":5804,"children":5806},{"className":5805},[],[5807],{"type":57,"value":5808},"MissingDefinitionParts",{"type":57,"value":5810}," on create\u002Fupdate even though all files are included",{"type":44,"tag":239,"props":5812,"children":5813},{},[5814,5816,5822,5824,5830],{"type":57,"value":5815},"Definition part paths use backslashes (",{"type":44,"tag":84,"props":5817,"children":5819},{"className":5818},[],[5820],{"type":57,"value":5821},"definition\\report.json",{"type":57,"value":5823},") — the Fabric API requires forward slashes. On Windows, ",{"type":44,"tag":84,"props":5825,"children":5827},{"className":5826},[],[5828],{"type":57,"value":5829},"path.join()",{"type":57,"value":5831}," produces backslashes by default.",{"type":44,"tag":239,"props":5833,"children":5834},{},[5835,5837,5843,5845,5851,5853,5859],{"type":57,"value":5836},"Normalize all ",{"type":44,"tag":84,"props":5838,"children":5840},{"className":5839},[],[5841],{"type":57,"value":5842},"path",{"type":57,"value":5844}," values in the payload to use forward slashes before uploading (e.g., ",{"type":44,"tag":84,"props":5846,"children":5848},{"className":5847},[],[5849],{"type":57,"value":5850},".replace(\u002F\\\\\\\\\u002Fg, '\u002F')",{"type":57,"value":5852}," in Node.js, or ",{"type":44,"tag":84,"props":5854,"children":5856},{"className":5855},[],[5857],{"type":57,"value":5858},".Replace('\\\\', '\u002F')",{"type":57,"value":5860}," in PowerShell).",{"type":44,"tag":212,"props":5862,"children":5863},{},[5864,5869,5881],{"type":44,"tag":239,"props":5865,"children":5866},{},[5867],{"type":57,"value":5868},"Duplicate reports appear in workspace after create",{"type":44,"tag":239,"props":5870,"children":5871},{},[5872,5874,5879],{"type":57,"value":5873},"Create POST was retried after a ",{"type":44,"tag":84,"props":5875,"children":5877},{"className":5876},[],[5878],{"type":57,"value":1491},{"type":57,"value":5880}," response. Each retry risks creating a new report.",{"type":44,"tag":239,"props":5882,"children":5883},{},[5884,5886,5891,5893,5897],{"type":57,"value":5885},"Never retry a create POST after ",{"type":44,"tag":84,"props":5887,"children":5889},{"className":5888},[],[5890],{"type":57,"value":5681},{"type":57,"value":5892},". See the ",{"type":44,"tag":346,"props":5894,"children":5895},{"href":4608},[5896],{"type":57,"value":4611},{"type":57,"value":5898}," for reliable operation ID capture and recovery steps. Delete any duplicates with the Delete Report API.",{"type":44,"tag":212,"props":5900,"children":5901},{},[5902,5914,5919],{"type":44,"tag":239,"props":5903,"children":5904},{},[5905,5907,5912],{"type":57,"value":5906},"Visuals empty after publishing a local ",{"type":44,"tag":84,"props":5908,"children":5910},{"className":5909},[],[5911],{"type":57,"value":332},{"type":57,"value":5913}," via the model hand-off",{"type":44,"tag":239,"props":5915,"children":5916},{},[5917],{"type":57,"value":5918},"The semantic-model authoring skill may rename or transform tables\u002Fcolumns during deploy, so the freshly deployed model's TMDL no longer matches the report's PBIR bindings.",{"type":44,"tag":239,"props":5920,"children":5921},{},[5922,5924,5928,5930,5935],{"type":57,"value":5923},"Re-run the TMDL-diff verification against the deployed model (per MUST ",{"type":44,"tag":346,"props":5925,"children":5926},{"href":4937},[5927],{"type":57,"value":4335},{"type":57,"value":5929},") and remap drifted bindings via ",{"type":44,"tag":84,"props":5931,"children":5933},{"className":5932},[],[5934],{"type":57,"value":169},{"type":57,"value":90},{"type":44,"tag":212,"props":5937,"children":5938},{},[5939,5944,5967],{"type":44,"tag":239,"props":5940,"children":5941},{},[5942],{"type":57,"value":5943},"Visuals empty after publish, despite TMDL diff being clean",{"type":44,"tag":239,"props":5945,"children":5946},{},[5947,5952,5953,5958,5960,5965],{"type":44,"tag":84,"props":5948,"children":5950},{"className":5949},[],[5951],{"type":57,"value":262},{"type":57,"value":4776},{"type":44,"tag":84,"props":5954,"children":5956},{"className":5955},[],[5957],{"type":57,"value":3828},{"type":57,"value":5959}," still points at a stale model ID (e.g., from ",{"type":44,"tag":84,"props":5961,"children":5963},{"className":5962},[],[5964],{"type":57,"value":4739},{"type":57,"value":5966}," cache or an earlier publish), not the freshly resolved one.",{"type":44,"tag":239,"props":5968,"children":5969},{},[5970,5972,5976,5978,5983,5985,5990],{"type":57,"value":5971},"Re-run step 7 of ",{"type":44,"tag":346,"props":5973,"children":5974},{"href":348},[5975],{"type":57,"value":351},{"type":57,"value":5977}," to set ",{"type":44,"tag":84,"props":5979,"children":5981},{"className":5980},[],[5982],{"type":57,"value":3828},{"type":57,"value":5984}," to the actually resolved ",{"type":44,"tag":84,"props":5986,"children":5988},{"className":5987},[],[5989],{"type":57,"value":342},{"type":57,"value":5991},", then re-publish.",{"type":44,"tag":212,"props":5993,"children":5994},{},[5995,6000,6005],{"type":44,"tag":239,"props":5996,"children":5997},{},[5998],{"type":57,"value":5999},"Semantic-model authoring skill not available when user wants to publish the local model",{"type":44,"tag":239,"props":6001,"children":6002},{},[6003],{"type":57,"value":6004},"No semantic-model authoring skill is loaded in the current session.",{"type":44,"tag":239,"props":6006,"children":6007},{},[6008],{"type":57,"value":6009},"Inform the user and degrade to the connect-to-existing branch — re-prompt for which workspace model to bind the report to. Do not silently fall through.",{"type":44,"tag":212,"props":6011,"children":6012},{},[6013,6018,6023],{"type":44,"tag":239,"props":6014,"children":6015},{},[6016],{"type":57,"value":6017},"Model published to one workspace, report POSTed to another",{"type":44,"tag":239,"props":6019,"children":6020},{},[6021],{"type":57,"value":6022},"Workspace was not confirmed up front, or two different workspaces were used for the model deploy and the report publish.",{"type":44,"tag":239,"props":6024,"children":6025},{},[6026,6028,6032],{"type":57,"value":6027},"Enforce the single-workspace rule (step 2 of ",{"type":44,"tag":346,"props":6029,"children":6030},{"href":348},[6031],{"type":57,"value":351},{"type":57,"value":6033},"). Recovery: either re-publish the report into the model's workspace, or move the model.",{"type":44,"tag":6035,"props":6036,"children":6037},"style",{},[6038],{"type":57,"value":6039},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":6041,"total":6236},[6042,6064,6085,6106,6121,6138,6149,6162,6177,6192,6211,6224],{"slug":6043,"name":6043,"fn":6044,"description":6045,"org":6046,"tags":6047,"stars":6061,"repoUrl":6062,"updatedAt":6063},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6048,6051,6054,6055,6058],{"name":6049,"slug":6050,"type":15},"Engineering","engineering",{"name":6052,"slug":6053,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":6056,"slug":6057,"type":15},"Project Management","project-management",{"name":6059,"slug":6060,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":6065,"name":6065,"fn":6066,"description":6067,"org":6068,"tags":6069,"stars":6082,"repoUrl":6083,"updatedAt":6084},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6070,6073,6076,6079],{"name":6071,"slug":6072,"type":15},".NET","net",{"name":6074,"slug":6075,"type":15},"Agents","agents",{"name":6077,"slug":6078,"type":15},"Azure","azure",{"name":6080,"slug":6081,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":6086,"name":6086,"fn":6087,"description":6088,"org":6089,"tags":6090,"stars":6082,"repoUrl":6083,"updatedAt":6105},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6091,6094,6095,6098,6101,6102],{"name":6092,"slug":6093,"type":15},"Analytics","analytics",{"name":6077,"slug":6078,"type":15},{"name":6096,"slug":6097,"type":15},"Data Analysis","data-analysis",{"name":6099,"slug":6100,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":6103,"slug":6104,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":6107,"name":6107,"fn":6108,"description":6109,"org":6110,"tags":6111,"stars":6082,"repoUrl":6083,"updatedAt":6120},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6112,6115,6116,6117],{"name":6113,"slug":6114,"type":15},"AI Infrastructure","ai-infrastructure",{"name":6077,"slug":6078,"type":15},{"name":6099,"slug":6100,"type":15},{"name":6118,"slug":6119,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":6122,"name":6122,"fn":6123,"description":6124,"org":6125,"tags":6126,"stars":6082,"repoUrl":6083,"updatedAt":6137},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6127,6128,6131,6132,6133,6136],{"name":6077,"slug":6078,"type":15},{"name":6129,"slug":6130,"type":15},"Compliance","compliance",{"name":6080,"slug":6081,"type":15},{"name":9,"slug":8,"type":15},{"name":6134,"slug":6135,"type":15},"Python","python",{"name":6118,"slug":6119,"type":15},"2026-07-18T05:14:23.017504",{"slug":6139,"name":6139,"fn":6140,"description":6141,"org":6142,"tags":6143,"stars":6082,"repoUrl":6083,"updatedAt":6148},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6144,6145,6146,6147],{"name":6092,"slug":6093,"type":15},{"name":6077,"slug":6078,"type":15},{"name":6080,"slug":6081,"type":15},{"name":6134,"slug":6135,"type":15},"2026-07-31T05:54:29.068751",{"slug":6150,"name":6150,"fn":6151,"description":6152,"org":6153,"tags":6154,"stars":6082,"repoUrl":6083,"updatedAt":6161},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6155,6158,6159,6160],{"name":6156,"slug":6157,"type":15},"API Development","api-development",{"name":6077,"slug":6078,"type":15},{"name":9,"slug":8,"type":15},{"name":6134,"slug":6135,"type":15},"2026-07-18T05:14:16.988376",{"slug":6163,"name":6163,"fn":6164,"description":6165,"org":6166,"tags":6167,"stars":6082,"repoUrl":6083,"updatedAt":6176},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6168,6169,6172,6175],{"name":6077,"slug":6078,"type":15},{"name":6170,"slug":6171,"type":15},"Computer Vision","computer-vision",{"name":6173,"slug":6174,"type":15},"Images","images",{"name":6134,"slug":6135,"type":15},"2026-07-18T05:14:18.007737",{"slug":6178,"name":6178,"fn":6179,"description":6180,"org":6181,"tags":6182,"stars":6082,"repoUrl":6083,"updatedAt":6191},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6183,6184,6187,6190],{"name":6077,"slug":6078,"type":15},{"name":6185,"slug":6186,"type":15},"Configuration","configuration",{"name":6188,"slug":6189,"type":15},"Feature Flags","feature-flags",{"name":6099,"slug":6100,"type":15},"2026-07-03T16:32:01.278468",{"slug":6193,"name":6193,"fn":6194,"description":6195,"org":6196,"tags":6197,"stars":6082,"repoUrl":6083,"updatedAt":6210},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6198,6201,6204,6207],{"name":6199,"slug":6200,"type":15},"Cosmos DB","cosmos-db",{"name":6202,"slug":6203,"type":15},"Database","database",{"name":6205,"slug":6206,"type":15},"NoSQL","nosql",{"name":6208,"slug":6209,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":6212,"name":6212,"fn":6194,"description":6213,"org":6214,"tags":6215,"stars":6082,"repoUrl":6083,"updatedAt":6223},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6216,6217,6218,6219,6220],{"name":6199,"slug":6200,"type":15},{"name":6202,"slug":6203,"type":15},{"name":9,"slug":8,"type":15},{"name":6205,"slug":6206,"type":15},{"name":6221,"slug":6222,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":6225,"name":6225,"fn":6226,"description":6227,"org":6228,"tags":6229,"stars":6082,"repoUrl":6083,"updatedAt":6235},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6230,6231,6232,6233,6234],{"name":6077,"slug":6078,"type":15},{"name":6199,"slug":6200,"type":15},{"name":6202,"slug":6203,"type":15},{"name":6099,"slug":6100,"type":15},{"name":6205,"slug":6206,"type":15},"2026-05-13T06:14:17.582229",267,{"items":6238,"total":2314},[6239,6250,6271,6289,6305,6319,6333],{"slug":65,"name":65,"fn":6240,"description":6241,"org":6242,"tags":6243,"stars":25,"repoUrl":26,"updatedAt":6249},"check for Fabric skill marketplace updates","Check an installed skills-for-fabric plugin bundle or git clone for updates, show the matching changelog, and provide host-appropriate update guidance. Use when the user wants to: (1) check for skill updates, (2) see what changed, (3) verify the installed version. Triggers: \"check for updates\", \"am I up to date\", \"what version\", \"update skills\", \"show changelog\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6244,6245,6246],{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":6247,"slug":6248,"type":15},"Operations","operations","2026-07-24T05:41:25.892114",{"slug":6251,"name":6251,"fn":6252,"description":6253,"org":6254,"tags":6255,"stars":25,"repoUrl":26,"updatedAt":6270},"databricks-migration","migrate Databricks notebooks to Microsoft Fabric","Port Databricks notebooks and jobs to Microsoft Fabric. Provides an exhaustive dbutils to notebookutils substitution table: fs operations (runtime mounts or OneLake Shortcuts), secret scope to Key Vault URL conversion, notebook run and exit, widget replacement with parameter-tagged cells, and library install replacement with Fabric Environments. Covers Unity Catalog three-level namespace reduction to Lakehouse two-level schemas, DBFS path conversion to OneLake, Databricks Jobs to Spark Job Definitions, MLflow tracking URI removal, and Photon to Native Execution Engine substitution. Use when the user wants to: (1) replace dbutils with notebookutils, (2) collapse Unity Catalog namespaces to Lakehouse schemas, (3) convert Databricks Jobs or Delta Live Tables. Triggers: \"migrate from databricks\", \"databricks to fabric\", \"dbutils to notebookutils\", \"dbutils fabric\", \"unity catalog migration\", \"dbfs to onelake\", \"databricks notebook migration\", \"delta live tables fabric\", \"photon native execution\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6256,6259,6262,6263,6264,6267],{"name":6257,"slug":6258,"type":15},"Data Engineering","data-engineering",{"name":6260,"slug":6261,"type":15},"Databricks","databricks",{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":6265,"slug":6266,"type":15},"Migration","migration",{"name":6268,"slug":6269,"type":15},"Notebooks","notebooks","2026-07-24T05:41:22.914341",{"slug":6272,"name":6272,"fn":6273,"description":6274,"org":6275,"tags":6276,"stars":25,"repoUrl":26,"updatedAt":6288},"dataflows-authoring-cli","manage Microsoft Fabric Dataflows via CLI","Create, update, delete, and refresh Fabric Dataflows Gen2 with write-side CLI via Fabric APIs. Build mashup.pq and queryMetadata.json, preview candidate M with executeQuery\u002FcustomMashupDocument, bind connections, and configure output destinations. For saved query execution or refresh-status reads, use `dataflows-consumption-cli`. If a request explicitly insists on the Dataflows consumption or read-only path for a mutation, do not route here; let consumption refuse before any separately confirmed authoring handoff. Triggers: \"create dataflow\", \"update dataflow\", \"delete dataflow\", \"trigger dataflow refresh\", \"preview Power Query M\", \"preview before save\", \"customMashupDocument\", \"create Fabric data source connection\", \"create SQL Server source REST\", \"POST \u002Fv1\u002Fconnections\", \"supportedConnectionTypes\", \"passwordReference\", \"bind connection\", \"dataflow output destination\", \"dataflow write to lakehouse\", \"dataflow write to warehouse\", \"dataflow write to ADX\", \"DataDestinations annotation\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6277,6280,6281,6284,6285],{"name":6278,"slug":6279,"type":15},"CLI","cli",{"name":6257,"slug":6258,"type":15},{"name":6282,"slug":6283,"type":15},"Data Pipeline","data-pipeline",{"name":20,"slug":21,"type":15},{"name":6286,"slug":6287,"type":15},"REST API","rest-api","2026-07-31T05:54:59.059517",{"slug":6290,"name":6290,"fn":6291,"description":6292,"org":6293,"tags":6294,"stars":25,"repoUrl":26,"updatedAt":6304},"e2e-medallion-architecture","implement Medallion Architecture in Microsoft Fabric","Plan and implement end-to-end Microsoft Fabric data platforms and Medallion Architecture (Bronze\u002FSilver\u002FGold) lakehouse patterns using PySpark, Delta Lake, Lakehouse\u002FWarehouse items, Fabric Pipelines, and semantic-model handoff. Use when the user wants to: (1) design a Bronze\u002FSilver\u002FGold data lakehouse, (2) plan an ingestion-to-semantic-model Fabric data platform, (3) set up multi-layer workspaces with lakehouses for each tier, (4) build ingestion-to-analytics pipelines with data quality enforcement, (5) orchestrate Bronze-to-Silver-to-Gold flows via notebooks. For natural-language business questions over existing Power BI report data, use `fabriciq`. Triggers: \"medallion architecture\", \"bronze silver gold\", \"lakehouse layers\", \"e2e data pipeline\", \"end-to-end lakehouse\", \"data lakehouse pattern\", \"multi-layer lakehouse\", \"build medallion\", \"setup medallion\", \"end-to-end Fabric data platform\", \"bronze silver gold platform\", \"ingestion semantic model platform\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6295,6298,6299,6300,6301],{"name":6296,"slug":6297,"type":15},"Architecture","architecture",{"name":6257,"slug":6258,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":6302,"slug":6303,"type":15},"PySpark","pyspark","2026-07-31T05:54:57.038396",{"slug":6306,"name":6306,"fn":6307,"description":6308,"org":6309,"tags":6310,"stars":25,"repoUrl":26,"updatedAt":6318},"eventhouse-authoring-cli","manage Fabric Eventhouse and KQL databases","Execute KQL management commands (table management, ingestion, policies, functions, materialized views) against Fabric Eventhouse and KQL Databases via CLI. Use when the user wants to:\n  1. Create or alter KQL tables, columns, or functions\n  2. Ingest data into an Eventhouse (inline, from storage, streaming)\n  3. Configure retention, caching, or partitioning policies\n  4. Create or manage materialized views and update policies\n  5. Manage data mappings for ingestion pipelines\n  6. Deploy KQL schema via scripts\nTriggers: \"create kql table\", \"kql ingestion\", \"ingest into eventhouse\", \"kql function\", \"materialized view\", \"kql retention policy\", \"eventhouse schema\", \"kql authoring\", \"create eventhouse table\", \"kql mapping\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6311,6312,6315,6316,6317],{"name":6202,"slug":6203,"type":15},{"name":6313,"slug":6314,"type":15},"KQL","kql",{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":6247,"slug":6248,"type":15},"2026-04-06T18:36:51.340409",{"slug":6320,"name":6320,"fn":6321,"description":6322,"org":6323,"tags":6324,"stars":25,"repoUrl":26,"updatedAt":6332},"eventhouse-consumption-cli","query Fabric Eventhouse with KQL","Run KQL queries against Fabric Eventhouse for real-time intelligence and time-series analytics using `az rest` against the Kusto REST API. Covers KQL operators (where, summarize, join, render), Eventhouse schema discovery (.show tables), time-series patterns with bin(), and ingestion monitoring. Use when the user wants to:\n  1. Run read-only KQL queries against an Eventhouse or KQL Database\n  2. Discover Eventhouse table schema and metadata\n  3. Analyse real-time or time-series data with KQL operators\n  4. Monitor ingestion health and active KQL queries\n  5. Export KQL results to JSON\nTriggers: \"kql query\", \"kusto query\", \"eventhouse query\", \"kql database\", \"real-time intelligence\", \"time-series kql\", \"query eventhouse\", \"explore eventhouse\", \"show tables kql\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6325,6326,6327,6328,6329],{"name":6092,"slug":6093,"type":15},{"name":6313,"slug":6314,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":6330,"slug":6331,"type":15},"Real-Time Intelligence","real-time-intelligence","2026-04-06T18:36:45.018807",{"slug":6334,"name":6334,"fn":6335,"description":6336,"org":6337,"tags":6338,"stars":25,"repoUrl":26,"updatedAt":6343},"eventstream-consumption-cli","monitor Fabric Eventstream ingestion pipelines","List, inspect, and monitor Fabric Eventstream real-time ingestion pipelines via the Items REST API. Discover Eventstreams across workspaces, decode base64 graph topologies tracing event flow from source through operators to destination nodes. Validate connection IDs, wiring, retention policies (1-90 days), and throughput levels. Retrieve Custom Endpoint Kafka credentials via Topology API. **Invoke this skill** to: (1) list Eventstreams, (2) inspect Eventstream topology showing sources and destinations, (3) validate Eventstream configurations, (4) check Eventstream retention policy and throughput level, (5) get connection strings. Triggers: \"list eventstreams\", \"inspect eventstream\", \"describe eventstream topology\", \"eventstream operator nodes\", \"eventstream sources and destinations\", \"eventstream health\", \"eventstream status\", \"eventstream configuration\", \"eventstream retention\", \"eventstream throughput level\", \"eventstream connection string\", \"custom endpoint credentials\", \"check eventstream\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6339,6340,6341,6342],{"name":6278,"slug":6279,"type":15},{"name":6257,"slug":6258,"type":15},{"name":20,"slug":21,"type":15},{"name":6103,"slug":6104,"type":15},"2026-07-31T05:55:03.045486"]