[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-eventstream-consumption-cli":3,"mdc--az0ls9-key":36,"related-org-microsoft-eventstream-consumption-cli":5265,"related-repo-microsoft-eventstream-consumption-cli":5459},{"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},"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},"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},"Data Engineering","data-engineering","tag",{"name":17,"slug":18,"type":15},"Monitoring","monitoring",{"name":20,"slug":21,"type":15},"CLI","cli",{"name":23,"slug":24,"type":15},"Microsoft Fabric","microsoft-fabric",858,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills-for-fabric","2026-07-31T05:55:03.045486",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\u002Feventstream-consumption-cli","---\nname: eventstream-consumption-cli\ndescription: >\n  List, inspect, and monitor Fabric Eventstream real-time ingestion pipelines via\n  the Items REST API. Discover Eventstreams across workspaces, decode base64 graph\n  topologies tracing event flow from source through operators to destination nodes.\n  Validate connection IDs, wiring, retention policies (1-90 days), and throughput\n  levels. Retrieve Custom Endpoint Kafka credentials via Topology API. **Invoke\n  this skill** to: (1) list Eventstreams, (2) inspect Eventstream topology showing\n  sources and destinations, (3) validate Eventstream configurations, (4) check\n  Eventstream retention policy and throughput level, (5) get connection strings.\n  Triggers: \"list eventstreams\", \"inspect eventstream\",\n  \"describe eventstream topology\", \"eventstream operator nodes\",\n  \"eventstream sources and destinations\", \"eventstream health\",\n  \"eventstream status\", \"eventstream configuration\", \"eventstream retention\",\n  \"eventstream throughput level\", \"eventstream connection string\",\n  \"custom endpoint credentials\", \"check eventstream\".\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> 3. Eventstream ≠ Eventhouse. Eventstream is a real-time event ingestion and routing pipeline. For KQL queries, use `eventhouse-consumption-cli`.\n\n# Eventstream Consumption — CLI Skill\n\n## Table of Contents\n\n| Task | Reference | Notes |\n|---|---|---|\n| Finding Workspaces and Items in Fabric | [COMMON-CLI.md § Finding Workspaces and Items in Fabric](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#finding-workspaces-and-items-in-fabric) | **Mandatory** — *READ link first* [needed for finding workspace id by its name or item id by its name, item type, and workspace id] |\n| Fabric Topology & Key Concepts | [COMMON-CORE.md § Fabric Topology & Key Concepts](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#fabric-topology--key-concepts) | |\n| Environment URLs | [COMMON-CORE.md § Environment URLs](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#environment-urls) | |\n| Authentication & Token Acquisition | [COMMON-CORE.md § Authentication & Token Acquisition](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#authentication--token-acquisition) | Wrong audience = 401; read before any auth issue |\n| Core Control-Plane REST APIs | [COMMON-CORE.md § Core Control-Plane REST APIs](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#core-control-plane-rest-apis) | Includes pagination, LRO polling, and rate-limiting patterns |\n| Gotchas, Best Practices & Troubleshooting | [COMMON-CORE.md § Gotchas, Best Practices & Troubleshooting](..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#gotchas-best-practices--troubleshooting) | |\n| Tool Selection Rationale | [COMMON-CLI.md § Tool Selection Rationale](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#tool-selection-rationale) | |\n| Authentication Recipes | [COMMON-CLI.md § Authentication Recipes](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes) | `az login` flows and token acquisition |\n| Fabric Control-Plane API via `az rest` | [COMMON-CLI.md § Fabric Control-Plane API via az rest](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#fabric-control-plane-api-via-az-rest) | **Always pass `--resource`**; includes pagination and LRO helpers |\n| Gotchas & Troubleshooting (CLI-Specific) | [COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#gotchas--troubleshooting-cli-specific) | `az rest` audience, shell escaping, token expiry |\n| Quick Reference | [COMMON-CLI.md § Quick Reference](..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#quick-reference) | `az rest` template + token audience\u002Ftool matrix |\n| Listing and Discovering Eventstreams | [EVENTSTREAM-CONSUMPTION-CORE.md § Listing and Discovering Eventstreams](..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#listing-and-discovering-eventstreams) | List, Get, Search across workspaces |\n| Inspecting Eventstream Topology | [EVENTSTREAM-CONSUMPTION-CORE.md § Inspecting Eventstream Topology](..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#inspecting-eventstream-topology) | Decode base64 definition → trace graph flow |\n| Monitoring Eventstream Health | [EVENTSTREAM-CONSUMPTION-CORE.md § Monitoring Eventstream Health](..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#monitoring-eventstream-health) | Retention and throughput checks |\n| Source and Destination Status | [EVENTSTREAM-CONSUMPTION-CORE.md § Source and Destination Status](..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#source-and-destination-status) | Validation checklist for sources and destinations |\n| Integration with Downstream Analytics | [EVENTSTREAM-CONSUMPTION-CORE.md § Integration with Downstream Analytics](..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#integration-with-downstream-analytics) | Eventhouse, Lakehouse, Activator, Real-Time Hub |\n| Gotchas and Troubleshooting Reference | [EVENTSTREAM-CONSUMPTION-CORE.md § Gotchas and Troubleshooting Reference](..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#gotchas-and-troubleshooting-reference) | 10 common issues with causes and fixes |\n| List Eventstreams | [SKILL.md § List Eventstreams](#list-eventstreams) | |\n| Inspect Eventstream Topology | [SKILL.md § Inspect Eventstream Topology](#inspect-eventstream-topology) | Decode and explore the graph |\n| Get Custom Endpoint Connection String | [SKILL.md § Get Custom Endpoint Connection String](#get-custom-endpoint-connection-string) | Retrieve Kafka\u002FEH connection via Topology API |\n| Validate Eventstream Configuration | [SKILL.md § Validate Eventstream Configuration](#validate-eventstream-configuration) | |\n| Gotchas, Rules, Troubleshooting | [SKILL.md § Gotchas, Rules, Troubleshooting](#gotchas-rules-troubleshooting) | **MUST DO \u002F AVOID \u002F PREFER** checklists |\n\n---\n\n## List Eventstreams\n\n### List All Eventstreams in a Workspace\n\n```bash\naz rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n```\n\nReturns an array of Eventstream items. Use JMESPath to filter by name:\n\n```bash\naz rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --query \"value[?displayName=='my-eventstream']\"\n```\n\n### Get Eventstream Details\n\n```bash\naz rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n```\n\n---\n\n## Inspect Eventstream Topology\n\n> **Tip**: The Topology API (`GET ...\u002Feventstreams\u002F{id}\u002Ftopology`) returns runtime status, error info, and node IDs without base64 decoding. Prefer it for operational inspection (health checks, connection retrieval). Use `POST ...\u002FgetDefinition` (below) when you need the full authoring-time graph structure for topology modification.\n\nRetrieve the Eventstream definition and decode it to inspect the full graph topology.\n\n### Step 1: Get the Definition\n\n> **API Note**: The Eventstream Definition API uses `POST ...\u002FgetDefinition`, not `GET ...\u002Fdefinition`. This follows the Fabric Items Definition pattern. See [official docs](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ffabric\u002Freal-time-intelligence\u002Fevent-streams\u002Fapi-get-eventstream-definition).\n\n```bash\naz rest --method POST \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002FgetDefinition\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --body '{}'\n```\n\n### Step 2: Decode the Topology\n\nExtract the `eventstream.json` part's `payload` field and base64-decode it:\n\n```bash\n# Using jq + base64 (Linux; on macOS use base64 -D instead of -d)\naz rest --method POST \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002FgetDefinition\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --body '{}' \\\n  | jq -r '.definition.parts[] | select(.path==\"eventstream.json\") | .payload' \\\n  | base64 -d | jq .\n```\n\n```powershell\n# PowerShell (Windows)\n$def = az rest --method POST `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002FgetDefinition\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --body '{}' | ConvertFrom-Json\n$payload = ($def.definition.parts | Where-Object { $_.path -eq 'eventstream.json' }).payload\n[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($payload)) | ConvertFrom-Json | ConvertTo-Json -Depth 10\n```\n\n### Step 3: Summarize the Topology\n\nAfter decoding, count and list each node type:\n\n| Metric | Path in decoded JSON |\n|--------|---------------------|\n| Sources | `.sources[] \\| .name, .type` |\n| Destinations | `.destinations[] \\| .name, .type` |\n| Operators | `.operators[] \\| .name, .type` |\n| Streams | `.streams[] \\| .name, .type` |\n\n---\n\n## Get Custom Endpoint Connection String\n\nThe `POST ...\u002FgetDefinition` endpoint returns **empty properties** for Custom Endpoint sources. To retrieve the Kafka\u002FEvent Hub connection info, use the **Topology API** `\u002Fconnection` endpoint.\n\n> **Important**: This endpoint requires `Eventstream.ReadWrite.All` permission scope (not just Read).\n\n### Step 1: Get the Topology to Find the Source ID\n\n```bash\naz rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002Ftopology\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n```\n\nFrom the response, find the Custom Endpoint source node and extract its `id`:\n\n```bash\n# Extract the sourceId for a Custom Endpoint source (use name filter if multiple exist)\nSOURCE_ID=$(az rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002Ftopology\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  | jq -r '[.sources[] | select(.type==\"CustomEndpoint\")] | if length == 0 then error(\"No Custom Endpoint sources found in this Eventstream\") elif length > 1 then error(\"Multiple Custom Endpoint sources found — filter by .name\") else .[0].id end') \\\n  || { echo \"Failed to resolve Custom Endpoint source ID\"; exit 1; }\n\nif [ -z \"$SOURCE_ID\" ]; then echo \"SOURCE_ID is empty — check topology output\"; exit 1; fi\n```\n\n```powershell\n# PowerShell — extract sourceId for Custom Endpoint (fails clearly if multiple exist)\n$topology = az rest --method GET `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n$customSources = @($topology.sources | Where-Object { $_.type -eq 'CustomEndpoint' })\nif ($customSources.Count -eq 0) { throw \"No Custom Endpoint sources found in this Eventstream\" }\nif ($customSources.Count -gt 1) { throw \"Multiple Custom Endpoint sources found. Filter by name: $($customSources.name -join ', ')\" }\n$sourceId = $customSources[0].id\n```\n\n### Step 2: Get the Connection Details\n\n> ⚠️ **Security**: This endpoint returns access keys and connection strings. Get explicit user confirmation before calling it. Redact `primaryKey`, `secondaryKey`, `primaryConnectionString`, and `secondaryConnectionString` from any displayed output unless the user explicitly asks for secret values in a secure context. Avoid logging raw credentials; store securely and rotate as needed.\n\n```bash\naz rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002Fsources\u002F${SOURCE_ID}\u002Fconnection\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n```\n\n```powershell\naz rest --method GET `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002Fsources\u002F$sourceId\u002Fconnection\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n```\n\n### Expected Response\n\n```json\n{\n  \"fullyQualifiedNamespace\": \"namespace.servicebus.windows.net\",\n  \"eventHubName\": \"es_\u003Cguid>\",\n  \"accessKeys\": {\n    \"primaryKey\": \"...\",\n    \"secondaryKey\": \"...\",\n    \"primaryConnectionString\": \"Endpoint=sb:\u002F\u002Fnamespace.servicebus.windows.net\u002F;...\",\n    \"secondaryConnectionString\": \"...\"\n  }\n}\n```\n\n### Kafka Producer Configuration\n\nUse the response to configure a Kafka producer:\n\n| Setting | Value |\n|---------|-------|\n| `bootstrap_servers` | `{fullyQualifiedNamespace}:9093` |\n| `topic` | `{eventHubName}` |\n| `security_protocol` | `SASL_SSL` |\n| `sasl_mechanism` | `PLAIN` |\n| `sasl_plain_username` | `$ConnectionString` (fixed literal — not a variable) |\n| `sasl_plain_password` | `{primaryConnectionString}` |\n\n> **Limitation**: The `\u002Fconnection` endpoint is only supported for Custom Endpoint sources (returns Kafka\u002FEvent Hub credentials). Other source types (Event Hub, IoT Hub, etc.) store their connection configuration (e.g., `dataConnectionId`, `consumerGroup`) directly in the decoded definition properties.\n\n---\n\n## Validate Eventstream Configuration\n\nCheck key configuration aspects of a decoded Eventstream topology:\n\n### Source Validation Checklist\n\n| Check | How |\n|-------|-----|\n| Source type is API-supported | Compare against 25 known type enums |\n| Cloud connection exists | Verify `dataConnectionId` GUID resolves |\n| Consumer group set | Required for Event Hub, IoT Hub, Kafka sources |\n| Serialization matches source | `inputSerialization.type` = `Json`, `Csv`, or `Avro` |\n\n### Destination Validation Checklist\n\n| Check | How |\n|-------|-----|\n| Destination type is valid | Must be `Lakehouse`, `Eventhouse`, `Activator`, or `CustomEndpoint` |\n| Target item accessible | Verify `workspaceId` + `itemId` resolve via GET |\n| Input wired | `inputNodes` array must not be empty |\n| Eventhouse direct ingestion | `connectionName` and `mappingRuleName` set |\n\n### EventstreamProperties Validation\n\nDecode `eventstreamProperties.json` and check:\n- `retentionTimeInDays` is within 1–90\n- `eventThroughputLevel` is `Low`, `Medium`, or `High`\n\n---\n\n## Gotchas, Rules, Troubleshooting\n\n### MUST DO\n\n- **Always pass `--resource https:\u002F\u002Fapi.fabric.microsoft.com`** with `az rest` calls\n- **Always use JMESPath filtering** to resolve workspace name → ID and item name → ID\n- **Always base64-decode** the definition payload before inspecting topology (not needed for the Topology API — that returns JSON directly)\n- **For Custom Endpoint connection details, use the Topology API** — `POST ...\u002FgetDefinition` returns empty properties; call `GET ...\u002Ftopology` to get the sourceId, then `GET ...\u002Fsources\u002F{sourceId}\u002Fconnection`\n- **Use POST for definition endpoints** — `POST ...\u002FgetDefinition` (not GET), `POST ...\u002FupdateDefinition` (not PUT). See [official docs](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ffabric\u002Freal-time-intelligence\u002Fevent-streams\u002Fapi-get-eventstream-definition).\n- **Handle pagination** — check for `continuationUri` in list responses\n- **Poll LRO responses** — Get Definition may return `202 Accepted`\n\n### PREFER\n\n- Decode topology JSON into structured output for readable summaries\n- Use `jq` (bash) or `ConvertFrom-Json` (PowerShell) for parsing\n- Validate configurations before reporting issues to users\n- Cross-reference destinations with downstream skills (eventhouse, sqldw, spark)\n\n### AVOID\n\n- Do NOT confuse Eventstream with Eventhouse — they are separate Fabric workloads\n- Do NOT hardcode workspace or item IDs — always discover them via the API\n- Do NOT assume all source types appear in API enums — preview sources exist only in the UI\n- Do NOT modify Eventstream topology with this consumption skill — use `eventstream-authoring-cli` for writes\n- Do NOT attempt to query event data through the Eventstream API — use downstream skills (eventhouse-consumption-cli, sqldw-consumption-cli) for querying landed data\n\n---\n\n## Examples\n\n> **Platform note** — examples use PowerShell. Always write the JSON body to\n> a temp file via `[IO.File]::WriteAllText()` (no BOM) and pass\n> `--body \"@$file\"` to `az rest`, rather than inline `--body \"...\"` which\n> `cmd.exe` can mangle. Use `-Compress` with `ConvertTo-Json` to avoid\n> newline issues. The one safe inline exception is `--body '{}'` for empty bodies.\n> For large workspaces, check for `continuationUri` in list responses to handle\n> pagination.\n\n### Example 1: List All Eventstreams in a Workspace\n\n**Prompt**: \"List all Eventstreams in my analytics workspace showing their names and IDs.\"\n\n```powershell\n# 1. Discover workspace ID\n$wsId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='analytics'] | [0].id\" -o tsv)\nif (-not $wsId) { throw \"Workspace 'analytics' not found\" }\n\n# 2. List Eventstreams (handles pagination)\n$allItems = @()\n$resp = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n$allItems += $resp.value\nwhile ($resp.continuationUri) {\n    $resp = az rest --method get `\n      --url $resp.continuationUri `\n      --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n    $allItems += $resp.value\n}\n$allItems | Select-Object displayName, id, description | Format-Table\n```\n\n### Example 2: Inspect Eventstream Topology\n\n**Prompt**: \"Show me the topology of my SensorIngestion Eventstream — all sources, operators, and destinations.\"\n\n```powershell\n# 1. Discover workspace + Eventstream IDs\n$wsId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='analytics'] | [0].id\" -o tsv)\nif (-not $wsId) { throw \"Workspace 'analytics' not found\" }\n\n$esId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='SensorIngestion'] | [0].id\" -o tsv)\nif (-not $esId) { throw \"Eventstream 'SensorIngestion' not found\" }\n\n# 2. Get topology (returns JSON directly — no base64 decoding needed)\n$topo = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\n# 3. Summarize nodes (filter nulls from arrays)\nWrite-Host \"Sources:\"\n@($topo.sources | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type), id: $($_.id))\"\n}\nWrite-Host \"Operators:\"\n@($topo.operators | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type))\"\n}\nWrite-Host \"Destinations:\"\n@($topo.destinations | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type))\"\n}\nWrite-Host \"Streams:\"\n@($topo.streams | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type))\"\n}\n```\n\n### Example 3: Check Retention and Throughput Settings\n\n**Prompt**: \"What are the retention and throughput settings for my SensorIngestion Eventstream?\"\n\n> **Note**: Retention and throughput settings are stored in the `eventstreamProperties.json`\n> part of the definition (not `eventstream.json`). If this part is absent, the Eventstream\n> uses platform defaults.\n\n```powershell\n# 1. Discover workspace + Eventstream IDs\n$wsId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='analytics'] | [0].id\" -o tsv)\nif (-not $wsId) { throw \"Workspace 'analytics' not found\" }\n\n$esId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Fitems?type=Eventstream\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='SensorIngestion'] | [0].id\" -o tsv)\nif (-not $esId) { throw \"Eventstream 'SensorIngestion' not found\" }\n\n# 2. Get definition (handles LRO via Location header)\n$token = (az account get-access-token --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" --query accessToken -o tsv)\n$ps5 = @{}; if ($PSVersionTable.PSVersion.Major -lt 6) { $ps5.UseBasicParsing = $true }\n$response = Invoke-WebRequest @ps5 -Method Post `\n  -Uri \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002FgetDefinition\" `\n  -Headers @{ Authorization = \"Bearer $token\"; \"Content-Type\" = \"application\u002Fjson\" } `\n  -Body '{}'\n\nif ($response.StatusCode -eq 202) {\n    $location = $response.Headers['Location']\n    if ($location -is [array]) { $location = $location[0] }\n    if (-not $location) { throw \"LRO response missing Location header\" }\n    $ra = $response.Headers['Retry-After']\n    if ($ra -is [array]) { $ra = $ra[0] }\n    $retryAfter = if ($ra) { [int]$ra } else { 5 }\n    $def = $null\n    for ($i = 0; $i -lt 12; $i++) {\n        Start-Sleep -Seconds $retryAfter\n        $poll = Invoke-RestMethod -Uri $location -Headers @{ Authorization = \"Bearer $token\" }\n        if ($poll.status -eq 'Succeeded') {\n            $def = Invoke-RestMethod -Uri \"$location\u002Fresult\" `\n              -Headers @{ Authorization = \"Bearer $token\" }\n            break\n        } elseif ($poll.status -in @('Failed', 'Cancelled')) {\n            throw \"getDefinition LRO $($poll.status): $($poll.error.message)\"\n        }\n    }\n    if (-not $def -or -not $def.definition) { throw \"getDefinition LRO timed out (last status: $(if ($poll) { $poll.status } else { 'unknown' }))\" }\n} else {\n    $def = $response.Content | ConvertFrom-Json\n}\n\n# 3. Decode eventstreamProperties.json part (holds retention + throughput)\n$propsPart = $def.definition.parts | Where-Object { $_.path -eq 'eventstreamProperties.json' } | Select-Object -First 1\nif ($propsPart) {\n    $props = [Text.Encoding]::UTF8.GetString(\n      [Convert]::FromBase64String($propsPart.payload)) | ConvertFrom-Json\n    Write-Host \"Retention: $($props.retentionTimeInDays) days\"\n    Write-Host \"Throughput Level: $($props.eventThroughputLevel)\"\n} else {\n    # Fall back to topology-level properties (older format)\n    $esPart = $def.definition.parts | Where-Object { $_.path -eq 'eventstream.json' } | Select-Object -First 1\n    if (-not $esPart) { throw \"eventstream.json part not found in definition\" }\n    $topology = [Text.Encoding]::UTF8.GetString(\n      [Convert]::FromBase64String($esPart.payload)) | ConvertFrom-Json\n    if ($topology.properties.retentionTimeInDays) {\n        Write-Host \"Retention: $($topology.properties.retentionTimeInDays) days\"\n    } else {\n        Write-Host \"Retention: (platform default — not explicitly configured)\"\n    }\n    if ($topology.properties.eventThroughputLevel) {\n        Write-Host \"Throughput Level: $($topology.properties.eventThroughputLevel)\"\n    } else {\n        Write-Host \"Throughput Level: (platform default — not explicitly configured)\"\n    }\n}\n```\n\n### Example 4: Get Custom Endpoint Connection Metadata\n\n**Prompt**: \"Get the Kafka connection metadata for the Custom Endpoint source in my SensorIngestion Eventstream.\"\n\n> **Security**: The connection endpoint returns access keys. Get user confirmation before\n> calling it and avoid logging raw credentials.\n\n```powershell\n# 1. Discover workspace + Eventstream IDs (omitted for brevity)\n\n# 2. Get topology to find Custom Endpoint source ID\n$topo = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\n$ceSource = @($topo.sources | Where-Object { $_.type -eq 'CustomEndpoint' }) | Select-Object -First 1\nif (-not $ceSource) { throw \"No CustomEndpoint source found in this Eventstream\" }\n$sourceId = $ceSource.id\n\n# 3. Get connection metadata\n$conn = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Fsources\u002F$sourceId\u002Fconnection\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\nWrite-Host \"Fully Qualified Namespace: $($conn.fullyQualifiedNamespace)\"\nWrite-Host \"Event Hub Name:            $($conn.eventHubName)\"\nWrite-Host \"Kafka Bootstrap Server:    $($conn.fullyQualifiedNamespace):9093\"\n```\n\n### Example 5: Validate Eventstream Configuration\n\n**Prompt**: \"Check if my SensorIngestion Eventstream has any configuration issues.\"\n\n```powershell\n# 1. Discover workspace + Eventstream IDs (omitted for brevity)\n\n# 2. Get topology\n$topo = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\n# 3. Validate sources\n@($topo.sources | Where-Object { $_ -ne $null }) | ForEach-Object {\n    $src = $_\n    Write-Host \"Source: $($src.name) (type: $($src.type))\"\n    if ($src.properties.dataConnectionId) {\n        Write-Host \"  Cloud connection: $($src.properties.dataConnectionId)\"\n    }\n    if ($src.type -in @('AzureEventHub','AzureEventHubExtended','AzureIoTHub','ConfluentCloud','ApacheKafka','AmazonMSKKafka') -and\n        -not $src.properties.consumerGroupName) {\n        Write-Host \"  WARNING: No consumer group set (required for $($src.type))\"\n    }\n}\n\n# 4. Validate destinations\n@($topo.destinations | Where-Object { $_ -ne $null }) | ForEach-Object {\n    $dst = $_\n    Write-Host \"Destination: $($dst.name) (type: $($dst.type))\"\n    if (-not $dst.inputNodes -or $dst.inputNodes.Count -eq 0) {\n        Write-Host \"  WARNING: No input wired — destination will receive no events\"\n    }\n    if ($dst.type -eq 'Eventhouse' -and -not $dst.properties.tableName) {\n        Write-Host \"  WARNING: No target table configured\"\n    }\n    if ($dst.type -eq 'Eventhouse' -and $dst.properties.dataIngestionMode -eq 'DirectIngestion') {\n        if (-not $dst.properties.connectionName -or -not $dst.properties.mappingRuleName) {\n            Write-Host \"  WARNING: DirectIngestion requires connectionName and mappingRuleName\"\n        }\n    }\n}\n\n# 5. Check node count limits\n$ceCount = @($topo.sources | Where-Object { $_.type -eq 'CustomEndpoint' }).Count +\n           @($topo.destinations | Where-Object { $_.type -eq 'CustomEndpoint' }).Count +\n           @($topo.destinations | Where-Object { $_.type -eq 'Eventhouse' -and\n             $_.properties.dataIngestionMode -eq 'DirectIngestion' }).Count\nWrite-Host \"CustomEndpoint + DI count: $ceCount \u002F 11 limit\"\nif ($ceCount -gt 11) {\n    Write-Host \"WARNING: Exceeds limit of 11 CustomEndpoint + DirectIngestion nodes\"\n}\n```\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,104,142,149,156,719,723,728,735,851,856,970,976,1075,1078,1083,1112,1117,1123,1160,1293,1299,1320,1530,1595,1601,1606,1696,1699,1704,1737,1758,1764,1869,1882,2192,2263,2269,2315,2436,2466,2472,2748,2754,2759,2909,2944,2947,2952,2957,2963,3071,3077,3211,3217,3230,3275,3278,3283,3289,3428,3434,3473,3479,3515,3518,3524,3606,3612,3622,3795,3801,3810,4095,4101,4110,4137,4710,4716,4725,4737,4888,4894,4903,5259],{"type":42,"tag":43,"props":44,"children":45},"element","blockquote",{},[46,66],{"type":42,"tag":47,"props":48,"children":49},"p",{},[50,57,59,64],{"type":42,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":55,"value":56},"text","Update Check — ONCE PER SESSION (mandatory)",{"type":55,"value":58},"\nThe first time this skill is used in a session, run the ",{"type":42,"tag":51,"props":60,"children":61},{},[62],{"type":55,"value":63},"check-updates",{"type":55,"value":65}," skill before proceeding.",{"type":42,"tag":67,"props":68,"children":69},"ul",{},[70,89,99],{"type":42,"tag":71,"props":72,"children":73},"li",{},[74,79,81,87],{"type":42,"tag":51,"props":75,"children":76},{},[77],{"type":55,"value":78},"GitHub Copilot CLI \u002F VS Code",{"type":55,"value":80},": invoke the ",{"type":42,"tag":82,"props":83,"children":85},"code",{"className":84},[],[86],{"type":55,"value":63},{"type":55,"value":88}," skill.",{"type":42,"tag":71,"props":90,"children":91},{},[92,97],{"type":42,"tag":51,"props":93,"children":94},{},[95],{"type":55,"value":96},"Claude Code \u002F Cowork \u002F Cursor \u002F Windsurf \u002F Codex",{"type":55,"value":98},": compare local vs remote package.json version.",{"type":42,"tag":71,"props":100,"children":101},{},[102],{"type":55,"value":103},"Skip if the check was already performed earlier in this session.",{"type":42,"tag":43,"props":105,"children":106},{},[107,115],{"type":42,"tag":47,"props":108,"children":109},{},[110],{"type":42,"tag":51,"props":111,"children":112},{},[113],{"type":55,"value":114},"CRITICAL NOTES",{"type":42,"tag":116,"props":117,"children":118},"ol",{},[119,124,129],{"type":42,"tag":71,"props":120,"children":121},{},[122],{"type":55,"value":123},"To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering",{"type":42,"tag":71,"props":125,"children":126},{},[127],{"type":55,"value":128},"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":42,"tag":71,"props":130,"children":131},{},[132,134,140],{"type":55,"value":133},"Eventstream ≠ Eventhouse. Eventstream is a real-time event ingestion and routing pipeline. For KQL queries, use ",{"type":42,"tag":82,"props":135,"children":137},{"className":136},[],[138],{"type":55,"value":139},"eventhouse-consumption-cli",{"type":55,"value":141},".",{"type":42,"tag":143,"props":144,"children":146},"h1",{"id":145},"eventstream-consumption-cli-skill",[147],{"type":55,"value":148},"Eventstream Consumption — CLI Skill",{"type":42,"tag":150,"props":151,"children":153},"h2",{"id":152},"table-of-contents",[154],{"type":55,"value":155},"Table of Contents",{"type":42,"tag":157,"props":158,"children":159},"table",{},[160,184],{"type":42,"tag":161,"props":162,"children":163},"thead",{},[164],{"type":42,"tag":165,"props":166,"children":167},"tr",{},[168,174,179],{"type":42,"tag":169,"props":170,"children":171},"th",{},[172],{"type":55,"value":173},"Task",{"type":42,"tag":169,"props":175,"children":176},{},[177],{"type":55,"value":178},"Reference",{"type":42,"tag":169,"props":180,"children":181},{},[182],{"type":55,"value":183},"Notes",{"type":42,"tag":185,"props":186,"children":187},"tbody",{},[188,231,251,271,293,315,335,355,383,422,449,476,498,520,542,564,586,608,628,650,672,692],{"type":42,"tag":165,"props":189,"children":190},{},[191,197,207],{"type":42,"tag":192,"props":193,"children":194},"td",{},[195],{"type":55,"value":196},"Finding Workspaces and Items in Fabric",{"type":42,"tag":192,"props":198,"children":199},{},[200],{"type":42,"tag":201,"props":202,"children":204},"a",{"href":203},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#finding-workspaces-and-items-in-fabric",[205],{"type":55,"value":206},"COMMON-CLI.md § Finding Workspaces and Items in Fabric",{"type":42,"tag":192,"props":208,"children":209},{},[210,215,217,223,225],{"type":42,"tag":51,"props":211,"children":212},{},[213],{"type":55,"value":214},"Mandatory",{"type":55,"value":216}," — ",{"type":42,"tag":218,"props":219,"children":220},"em",{},[221],{"type":55,"value":222},"READ link first",{"type":55,"value":224}," ",{"type":42,"tag":226,"props":227,"children":228},"span",{},[229],{"type":55,"value":230},"needed for finding workspace id by its name or item id by its name, item type, and workspace id",{"type":42,"tag":165,"props":232,"children":233},{},[234,239,248],{"type":42,"tag":192,"props":235,"children":236},{},[237],{"type":55,"value":238},"Fabric Topology & Key Concepts",{"type":42,"tag":192,"props":240,"children":241},{},[242],{"type":42,"tag":201,"props":243,"children":245},{"href":244},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#fabric-topology--key-concepts",[246],{"type":55,"value":247},"COMMON-CORE.md § Fabric Topology & Key Concepts",{"type":42,"tag":192,"props":249,"children":250},{},[],{"type":42,"tag":165,"props":252,"children":253},{},[254,259,268],{"type":42,"tag":192,"props":255,"children":256},{},[257],{"type":55,"value":258},"Environment URLs",{"type":42,"tag":192,"props":260,"children":261},{},[262],{"type":42,"tag":201,"props":263,"children":265},{"href":264},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#environment-urls",[266],{"type":55,"value":267},"COMMON-CORE.md § Environment URLs",{"type":42,"tag":192,"props":269,"children":270},{},[],{"type":42,"tag":165,"props":272,"children":273},{},[274,279,288],{"type":42,"tag":192,"props":275,"children":276},{},[277],{"type":55,"value":278},"Authentication & Token Acquisition",{"type":42,"tag":192,"props":280,"children":281},{},[282],{"type":42,"tag":201,"props":283,"children":285},{"href":284},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#authentication--token-acquisition",[286],{"type":55,"value":287},"COMMON-CORE.md § Authentication & Token Acquisition",{"type":42,"tag":192,"props":289,"children":290},{},[291],{"type":55,"value":292},"Wrong audience = 401; read before any auth issue",{"type":42,"tag":165,"props":294,"children":295},{},[296,301,310],{"type":42,"tag":192,"props":297,"children":298},{},[299],{"type":55,"value":300},"Core Control-Plane REST APIs",{"type":42,"tag":192,"props":302,"children":303},{},[304],{"type":42,"tag":201,"props":305,"children":307},{"href":306},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#core-control-plane-rest-apis",[308],{"type":55,"value":309},"COMMON-CORE.md § Core Control-Plane REST APIs",{"type":42,"tag":192,"props":311,"children":312},{},[313],{"type":55,"value":314},"Includes pagination, LRO polling, and rate-limiting patterns",{"type":42,"tag":165,"props":316,"children":317},{},[318,323,332],{"type":42,"tag":192,"props":319,"children":320},{},[321],{"type":55,"value":322},"Gotchas, Best Practices & Troubleshooting",{"type":42,"tag":192,"props":324,"children":325},{},[326],{"type":42,"tag":201,"props":327,"children":329},{"href":328},"..\u002F..\u002Fcommon\u002FCOMMON-CORE.md#gotchas-best-practices--troubleshooting",[330],{"type":55,"value":331},"COMMON-CORE.md § Gotchas, Best Practices & Troubleshooting",{"type":42,"tag":192,"props":333,"children":334},{},[],{"type":42,"tag":165,"props":336,"children":337},{},[338,343,352],{"type":42,"tag":192,"props":339,"children":340},{},[341],{"type":55,"value":342},"Tool Selection Rationale",{"type":42,"tag":192,"props":344,"children":345},{},[346],{"type":42,"tag":201,"props":347,"children":349},{"href":348},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#tool-selection-rationale",[350],{"type":55,"value":351},"COMMON-CLI.md § Tool Selection Rationale",{"type":42,"tag":192,"props":353,"children":354},{},[],{"type":42,"tag":165,"props":356,"children":357},{},[358,363,372],{"type":42,"tag":192,"props":359,"children":360},{},[361],{"type":55,"value":362},"Authentication Recipes",{"type":42,"tag":192,"props":364,"children":365},{},[366],{"type":42,"tag":201,"props":367,"children":369},{"href":368},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#authentication-recipes",[370],{"type":55,"value":371},"COMMON-CLI.md § Authentication Recipes",{"type":42,"tag":192,"props":373,"children":374},{},[375,381],{"type":42,"tag":82,"props":376,"children":378},{"className":377},[],[379],{"type":55,"value":380},"az login",{"type":55,"value":382}," flows and token acquisition",{"type":42,"tag":165,"props":384,"children":385},{},[386,397,406],{"type":42,"tag":192,"props":387,"children":388},{},[389,391],{"type":55,"value":390},"Fabric Control-Plane API via ",{"type":42,"tag":82,"props":392,"children":394},{"className":393},[],[395],{"type":55,"value":396},"az rest",{"type":42,"tag":192,"props":398,"children":399},{},[400],{"type":42,"tag":201,"props":401,"children":403},{"href":402},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#fabric-control-plane-api-via-az-rest",[404],{"type":55,"value":405},"COMMON-CLI.md § Fabric Control-Plane API via az rest",{"type":42,"tag":192,"props":407,"children":408},{},[409,420],{"type":42,"tag":51,"props":410,"children":411},{},[412,414],{"type":55,"value":413},"Always pass ",{"type":42,"tag":82,"props":415,"children":417},{"className":416},[],[418],{"type":55,"value":419},"--resource",{"type":55,"value":421},"; includes pagination and LRO helpers",{"type":42,"tag":165,"props":423,"children":424},{},[425,430,439],{"type":42,"tag":192,"props":426,"children":427},{},[428],{"type":55,"value":429},"Gotchas & Troubleshooting (CLI-Specific)",{"type":42,"tag":192,"props":431,"children":432},{},[433],{"type":42,"tag":201,"props":434,"children":436},{"href":435},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#gotchas--troubleshooting-cli-specific",[437],{"type":55,"value":438},"COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)",{"type":42,"tag":192,"props":440,"children":441},{},[442,447],{"type":42,"tag":82,"props":443,"children":445},{"className":444},[],[446],{"type":55,"value":396},{"type":55,"value":448}," audience, shell escaping, token expiry",{"type":42,"tag":165,"props":450,"children":451},{},[452,457,466],{"type":42,"tag":192,"props":453,"children":454},{},[455],{"type":55,"value":456},"Quick Reference",{"type":42,"tag":192,"props":458,"children":459},{},[460],{"type":42,"tag":201,"props":461,"children":463},{"href":462},"..\u002F..\u002Fcommon\u002FCOMMON-CLI.md#quick-reference",[464],{"type":55,"value":465},"COMMON-CLI.md § Quick Reference",{"type":42,"tag":192,"props":467,"children":468},{},[469,474],{"type":42,"tag":82,"props":470,"children":472},{"className":471},[],[473],{"type":55,"value":396},{"type":55,"value":475}," template + token audience\u002Ftool matrix",{"type":42,"tag":165,"props":477,"children":478},{},[479,484,493],{"type":42,"tag":192,"props":480,"children":481},{},[482],{"type":55,"value":483},"Listing and Discovering Eventstreams",{"type":42,"tag":192,"props":485,"children":486},{},[487],{"type":42,"tag":201,"props":488,"children":490},{"href":489},"..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#listing-and-discovering-eventstreams",[491],{"type":55,"value":492},"EVENTSTREAM-CONSUMPTION-CORE.md § Listing and Discovering Eventstreams",{"type":42,"tag":192,"props":494,"children":495},{},[496],{"type":55,"value":497},"List, Get, Search across workspaces",{"type":42,"tag":165,"props":499,"children":500},{},[501,506,515],{"type":42,"tag":192,"props":502,"children":503},{},[504],{"type":55,"value":505},"Inspecting Eventstream Topology",{"type":42,"tag":192,"props":507,"children":508},{},[509],{"type":42,"tag":201,"props":510,"children":512},{"href":511},"..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#inspecting-eventstream-topology",[513],{"type":55,"value":514},"EVENTSTREAM-CONSUMPTION-CORE.md § Inspecting Eventstream Topology",{"type":42,"tag":192,"props":516,"children":517},{},[518],{"type":55,"value":519},"Decode base64 definition → trace graph flow",{"type":42,"tag":165,"props":521,"children":522},{},[523,528,537],{"type":42,"tag":192,"props":524,"children":525},{},[526],{"type":55,"value":527},"Monitoring Eventstream Health",{"type":42,"tag":192,"props":529,"children":530},{},[531],{"type":42,"tag":201,"props":532,"children":534},{"href":533},"..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#monitoring-eventstream-health",[535],{"type":55,"value":536},"EVENTSTREAM-CONSUMPTION-CORE.md § Monitoring Eventstream Health",{"type":42,"tag":192,"props":538,"children":539},{},[540],{"type":55,"value":541},"Retention and throughput checks",{"type":42,"tag":165,"props":543,"children":544},{},[545,550,559],{"type":42,"tag":192,"props":546,"children":547},{},[548],{"type":55,"value":549},"Source and Destination Status",{"type":42,"tag":192,"props":551,"children":552},{},[553],{"type":42,"tag":201,"props":554,"children":556},{"href":555},"..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#source-and-destination-status",[557],{"type":55,"value":558},"EVENTSTREAM-CONSUMPTION-CORE.md § Source and Destination Status",{"type":42,"tag":192,"props":560,"children":561},{},[562],{"type":55,"value":563},"Validation checklist for sources and destinations",{"type":42,"tag":165,"props":565,"children":566},{},[567,572,581],{"type":42,"tag":192,"props":568,"children":569},{},[570],{"type":55,"value":571},"Integration with Downstream Analytics",{"type":42,"tag":192,"props":573,"children":574},{},[575],{"type":42,"tag":201,"props":576,"children":578},{"href":577},"..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#integration-with-downstream-analytics",[579],{"type":55,"value":580},"EVENTSTREAM-CONSUMPTION-CORE.md § Integration with Downstream Analytics",{"type":42,"tag":192,"props":582,"children":583},{},[584],{"type":55,"value":585},"Eventhouse, Lakehouse, Activator, Real-Time Hub",{"type":42,"tag":165,"props":587,"children":588},{},[589,594,603],{"type":42,"tag":192,"props":590,"children":591},{},[592],{"type":55,"value":593},"Gotchas and Troubleshooting Reference",{"type":42,"tag":192,"props":595,"children":596},{},[597],{"type":42,"tag":201,"props":598,"children":600},{"href":599},"..\u002F..\u002Fcommon\u002FEVENTSTREAM-CONSUMPTION-CORE.md#gotchas-and-troubleshooting-reference",[601],{"type":55,"value":602},"EVENTSTREAM-CONSUMPTION-CORE.md § Gotchas and Troubleshooting Reference",{"type":42,"tag":192,"props":604,"children":605},{},[606],{"type":55,"value":607},"10 common issues with causes and fixes",{"type":42,"tag":165,"props":609,"children":610},{},[611,616,625],{"type":42,"tag":192,"props":612,"children":613},{},[614],{"type":55,"value":615},"List Eventstreams",{"type":42,"tag":192,"props":617,"children":618},{},[619],{"type":42,"tag":201,"props":620,"children":622},{"href":621},"#list-eventstreams",[623],{"type":55,"value":624},"SKILL.md § List Eventstreams",{"type":42,"tag":192,"props":626,"children":627},{},[],{"type":42,"tag":165,"props":629,"children":630},{},[631,636,645],{"type":42,"tag":192,"props":632,"children":633},{},[634],{"type":55,"value":635},"Inspect Eventstream Topology",{"type":42,"tag":192,"props":637,"children":638},{},[639],{"type":42,"tag":201,"props":640,"children":642},{"href":641},"#inspect-eventstream-topology",[643],{"type":55,"value":644},"SKILL.md § Inspect Eventstream Topology",{"type":42,"tag":192,"props":646,"children":647},{},[648],{"type":55,"value":649},"Decode and explore the graph",{"type":42,"tag":165,"props":651,"children":652},{},[653,658,667],{"type":42,"tag":192,"props":654,"children":655},{},[656],{"type":55,"value":657},"Get Custom Endpoint Connection String",{"type":42,"tag":192,"props":659,"children":660},{},[661],{"type":42,"tag":201,"props":662,"children":664},{"href":663},"#get-custom-endpoint-connection-string",[665],{"type":55,"value":666},"SKILL.md § Get Custom Endpoint Connection String",{"type":42,"tag":192,"props":668,"children":669},{},[670],{"type":55,"value":671},"Retrieve Kafka\u002FEH connection via Topology API",{"type":42,"tag":165,"props":673,"children":674},{},[675,680,689],{"type":42,"tag":192,"props":676,"children":677},{},[678],{"type":55,"value":679},"Validate Eventstream Configuration",{"type":42,"tag":192,"props":681,"children":682},{},[683],{"type":42,"tag":201,"props":684,"children":686},{"href":685},"#validate-eventstream-configuration",[687],{"type":55,"value":688},"SKILL.md § Validate Eventstream Configuration",{"type":42,"tag":192,"props":690,"children":691},{},[],{"type":42,"tag":165,"props":693,"children":694},{},[695,700,709],{"type":42,"tag":192,"props":696,"children":697},{},[698],{"type":55,"value":699},"Gotchas, Rules, Troubleshooting",{"type":42,"tag":192,"props":701,"children":702},{},[703],{"type":42,"tag":201,"props":704,"children":706},{"href":705},"#gotchas-rules-troubleshooting",[707],{"type":55,"value":708},"SKILL.md § Gotchas, Rules, Troubleshooting",{"type":42,"tag":192,"props":710,"children":711},{},[712,717],{"type":42,"tag":51,"props":713,"children":714},{},[715],{"type":55,"value":716},"MUST DO \u002F AVOID \u002F PREFER",{"type":55,"value":718}," checklists",{"type":42,"tag":720,"props":721,"children":722},"hr",{},[],{"type":42,"tag":150,"props":724,"children":726},{"id":725},"list-eventstreams",[727],{"type":55,"value":615},{"type":42,"tag":729,"props":730,"children":732},"h3",{"id":731},"list-all-eventstreams-in-a-workspace",[733],{"type":55,"value":734},"List All Eventstreams in a Workspace",{"type":42,"tag":736,"props":737,"children":742},"pre",{"className":738,"code":739,"language":740,"meta":741,"style":741},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","az rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n","bash","",[743],{"type":42,"tag":82,"props":744,"children":745},{"__ignoreMap":741},[746,779,828],{"type":42,"tag":226,"props":747,"children":750},{"class":748,"line":749},"line",1,[751,757,763,768,773],{"type":42,"tag":226,"props":752,"children":754},{"style":753},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[755],{"type":55,"value":756},"az",{"type":42,"tag":226,"props":758,"children":760},{"style":759},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[761],{"type":55,"value":762}," rest",{"type":42,"tag":226,"props":764,"children":765},{"style":759},[766],{"type":55,"value":767}," --method",{"type":42,"tag":226,"props":769,"children":770},{"style":759},[771],{"type":55,"value":772}," GET",{"type":42,"tag":226,"props":774,"children":776},{"style":775},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[777],{"type":55,"value":778}," \\\n",{"type":42,"tag":226,"props":780,"children":782},{"class":748,"line":781},2,[783,788,794,799,804,809,814,819,824],{"type":42,"tag":226,"props":784,"children":785},{"style":759},[786],{"type":55,"value":787},"  --url",{"type":42,"tag":226,"props":789,"children":791},{"style":790},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[792],{"type":55,"value":793}," \"",{"type":42,"tag":226,"props":795,"children":796},{"style":759},[797],{"type":55,"value":798},"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F",{"type":42,"tag":226,"props":800,"children":801},{"style":790},[802],{"type":55,"value":803},"${",{"type":42,"tag":226,"props":805,"children":806},{"style":775},[807],{"type":55,"value":808},"WORKSPACE_ID",{"type":42,"tag":226,"props":810,"children":811},{"style":790},[812],{"type":55,"value":813},"}",{"type":42,"tag":226,"props":815,"children":816},{"style":759},[817],{"type":55,"value":818},"\u002Feventstreams",{"type":42,"tag":226,"props":820,"children":821},{"style":790},[822],{"type":55,"value":823},"\"",{"type":42,"tag":226,"props":825,"children":826},{"style":775},[827],{"type":55,"value":778},{"type":42,"tag":226,"props":829,"children":831},{"class":748,"line":830},3,[832,837,841,846],{"type":42,"tag":226,"props":833,"children":834},{"style":759},[835],{"type":55,"value":836},"  --resource",{"type":42,"tag":226,"props":838,"children":839},{"style":790},[840],{"type":55,"value":793},{"type":42,"tag":226,"props":842,"children":843},{"style":759},[844],{"type":55,"value":845},"https:\u002F\u002Fapi.fabric.microsoft.com",{"type":42,"tag":226,"props":847,"children":848},{"style":790},[849],{"type":55,"value":850},"\"\n",{"type":42,"tag":47,"props":852,"children":853},{},[854],{"type":55,"value":855},"Returns an array of Eventstream items. Use JMESPath to filter by name:",{"type":42,"tag":736,"props":857,"children":859},{"className":738,"code":858,"language":740,"meta":741,"style":741},"az rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --query \"value[?displayName=='my-eventstream']\"\n",[860],{"type":42,"tag":82,"props":861,"children":862},{"__ignoreMap":741},[863,886,925,948],{"type":42,"tag":226,"props":864,"children":865},{"class":748,"line":749},[866,870,874,878,882],{"type":42,"tag":226,"props":867,"children":868},{"style":753},[869],{"type":55,"value":756},{"type":42,"tag":226,"props":871,"children":872},{"style":759},[873],{"type":55,"value":762},{"type":42,"tag":226,"props":875,"children":876},{"style":759},[877],{"type":55,"value":767},{"type":42,"tag":226,"props":879,"children":880},{"style":759},[881],{"type":55,"value":772},{"type":42,"tag":226,"props":883,"children":884},{"style":775},[885],{"type":55,"value":778},{"type":42,"tag":226,"props":887,"children":888},{"class":748,"line":781},[889,893,897,901,905,909,913,917,921],{"type":42,"tag":226,"props":890,"children":891},{"style":759},[892],{"type":55,"value":787},{"type":42,"tag":226,"props":894,"children":895},{"style":790},[896],{"type":55,"value":793},{"type":42,"tag":226,"props":898,"children":899},{"style":759},[900],{"type":55,"value":798},{"type":42,"tag":226,"props":902,"children":903},{"style":790},[904],{"type":55,"value":803},{"type":42,"tag":226,"props":906,"children":907},{"style":775},[908],{"type":55,"value":808},{"type":42,"tag":226,"props":910,"children":911},{"style":790},[912],{"type":55,"value":813},{"type":42,"tag":226,"props":914,"children":915},{"style":759},[916],{"type":55,"value":818},{"type":42,"tag":226,"props":918,"children":919},{"style":790},[920],{"type":55,"value":823},{"type":42,"tag":226,"props":922,"children":923},{"style":775},[924],{"type":55,"value":778},{"type":42,"tag":226,"props":926,"children":927},{"class":748,"line":830},[928,932,936,940,944],{"type":42,"tag":226,"props":929,"children":930},{"style":759},[931],{"type":55,"value":836},{"type":42,"tag":226,"props":933,"children":934},{"style":790},[935],{"type":55,"value":793},{"type":42,"tag":226,"props":937,"children":938},{"style":759},[939],{"type":55,"value":845},{"type":42,"tag":226,"props":941,"children":942},{"style":790},[943],{"type":55,"value":823},{"type":42,"tag":226,"props":945,"children":946},{"style":775},[947],{"type":55,"value":778},{"type":42,"tag":226,"props":949,"children":951},{"class":748,"line":950},4,[952,957,961,966],{"type":42,"tag":226,"props":953,"children":954},{"style":759},[955],{"type":55,"value":956},"  --query",{"type":42,"tag":226,"props":958,"children":959},{"style":790},[960],{"type":55,"value":793},{"type":42,"tag":226,"props":962,"children":963},{"style":759},[964],{"type":55,"value":965},"value[?displayName=='my-eventstream']",{"type":42,"tag":226,"props":967,"children":968},{"style":790},[969],{"type":55,"value":850},{"type":42,"tag":729,"props":971,"children":973},{"id":972},"get-eventstream-details",[974],{"type":55,"value":975},"Get Eventstream Details",{"type":42,"tag":736,"props":977,"children":979},{"className":738,"code":978,"language":740,"meta":741,"style":741},"az rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n",[980],{"type":42,"tag":82,"props":981,"children":982},{"__ignoreMap":741},[983,1006,1056],{"type":42,"tag":226,"props":984,"children":985},{"class":748,"line":749},[986,990,994,998,1002],{"type":42,"tag":226,"props":987,"children":988},{"style":753},[989],{"type":55,"value":756},{"type":42,"tag":226,"props":991,"children":992},{"style":759},[993],{"type":55,"value":762},{"type":42,"tag":226,"props":995,"children":996},{"style":759},[997],{"type":55,"value":767},{"type":42,"tag":226,"props":999,"children":1000},{"style":759},[1001],{"type":55,"value":772},{"type":42,"tag":226,"props":1003,"children":1004},{"style":775},[1005],{"type":55,"value":778},{"type":42,"tag":226,"props":1007,"children":1008},{"class":748,"line":781},[1009,1013,1017,1021,1025,1029,1033,1038,1042,1047,1052],{"type":42,"tag":226,"props":1010,"children":1011},{"style":759},[1012],{"type":55,"value":787},{"type":42,"tag":226,"props":1014,"children":1015},{"style":790},[1016],{"type":55,"value":793},{"type":42,"tag":226,"props":1018,"children":1019},{"style":759},[1020],{"type":55,"value":798},{"type":42,"tag":226,"props":1022,"children":1023},{"style":790},[1024],{"type":55,"value":803},{"type":42,"tag":226,"props":1026,"children":1027},{"style":775},[1028],{"type":55,"value":808},{"type":42,"tag":226,"props":1030,"children":1031},{"style":790},[1032],{"type":55,"value":813},{"type":42,"tag":226,"props":1034,"children":1035},{"style":759},[1036],{"type":55,"value":1037},"\u002Feventstreams\u002F",{"type":42,"tag":226,"props":1039,"children":1040},{"style":790},[1041],{"type":55,"value":803},{"type":42,"tag":226,"props":1043,"children":1044},{"style":775},[1045],{"type":55,"value":1046},"EVENTSTREAM_ID",{"type":42,"tag":226,"props":1048,"children":1049},{"style":790},[1050],{"type":55,"value":1051},"}\"",{"type":42,"tag":226,"props":1053,"children":1054},{"style":775},[1055],{"type":55,"value":778},{"type":42,"tag":226,"props":1057,"children":1058},{"class":748,"line":830},[1059,1063,1067,1071],{"type":42,"tag":226,"props":1060,"children":1061},{"style":759},[1062],{"type":55,"value":836},{"type":42,"tag":226,"props":1064,"children":1065},{"style":790},[1066],{"type":55,"value":793},{"type":42,"tag":226,"props":1068,"children":1069},{"style":759},[1070],{"type":55,"value":845},{"type":42,"tag":226,"props":1072,"children":1073},{"style":790},[1074],{"type":55,"value":850},{"type":42,"tag":720,"props":1076,"children":1077},{},[],{"type":42,"tag":150,"props":1079,"children":1081},{"id":1080},"inspect-eventstream-topology",[1082],{"type":55,"value":635},{"type":42,"tag":43,"props":1084,"children":1085},{},[1086],{"type":42,"tag":47,"props":1087,"children":1088},{},[1089,1094,1096,1102,1104,1110],{"type":42,"tag":51,"props":1090,"children":1091},{},[1092],{"type":55,"value":1093},"Tip",{"type":55,"value":1095},": The Topology API (",{"type":42,"tag":82,"props":1097,"children":1099},{"className":1098},[],[1100],{"type":55,"value":1101},"GET ...\u002Feventstreams\u002F{id}\u002Ftopology",{"type":55,"value":1103},") returns runtime status, error info, and node IDs without base64 decoding. Prefer it for operational inspection (health checks, connection retrieval). Use ",{"type":42,"tag":82,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":55,"value":1109},"POST ...\u002FgetDefinition",{"type":55,"value":1111}," (below) when you need the full authoring-time graph structure for topology modification.",{"type":42,"tag":47,"props":1113,"children":1114},{},[1115],{"type":55,"value":1116},"Retrieve the Eventstream definition and decode it to inspect the full graph topology.",{"type":42,"tag":729,"props":1118,"children":1120},{"id":1119},"step-1-get-the-definition",[1121],{"type":55,"value":1122},"Step 1: Get the Definition",{"type":42,"tag":43,"props":1124,"children":1125},{},[1126],{"type":42,"tag":47,"props":1127,"children":1128},{},[1129,1134,1136,1141,1143,1149,1151,1159],{"type":42,"tag":51,"props":1130,"children":1131},{},[1132],{"type":55,"value":1133},"API Note",{"type":55,"value":1135},": The Eventstream Definition API uses ",{"type":42,"tag":82,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":55,"value":1109},{"type":55,"value":1142},", not ",{"type":42,"tag":82,"props":1144,"children":1146},{"className":1145},[],[1147],{"type":55,"value":1148},"GET ...\u002Fdefinition",{"type":55,"value":1150},". This follows the Fabric Items Definition pattern. See ",{"type":42,"tag":201,"props":1152,"children":1156},{"href":1153,"rel":1154},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ffabric\u002Freal-time-intelligence\u002Fevent-streams\u002Fapi-get-eventstream-definition",[1155],"nofollow",[1157],{"type":55,"value":1158},"official docs",{"type":55,"value":141},{"type":42,"tag":736,"props":1161,"children":1163},{"className":738,"code":1162,"language":740,"meta":741,"style":741},"az rest --method POST \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002FgetDefinition\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --body '{}'\n",[1164],{"type":42,"tag":82,"props":1165,"children":1166},{"__ignoreMap":741},[1167,1191,1247,1270],{"type":42,"tag":226,"props":1168,"children":1169},{"class":748,"line":749},[1170,1174,1178,1182,1187],{"type":42,"tag":226,"props":1171,"children":1172},{"style":753},[1173],{"type":55,"value":756},{"type":42,"tag":226,"props":1175,"children":1176},{"style":759},[1177],{"type":55,"value":762},{"type":42,"tag":226,"props":1179,"children":1180},{"style":759},[1181],{"type":55,"value":767},{"type":42,"tag":226,"props":1183,"children":1184},{"style":759},[1185],{"type":55,"value":1186}," POST",{"type":42,"tag":226,"props":1188,"children":1189},{"style":775},[1190],{"type":55,"value":778},{"type":42,"tag":226,"props":1192,"children":1193},{"class":748,"line":781},[1194,1198,1202,1206,1210,1214,1218,1222,1226,1230,1234,1239,1243],{"type":42,"tag":226,"props":1195,"children":1196},{"style":759},[1197],{"type":55,"value":787},{"type":42,"tag":226,"props":1199,"children":1200},{"style":790},[1201],{"type":55,"value":793},{"type":42,"tag":226,"props":1203,"children":1204},{"style":759},[1205],{"type":55,"value":798},{"type":42,"tag":226,"props":1207,"children":1208},{"style":790},[1209],{"type":55,"value":803},{"type":42,"tag":226,"props":1211,"children":1212},{"style":775},[1213],{"type":55,"value":808},{"type":42,"tag":226,"props":1215,"children":1216},{"style":790},[1217],{"type":55,"value":813},{"type":42,"tag":226,"props":1219,"children":1220},{"style":759},[1221],{"type":55,"value":1037},{"type":42,"tag":226,"props":1223,"children":1224},{"style":790},[1225],{"type":55,"value":803},{"type":42,"tag":226,"props":1227,"children":1228},{"style":775},[1229],{"type":55,"value":1046},{"type":42,"tag":226,"props":1231,"children":1232},{"style":790},[1233],{"type":55,"value":813},{"type":42,"tag":226,"props":1235,"children":1236},{"style":759},[1237],{"type":55,"value":1238},"\u002FgetDefinition",{"type":42,"tag":226,"props":1240,"children":1241},{"style":790},[1242],{"type":55,"value":823},{"type":42,"tag":226,"props":1244,"children":1245},{"style":775},[1246],{"type":55,"value":778},{"type":42,"tag":226,"props":1248,"children":1249},{"class":748,"line":830},[1250,1254,1258,1262,1266],{"type":42,"tag":226,"props":1251,"children":1252},{"style":759},[1253],{"type":55,"value":836},{"type":42,"tag":226,"props":1255,"children":1256},{"style":790},[1257],{"type":55,"value":793},{"type":42,"tag":226,"props":1259,"children":1260},{"style":759},[1261],{"type":55,"value":845},{"type":42,"tag":226,"props":1263,"children":1264},{"style":790},[1265],{"type":55,"value":823},{"type":42,"tag":226,"props":1267,"children":1268},{"style":775},[1269],{"type":55,"value":778},{"type":42,"tag":226,"props":1271,"children":1272},{"class":748,"line":950},[1273,1278,1283,1288],{"type":42,"tag":226,"props":1274,"children":1275},{"style":759},[1276],{"type":55,"value":1277},"  --body",{"type":42,"tag":226,"props":1279,"children":1280},{"style":790},[1281],{"type":55,"value":1282}," '",{"type":42,"tag":226,"props":1284,"children":1285},{"style":759},[1286],{"type":55,"value":1287},"{}",{"type":42,"tag":226,"props":1289,"children":1290},{"style":790},[1291],{"type":55,"value":1292},"'\n",{"type":42,"tag":729,"props":1294,"children":1296},{"id":1295},"step-2-decode-the-topology",[1297],{"type":55,"value":1298},"Step 2: Decode the Topology",{"type":42,"tag":47,"props":1300,"children":1301},{},[1302,1304,1310,1312,1318],{"type":55,"value":1303},"Extract the ",{"type":42,"tag":82,"props":1305,"children":1307},{"className":1306},[],[1308],{"type":55,"value":1309},"eventstream.json",{"type":55,"value":1311}," part's ",{"type":42,"tag":82,"props":1313,"children":1315},{"className":1314},[],[1316],{"type":55,"value":1317},"payload",{"type":55,"value":1319}," field and base64-decode it:",{"type":42,"tag":736,"props":1321,"children":1323},{"className":738,"code":1322,"language":740,"meta":741,"style":741},"# Using jq + base64 (Linux; on macOS use base64 -D instead of -d)\naz rest --method POST \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002FgetDefinition\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  --body '{}' \\\n  | jq -r '.definition.parts[] | select(.path==\"eventstream.json\") | .payload' \\\n  | base64 -d | jq .\n",[1324],{"type":42,"tag":82,"props":1325,"children":1326},{"__ignoreMap":741},[1327,1336,1359,1414,1437,1462,1498],{"type":42,"tag":226,"props":1328,"children":1329},{"class":748,"line":749},[1330],{"type":42,"tag":226,"props":1331,"children":1333},{"style":1332},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1334],{"type":55,"value":1335},"# Using jq + base64 (Linux; on macOS use base64 -D instead of -d)\n",{"type":42,"tag":226,"props":1337,"children":1338},{"class":748,"line":781},[1339,1343,1347,1351,1355],{"type":42,"tag":226,"props":1340,"children":1341},{"style":753},[1342],{"type":55,"value":756},{"type":42,"tag":226,"props":1344,"children":1345},{"style":759},[1346],{"type":55,"value":762},{"type":42,"tag":226,"props":1348,"children":1349},{"style":759},[1350],{"type":55,"value":767},{"type":42,"tag":226,"props":1352,"children":1353},{"style":759},[1354],{"type":55,"value":1186},{"type":42,"tag":226,"props":1356,"children":1357},{"style":775},[1358],{"type":55,"value":778},{"type":42,"tag":226,"props":1360,"children":1361},{"class":748,"line":830},[1362,1366,1370,1374,1378,1382,1386,1390,1394,1398,1402,1406,1410],{"type":42,"tag":226,"props":1363,"children":1364},{"style":759},[1365],{"type":55,"value":787},{"type":42,"tag":226,"props":1367,"children":1368},{"style":790},[1369],{"type":55,"value":793},{"type":42,"tag":226,"props":1371,"children":1372},{"style":759},[1373],{"type":55,"value":798},{"type":42,"tag":226,"props":1375,"children":1376},{"style":790},[1377],{"type":55,"value":803},{"type":42,"tag":226,"props":1379,"children":1380},{"style":775},[1381],{"type":55,"value":808},{"type":42,"tag":226,"props":1383,"children":1384},{"style":790},[1385],{"type":55,"value":813},{"type":42,"tag":226,"props":1387,"children":1388},{"style":759},[1389],{"type":55,"value":1037},{"type":42,"tag":226,"props":1391,"children":1392},{"style":790},[1393],{"type":55,"value":803},{"type":42,"tag":226,"props":1395,"children":1396},{"style":775},[1397],{"type":55,"value":1046},{"type":42,"tag":226,"props":1399,"children":1400},{"style":790},[1401],{"type":55,"value":813},{"type":42,"tag":226,"props":1403,"children":1404},{"style":759},[1405],{"type":55,"value":1238},{"type":42,"tag":226,"props":1407,"children":1408},{"style":790},[1409],{"type":55,"value":823},{"type":42,"tag":226,"props":1411,"children":1412},{"style":775},[1413],{"type":55,"value":778},{"type":42,"tag":226,"props":1415,"children":1416},{"class":748,"line":950},[1417,1421,1425,1429,1433],{"type":42,"tag":226,"props":1418,"children":1419},{"style":759},[1420],{"type":55,"value":836},{"type":42,"tag":226,"props":1422,"children":1423},{"style":790},[1424],{"type":55,"value":793},{"type":42,"tag":226,"props":1426,"children":1427},{"style":759},[1428],{"type":55,"value":845},{"type":42,"tag":226,"props":1430,"children":1431},{"style":790},[1432],{"type":55,"value":823},{"type":42,"tag":226,"props":1434,"children":1435},{"style":775},[1436],{"type":55,"value":778},{"type":42,"tag":226,"props":1438,"children":1440},{"class":748,"line":1439},5,[1441,1445,1449,1453,1458],{"type":42,"tag":226,"props":1442,"children":1443},{"style":759},[1444],{"type":55,"value":1277},{"type":42,"tag":226,"props":1446,"children":1447},{"style":790},[1448],{"type":55,"value":1282},{"type":42,"tag":226,"props":1450,"children":1451},{"style":759},[1452],{"type":55,"value":1287},{"type":42,"tag":226,"props":1454,"children":1455},{"style":790},[1456],{"type":55,"value":1457},"'",{"type":42,"tag":226,"props":1459,"children":1460},{"style":775},[1461],{"type":55,"value":778},{"type":42,"tag":226,"props":1463,"children":1465},{"class":748,"line":1464},6,[1466,1471,1476,1481,1485,1490,1494],{"type":42,"tag":226,"props":1467,"children":1468},{"style":790},[1469],{"type":55,"value":1470},"  |",{"type":42,"tag":226,"props":1472,"children":1473},{"style":753},[1474],{"type":55,"value":1475}," jq",{"type":42,"tag":226,"props":1477,"children":1478},{"style":759},[1479],{"type":55,"value":1480}," -r",{"type":42,"tag":226,"props":1482,"children":1483},{"style":790},[1484],{"type":55,"value":1282},{"type":42,"tag":226,"props":1486,"children":1487},{"style":759},[1488],{"type":55,"value":1489},".definition.parts[] | select(.path==\"eventstream.json\") | .payload",{"type":42,"tag":226,"props":1491,"children":1492},{"style":790},[1493],{"type":55,"value":1457},{"type":42,"tag":226,"props":1495,"children":1496},{"style":775},[1497],{"type":55,"value":778},{"type":42,"tag":226,"props":1499,"children":1501},{"class":748,"line":1500},7,[1502,1506,1511,1516,1521,1525],{"type":42,"tag":226,"props":1503,"children":1504},{"style":790},[1505],{"type":55,"value":1470},{"type":42,"tag":226,"props":1507,"children":1508},{"style":753},[1509],{"type":55,"value":1510}," base64",{"type":42,"tag":226,"props":1512,"children":1513},{"style":759},[1514],{"type":55,"value":1515}," -d",{"type":42,"tag":226,"props":1517,"children":1518},{"style":790},[1519],{"type":55,"value":1520}," |",{"type":42,"tag":226,"props":1522,"children":1523},{"style":753},[1524],{"type":55,"value":1475},{"type":42,"tag":226,"props":1526,"children":1527},{"style":759},[1528],{"type":55,"value":1529}," .\n",{"type":42,"tag":736,"props":1531,"children":1535},{"className":1532,"code":1533,"language":1534,"meta":741,"style":741},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# PowerShell (Windows)\n$def = az rest --method POST `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002FgetDefinition\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --body '{}' | ConvertFrom-Json\n$payload = ($def.definition.parts | Where-Object { $_.path -eq 'eventstream.json' }).payload\n[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($payload)) | ConvertFrom-Json | ConvertTo-Json -Depth 10\n","powershell",[1536],{"type":42,"tag":82,"props":1537,"children":1538},{"__ignoreMap":741},[1539,1547,1555,1563,1571,1579,1587],{"type":42,"tag":226,"props":1540,"children":1541},{"class":748,"line":749},[1542],{"type":42,"tag":226,"props":1543,"children":1544},{},[1545],{"type":55,"value":1546},"# PowerShell (Windows)\n",{"type":42,"tag":226,"props":1548,"children":1549},{"class":748,"line":781},[1550],{"type":42,"tag":226,"props":1551,"children":1552},{},[1553],{"type":55,"value":1554},"$def = az rest --method POST `\n",{"type":42,"tag":226,"props":1556,"children":1557},{"class":748,"line":830},[1558],{"type":42,"tag":226,"props":1559,"children":1560},{},[1561],{"type":55,"value":1562},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002FgetDefinition\" `\n",{"type":42,"tag":226,"props":1564,"children":1565},{"class":748,"line":950},[1566],{"type":42,"tag":226,"props":1567,"children":1568},{},[1569],{"type":55,"value":1570},"  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n",{"type":42,"tag":226,"props":1572,"children":1573},{"class":748,"line":1439},[1574],{"type":42,"tag":226,"props":1575,"children":1576},{},[1577],{"type":55,"value":1578},"  --body '{}' | ConvertFrom-Json\n",{"type":42,"tag":226,"props":1580,"children":1581},{"class":748,"line":1464},[1582],{"type":42,"tag":226,"props":1583,"children":1584},{},[1585],{"type":55,"value":1586},"$payload = ($def.definition.parts | Where-Object { $_.path -eq 'eventstream.json' }).payload\n",{"type":42,"tag":226,"props":1588,"children":1589},{"class":748,"line":1500},[1590],{"type":42,"tag":226,"props":1591,"children":1592},{},[1593],{"type":55,"value":1594},"[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($payload)) | ConvertFrom-Json | ConvertTo-Json -Depth 10\n",{"type":42,"tag":729,"props":1596,"children":1598},{"id":1597},"step-3-summarize-the-topology",[1599],{"type":55,"value":1600},"Step 3: Summarize the Topology",{"type":42,"tag":47,"props":1602,"children":1603},{},[1604],{"type":55,"value":1605},"After decoding, count and list each node type:",{"type":42,"tag":157,"props":1607,"children":1608},{},[1609,1625],{"type":42,"tag":161,"props":1610,"children":1611},{},[1612],{"type":42,"tag":165,"props":1613,"children":1614},{},[1615,1620],{"type":42,"tag":169,"props":1616,"children":1617},{},[1618],{"type":55,"value":1619},"Metric",{"type":42,"tag":169,"props":1621,"children":1622},{},[1623],{"type":55,"value":1624},"Path in decoded JSON",{"type":42,"tag":185,"props":1626,"children":1627},{},[1628,1645,1662,1679],{"type":42,"tag":165,"props":1629,"children":1630},{},[1631,1636],{"type":42,"tag":192,"props":1632,"children":1633},{},[1634],{"type":55,"value":1635},"Sources",{"type":42,"tag":192,"props":1637,"children":1638},{},[1639],{"type":42,"tag":82,"props":1640,"children":1642},{"className":1641},[],[1643],{"type":55,"value":1644},".sources[] | .name, .type",{"type":42,"tag":165,"props":1646,"children":1647},{},[1648,1653],{"type":42,"tag":192,"props":1649,"children":1650},{},[1651],{"type":55,"value":1652},"Destinations",{"type":42,"tag":192,"props":1654,"children":1655},{},[1656],{"type":42,"tag":82,"props":1657,"children":1659},{"className":1658},[],[1660],{"type":55,"value":1661},".destinations[] | .name, .type",{"type":42,"tag":165,"props":1663,"children":1664},{},[1665,1670],{"type":42,"tag":192,"props":1666,"children":1667},{},[1668],{"type":55,"value":1669},"Operators",{"type":42,"tag":192,"props":1671,"children":1672},{},[1673],{"type":42,"tag":82,"props":1674,"children":1676},{"className":1675},[],[1677],{"type":55,"value":1678},".operators[] | .name, .type",{"type":42,"tag":165,"props":1680,"children":1681},{},[1682,1687],{"type":42,"tag":192,"props":1683,"children":1684},{},[1685],{"type":55,"value":1686},"Streams",{"type":42,"tag":192,"props":1688,"children":1689},{},[1690],{"type":42,"tag":82,"props":1691,"children":1693},{"className":1692},[],[1694],{"type":55,"value":1695},".streams[] | .name, .type",{"type":42,"tag":720,"props":1697,"children":1698},{},[],{"type":42,"tag":150,"props":1700,"children":1702},{"id":1701},"get-custom-endpoint-connection-string",[1703],{"type":55,"value":657},{"type":42,"tag":47,"props":1705,"children":1706},{},[1707,1709,1714,1716,1721,1723,1728,1729,1735],{"type":55,"value":1708},"The ",{"type":42,"tag":82,"props":1710,"children":1712},{"className":1711},[],[1713],{"type":55,"value":1109},{"type":55,"value":1715}," endpoint returns ",{"type":42,"tag":51,"props":1717,"children":1718},{},[1719],{"type":55,"value":1720},"empty properties",{"type":55,"value":1722}," for Custom Endpoint sources. To retrieve the Kafka\u002FEvent Hub connection info, use the ",{"type":42,"tag":51,"props":1724,"children":1725},{},[1726],{"type":55,"value":1727},"Topology API",{"type":55,"value":224},{"type":42,"tag":82,"props":1730,"children":1732},{"className":1731},[],[1733],{"type":55,"value":1734},"\u002Fconnection",{"type":55,"value":1736}," endpoint.",{"type":42,"tag":43,"props":1738,"children":1739},{},[1740],{"type":42,"tag":47,"props":1741,"children":1742},{},[1743,1748,1750,1756],{"type":42,"tag":51,"props":1744,"children":1745},{},[1746],{"type":55,"value":1747},"Important",{"type":55,"value":1749},": This endpoint requires ",{"type":42,"tag":82,"props":1751,"children":1753},{"className":1752},[],[1754],{"type":55,"value":1755},"Eventstream.ReadWrite.All",{"type":55,"value":1757}," permission scope (not just Read).",{"type":42,"tag":729,"props":1759,"children":1761},{"id":1760},"step-1-get-the-topology-to-find-the-source-id",[1762],{"type":55,"value":1763},"Step 1: Get the Topology to Find the Source ID",{"type":42,"tag":736,"props":1765,"children":1767},{"className":738,"code":1766,"language":740,"meta":741,"style":741},"az rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002Ftopology\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n",[1768],{"type":42,"tag":82,"props":1769,"children":1770},{"__ignoreMap":741},[1771,1794,1850],{"type":42,"tag":226,"props":1772,"children":1773},{"class":748,"line":749},[1774,1778,1782,1786,1790],{"type":42,"tag":226,"props":1775,"children":1776},{"style":753},[1777],{"type":55,"value":756},{"type":42,"tag":226,"props":1779,"children":1780},{"style":759},[1781],{"type":55,"value":762},{"type":42,"tag":226,"props":1783,"children":1784},{"style":759},[1785],{"type":55,"value":767},{"type":42,"tag":226,"props":1787,"children":1788},{"style":759},[1789],{"type":55,"value":772},{"type":42,"tag":226,"props":1791,"children":1792},{"style":775},[1793],{"type":55,"value":778},{"type":42,"tag":226,"props":1795,"children":1796},{"class":748,"line":781},[1797,1801,1805,1809,1813,1817,1821,1825,1829,1833,1837,1842,1846],{"type":42,"tag":226,"props":1798,"children":1799},{"style":759},[1800],{"type":55,"value":787},{"type":42,"tag":226,"props":1802,"children":1803},{"style":790},[1804],{"type":55,"value":793},{"type":42,"tag":226,"props":1806,"children":1807},{"style":759},[1808],{"type":55,"value":798},{"type":42,"tag":226,"props":1810,"children":1811},{"style":790},[1812],{"type":55,"value":803},{"type":42,"tag":226,"props":1814,"children":1815},{"style":775},[1816],{"type":55,"value":808},{"type":42,"tag":226,"props":1818,"children":1819},{"style":790},[1820],{"type":55,"value":813},{"type":42,"tag":226,"props":1822,"children":1823},{"style":759},[1824],{"type":55,"value":1037},{"type":42,"tag":226,"props":1826,"children":1827},{"style":790},[1828],{"type":55,"value":803},{"type":42,"tag":226,"props":1830,"children":1831},{"style":775},[1832],{"type":55,"value":1046},{"type":42,"tag":226,"props":1834,"children":1835},{"style":790},[1836],{"type":55,"value":813},{"type":42,"tag":226,"props":1838,"children":1839},{"style":759},[1840],{"type":55,"value":1841},"\u002Ftopology",{"type":42,"tag":226,"props":1843,"children":1844},{"style":790},[1845],{"type":55,"value":823},{"type":42,"tag":226,"props":1847,"children":1848},{"style":775},[1849],{"type":55,"value":778},{"type":42,"tag":226,"props":1851,"children":1852},{"class":748,"line":830},[1853,1857,1861,1865],{"type":42,"tag":226,"props":1854,"children":1855},{"style":759},[1856],{"type":55,"value":836},{"type":42,"tag":226,"props":1858,"children":1859},{"style":790},[1860],{"type":55,"value":793},{"type":42,"tag":226,"props":1862,"children":1863},{"style":759},[1864],{"type":55,"value":845},{"type":42,"tag":226,"props":1866,"children":1867},{"style":790},[1868],{"type":55,"value":850},{"type":42,"tag":47,"props":1870,"children":1871},{},[1872,1874,1880],{"type":55,"value":1873},"From the response, find the Custom Endpoint source node and extract its ",{"type":42,"tag":82,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":55,"value":1879},"id",{"type":55,"value":1881},":",{"type":42,"tag":736,"props":1883,"children":1885},{"className":738,"code":1884,"language":740,"meta":741,"style":741},"# Extract the sourceId for a Custom Endpoint source (use name filter if multiple exist)\nSOURCE_ID=$(az rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002Ftopology\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" \\\n  | jq -r '[.sources[] | select(.type==\"CustomEndpoint\")] | if length == 0 then error(\"No Custom Endpoint sources found in this Eventstream\") elif length > 1 then error(\"Multiple Custom Endpoint sources found — filter by .name\") else .[0].id end') \\\n  || { echo \"Failed to resolve Custom Endpoint source ID\"; exit 1; }\n\nif [ -z \"$SOURCE_ID\" ]; then echo \"SOURCE_ID is empty — check topology output\"; exit 1; fi\n",[1886],{"type":42,"tag":82,"props":1887,"children":1888},{"__ignoreMap":741},[1889,1897,1930,1985,2008,2045,2102,2111],{"type":42,"tag":226,"props":1890,"children":1891},{"class":748,"line":749},[1892],{"type":42,"tag":226,"props":1893,"children":1894},{"style":1332},[1895],{"type":55,"value":1896},"# Extract the sourceId for a Custom Endpoint source (use name filter if multiple exist)\n",{"type":42,"tag":226,"props":1898,"children":1899},{"class":748,"line":781},[1900,1905,1910,1914,1918,1922,1926],{"type":42,"tag":226,"props":1901,"children":1902},{"style":775},[1903],{"type":55,"value":1904},"SOURCE_ID",{"type":42,"tag":226,"props":1906,"children":1907},{"style":790},[1908],{"type":55,"value":1909},"=$(",{"type":42,"tag":226,"props":1911,"children":1912},{"style":753},[1913],{"type":55,"value":756},{"type":42,"tag":226,"props":1915,"children":1916},{"style":759},[1917],{"type":55,"value":762},{"type":42,"tag":226,"props":1919,"children":1920},{"style":759},[1921],{"type":55,"value":767},{"type":42,"tag":226,"props":1923,"children":1924},{"style":759},[1925],{"type":55,"value":772},{"type":42,"tag":226,"props":1927,"children":1928},{"style":775},[1929],{"type":55,"value":778},{"type":42,"tag":226,"props":1931,"children":1932},{"class":748,"line":830},[1933,1937,1941,1945,1949,1953,1957,1961,1965,1969,1973,1977,1981],{"type":42,"tag":226,"props":1934,"children":1935},{"style":759},[1936],{"type":55,"value":787},{"type":42,"tag":226,"props":1938,"children":1939},{"style":790},[1940],{"type":55,"value":793},{"type":42,"tag":226,"props":1942,"children":1943},{"style":759},[1944],{"type":55,"value":798},{"type":42,"tag":226,"props":1946,"children":1947},{"style":790},[1948],{"type":55,"value":803},{"type":42,"tag":226,"props":1950,"children":1951},{"style":775},[1952],{"type":55,"value":808},{"type":42,"tag":226,"props":1954,"children":1955},{"style":790},[1956],{"type":55,"value":813},{"type":42,"tag":226,"props":1958,"children":1959},{"style":759},[1960],{"type":55,"value":1037},{"type":42,"tag":226,"props":1962,"children":1963},{"style":790},[1964],{"type":55,"value":803},{"type":42,"tag":226,"props":1966,"children":1967},{"style":775},[1968],{"type":55,"value":1046},{"type":42,"tag":226,"props":1970,"children":1971},{"style":790},[1972],{"type":55,"value":813},{"type":42,"tag":226,"props":1974,"children":1975},{"style":759},[1976],{"type":55,"value":1841},{"type":42,"tag":226,"props":1978,"children":1979},{"style":790},[1980],{"type":55,"value":823},{"type":42,"tag":226,"props":1982,"children":1983},{"style":775},[1984],{"type":55,"value":778},{"type":42,"tag":226,"props":1986,"children":1987},{"class":748,"line":950},[1988,1992,1996,2000,2004],{"type":42,"tag":226,"props":1989,"children":1990},{"style":759},[1991],{"type":55,"value":836},{"type":42,"tag":226,"props":1993,"children":1994},{"style":790},[1995],{"type":55,"value":793},{"type":42,"tag":226,"props":1997,"children":1998},{"style":759},[1999],{"type":55,"value":845},{"type":42,"tag":226,"props":2001,"children":2002},{"style":790},[2003],{"type":55,"value":823},{"type":42,"tag":226,"props":2005,"children":2006},{"style":775},[2007],{"type":55,"value":778},{"type":42,"tag":226,"props":2009,"children":2010},{"class":748,"line":1439},[2011,2015,2019,2023,2027,2032,2036,2041],{"type":42,"tag":226,"props":2012,"children":2013},{"style":790},[2014],{"type":55,"value":1470},{"type":42,"tag":226,"props":2016,"children":2017},{"style":753},[2018],{"type":55,"value":1475},{"type":42,"tag":226,"props":2020,"children":2021},{"style":759},[2022],{"type":55,"value":1480},{"type":42,"tag":226,"props":2024,"children":2025},{"style":790},[2026],{"type":55,"value":1282},{"type":42,"tag":226,"props":2028,"children":2029},{"style":759},[2030],{"type":55,"value":2031},"[.sources[] | select(.type==\"CustomEndpoint\")] | if length == 0 then error(\"No Custom Endpoint sources found in this Eventstream\") elif length > 1 then error(\"Multiple Custom Endpoint sources found — filter by .name\") else .[0].id end",{"type":42,"tag":226,"props":2033,"children":2034},{"style":790},[2035],{"type":55,"value":1457},{"type":42,"tag":226,"props":2037,"children":2038},{"style":790},[2039],{"type":55,"value":2040},")",{"type":42,"tag":226,"props":2042,"children":2043},{"style":753},[2044],{"type":55,"value":778},{"type":42,"tag":226,"props":2046,"children":2047},{"class":748,"line":1464},[2048,2053,2058,2064,2068,2073,2077,2082,2087,2093,2097],{"type":42,"tag":226,"props":2049,"children":2050},{"style":790},[2051],{"type":55,"value":2052},"  ||",{"type":42,"tag":226,"props":2054,"children":2055},{"style":790},[2056],{"type":55,"value":2057}," {",{"type":42,"tag":226,"props":2059,"children":2061},{"style":2060},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[2062],{"type":55,"value":2063}," echo",{"type":42,"tag":226,"props":2065,"children":2066},{"style":790},[2067],{"type":55,"value":793},{"type":42,"tag":226,"props":2069,"children":2070},{"style":759},[2071],{"type":55,"value":2072},"Failed to resolve Custom Endpoint source ID",{"type":42,"tag":226,"props":2074,"children":2075},{"style":790},[2076],{"type":55,"value":823},{"type":42,"tag":226,"props":2078,"children":2079},{"style":790},[2080],{"type":55,"value":2081},";",{"type":42,"tag":226,"props":2083,"children":2084},{"style":2060},[2085],{"type":55,"value":2086}," exit",{"type":42,"tag":226,"props":2088,"children":2090},{"style":2089},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2091],{"type":55,"value":2092}," 1",{"type":42,"tag":226,"props":2094,"children":2095},{"style":790},[2096],{"type":55,"value":2081},{"type":42,"tag":226,"props":2098,"children":2099},{"style":790},[2100],{"type":55,"value":2101}," }\n",{"type":42,"tag":226,"props":2103,"children":2104},{"class":748,"line":1500},[2105],{"type":42,"tag":226,"props":2106,"children":2108},{"emptyLinePlaceholder":2107},true,[2109],{"type":55,"value":2110},"\n",{"type":42,"tag":226,"props":2112,"children":2114},{"class":748,"line":2113},8,[2115,2121,2126,2131,2135,2140,2144,2149,2154,2158,2162,2167,2171,2175,2179,2183,2187],{"type":42,"tag":226,"props":2116,"children":2118},{"style":2117},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[2119],{"type":55,"value":2120},"if",{"type":42,"tag":226,"props":2122,"children":2123},{"style":790},[2124],{"type":55,"value":2125}," [",{"type":42,"tag":226,"props":2127,"children":2128},{"style":790},[2129],{"type":55,"value":2130}," -z",{"type":42,"tag":226,"props":2132,"children":2133},{"style":790},[2134],{"type":55,"value":793},{"type":42,"tag":226,"props":2136,"children":2137},{"style":775},[2138],{"type":55,"value":2139},"$SOURCE_ID",{"type":42,"tag":226,"props":2141,"children":2142},{"style":790},[2143],{"type":55,"value":823},{"type":42,"tag":226,"props":2145,"children":2146},{"style":790},[2147],{"type":55,"value":2148}," ];",{"type":42,"tag":226,"props":2150,"children":2151},{"style":2117},[2152],{"type":55,"value":2153}," then",{"type":42,"tag":226,"props":2155,"children":2156},{"style":2060},[2157],{"type":55,"value":2063},{"type":42,"tag":226,"props":2159,"children":2160},{"style":790},[2161],{"type":55,"value":793},{"type":42,"tag":226,"props":2163,"children":2164},{"style":759},[2165],{"type":55,"value":2166},"SOURCE_ID is empty — check topology output",{"type":42,"tag":226,"props":2168,"children":2169},{"style":790},[2170],{"type":55,"value":823},{"type":42,"tag":226,"props":2172,"children":2173},{"style":790},[2174],{"type":55,"value":2081},{"type":42,"tag":226,"props":2176,"children":2177},{"style":2060},[2178],{"type":55,"value":2086},{"type":42,"tag":226,"props":2180,"children":2181},{"style":2089},[2182],{"type":55,"value":2092},{"type":42,"tag":226,"props":2184,"children":2185},{"style":790},[2186],{"type":55,"value":2081},{"type":42,"tag":226,"props":2188,"children":2189},{"style":2117},[2190],{"type":55,"value":2191}," fi\n",{"type":42,"tag":736,"props":2193,"children":2195},{"className":1532,"code":2194,"language":1534,"meta":741,"style":741},"# PowerShell — extract sourceId for Custom Endpoint (fails clearly if multiple exist)\n$topology = az rest --method GET `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n$customSources = @($topology.sources | Where-Object { $_.type -eq 'CustomEndpoint' })\nif ($customSources.Count -eq 0) { throw \"No Custom Endpoint sources found in this Eventstream\" }\nif ($customSources.Count -gt 1) { throw \"Multiple Custom Endpoint sources found. Filter by name: $($customSources.name -join ', ')\" }\n$sourceId = $customSources[0].id\n",[2196],{"type":42,"tag":82,"props":2197,"children":2198},{"__ignoreMap":741},[2199,2207,2215,2223,2231,2239,2247,2255],{"type":42,"tag":226,"props":2200,"children":2201},{"class":748,"line":749},[2202],{"type":42,"tag":226,"props":2203,"children":2204},{},[2205],{"type":55,"value":2206},"# PowerShell — extract sourceId for Custom Endpoint (fails clearly if multiple exist)\n",{"type":42,"tag":226,"props":2208,"children":2209},{"class":748,"line":781},[2210],{"type":42,"tag":226,"props":2211,"children":2212},{},[2213],{"type":55,"value":2214},"$topology = az rest --method GET `\n",{"type":42,"tag":226,"props":2216,"children":2217},{"class":748,"line":830},[2218],{"type":42,"tag":226,"props":2219,"children":2220},{},[2221],{"type":55,"value":2222},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002Ftopology\" `\n",{"type":42,"tag":226,"props":2224,"children":2225},{"class":748,"line":950},[2226],{"type":42,"tag":226,"props":2227,"children":2228},{},[2229],{"type":55,"value":2230},"  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n",{"type":42,"tag":226,"props":2232,"children":2233},{"class":748,"line":1439},[2234],{"type":42,"tag":226,"props":2235,"children":2236},{},[2237],{"type":55,"value":2238},"$customSources = @($topology.sources | Where-Object { $_.type -eq 'CustomEndpoint' })\n",{"type":42,"tag":226,"props":2240,"children":2241},{"class":748,"line":1464},[2242],{"type":42,"tag":226,"props":2243,"children":2244},{},[2245],{"type":55,"value":2246},"if ($customSources.Count -eq 0) { throw \"No Custom Endpoint sources found in this Eventstream\" }\n",{"type":42,"tag":226,"props":2248,"children":2249},{"class":748,"line":1500},[2250],{"type":42,"tag":226,"props":2251,"children":2252},{},[2253],{"type":55,"value":2254},"if ($customSources.Count -gt 1) { throw \"Multiple Custom Endpoint sources found. Filter by name: $($customSources.name -join ', ')\" }\n",{"type":42,"tag":226,"props":2256,"children":2257},{"class":748,"line":2113},[2258],{"type":42,"tag":226,"props":2259,"children":2260},{},[2261],{"type":55,"value":2262},"$sourceId = $customSources[0].id\n",{"type":42,"tag":729,"props":2264,"children":2266},{"id":2265},"step-2-get-the-connection-details",[2267],{"type":55,"value":2268},"Step 2: Get the Connection Details",{"type":42,"tag":43,"props":2270,"children":2271},{},[2272],{"type":42,"tag":47,"props":2273,"children":2274},{},[2275,2277,2282,2284,2290,2292,2298,2299,2305,2307,2313],{"type":55,"value":2276},"⚠️ ",{"type":42,"tag":51,"props":2278,"children":2279},{},[2280],{"type":55,"value":2281},"Security",{"type":55,"value":2283},": This endpoint returns access keys and connection strings. Get explicit user confirmation before calling it. Redact ",{"type":42,"tag":82,"props":2285,"children":2287},{"className":2286},[],[2288],{"type":55,"value":2289},"primaryKey",{"type":55,"value":2291},", ",{"type":42,"tag":82,"props":2293,"children":2295},{"className":2294},[],[2296],{"type":55,"value":2297},"secondaryKey",{"type":55,"value":2291},{"type":42,"tag":82,"props":2300,"children":2302},{"className":2301},[],[2303],{"type":55,"value":2304},"primaryConnectionString",{"type":55,"value":2306},", and ",{"type":42,"tag":82,"props":2308,"children":2310},{"className":2309},[],[2311],{"type":55,"value":2312},"secondaryConnectionString",{"type":55,"value":2314}," from any displayed output unless the user explicitly asks for secret values in a secure context. Avoid logging raw credentials; store securely and rotate as needed.",{"type":42,"tag":736,"props":2316,"children":2318},{"className":738,"code":2317,"language":740,"meta":741,"style":741},"az rest --method GET \\\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F${WORKSPACE_ID}\u002Feventstreams\u002F${EVENTSTREAM_ID}\u002Fsources\u002F${SOURCE_ID}\u002Fconnection\" \\\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\"\n",[2319],{"type":42,"tag":82,"props":2320,"children":2321},{"__ignoreMap":741},[2322,2345,2417],{"type":42,"tag":226,"props":2323,"children":2324},{"class":748,"line":749},[2325,2329,2333,2337,2341],{"type":42,"tag":226,"props":2326,"children":2327},{"style":753},[2328],{"type":55,"value":756},{"type":42,"tag":226,"props":2330,"children":2331},{"style":759},[2332],{"type":55,"value":762},{"type":42,"tag":226,"props":2334,"children":2335},{"style":759},[2336],{"type":55,"value":767},{"type":42,"tag":226,"props":2338,"children":2339},{"style":759},[2340],{"type":55,"value":772},{"type":42,"tag":226,"props":2342,"children":2343},{"style":775},[2344],{"type":55,"value":778},{"type":42,"tag":226,"props":2346,"children":2347},{"class":748,"line":781},[2348,2352,2356,2360,2364,2368,2372,2376,2380,2384,2388,2393,2397,2401,2405,2409,2413],{"type":42,"tag":226,"props":2349,"children":2350},{"style":759},[2351],{"type":55,"value":787},{"type":42,"tag":226,"props":2353,"children":2354},{"style":790},[2355],{"type":55,"value":793},{"type":42,"tag":226,"props":2357,"children":2358},{"style":759},[2359],{"type":55,"value":798},{"type":42,"tag":226,"props":2361,"children":2362},{"style":790},[2363],{"type":55,"value":803},{"type":42,"tag":226,"props":2365,"children":2366},{"style":775},[2367],{"type":55,"value":808},{"type":42,"tag":226,"props":2369,"children":2370},{"style":790},[2371],{"type":55,"value":813},{"type":42,"tag":226,"props":2373,"children":2374},{"style":759},[2375],{"type":55,"value":1037},{"type":42,"tag":226,"props":2377,"children":2378},{"style":790},[2379],{"type":55,"value":803},{"type":42,"tag":226,"props":2381,"children":2382},{"style":775},[2383],{"type":55,"value":1046},{"type":42,"tag":226,"props":2385,"children":2386},{"style":790},[2387],{"type":55,"value":813},{"type":42,"tag":226,"props":2389,"children":2390},{"style":759},[2391],{"type":55,"value":2392},"\u002Fsources\u002F",{"type":42,"tag":226,"props":2394,"children":2395},{"style":790},[2396],{"type":55,"value":803},{"type":42,"tag":226,"props":2398,"children":2399},{"style":775},[2400],{"type":55,"value":1904},{"type":42,"tag":226,"props":2402,"children":2403},{"style":790},[2404],{"type":55,"value":813},{"type":42,"tag":226,"props":2406,"children":2407},{"style":759},[2408],{"type":55,"value":1734},{"type":42,"tag":226,"props":2410,"children":2411},{"style":790},[2412],{"type":55,"value":823},{"type":42,"tag":226,"props":2414,"children":2415},{"style":775},[2416],{"type":55,"value":778},{"type":42,"tag":226,"props":2418,"children":2419},{"class":748,"line":830},[2420,2424,2428,2432],{"type":42,"tag":226,"props":2421,"children":2422},{"style":759},[2423],{"type":55,"value":836},{"type":42,"tag":226,"props":2425,"children":2426},{"style":790},[2427],{"type":55,"value":793},{"type":42,"tag":226,"props":2429,"children":2430},{"style":759},[2431],{"type":55,"value":845},{"type":42,"tag":226,"props":2433,"children":2434},{"style":790},[2435],{"type":55,"value":850},{"type":42,"tag":736,"props":2437,"children":2439},{"className":1532,"code":2438,"language":1534,"meta":741,"style":741},"az rest --method GET `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002Fsources\u002F$sourceId\u002Fconnection\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n",[2440],{"type":42,"tag":82,"props":2441,"children":2442},{"__ignoreMap":741},[2443,2451,2459],{"type":42,"tag":226,"props":2444,"children":2445},{"class":748,"line":749},[2446],{"type":42,"tag":226,"props":2447,"children":2448},{},[2449],{"type":55,"value":2450},"az rest --method GET `\n",{"type":42,"tag":226,"props":2452,"children":2453},{"class":748,"line":781},[2454],{"type":42,"tag":226,"props":2455,"children":2456},{},[2457],{"type":55,"value":2458},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$WORKSPACE_ID\u002Feventstreams\u002F$EVENTSTREAM_ID\u002Fsources\u002F$sourceId\u002Fconnection\" `\n",{"type":42,"tag":226,"props":2460,"children":2461},{"class":748,"line":830},[2462],{"type":42,"tag":226,"props":2463,"children":2464},{},[2465],{"type":55,"value":2230},{"type":42,"tag":729,"props":2467,"children":2469},{"id":2468},"expected-response",[2470],{"type":55,"value":2471},"Expected Response",{"type":42,"tag":736,"props":2473,"children":2477},{"className":2474,"code":2475,"language":2476,"meta":741,"style":741},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"fullyQualifiedNamespace\": \"namespace.servicebus.windows.net\",\n  \"eventHubName\": \"es_\u003Cguid>\",\n  \"accessKeys\": {\n    \"primaryKey\": \"...\",\n    \"secondaryKey\": \"...\",\n    \"primaryConnectionString\": \"Endpoint=sb:\u002F\u002Fnamespace.servicebus.windows.net\u002F;...\",\n    \"secondaryConnectionString\": \"...\"\n  }\n}\n","json",[2478],{"type":42,"tag":82,"props":2479,"children":2480},{"__ignoreMap":741},[2481,2489,2529,2566,2591,2628,2663,2699,2730,2739],{"type":42,"tag":226,"props":2482,"children":2483},{"class":748,"line":749},[2484],{"type":42,"tag":226,"props":2485,"children":2486},{"style":790},[2487],{"type":55,"value":2488},"{\n",{"type":42,"tag":226,"props":2490,"children":2491},{"class":748,"line":781},[2492,2497,2503,2507,2511,2515,2520,2524],{"type":42,"tag":226,"props":2493,"children":2494},{"style":790},[2495],{"type":55,"value":2496},"  \"",{"type":42,"tag":226,"props":2498,"children":2500},{"style":2499},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[2501],{"type":55,"value":2502},"fullyQualifiedNamespace",{"type":42,"tag":226,"props":2504,"children":2505},{"style":790},[2506],{"type":55,"value":823},{"type":42,"tag":226,"props":2508,"children":2509},{"style":790},[2510],{"type":55,"value":1881},{"type":42,"tag":226,"props":2512,"children":2513},{"style":790},[2514],{"type":55,"value":793},{"type":42,"tag":226,"props":2516,"children":2517},{"style":759},[2518],{"type":55,"value":2519},"namespace.servicebus.windows.net",{"type":42,"tag":226,"props":2521,"children":2522},{"style":790},[2523],{"type":55,"value":823},{"type":42,"tag":226,"props":2525,"children":2526},{"style":790},[2527],{"type":55,"value":2528},",\n",{"type":42,"tag":226,"props":2530,"children":2531},{"class":748,"line":830},[2532,2536,2541,2545,2549,2553,2558,2562],{"type":42,"tag":226,"props":2533,"children":2534},{"style":790},[2535],{"type":55,"value":2496},{"type":42,"tag":226,"props":2537,"children":2538},{"style":2499},[2539],{"type":55,"value":2540},"eventHubName",{"type":42,"tag":226,"props":2542,"children":2543},{"style":790},[2544],{"type":55,"value":823},{"type":42,"tag":226,"props":2546,"children":2547},{"style":790},[2548],{"type":55,"value":1881},{"type":42,"tag":226,"props":2550,"children":2551},{"style":790},[2552],{"type":55,"value":793},{"type":42,"tag":226,"props":2554,"children":2555},{"style":759},[2556],{"type":55,"value":2557},"es_\u003Cguid>",{"type":42,"tag":226,"props":2559,"children":2560},{"style":790},[2561],{"type":55,"value":823},{"type":42,"tag":226,"props":2563,"children":2564},{"style":790},[2565],{"type":55,"value":2528},{"type":42,"tag":226,"props":2567,"children":2568},{"class":748,"line":950},[2569,2573,2578,2582,2586],{"type":42,"tag":226,"props":2570,"children":2571},{"style":790},[2572],{"type":55,"value":2496},{"type":42,"tag":226,"props":2574,"children":2575},{"style":2499},[2576],{"type":55,"value":2577},"accessKeys",{"type":42,"tag":226,"props":2579,"children":2580},{"style":790},[2581],{"type":55,"value":823},{"type":42,"tag":226,"props":2583,"children":2584},{"style":790},[2585],{"type":55,"value":1881},{"type":42,"tag":226,"props":2587,"children":2588},{"style":790},[2589],{"type":55,"value":2590}," {\n",{"type":42,"tag":226,"props":2592,"children":2593},{"class":748,"line":1439},[2594,2599,2603,2607,2611,2615,2620,2624],{"type":42,"tag":226,"props":2595,"children":2596},{"style":790},[2597],{"type":55,"value":2598},"    \"",{"type":42,"tag":226,"props":2600,"children":2601},{"style":753},[2602],{"type":55,"value":2289},{"type":42,"tag":226,"props":2604,"children":2605},{"style":790},[2606],{"type":55,"value":823},{"type":42,"tag":226,"props":2608,"children":2609},{"style":790},[2610],{"type":55,"value":1881},{"type":42,"tag":226,"props":2612,"children":2613},{"style":790},[2614],{"type":55,"value":793},{"type":42,"tag":226,"props":2616,"children":2617},{"style":759},[2618],{"type":55,"value":2619},"...",{"type":42,"tag":226,"props":2621,"children":2622},{"style":790},[2623],{"type":55,"value":823},{"type":42,"tag":226,"props":2625,"children":2626},{"style":790},[2627],{"type":55,"value":2528},{"type":42,"tag":226,"props":2629,"children":2630},{"class":748,"line":1464},[2631,2635,2639,2643,2647,2651,2655,2659],{"type":42,"tag":226,"props":2632,"children":2633},{"style":790},[2634],{"type":55,"value":2598},{"type":42,"tag":226,"props":2636,"children":2637},{"style":753},[2638],{"type":55,"value":2297},{"type":42,"tag":226,"props":2640,"children":2641},{"style":790},[2642],{"type":55,"value":823},{"type":42,"tag":226,"props":2644,"children":2645},{"style":790},[2646],{"type":55,"value":1881},{"type":42,"tag":226,"props":2648,"children":2649},{"style":790},[2650],{"type":55,"value":793},{"type":42,"tag":226,"props":2652,"children":2653},{"style":759},[2654],{"type":55,"value":2619},{"type":42,"tag":226,"props":2656,"children":2657},{"style":790},[2658],{"type":55,"value":823},{"type":42,"tag":226,"props":2660,"children":2661},{"style":790},[2662],{"type":55,"value":2528},{"type":42,"tag":226,"props":2664,"children":2665},{"class":748,"line":1500},[2666,2670,2674,2678,2682,2686,2691,2695],{"type":42,"tag":226,"props":2667,"children":2668},{"style":790},[2669],{"type":55,"value":2598},{"type":42,"tag":226,"props":2671,"children":2672},{"style":753},[2673],{"type":55,"value":2304},{"type":42,"tag":226,"props":2675,"children":2676},{"style":790},[2677],{"type":55,"value":823},{"type":42,"tag":226,"props":2679,"children":2680},{"style":790},[2681],{"type":55,"value":1881},{"type":42,"tag":226,"props":2683,"children":2684},{"style":790},[2685],{"type":55,"value":793},{"type":42,"tag":226,"props":2687,"children":2688},{"style":759},[2689],{"type":55,"value":2690},"Endpoint=sb:\u002F\u002Fnamespace.servicebus.windows.net\u002F;...",{"type":42,"tag":226,"props":2692,"children":2693},{"style":790},[2694],{"type":55,"value":823},{"type":42,"tag":226,"props":2696,"children":2697},{"style":790},[2698],{"type":55,"value":2528},{"type":42,"tag":226,"props":2700,"children":2701},{"class":748,"line":2113},[2702,2706,2710,2714,2718,2722,2726],{"type":42,"tag":226,"props":2703,"children":2704},{"style":790},[2705],{"type":55,"value":2598},{"type":42,"tag":226,"props":2707,"children":2708},{"style":753},[2709],{"type":55,"value":2312},{"type":42,"tag":226,"props":2711,"children":2712},{"style":790},[2713],{"type":55,"value":823},{"type":42,"tag":226,"props":2715,"children":2716},{"style":790},[2717],{"type":55,"value":1881},{"type":42,"tag":226,"props":2719,"children":2720},{"style":790},[2721],{"type":55,"value":793},{"type":42,"tag":226,"props":2723,"children":2724},{"style":759},[2725],{"type":55,"value":2619},{"type":42,"tag":226,"props":2727,"children":2728},{"style":790},[2729],{"type":55,"value":850},{"type":42,"tag":226,"props":2731,"children":2733},{"class":748,"line":2732},9,[2734],{"type":42,"tag":226,"props":2735,"children":2736},{"style":790},[2737],{"type":55,"value":2738},"  }\n",{"type":42,"tag":226,"props":2740,"children":2742},{"class":748,"line":2741},10,[2743],{"type":42,"tag":226,"props":2744,"children":2745},{"style":790},[2746],{"type":55,"value":2747},"}\n",{"type":42,"tag":729,"props":2749,"children":2751},{"id":2750},"kafka-producer-configuration",[2752],{"type":55,"value":2753},"Kafka Producer Configuration",{"type":42,"tag":47,"props":2755,"children":2756},{},[2757],{"type":55,"value":2758},"Use the response to configure a Kafka producer:",{"type":42,"tag":157,"props":2760,"children":2761},{},[2762,2778],{"type":42,"tag":161,"props":2763,"children":2764},{},[2765],{"type":42,"tag":165,"props":2766,"children":2767},{},[2768,2773],{"type":42,"tag":169,"props":2769,"children":2770},{},[2771],{"type":55,"value":2772},"Setting",{"type":42,"tag":169,"props":2774,"children":2775},{},[2776],{"type":55,"value":2777},"Value",{"type":42,"tag":185,"props":2779,"children":2780},{},[2781,2802,2823,2844,2865,2888],{"type":42,"tag":165,"props":2782,"children":2783},{},[2784,2793],{"type":42,"tag":192,"props":2785,"children":2786},{},[2787],{"type":42,"tag":82,"props":2788,"children":2790},{"className":2789},[],[2791],{"type":55,"value":2792},"bootstrap_servers",{"type":42,"tag":192,"props":2794,"children":2795},{},[2796],{"type":42,"tag":82,"props":2797,"children":2799},{"className":2798},[],[2800],{"type":55,"value":2801},"{fullyQualifiedNamespace}:9093",{"type":42,"tag":165,"props":2803,"children":2804},{},[2805,2814],{"type":42,"tag":192,"props":2806,"children":2807},{},[2808],{"type":42,"tag":82,"props":2809,"children":2811},{"className":2810},[],[2812],{"type":55,"value":2813},"topic",{"type":42,"tag":192,"props":2815,"children":2816},{},[2817],{"type":42,"tag":82,"props":2818,"children":2820},{"className":2819},[],[2821],{"type":55,"value":2822},"{eventHubName}",{"type":42,"tag":165,"props":2824,"children":2825},{},[2826,2835],{"type":42,"tag":192,"props":2827,"children":2828},{},[2829],{"type":42,"tag":82,"props":2830,"children":2832},{"className":2831},[],[2833],{"type":55,"value":2834},"security_protocol",{"type":42,"tag":192,"props":2836,"children":2837},{},[2838],{"type":42,"tag":82,"props":2839,"children":2841},{"className":2840},[],[2842],{"type":55,"value":2843},"SASL_SSL",{"type":42,"tag":165,"props":2845,"children":2846},{},[2847,2856],{"type":42,"tag":192,"props":2848,"children":2849},{},[2850],{"type":42,"tag":82,"props":2851,"children":2853},{"className":2852},[],[2854],{"type":55,"value":2855},"sasl_mechanism",{"type":42,"tag":192,"props":2857,"children":2858},{},[2859],{"type":42,"tag":82,"props":2860,"children":2862},{"className":2861},[],[2863],{"type":55,"value":2864},"PLAIN",{"type":42,"tag":165,"props":2866,"children":2867},{},[2868,2877],{"type":42,"tag":192,"props":2869,"children":2870},{},[2871],{"type":42,"tag":82,"props":2872,"children":2874},{"className":2873},[],[2875],{"type":55,"value":2876},"sasl_plain_username",{"type":42,"tag":192,"props":2878,"children":2879},{},[2880,2886],{"type":42,"tag":82,"props":2881,"children":2883},{"className":2882},[],[2884],{"type":55,"value":2885},"$ConnectionString",{"type":55,"value":2887}," (fixed literal — not a variable)",{"type":42,"tag":165,"props":2889,"children":2890},{},[2891,2900],{"type":42,"tag":192,"props":2892,"children":2893},{},[2894],{"type":42,"tag":82,"props":2895,"children":2897},{"className":2896},[],[2898],{"type":55,"value":2899},"sasl_plain_password",{"type":42,"tag":192,"props":2901,"children":2902},{},[2903],{"type":42,"tag":82,"props":2904,"children":2906},{"className":2905},[],[2907],{"type":55,"value":2908},"{primaryConnectionString}",{"type":42,"tag":43,"props":2910,"children":2911},{},[2912],{"type":42,"tag":47,"props":2913,"children":2914},{},[2915,2920,2922,2927,2929,2935,2936,2942],{"type":42,"tag":51,"props":2916,"children":2917},{},[2918],{"type":55,"value":2919},"Limitation",{"type":55,"value":2921},": The ",{"type":42,"tag":82,"props":2923,"children":2925},{"className":2924},[],[2926],{"type":55,"value":1734},{"type":55,"value":2928}," endpoint is only supported for Custom Endpoint sources (returns Kafka\u002FEvent Hub credentials). Other source types (Event Hub, IoT Hub, etc.) store their connection configuration (e.g., ",{"type":42,"tag":82,"props":2930,"children":2932},{"className":2931},[],[2933],{"type":55,"value":2934},"dataConnectionId",{"type":55,"value":2291},{"type":42,"tag":82,"props":2937,"children":2939},{"className":2938},[],[2940],{"type":55,"value":2941},"consumerGroup",{"type":55,"value":2943},") directly in the decoded definition properties.",{"type":42,"tag":720,"props":2945,"children":2946},{},[],{"type":42,"tag":150,"props":2948,"children":2950},{"id":2949},"validate-eventstream-configuration",[2951],{"type":55,"value":679},{"type":42,"tag":47,"props":2953,"children":2954},{},[2955],{"type":55,"value":2956},"Check key configuration aspects of a decoded Eventstream topology:",{"type":42,"tag":729,"props":2958,"children":2960},{"id":2959},"source-validation-checklist",[2961],{"type":55,"value":2962},"Source Validation Checklist",{"type":42,"tag":157,"props":2964,"children":2965},{},[2966,2982],{"type":42,"tag":161,"props":2967,"children":2968},{},[2969],{"type":42,"tag":165,"props":2970,"children":2971},{},[2972,2977],{"type":42,"tag":169,"props":2973,"children":2974},{},[2975],{"type":55,"value":2976},"Check",{"type":42,"tag":169,"props":2978,"children":2979},{},[2980],{"type":55,"value":2981},"How",{"type":42,"tag":185,"props":2983,"children":2984},{},[2985,2998,3018,3031],{"type":42,"tag":165,"props":2986,"children":2987},{},[2988,2993],{"type":42,"tag":192,"props":2989,"children":2990},{},[2991],{"type":55,"value":2992},"Source type is API-supported",{"type":42,"tag":192,"props":2994,"children":2995},{},[2996],{"type":55,"value":2997},"Compare against 25 known type enums",{"type":42,"tag":165,"props":2999,"children":3000},{},[3001,3006],{"type":42,"tag":192,"props":3002,"children":3003},{},[3004],{"type":55,"value":3005},"Cloud connection exists",{"type":42,"tag":192,"props":3007,"children":3008},{},[3009,3011,3016],{"type":55,"value":3010},"Verify ",{"type":42,"tag":82,"props":3012,"children":3014},{"className":3013},[],[3015],{"type":55,"value":2934},{"type":55,"value":3017}," GUID resolves",{"type":42,"tag":165,"props":3019,"children":3020},{},[3021,3026],{"type":42,"tag":192,"props":3022,"children":3023},{},[3024],{"type":55,"value":3025},"Consumer group set",{"type":42,"tag":192,"props":3027,"children":3028},{},[3029],{"type":55,"value":3030},"Required for Event Hub, IoT Hub, Kafka sources",{"type":42,"tag":165,"props":3032,"children":3033},{},[3034,3039],{"type":42,"tag":192,"props":3035,"children":3036},{},[3037],{"type":55,"value":3038},"Serialization matches source",{"type":42,"tag":192,"props":3040,"children":3041},{},[3042,3048,3050,3056,3057,3063,3065],{"type":42,"tag":82,"props":3043,"children":3045},{"className":3044},[],[3046],{"type":55,"value":3047},"inputSerialization.type",{"type":55,"value":3049}," = ",{"type":42,"tag":82,"props":3051,"children":3053},{"className":3052},[],[3054],{"type":55,"value":3055},"Json",{"type":55,"value":2291},{"type":42,"tag":82,"props":3058,"children":3060},{"className":3059},[],[3061],{"type":55,"value":3062},"Csv",{"type":55,"value":3064},", or ",{"type":42,"tag":82,"props":3066,"children":3068},{"className":3067},[],[3069],{"type":55,"value":3070},"Avro",{"type":42,"tag":729,"props":3072,"children":3074},{"id":3073},"destination-validation-checklist",[3075],{"type":55,"value":3076},"Destination Validation Checklist",{"type":42,"tag":157,"props":3078,"children":3079},{},[3080,3094],{"type":42,"tag":161,"props":3081,"children":3082},{},[3083],{"type":42,"tag":165,"props":3084,"children":3085},{},[3086,3090],{"type":42,"tag":169,"props":3087,"children":3088},{},[3089],{"type":55,"value":2976},{"type":42,"tag":169,"props":3091,"children":3092},{},[3093],{"type":55,"value":2981},{"type":42,"tag":185,"props":3095,"children":3096},{},[3097,3137,3165,3184],{"type":42,"tag":165,"props":3098,"children":3099},{},[3100,3105],{"type":42,"tag":192,"props":3101,"children":3102},{},[3103],{"type":55,"value":3104},"Destination type is valid",{"type":42,"tag":192,"props":3106,"children":3107},{},[3108,3110,3116,3117,3123,3124,3130,3131],{"type":55,"value":3109},"Must be ",{"type":42,"tag":82,"props":3111,"children":3113},{"className":3112},[],[3114],{"type":55,"value":3115},"Lakehouse",{"type":55,"value":2291},{"type":42,"tag":82,"props":3118,"children":3120},{"className":3119},[],[3121],{"type":55,"value":3122},"Eventhouse",{"type":55,"value":2291},{"type":42,"tag":82,"props":3125,"children":3127},{"className":3126},[],[3128],{"type":55,"value":3129},"Activator",{"type":55,"value":3064},{"type":42,"tag":82,"props":3132,"children":3134},{"className":3133},[],[3135],{"type":55,"value":3136},"CustomEndpoint",{"type":42,"tag":165,"props":3138,"children":3139},{},[3140,3145],{"type":42,"tag":192,"props":3141,"children":3142},{},[3143],{"type":55,"value":3144},"Target item accessible",{"type":42,"tag":192,"props":3146,"children":3147},{},[3148,3149,3155,3157,3163],{"type":55,"value":3010},{"type":42,"tag":82,"props":3150,"children":3152},{"className":3151},[],[3153],{"type":55,"value":3154},"workspaceId",{"type":55,"value":3156}," + ",{"type":42,"tag":82,"props":3158,"children":3160},{"className":3159},[],[3161],{"type":55,"value":3162},"itemId",{"type":55,"value":3164}," resolve via GET",{"type":42,"tag":165,"props":3166,"children":3167},{},[3168,3173],{"type":42,"tag":192,"props":3169,"children":3170},{},[3171],{"type":55,"value":3172},"Input wired",{"type":42,"tag":192,"props":3174,"children":3175},{},[3176,3182],{"type":42,"tag":82,"props":3177,"children":3179},{"className":3178},[],[3180],{"type":55,"value":3181},"inputNodes",{"type":55,"value":3183}," array must not be empty",{"type":42,"tag":165,"props":3185,"children":3186},{},[3187,3192],{"type":42,"tag":192,"props":3188,"children":3189},{},[3190],{"type":55,"value":3191},"Eventhouse direct ingestion",{"type":42,"tag":192,"props":3193,"children":3194},{},[3195,3201,3203,3209],{"type":42,"tag":82,"props":3196,"children":3198},{"className":3197},[],[3199],{"type":55,"value":3200},"connectionName",{"type":55,"value":3202}," and ",{"type":42,"tag":82,"props":3204,"children":3206},{"className":3205},[],[3207],{"type":55,"value":3208},"mappingRuleName",{"type":55,"value":3210}," set",{"type":42,"tag":729,"props":3212,"children":3214},{"id":3213},"eventstreamproperties-validation",[3215],{"type":55,"value":3216},"EventstreamProperties Validation",{"type":42,"tag":47,"props":3218,"children":3219},{},[3220,3222,3228],{"type":55,"value":3221},"Decode ",{"type":42,"tag":82,"props":3223,"children":3225},{"className":3224},[],[3226],{"type":55,"value":3227},"eventstreamProperties.json",{"type":55,"value":3229}," and check:",{"type":42,"tag":67,"props":3231,"children":3232},{},[3233,3244],{"type":42,"tag":71,"props":3234,"children":3235},{},[3236,3242],{"type":42,"tag":82,"props":3237,"children":3239},{"className":3238},[],[3240],{"type":55,"value":3241},"retentionTimeInDays",{"type":55,"value":3243}," is within 1–90",{"type":42,"tag":71,"props":3245,"children":3246},{},[3247,3253,3255,3261,3262,3268,3269],{"type":42,"tag":82,"props":3248,"children":3250},{"className":3249},[],[3251],{"type":55,"value":3252},"eventThroughputLevel",{"type":55,"value":3254}," is ",{"type":42,"tag":82,"props":3256,"children":3258},{"className":3257},[],[3259],{"type":55,"value":3260},"Low",{"type":55,"value":2291},{"type":42,"tag":82,"props":3263,"children":3265},{"className":3264},[],[3266],{"type":55,"value":3267},"Medium",{"type":55,"value":3064},{"type":42,"tag":82,"props":3270,"children":3272},{"className":3271},[],[3273],{"type":55,"value":3274},"High",{"type":42,"tag":720,"props":3276,"children":3277},{},[],{"type":42,"tag":150,"props":3279,"children":3281},{"id":3280},"gotchas-rules-troubleshooting",[3282],{"type":55,"value":699},{"type":42,"tag":729,"props":3284,"children":3286},{"id":3285},"must-do",[3287],{"type":55,"value":3288},"MUST DO",{"type":42,"tag":67,"props":3290,"children":3291},{},[3292,3314,3324,3334,3364,3394,3412],{"type":42,"tag":71,"props":3293,"children":3294},{},[3295,3305,3307,3312],{"type":42,"tag":51,"props":3296,"children":3297},{},[3298,3299],{"type":55,"value":413},{"type":42,"tag":82,"props":3300,"children":3302},{"className":3301},[],[3303],{"type":55,"value":3304},"--resource https:\u002F\u002Fapi.fabric.microsoft.com",{"type":55,"value":3306}," with ",{"type":42,"tag":82,"props":3308,"children":3310},{"className":3309},[],[3311],{"type":55,"value":396},{"type":55,"value":3313}," calls",{"type":42,"tag":71,"props":3315,"children":3316},{},[3317,3322],{"type":42,"tag":51,"props":3318,"children":3319},{},[3320],{"type":55,"value":3321},"Always use JMESPath filtering",{"type":55,"value":3323}," to resolve workspace name → ID and item name → ID",{"type":42,"tag":71,"props":3325,"children":3326},{},[3327,3332],{"type":42,"tag":51,"props":3328,"children":3329},{},[3330],{"type":55,"value":3331},"Always base64-decode",{"type":55,"value":3333}," the definition payload before inspecting topology (not needed for the Topology API — that returns JSON directly)",{"type":42,"tag":71,"props":3335,"children":3336},{},[3337,3342,3343,3348,3350,3356,3358],{"type":42,"tag":51,"props":3338,"children":3339},{},[3340],{"type":55,"value":3341},"For Custom Endpoint connection details, use the Topology API",{"type":55,"value":216},{"type":42,"tag":82,"props":3344,"children":3346},{"className":3345},[],[3347],{"type":55,"value":1109},{"type":55,"value":3349}," returns empty properties; call ",{"type":42,"tag":82,"props":3351,"children":3353},{"className":3352},[],[3354],{"type":55,"value":3355},"GET ...\u002Ftopology",{"type":55,"value":3357}," to get the sourceId, then ",{"type":42,"tag":82,"props":3359,"children":3361},{"className":3360},[],[3362],{"type":55,"value":3363},"GET ...\u002Fsources\u002F{sourceId}\u002Fconnection",{"type":42,"tag":71,"props":3365,"children":3366},{},[3367,3372,3373,3378,3380,3386,3388,3393],{"type":42,"tag":51,"props":3368,"children":3369},{},[3370],{"type":55,"value":3371},"Use POST for definition endpoints",{"type":55,"value":216},{"type":42,"tag":82,"props":3374,"children":3376},{"className":3375},[],[3377],{"type":55,"value":1109},{"type":55,"value":3379}," (not GET), ",{"type":42,"tag":82,"props":3381,"children":3383},{"className":3382},[],[3384],{"type":55,"value":3385},"POST ...\u002FupdateDefinition",{"type":55,"value":3387}," (not PUT). See ",{"type":42,"tag":201,"props":3389,"children":3391},{"href":1153,"rel":3390},[1155],[3392],{"type":55,"value":1158},{"type":55,"value":141},{"type":42,"tag":71,"props":3395,"children":3396},{},[3397,3402,3404,3410],{"type":42,"tag":51,"props":3398,"children":3399},{},[3400],{"type":55,"value":3401},"Handle pagination",{"type":55,"value":3403}," — check for ",{"type":42,"tag":82,"props":3405,"children":3407},{"className":3406},[],[3408],{"type":55,"value":3409},"continuationUri",{"type":55,"value":3411}," in list responses",{"type":42,"tag":71,"props":3413,"children":3414},{},[3415,3420,3422],{"type":42,"tag":51,"props":3416,"children":3417},{},[3418],{"type":55,"value":3419},"Poll LRO responses",{"type":55,"value":3421}," — Get Definition may return ",{"type":42,"tag":82,"props":3423,"children":3425},{"className":3424},[],[3426],{"type":55,"value":3427},"202 Accepted",{"type":42,"tag":729,"props":3429,"children":3431},{"id":3430},"prefer",[3432],{"type":55,"value":3433},"PREFER",{"type":42,"tag":67,"props":3435,"children":3436},{},[3437,3442,3463,3468],{"type":42,"tag":71,"props":3438,"children":3439},{},[3440],{"type":55,"value":3441},"Decode topology JSON into structured output for readable summaries",{"type":42,"tag":71,"props":3443,"children":3444},{},[3445,3447,3453,3455,3461],{"type":55,"value":3446},"Use ",{"type":42,"tag":82,"props":3448,"children":3450},{"className":3449},[],[3451],{"type":55,"value":3452},"jq",{"type":55,"value":3454}," (bash) or ",{"type":42,"tag":82,"props":3456,"children":3458},{"className":3457},[],[3459],{"type":55,"value":3460},"ConvertFrom-Json",{"type":55,"value":3462}," (PowerShell) for parsing",{"type":42,"tag":71,"props":3464,"children":3465},{},[3466],{"type":55,"value":3467},"Validate configurations before reporting issues to users",{"type":42,"tag":71,"props":3469,"children":3470},{},[3471],{"type":55,"value":3472},"Cross-reference destinations with downstream skills (eventhouse, sqldw, spark)",{"type":42,"tag":729,"props":3474,"children":3476},{"id":3475},"avoid",[3477],{"type":55,"value":3478},"AVOID",{"type":42,"tag":67,"props":3480,"children":3481},{},[3482,3487,3492,3497,3510],{"type":42,"tag":71,"props":3483,"children":3484},{},[3485],{"type":55,"value":3486},"Do NOT confuse Eventstream with Eventhouse — they are separate Fabric workloads",{"type":42,"tag":71,"props":3488,"children":3489},{},[3490],{"type":55,"value":3491},"Do NOT hardcode workspace or item IDs — always discover them via the API",{"type":42,"tag":71,"props":3493,"children":3494},{},[3495],{"type":55,"value":3496},"Do NOT assume all source types appear in API enums — preview sources exist only in the UI",{"type":42,"tag":71,"props":3498,"children":3499},{},[3500,3502,3508],{"type":55,"value":3501},"Do NOT modify Eventstream topology with this consumption skill — use ",{"type":42,"tag":82,"props":3503,"children":3505},{"className":3504},[],[3506],{"type":55,"value":3507},"eventstream-authoring-cli",{"type":55,"value":3509}," for writes",{"type":42,"tag":71,"props":3511,"children":3512},{},[3513],{"type":55,"value":3514},"Do NOT attempt to query event data through the Eventstream API — use downstream skills (eventhouse-consumption-cli, sqldw-consumption-cli) for querying landed data",{"type":42,"tag":720,"props":3516,"children":3517},{},[],{"type":42,"tag":150,"props":3519,"children":3521},{"id":3520},"examples",[3522],{"type":55,"value":3523},"Examples",{"type":42,"tag":43,"props":3525,"children":3526},{},[3527],{"type":42,"tag":47,"props":3528,"children":3529},{},[3530,3535,3537,3543,3545,3551,3553,3558,3560,3566,3568,3574,3576,3582,3583,3589,3591,3597,3599,3604],{"type":42,"tag":51,"props":3531,"children":3532},{},[3533],{"type":55,"value":3534},"Platform note",{"type":55,"value":3536}," — examples use PowerShell. Always write the JSON body to\na temp file via ",{"type":42,"tag":82,"props":3538,"children":3540},{"className":3539},[],[3541],{"type":55,"value":3542},"[IO.File]::WriteAllText()",{"type":55,"value":3544}," (no BOM) and pass\n",{"type":42,"tag":82,"props":3546,"children":3548},{"className":3547},[],[3549],{"type":55,"value":3550},"--body \"@$file\"",{"type":55,"value":3552}," to ",{"type":42,"tag":82,"props":3554,"children":3556},{"className":3555},[],[3557],{"type":55,"value":396},{"type":55,"value":3559},", rather than inline ",{"type":42,"tag":82,"props":3561,"children":3563},{"className":3562},[],[3564],{"type":55,"value":3565},"--body \"...\"",{"type":55,"value":3567}," which\n",{"type":42,"tag":82,"props":3569,"children":3571},{"className":3570},[],[3572],{"type":55,"value":3573},"cmd.exe",{"type":55,"value":3575}," can mangle. Use ",{"type":42,"tag":82,"props":3577,"children":3579},{"className":3578},[],[3580],{"type":55,"value":3581},"-Compress",{"type":55,"value":3306},{"type":42,"tag":82,"props":3584,"children":3586},{"className":3585},[],[3587],{"type":55,"value":3588},"ConvertTo-Json",{"type":55,"value":3590}," to avoid\nnewline issues. The one safe inline exception is ",{"type":42,"tag":82,"props":3592,"children":3594},{"className":3593},[],[3595],{"type":55,"value":3596},"--body '{}'",{"type":55,"value":3598}," for empty bodies.\nFor large workspaces, check for ",{"type":42,"tag":82,"props":3600,"children":3602},{"className":3601},[],[3603],{"type":55,"value":3409},{"type":55,"value":3605}," in list responses to handle\npagination.",{"type":42,"tag":729,"props":3607,"children":3609},{"id":3608},"example-1-list-all-eventstreams-in-a-workspace",[3610],{"type":55,"value":3611},"Example 1: List All Eventstreams in a Workspace",{"type":42,"tag":47,"props":3613,"children":3614},{},[3615,3620],{"type":42,"tag":51,"props":3616,"children":3617},{},[3618],{"type":55,"value":3619},"Prompt",{"type":55,"value":3621},": \"List all Eventstreams in my analytics workspace showing their names and IDs.\"",{"type":42,"tag":736,"props":3623,"children":3625},{"className":1532,"code":3624,"language":1534,"meta":741,"style":741},"# 1. Discover workspace ID\n$wsId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='analytics'] | [0].id\" -o tsv)\nif (-not $wsId) { throw \"Workspace 'analytics' not found\" }\n\n# 2. List Eventstreams (handles pagination)\n$allItems = @()\n$resp = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n$allItems += $resp.value\nwhile ($resp.continuationUri) {\n    $resp = az rest --method get `\n      --url $resp.continuationUri `\n      --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n    $allItems += $resp.value\n}\n$allItems | Select-Object displayName, id, description | Format-Table\n",[3626],{"type":42,"tag":82,"props":3627,"children":3628},{"__ignoreMap":741},[3629,3637,3645,3653,3660,3668,3676,3683,3691,3699,3707,3716,3724,3733,3742,3751,3760,3769,3778,3786],{"type":42,"tag":226,"props":3630,"children":3631},{"class":748,"line":749},[3632],{"type":42,"tag":226,"props":3633,"children":3634},{},[3635],{"type":55,"value":3636},"# 1. Discover workspace ID\n",{"type":42,"tag":226,"props":3638,"children":3639},{"class":748,"line":781},[3640],{"type":42,"tag":226,"props":3641,"children":3642},{},[3643],{"type":55,"value":3644},"$wsId = (az rest --method get `\n",{"type":42,"tag":226,"props":3646,"children":3647},{"class":748,"line":830},[3648],{"type":42,"tag":226,"props":3649,"children":3650},{},[3651],{"type":55,"value":3652},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\" `\n",{"type":42,"tag":226,"props":3654,"children":3655},{"class":748,"line":950},[3656],{"type":42,"tag":226,"props":3657,"children":3658},{},[3659],{"type":55,"value":1570},{"type":42,"tag":226,"props":3661,"children":3662},{"class":748,"line":1439},[3663],{"type":42,"tag":226,"props":3664,"children":3665},{},[3666],{"type":55,"value":3667},"  --query \"value[?displayName=='analytics'] | [0].id\" -o tsv)\n",{"type":42,"tag":226,"props":3669,"children":3670},{"class":748,"line":1464},[3671],{"type":42,"tag":226,"props":3672,"children":3673},{},[3674],{"type":55,"value":3675},"if (-not $wsId) { throw \"Workspace 'analytics' not found\" }\n",{"type":42,"tag":226,"props":3677,"children":3678},{"class":748,"line":1500},[3679],{"type":42,"tag":226,"props":3680,"children":3681},{"emptyLinePlaceholder":2107},[3682],{"type":55,"value":2110},{"type":42,"tag":226,"props":3684,"children":3685},{"class":748,"line":2113},[3686],{"type":42,"tag":226,"props":3687,"children":3688},{},[3689],{"type":55,"value":3690},"# 2. List Eventstreams (handles pagination)\n",{"type":42,"tag":226,"props":3692,"children":3693},{"class":748,"line":2732},[3694],{"type":42,"tag":226,"props":3695,"children":3696},{},[3697],{"type":55,"value":3698},"$allItems = @()\n",{"type":42,"tag":226,"props":3700,"children":3701},{"class":748,"line":2741},[3702],{"type":42,"tag":226,"props":3703,"children":3704},{},[3705],{"type":55,"value":3706},"$resp = az rest --method get `\n",{"type":42,"tag":226,"props":3708,"children":3710},{"class":748,"line":3709},11,[3711],{"type":42,"tag":226,"props":3712,"children":3713},{},[3714],{"type":55,"value":3715},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\" `\n",{"type":42,"tag":226,"props":3717,"children":3719},{"class":748,"line":3718},12,[3720],{"type":42,"tag":226,"props":3721,"children":3722},{},[3723],{"type":55,"value":2230},{"type":42,"tag":226,"props":3725,"children":3727},{"class":748,"line":3726},13,[3728],{"type":42,"tag":226,"props":3729,"children":3730},{},[3731],{"type":55,"value":3732},"$allItems += $resp.value\n",{"type":42,"tag":226,"props":3734,"children":3736},{"class":748,"line":3735},14,[3737],{"type":42,"tag":226,"props":3738,"children":3739},{},[3740],{"type":55,"value":3741},"while ($resp.continuationUri) {\n",{"type":42,"tag":226,"props":3743,"children":3745},{"class":748,"line":3744},15,[3746],{"type":42,"tag":226,"props":3747,"children":3748},{},[3749],{"type":55,"value":3750},"    $resp = az rest --method get `\n",{"type":42,"tag":226,"props":3752,"children":3754},{"class":748,"line":3753},16,[3755],{"type":42,"tag":226,"props":3756,"children":3757},{},[3758],{"type":55,"value":3759},"      --url $resp.continuationUri `\n",{"type":42,"tag":226,"props":3761,"children":3763},{"class":748,"line":3762},17,[3764],{"type":42,"tag":226,"props":3765,"children":3766},{},[3767],{"type":55,"value":3768},"      --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n",{"type":42,"tag":226,"props":3770,"children":3772},{"class":748,"line":3771},18,[3773],{"type":42,"tag":226,"props":3774,"children":3775},{},[3776],{"type":55,"value":3777},"    $allItems += $resp.value\n",{"type":42,"tag":226,"props":3779,"children":3781},{"class":748,"line":3780},19,[3782],{"type":42,"tag":226,"props":3783,"children":3784},{},[3785],{"type":55,"value":2747},{"type":42,"tag":226,"props":3787,"children":3789},{"class":748,"line":3788},20,[3790],{"type":42,"tag":226,"props":3791,"children":3792},{},[3793],{"type":55,"value":3794},"$allItems | Select-Object displayName, id, description | Format-Table\n",{"type":42,"tag":729,"props":3796,"children":3798},{"id":3797},"example-2-inspect-eventstream-topology",[3799],{"type":55,"value":3800},"Example 2: Inspect Eventstream Topology",{"type":42,"tag":47,"props":3802,"children":3803},{},[3804,3808],{"type":42,"tag":51,"props":3805,"children":3806},{},[3807],{"type":55,"value":3619},{"type":55,"value":3809},": \"Show me the topology of my SensorIngestion Eventstream — all sources, operators, and destinations.\"",{"type":42,"tag":736,"props":3811,"children":3813},{"className":1532,"code":3812,"language":1534,"meta":741,"style":741},"# 1. Discover workspace + Eventstream IDs\n$wsId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='analytics'] | [0].id\" -o tsv)\nif (-not $wsId) { throw \"Workspace 'analytics' not found\" }\n\n$esId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='SensorIngestion'] | [0].id\" -o tsv)\nif (-not $esId) { throw \"Eventstream 'SensorIngestion' not found\" }\n\n# 2. Get topology (returns JSON directly — no base64 decoding needed)\n$topo = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\n# 3. Summarize nodes (filter nulls from arrays)\nWrite-Host \"Sources:\"\n@($topo.sources | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type), id: $($_.id))\"\n}\nWrite-Host \"Operators:\"\n@($topo.operators | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type))\"\n}\nWrite-Host \"Destinations:\"\n@($topo.destinations | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type))\"\n}\nWrite-Host \"Streams:\"\n@($topo.streams | Where-Object { $_ -ne $null }) | ForEach-Object {\n    Write-Host \"  - $($_.name) (type: $($_.type))\"\n}\n",[3814],{"type":42,"tag":82,"props":3815,"children":3816},{"__ignoreMap":741},[3817,3825,3832,3839,3846,3853,3860,3867,3875,3882,3889,3897,3905,3912,3920,3928,3936,3943,3950,3958,3966,3975,3984,3992,4001,4010,4019,4027,4036,4045,4053,4061,4070,4079,4087],{"type":42,"tag":226,"props":3818,"children":3819},{"class":748,"line":749},[3820],{"type":42,"tag":226,"props":3821,"children":3822},{},[3823],{"type":55,"value":3824},"# 1. Discover workspace + Eventstream IDs\n",{"type":42,"tag":226,"props":3826,"children":3827},{"class":748,"line":781},[3828],{"type":42,"tag":226,"props":3829,"children":3830},{},[3831],{"type":55,"value":3644},{"type":42,"tag":226,"props":3833,"children":3834},{"class":748,"line":830},[3835],{"type":42,"tag":226,"props":3836,"children":3837},{},[3838],{"type":55,"value":3652},{"type":42,"tag":226,"props":3840,"children":3841},{"class":748,"line":950},[3842],{"type":42,"tag":226,"props":3843,"children":3844},{},[3845],{"type":55,"value":1570},{"type":42,"tag":226,"props":3847,"children":3848},{"class":748,"line":1439},[3849],{"type":42,"tag":226,"props":3850,"children":3851},{},[3852],{"type":55,"value":3667},{"type":42,"tag":226,"props":3854,"children":3855},{"class":748,"line":1464},[3856],{"type":42,"tag":226,"props":3857,"children":3858},{},[3859],{"type":55,"value":3675},{"type":42,"tag":226,"props":3861,"children":3862},{"class":748,"line":1500},[3863],{"type":42,"tag":226,"props":3864,"children":3865},{"emptyLinePlaceholder":2107},[3866],{"type":55,"value":2110},{"type":42,"tag":226,"props":3868,"children":3869},{"class":748,"line":2113},[3870],{"type":42,"tag":226,"props":3871,"children":3872},{},[3873],{"type":55,"value":3874},"$esId = (az rest --method get `\n",{"type":42,"tag":226,"props":3876,"children":3877},{"class":748,"line":2732},[3878],{"type":42,"tag":226,"props":3879,"children":3880},{},[3881],{"type":55,"value":3715},{"type":42,"tag":226,"props":3883,"children":3884},{"class":748,"line":2741},[3885],{"type":42,"tag":226,"props":3886,"children":3887},{},[3888],{"type":55,"value":1570},{"type":42,"tag":226,"props":3890,"children":3891},{"class":748,"line":3709},[3892],{"type":42,"tag":226,"props":3893,"children":3894},{},[3895],{"type":55,"value":3896},"  --query \"value[?displayName=='SensorIngestion'] | [0].id\" -o tsv)\n",{"type":42,"tag":226,"props":3898,"children":3899},{"class":748,"line":3718},[3900],{"type":42,"tag":226,"props":3901,"children":3902},{},[3903],{"type":55,"value":3904},"if (-not $esId) { throw \"Eventstream 'SensorIngestion' not found\" }\n",{"type":42,"tag":226,"props":3906,"children":3907},{"class":748,"line":3726},[3908],{"type":42,"tag":226,"props":3909,"children":3910},{"emptyLinePlaceholder":2107},[3911],{"type":55,"value":2110},{"type":42,"tag":226,"props":3913,"children":3914},{"class":748,"line":3735},[3915],{"type":42,"tag":226,"props":3916,"children":3917},{},[3918],{"type":55,"value":3919},"# 2. Get topology (returns JSON directly — no base64 decoding needed)\n",{"type":42,"tag":226,"props":3921,"children":3922},{"class":748,"line":3744},[3923],{"type":42,"tag":226,"props":3924,"children":3925},{},[3926],{"type":55,"value":3927},"$topo = az rest --method get `\n",{"type":42,"tag":226,"props":3929,"children":3930},{"class":748,"line":3753},[3931],{"type":42,"tag":226,"props":3932,"children":3933},{},[3934],{"type":55,"value":3935},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Ftopology\" `\n",{"type":42,"tag":226,"props":3937,"children":3938},{"class":748,"line":3762},[3939],{"type":42,"tag":226,"props":3940,"children":3941},{},[3942],{"type":55,"value":2230},{"type":42,"tag":226,"props":3944,"children":3945},{"class":748,"line":3771},[3946],{"type":42,"tag":226,"props":3947,"children":3948},{"emptyLinePlaceholder":2107},[3949],{"type":55,"value":2110},{"type":42,"tag":226,"props":3951,"children":3952},{"class":748,"line":3780},[3953],{"type":42,"tag":226,"props":3954,"children":3955},{},[3956],{"type":55,"value":3957},"# 3. Summarize nodes (filter nulls from arrays)\n",{"type":42,"tag":226,"props":3959,"children":3960},{"class":748,"line":3788},[3961],{"type":42,"tag":226,"props":3962,"children":3963},{},[3964],{"type":55,"value":3965},"Write-Host \"Sources:\"\n",{"type":42,"tag":226,"props":3967,"children":3969},{"class":748,"line":3968},21,[3970],{"type":42,"tag":226,"props":3971,"children":3972},{},[3973],{"type":55,"value":3974},"@($topo.sources | Where-Object { $_ -ne $null }) | ForEach-Object {\n",{"type":42,"tag":226,"props":3976,"children":3978},{"class":748,"line":3977},22,[3979],{"type":42,"tag":226,"props":3980,"children":3981},{},[3982],{"type":55,"value":3983},"    Write-Host \"  - $($_.name) (type: $($_.type), id: $($_.id))\"\n",{"type":42,"tag":226,"props":3985,"children":3987},{"class":748,"line":3986},23,[3988],{"type":42,"tag":226,"props":3989,"children":3990},{},[3991],{"type":55,"value":2747},{"type":42,"tag":226,"props":3993,"children":3995},{"class":748,"line":3994},24,[3996],{"type":42,"tag":226,"props":3997,"children":3998},{},[3999],{"type":55,"value":4000},"Write-Host \"Operators:\"\n",{"type":42,"tag":226,"props":4002,"children":4004},{"class":748,"line":4003},25,[4005],{"type":42,"tag":226,"props":4006,"children":4007},{},[4008],{"type":55,"value":4009},"@($topo.operators | Where-Object { $_ -ne $null }) | ForEach-Object {\n",{"type":42,"tag":226,"props":4011,"children":4013},{"class":748,"line":4012},26,[4014],{"type":42,"tag":226,"props":4015,"children":4016},{},[4017],{"type":55,"value":4018},"    Write-Host \"  - $($_.name) (type: $($_.type))\"\n",{"type":42,"tag":226,"props":4020,"children":4022},{"class":748,"line":4021},27,[4023],{"type":42,"tag":226,"props":4024,"children":4025},{},[4026],{"type":55,"value":2747},{"type":42,"tag":226,"props":4028,"children":4030},{"class":748,"line":4029},28,[4031],{"type":42,"tag":226,"props":4032,"children":4033},{},[4034],{"type":55,"value":4035},"Write-Host \"Destinations:\"\n",{"type":42,"tag":226,"props":4037,"children":4039},{"class":748,"line":4038},29,[4040],{"type":42,"tag":226,"props":4041,"children":4042},{},[4043],{"type":55,"value":4044},"@($topo.destinations | Where-Object { $_ -ne $null }) | ForEach-Object {\n",{"type":42,"tag":226,"props":4046,"children":4048},{"class":748,"line":4047},30,[4049],{"type":42,"tag":226,"props":4050,"children":4051},{},[4052],{"type":55,"value":4018},{"type":42,"tag":226,"props":4054,"children":4056},{"class":748,"line":4055},31,[4057],{"type":42,"tag":226,"props":4058,"children":4059},{},[4060],{"type":55,"value":2747},{"type":42,"tag":226,"props":4062,"children":4064},{"class":748,"line":4063},32,[4065],{"type":42,"tag":226,"props":4066,"children":4067},{},[4068],{"type":55,"value":4069},"Write-Host \"Streams:\"\n",{"type":42,"tag":226,"props":4071,"children":4073},{"class":748,"line":4072},33,[4074],{"type":42,"tag":226,"props":4075,"children":4076},{},[4077],{"type":55,"value":4078},"@($topo.streams | Where-Object { $_ -ne $null }) | ForEach-Object {\n",{"type":42,"tag":226,"props":4080,"children":4082},{"class":748,"line":4081},34,[4083],{"type":42,"tag":226,"props":4084,"children":4085},{},[4086],{"type":55,"value":4018},{"type":42,"tag":226,"props":4088,"children":4090},{"class":748,"line":4089},35,[4091],{"type":42,"tag":226,"props":4092,"children":4093},{},[4094],{"type":55,"value":2747},{"type":42,"tag":729,"props":4096,"children":4098},{"id":4097},"example-3-check-retention-and-throughput-settings",[4099],{"type":55,"value":4100},"Example 3: Check Retention and Throughput Settings",{"type":42,"tag":47,"props":4102,"children":4103},{},[4104,4108],{"type":42,"tag":51,"props":4105,"children":4106},{},[4107],{"type":55,"value":3619},{"type":55,"value":4109},": \"What are the retention and throughput settings for my SensorIngestion Eventstream?\"",{"type":42,"tag":43,"props":4111,"children":4112},{},[4113],{"type":42,"tag":47,"props":4114,"children":4115},{},[4116,4121,4123,4128,4130,4135],{"type":42,"tag":51,"props":4117,"children":4118},{},[4119],{"type":55,"value":4120},"Note",{"type":55,"value":4122},": Retention and throughput settings are stored in the ",{"type":42,"tag":82,"props":4124,"children":4126},{"className":4125},[],[4127],{"type":55,"value":3227},{"type":55,"value":4129},"\npart of the definition (not ",{"type":42,"tag":82,"props":4131,"children":4133},{"className":4132},[],[4134],{"type":55,"value":1309},{"type":55,"value":4136},"). If this part is absent, the Eventstream\nuses platform defaults.",{"type":42,"tag":736,"props":4138,"children":4140},{"className":1532,"code":4139,"language":1534,"meta":741,"style":741},"# 1. Discover workspace + Eventstream IDs\n$wsId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='analytics'] | [0].id\" -o tsv)\nif (-not $wsId) { throw \"Workspace 'analytics' not found\" }\n\n$esId = (az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Fitems?type=Eventstream\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" `\n  --query \"value[?displayName=='SensorIngestion'] | [0].id\" -o tsv)\nif (-not $esId) { throw \"Eventstream 'SensorIngestion' not found\" }\n\n# 2. Get definition (handles LRO via Location header)\n$token = (az account get-access-token --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" --query accessToken -o tsv)\n$ps5 = @{}; if ($PSVersionTable.PSVersion.Major -lt 6) { $ps5.UseBasicParsing = $true }\n$response = Invoke-WebRequest @ps5 -Method Post `\n  -Uri \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002FgetDefinition\" `\n  -Headers @{ Authorization = \"Bearer $token\"; \"Content-Type\" = \"application\u002Fjson\" } `\n  -Body '{}'\n\nif ($response.StatusCode -eq 202) {\n    $location = $response.Headers['Location']\n    if ($location -is [array]) { $location = $location[0] }\n    if (-not $location) { throw \"LRO response missing Location header\" }\n    $ra = $response.Headers['Retry-After']\n    if ($ra -is [array]) { $ra = $ra[0] }\n    $retryAfter = if ($ra) { [int]$ra } else { 5 }\n    $def = $null\n    for ($i = 0; $i -lt 12; $i++) {\n        Start-Sleep -Seconds $retryAfter\n        $poll = Invoke-RestMethod -Uri $location -Headers @{ Authorization = \"Bearer $token\" }\n        if ($poll.status -eq 'Succeeded') {\n            $def = Invoke-RestMethod -Uri \"$location\u002Fresult\" `\n              -Headers @{ Authorization = \"Bearer $token\" }\n            break\n        } elseif ($poll.status -in @('Failed', 'Cancelled')) {\n            throw \"getDefinition LRO $($poll.status): $($poll.error.message)\"\n        }\n    }\n    if (-not $def -or -not $def.definition) { throw \"getDefinition LRO timed out (last status: $(if ($poll) { $poll.status } else { 'unknown' }))\" }\n} else {\n    $def = $response.Content | ConvertFrom-Json\n}\n\n# 3. Decode eventstreamProperties.json part (holds retention + throughput)\n$propsPart = $def.definition.parts | Where-Object { $_.path -eq 'eventstreamProperties.json' } | Select-Object -First 1\nif ($propsPart) {\n    $props = [Text.Encoding]::UTF8.GetString(\n      [Convert]::FromBase64String($propsPart.payload)) | ConvertFrom-Json\n    Write-Host \"Retention: $($props.retentionTimeInDays) days\"\n    Write-Host \"Throughput Level: $($props.eventThroughputLevel)\"\n} else {\n    # Fall back to topology-level properties (older format)\n    $esPart = $def.definition.parts | Where-Object { $_.path -eq 'eventstream.json' } | Select-Object -First 1\n    if (-not $esPart) { throw \"eventstream.json part not found in definition\" }\n    $topology = [Text.Encoding]::UTF8.GetString(\n      [Convert]::FromBase64String($esPart.payload)) | ConvertFrom-Json\n    if ($topology.properties.retentionTimeInDays) {\n        Write-Host \"Retention: $($topology.properties.retentionTimeInDays) days\"\n    } else {\n        Write-Host \"Retention: (platform default — not explicitly configured)\"\n    }\n    if ($topology.properties.eventThroughputLevel) {\n        Write-Host \"Throughput Level: $($topology.properties.eventThroughputLevel)\"\n    } else {\n        Write-Host \"Throughput Level: (platform default — not explicitly configured)\"\n    }\n}\n",[4141],{"type":42,"tag":82,"props":4142,"children":4143},{"__ignoreMap":741},[4144,4151,4158,4165,4172,4179,4186,4193,4200,4208,4215,4222,4229,4236,4244,4252,4260,4268,4276,4284,4292,4299,4307,4315,4323,4331,4339,4347,4355,4363,4371,4379,4387,4395,4403,4411,4420,4429,4438,4447,4456,4465,4474,4483,4491,4499,4508,4517,4526,4535,4544,4553,4562,4570,4579,4588,4597,4606,4615,4624,4633,4642,4651,4659,4668,4677,4685,4694,4702],{"type":42,"tag":226,"props":4145,"children":4146},{"class":748,"line":749},[4147],{"type":42,"tag":226,"props":4148,"children":4149},{},[4150],{"type":55,"value":3824},{"type":42,"tag":226,"props":4152,"children":4153},{"class":748,"line":781},[4154],{"type":42,"tag":226,"props":4155,"children":4156},{},[4157],{"type":55,"value":3644},{"type":42,"tag":226,"props":4159,"children":4160},{"class":748,"line":830},[4161],{"type":42,"tag":226,"props":4162,"children":4163},{},[4164],{"type":55,"value":3652},{"type":42,"tag":226,"props":4166,"children":4167},{"class":748,"line":950},[4168],{"type":42,"tag":226,"props":4169,"children":4170},{},[4171],{"type":55,"value":1570},{"type":42,"tag":226,"props":4173,"children":4174},{"class":748,"line":1439},[4175],{"type":42,"tag":226,"props":4176,"children":4177},{},[4178],{"type":55,"value":3667},{"type":42,"tag":226,"props":4180,"children":4181},{"class":748,"line":1464},[4182],{"type":42,"tag":226,"props":4183,"children":4184},{},[4185],{"type":55,"value":3675},{"type":42,"tag":226,"props":4187,"children":4188},{"class":748,"line":1500},[4189],{"type":42,"tag":226,"props":4190,"children":4191},{"emptyLinePlaceholder":2107},[4192],{"type":55,"value":2110},{"type":42,"tag":226,"props":4194,"children":4195},{"class":748,"line":2113},[4196],{"type":42,"tag":226,"props":4197,"children":4198},{},[4199],{"type":55,"value":3874},{"type":42,"tag":226,"props":4201,"children":4202},{"class":748,"line":2732},[4203],{"type":42,"tag":226,"props":4204,"children":4205},{},[4206],{"type":55,"value":4207},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Fitems?type=Eventstream\" `\n",{"type":42,"tag":226,"props":4209,"children":4210},{"class":748,"line":2741},[4211],{"type":42,"tag":226,"props":4212,"children":4213},{},[4214],{"type":55,"value":1570},{"type":42,"tag":226,"props":4216,"children":4217},{"class":748,"line":3709},[4218],{"type":42,"tag":226,"props":4219,"children":4220},{},[4221],{"type":55,"value":3896},{"type":42,"tag":226,"props":4223,"children":4224},{"class":748,"line":3718},[4225],{"type":42,"tag":226,"props":4226,"children":4227},{},[4228],{"type":55,"value":3904},{"type":42,"tag":226,"props":4230,"children":4231},{"class":748,"line":3726},[4232],{"type":42,"tag":226,"props":4233,"children":4234},{"emptyLinePlaceholder":2107},[4235],{"type":55,"value":2110},{"type":42,"tag":226,"props":4237,"children":4238},{"class":748,"line":3735},[4239],{"type":42,"tag":226,"props":4240,"children":4241},{},[4242],{"type":55,"value":4243},"# 2. Get definition (handles LRO via Location header)\n",{"type":42,"tag":226,"props":4245,"children":4246},{"class":748,"line":3744},[4247],{"type":42,"tag":226,"props":4248,"children":4249},{},[4250],{"type":55,"value":4251},"$token = (az account get-access-token --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" --query accessToken -o tsv)\n",{"type":42,"tag":226,"props":4253,"children":4254},{"class":748,"line":3753},[4255],{"type":42,"tag":226,"props":4256,"children":4257},{},[4258],{"type":55,"value":4259},"$ps5 = @{}; if ($PSVersionTable.PSVersion.Major -lt 6) { $ps5.UseBasicParsing = $true }\n",{"type":42,"tag":226,"props":4261,"children":4262},{"class":748,"line":3762},[4263],{"type":42,"tag":226,"props":4264,"children":4265},{},[4266],{"type":55,"value":4267},"$response = Invoke-WebRequest @ps5 -Method Post `\n",{"type":42,"tag":226,"props":4269,"children":4270},{"class":748,"line":3771},[4271],{"type":42,"tag":226,"props":4272,"children":4273},{},[4274],{"type":55,"value":4275},"  -Uri \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002FgetDefinition\" `\n",{"type":42,"tag":226,"props":4277,"children":4278},{"class":748,"line":3780},[4279],{"type":42,"tag":226,"props":4280,"children":4281},{},[4282],{"type":55,"value":4283},"  -Headers @{ Authorization = \"Bearer $token\"; \"Content-Type\" = \"application\u002Fjson\" } `\n",{"type":42,"tag":226,"props":4285,"children":4286},{"class":748,"line":3788},[4287],{"type":42,"tag":226,"props":4288,"children":4289},{},[4290],{"type":55,"value":4291},"  -Body '{}'\n",{"type":42,"tag":226,"props":4293,"children":4294},{"class":748,"line":3968},[4295],{"type":42,"tag":226,"props":4296,"children":4297},{"emptyLinePlaceholder":2107},[4298],{"type":55,"value":2110},{"type":42,"tag":226,"props":4300,"children":4301},{"class":748,"line":3977},[4302],{"type":42,"tag":226,"props":4303,"children":4304},{},[4305],{"type":55,"value":4306},"if ($response.StatusCode -eq 202) {\n",{"type":42,"tag":226,"props":4308,"children":4309},{"class":748,"line":3986},[4310],{"type":42,"tag":226,"props":4311,"children":4312},{},[4313],{"type":55,"value":4314},"    $location = $response.Headers['Location']\n",{"type":42,"tag":226,"props":4316,"children":4317},{"class":748,"line":3994},[4318],{"type":42,"tag":226,"props":4319,"children":4320},{},[4321],{"type":55,"value":4322},"    if ($location -is [array]) { $location = $location[0] }\n",{"type":42,"tag":226,"props":4324,"children":4325},{"class":748,"line":4003},[4326],{"type":42,"tag":226,"props":4327,"children":4328},{},[4329],{"type":55,"value":4330},"    if (-not $location) { throw \"LRO response missing Location header\" }\n",{"type":42,"tag":226,"props":4332,"children":4333},{"class":748,"line":4012},[4334],{"type":42,"tag":226,"props":4335,"children":4336},{},[4337],{"type":55,"value":4338},"    $ra = $response.Headers['Retry-After']\n",{"type":42,"tag":226,"props":4340,"children":4341},{"class":748,"line":4021},[4342],{"type":42,"tag":226,"props":4343,"children":4344},{},[4345],{"type":55,"value":4346},"    if ($ra -is [array]) { $ra = $ra[0] }\n",{"type":42,"tag":226,"props":4348,"children":4349},{"class":748,"line":4029},[4350],{"type":42,"tag":226,"props":4351,"children":4352},{},[4353],{"type":55,"value":4354},"    $retryAfter = if ($ra) { [int]$ra } else { 5 }\n",{"type":42,"tag":226,"props":4356,"children":4357},{"class":748,"line":4038},[4358],{"type":42,"tag":226,"props":4359,"children":4360},{},[4361],{"type":55,"value":4362},"    $def = $null\n",{"type":42,"tag":226,"props":4364,"children":4365},{"class":748,"line":4047},[4366],{"type":42,"tag":226,"props":4367,"children":4368},{},[4369],{"type":55,"value":4370},"    for ($i = 0; $i -lt 12; $i++) {\n",{"type":42,"tag":226,"props":4372,"children":4373},{"class":748,"line":4055},[4374],{"type":42,"tag":226,"props":4375,"children":4376},{},[4377],{"type":55,"value":4378},"        Start-Sleep -Seconds $retryAfter\n",{"type":42,"tag":226,"props":4380,"children":4381},{"class":748,"line":4063},[4382],{"type":42,"tag":226,"props":4383,"children":4384},{},[4385],{"type":55,"value":4386},"        $poll = Invoke-RestMethod -Uri $location -Headers @{ Authorization = \"Bearer $token\" }\n",{"type":42,"tag":226,"props":4388,"children":4389},{"class":748,"line":4072},[4390],{"type":42,"tag":226,"props":4391,"children":4392},{},[4393],{"type":55,"value":4394},"        if ($poll.status -eq 'Succeeded') {\n",{"type":42,"tag":226,"props":4396,"children":4397},{"class":748,"line":4081},[4398],{"type":42,"tag":226,"props":4399,"children":4400},{},[4401],{"type":55,"value":4402},"            $def = Invoke-RestMethod -Uri \"$location\u002Fresult\" `\n",{"type":42,"tag":226,"props":4404,"children":4405},{"class":748,"line":4089},[4406],{"type":42,"tag":226,"props":4407,"children":4408},{},[4409],{"type":55,"value":4410},"              -Headers @{ Authorization = \"Bearer $token\" }\n",{"type":42,"tag":226,"props":4412,"children":4414},{"class":748,"line":4413},36,[4415],{"type":42,"tag":226,"props":4416,"children":4417},{},[4418],{"type":55,"value":4419},"            break\n",{"type":42,"tag":226,"props":4421,"children":4423},{"class":748,"line":4422},37,[4424],{"type":42,"tag":226,"props":4425,"children":4426},{},[4427],{"type":55,"value":4428},"        } elseif ($poll.status -in @('Failed', 'Cancelled')) {\n",{"type":42,"tag":226,"props":4430,"children":4432},{"class":748,"line":4431},38,[4433],{"type":42,"tag":226,"props":4434,"children":4435},{},[4436],{"type":55,"value":4437},"            throw \"getDefinition LRO $($poll.status): $($poll.error.message)\"\n",{"type":42,"tag":226,"props":4439,"children":4441},{"class":748,"line":4440},39,[4442],{"type":42,"tag":226,"props":4443,"children":4444},{},[4445],{"type":55,"value":4446},"        }\n",{"type":42,"tag":226,"props":4448,"children":4450},{"class":748,"line":4449},40,[4451],{"type":42,"tag":226,"props":4452,"children":4453},{},[4454],{"type":55,"value":4455},"    }\n",{"type":42,"tag":226,"props":4457,"children":4459},{"class":748,"line":4458},41,[4460],{"type":42,"tag":226,"props":4461,"children":4462},{},[4463],{"type":55,"value":4464},"    if (-not $def -or -not $def.definition) { throw \"getDefinition LRO timed out (last status: $(if ($poll) { $poll.status } else { 'unknown' }))\" }\n",{"type":42,"tag":226,"props":4466,"children":4468},{"class":748,"line":4467},42,[4469],{"type":42,"tag":226,"props":4470,"children":4471},{},[4472],{"type":55,"value":4473},"} else {\n",{"type":42,"tag":226,"props":4475,"children":4477},{"class":748,"line":4476},43,[4478],{"type":42,"tag":226,"props":4479,"children":4480},{},[4481],{"type":55,"value":4482},"    $def = $response.Content | ConvertFrom-Json\n",{"type":42,"tag":226,"props":4484,"children":4486},{"class":748,"line":4485},44,[4487],{"type":42,"tag":226,"props":4488,"children":4489},{},[4490],{"type":55,"value":2747},{"type":42,"tag":226,"props":4492,"children":4494},{"class":748,"line":4493},45,[4495],{"type":42,"tag":226,"props":4496,"children":4497},{"emptyLinePlaceholder":2107},[4498],{"type":55,"value":2110},{"type":42,"tag":226,"props":4500,"children":4502},{"class":748,"line":4501},46,[4503],{"type":42,"tag":226,"props":4504,"children":4505},{},[4506],{"type":55,"value":4507},"# 3. Decode eventstreamProperties.json part (holds retention + throughput)\n",{"type":42,"tag":226,"props":4509,"children":4511},{"class":748,"line":4510},47,[4512],{"type":42,"tag":226,"props":4513,"children":4514},{},[4515],{"type":55,"value":4516},"$propsPart = $def.definition.parts | Where-Object { $_.path -eq 'eventstreamProperties.json' } | Select-Object -First 1\n",{"type":42,"tag":226,"props":4518,"children":4520},{"class":748,"line":4519},48,[4521],{"type":42,"tag":226,"props":4522,"children":4523},{},[4524],{"type":55,"value":4525},"if ($propsPart) {\n",{"type":42,"tag":226,"props":4527,"children":4529},{"class":748,"line":4528},49,[4530],{"type":42,"tag":226,"props":4531,"children":4532},{},[4533],{"type":55,"value":4534},"    $props = [Text.Encoding]::UTF8.GetString(\n",{"type":42,"tag":226,"props":4536,"children":4538},{"class":748,"line":4537},50,[4539],{"type":42,"tag":226,"props":4540,"children":4541},{},[4542],{"type":55,"value":4543},"      [Convert]::FromBase64String($propsPart.payload)) | ConvertFrom-Json\n",{"type":42,"tag":226,"props":4545,"children":4547},{"class":748,"line":4546},51,[4548],{"type":42,"tag":226,"props":4549,"children":4550},{},[4551],{"type":55,"value":4552},"    Write-Host \"Retention: $($props.retentionTimeInDays) days\"\n",{"type":42,"tag":226,"props":4554,"children":4556},{"class":748,"line":4555},52,[4557],{"type":42,"tag":226,"props":4558,"children":4559},{},[4560],{"type":55,"value":4561},"    Write-Host \"Throughput Level: $($props.eventThroughputLevel)\"\n",{"type":42,"tag":226,"props":4563,"children":4565},{"class":748,"line":4564},53,[4566],{"type":42,"tag":226,"props":4567,"children":4568},{},[4569],{"type":55,"value":4473},{"type":42,"tag":226,"props":4571,"children":4573},{"class":748,"line":4572},54,[4574],{"type":42,"tag":226,"props":4575,"children":4576},{},[4577],{"type":55,"value":4578},"    # Fall back to topology-level properties (older format)\n",{"type":42,"tag":226,"props":4580,"children":4582},{"class":748,"line":4581},55,[4583],{"type":42,"tag":226,"props":4584,"children":4585},{},[4586],{"type":55,"value":4587},"    $esPart = $def.definition.parts | Where-Object { $_.path -eq 'eventstream.json' } | Select-Object -First 1\n",{"type":42,"tag":226,"props":4589,"children":4591},{"class":748,"line":4590},56,[4592],{"type":42,"tag":226,"props":4593,"children":4594},{},[4595],{"type":55,"value":4596},"    if (-not $esPart) { throw \"eventstream.json part not found in definition\" }\n",{"type":42,"tag":226,"props":4598,"children":4600},{"class":748,"line":4599},57,[4601],{"type":42,"tag":226,"props":4602,"children":4603},{},[4604],{"type":55,"value":4605},"    $topology = [Text.Encoding]::UTF8.GetString(\n",{"type":42,"tag":226,"props":4607,"children":4609},{"class":748,"line":4608},58,[4610],{"type":42,"tag":226,"props":4611,"children":4612},{},[4613],{"type":55,"value":4614},"      [Convert]::FromBase64String($esPart.payload)) | ConvertFrom-Json\n",{"type":42,"tag":226,"props":4616,"children":4618},{"class":748,"line":4617},59,[4619],{"type":42,"tag":226,"props":4620,"children":4621},{},[4622],{"type":55,"value":4623},"    if ($topology.properties.retentionTimeInDays) {\n",{"type":42,"tag":226,"props":4625,"children":4627},{"class":748,"line":4626},60,[4628],{"type":42,"tag":226,"props":4629,"children":4630},{},[4631],{"type":55,"value":4632},"        Write-Host \"Retention: $($topology.properties.retentionTimeInDays) days\"\n",{"type":42,"tag":226,"props":4634,"children":4636},{"class":748,"line":4635},61,[4637],{"type":42,"tag":226,"props":4638,"children":4639},{},[4640],{"type":55,"value":4641},"    } else {\n",{"type":42,"tag":226,"props":4643,"children":4645},{"class":748,"line":4644},62,[4646],{"type":42,"tag":226,"props":4647,"children":4648},{},[4649],{"type":55,"value":4650},"        Write-Host \"Retention: (platform default — not explicitly configured)\"\n",{"type":42,"tag":226,"props":4652,"children":4654},{"class":748,"line":4653},63,[4655],{"type":42,"tag":226,"props":4656,"children":4657},{},[4658],{"type":55,"value":4455},{"type":42,"tag":226,"props":4660,"children":4662},{"class":748,"line":4661},64,[4663],{"type":42,"tag":226,"props":4664,"children":4665},{},[4666],{"type":55,"value":4667},"    if ($topology.properties.eventThroughputLevel) {\n",{"type":42,"tag":226,"props":4669,"children":4671},{"class":748,"line":4670},65,[4672],{"type":42,"tag":226,"props":4673,"children":4674},{},[4675],{"type":55,"value":4676},"        Write-Host \"Throughput Level: $($topology.properties.eventThroughputLevel)\"\n",{"type":42,"tag":226,"props":4678,"children":4680},{"class":748,"line":4679},66,[4681],{"type":42,"tag":226,"props":4682,"children":4683},{},[4684],{"type":55,"value":4641},{"type":42,"tag":226,"props":4686,"children":4688},{"class":748,"line":4687},67,[4689],{"type":42,"tag":226,"props":4690,"children":4691},{},[4692],{"type":55,"value":4693},"        Write-Host \"Throughput Level: (platform default — not explicitly configured)\"\n",{"type":42,"tag":226,"props":4695,"children":4697},{"class":748,"line":4696},68,[4698],{"type":42,"tag":226,"props":4699,"children":4700},{},[4701],{"type":55,"value":4455},{"type":42,"tag":226,"props":4703,"children":4705},{"class":748,"line":4704},69,[4706],{"type":42,"tag":226,"props":4707,"children":4708},{},[4709],{"type":55,"value":2747},{"type":42,"tag":729,"props":4711,"children":4713},{"id":4712},"example-4-get-custom-endpoint-connection-metadata",[4714],{"type":55,"value":4715},"Example 4: Get Custom Endpoint Connection Metadata",{"type":42,"tag":47,"props":4717,"children":4718},{},[4719,4723],{"type":42,"tag":51,"props":4720,"children":4721},{},[4722],{"type":55,"value":3619},{"type":55,"value":4724},": \"Get the Kafka connection metadata for the Custom Endpoint source in my SensorIngestion Eventstream.\"",{"type":42,"tag":43,"props":4726,"children":4727},{},[4728],{"type":42,"tag":47,"props":4729,"children":4730},{},[4731,4735],{"type":42,"tag":51,"props":4732,"children":4733},{},[4734],{"type":55,"value":2281},{"type":55,"value":4736},": The connection endpoint returns access keys. Get user confirmation before\ncalling it and avoid logging raw credentials.",{"type":42,"tag":736,"props":4738,"children":4740},{"className":1532,"code":4739,"language":1534,"meta":741,"style":741},"# 1. Discover workspace + Eventstream IDs (omitted for brevity)\n\n# 2. Get topology to find Custom Endpoint source ID\n$topo = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\n$ceSource = @($topo.sources | Where-Object { $_.type -eq 'CustomEndpoint' }) | Select-Object -First 1\nif (-not $ceSource) { throw \"No CustomEndpoint source found in this Eventstream\" }\n$sourceId = $ceSource.id\n\n# 3. Get connection metadata\n$conn = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Fsources\u002F$sourceId\u002Fconnection\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\nWrite-Host \"Fully Qualified Namespace: $($conn.fullyQualifiedNamespace)\"\nWrite-Host \"Event Hub Name:            $($conn.eventHubName)\"\nWrite-Host \"Kafka Bootstrap Server:    $($conn.fullyQualifiedNamespace):9093\"\n",[4741],{"type":42,"tag":82,"props":4742,"children":4743},{"__ignoreMap":741},[4744,4752,4759,4767,4774,4781,4788,4795,4803,4811,4819,4826,4834,4842,4850,4857,4864,4872,4880],{"type":42,"tag":226,"props":4745,"children":4746},{"class":748,"line":749},[4747],{"type":42,"tag":226,"props":4748,"children":4749},{},[4750],{"type":55,"value":4751},"# 1. Discover workspace + Eventstream IDs (omitted for brevity)\n",{"type":42,"tag":226,"props":4753,"children":4754},{"class":748,"line":781},[4755],{"type":42,"tag":226,"props":4756,"children":4757},{"emptyLinePlaceholder":2107},[4758],{"type":55,"value":2110},{"type":42,"tag":226,"props":4760,"children":4761},{"class":748,"line":830},[4762],{"type":42,"tag":226,"props":4763,"children":4764},{},[4765],{"type":55,"value":4766},"# 2. Get topology to find Custom Endpoint source ID\n",{"type":42,"tag":226,"props":4768,"children":4769},{"class":748,"line":950},[4770],{"type":42,"tag":226,"props":4771,"children":4772},{},[4773],{"type":55,"value":3927},{"type":42,"tag":226,"props":4775,"children":4776},{"class":748,"line":1439},[4777],{"type":42,"tag":226,"props":4778,"children":4779},{},[4780],{"type":55,"value":3935},{"type":42,"tag":226,"props":4782,"children":4783},{"class":748,"line":1464},[4784],{"type":42,"tag":226,"props":4785,"children":4786},{},[4787],{"type":55,"value":2230},{"type":42,"tag":226,"props":4789,"children":4790},{"class":748,"line":1500},[4791],{"type":42,"tag":226,"props":4792,"children":4793},{"emptyLinePlaceholder":2107},[4794],{"type":55,"value":2110},{"type":42,"tag":226,"props":4796,"children":4797},{"class":748,"line":2113},[4798],{"type":42,"tag":226,"props":4799,"children":4800},{},[4801],{"type":55,"value":4802},"$ceSource = @($topo.sources | Where-Object { $_.type -eq 'CustomEndpoint' }) | Select-Object -First 1\n",{"type":42,"tag":226,"props":4804,"children":4805},{"class":748,"line":2732},[4806],{"type":42,"tag":226,"props":4807,"children":4808},{},[4809],{"type":55,"value":4810},"if (-not $ceSource) { throw \"No CustomEndpoint source found in this Eventstream\" }\n",{"type":42,"tag":226,"props":4812,"children":4813},{"class":748,"line":2741},[4814],{"type":42,"tag":226,"props":4815,"children":4816},{},[4817],{"type":55,"value":4818},"$sourceId = $ceSource.id\n",{"type":42,"tag":226,"props":4820,"children":4821},{"class":748,"line":3709},[4822],{"type":42,"tag":226,"props":4823,"children":4824},{"emptyLinePlaceholder":2107},[4825],{"type":55,"value":2110},{"type":42,"tag":226,"props":4827,"children":4828},{"class":748,"line":3718},[4829],{"type":42,"tag":226,"props":4830,"children":4831},{},[4832],{"type":55,"value":4833},"# 3. Get connection metadata\n",{"type":42,"tag":226,"props":4835,"children":4836},{"class":748,"line":3726},[4837],{"type":42,"tag":226,"props":4838,"children":4839},{},[4840],{"type":55,"value":4841},"$conn = az rest --method get `\n",{"type":42,"tag":226,"props":4843,"children":4844},{"class":748,"line":3735},[4845],{"type":42,"tag":226,"props":4846,"children":4847},{},[4848],{"type":55,"value":4849},"  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Fsources\u002F$sourceId\u002Fconnection\" `\n",{"type":42,"tag":226,"props":4851,"children":4852},{"class":748,"line":3744},[4853],{"type":42,"tag":226,"props":4854,"children":4855},{},[4856],{"type":55,"value":2230},{"type":42,"tag":226,"props":4858,"children":4859},{"class":748,"line":3753},[4860],{"type":42,"tag":226,"props":4861,"children":4862},{"emptyLinePlaceholder":2107},[4863],{"type":55,"value":2110},{"type":42,"tag":226,"props":4865,"children":4866},{"class":748,"line":3762},[4867],{"type":42,"tag":226,"props":4868,"children":4869},{},[4870],{"type":55,"value":4871},"Write-Host \"Fully Qualified Namespace: $($conn.fullyQualifiedNamespace)\"\n",{"type":42,"tag":226,"props":4873,"children":4874},{"class":748,"line":3771},[4875],{"type":42,"tag":226,"props":4876,"children":4877},{},[4878],{"type":55,"value":4879},"Write-Host \"Event Hub Name:            $($conn.eventHubName)\"\n",{"type":42,"tag":226,"props":4881,"children":4882},{"class":748,"line":3780},[4883],{"type":42,"tag":226,"props":4884,"children":4885},{},[4886],{"type":55,"value":4887},"Write-Host \"Kafka Bootstrap Server:    $($conn.fullyQualifiedNamespace):9093\"\n",{"type":42,"tag":729,"props":4889,"children":4891},{"id":4890},"example-5-validate-eventstream-configuration",[4892],{"type":55,"value":4893},"Example 5: Validate Eventstream Configuration",{"type":42,"tag":47,"props":4895,"children":4896},{},[4897,4901],{"type":42,"tag":51,"props":4898,"children":4899},{},[4900],{"type":55,"value":3619},{"type":55,"value":4902},": \"Check if my SensorIngestion Eventstream has any configuration issues.\"",{"type":42,"tag":736,"props":4904,"children":4906},{"className":1532,"code":4905,"language":1534,"meta":741,"style":741},"# 1. Discover workspace + Eventstream IDs (omitted for brevity)\n\n# 2. Get topology\n$topo = az rest --method get `\n  --url \"https:\u002F\u002Fapi.fabric.microsoft.com\u002Fv1\u002Fworkspaces\u002F$wsId\u002Feventstreams\u002F$esId\u002Ftopology\" `\n  --resource \"https:\u002F\u002Fapi.fabric.microsoft.com\" | ConvertFrom-Json\n\n# 3. Validate sources\n@($topo.sources | Where-Object { $_ -ne $null }) | ForEach-Object {\n    $src = $_\n    Write-Host \"Source: $($src.name) (type: $($src.type))\"\n    if ($src.properties.dataConnectionId) {\n        Write-Host \"  Cloud connection: $($src.properties.dataConnectionId)\"\n    }\n    if ($src.type -in @('AzureEventHub','AzureEventHubExtended','AzureIoTHub','ConfluentCloud','ApacheKafka','AmazonMSKKafka') -and\n        -not $src.properties.consumerGroupName) {\n        Write-Host \"  WARNING: No consumer group set (required for $($src.type))\"\n    }\n}\n\n# 4. Validate destinations\n@($topo.destinations | Where-Object { $_ -ne $null }) | ForEach-Object {\n    $dst = $_\n    Write-Host \"Destination: $($dst.name) (type: $($dst.type))\"\n    if (-not $dst.inputNodes -or $dst.inputNodes.Count -eq 0) {\n        Write-Host \"  WARNING: No input wired — destination will receive no events\"\n    }\n    if ($dst.type -eq 'Eventhouse' -and -not $dst.properties.tableName) {\n        Write-Host \"  WARNING: No target table configured\"\n    }\n    if ($dst.type -eq 'Eventhouse' -and $dst.properties.dataIngestionMode -eq 'DirectIngestion') {\n        if (-not $dst.properties.connectionName -or -not $dst.properties.mappingRuleName) {\n            Write-Host \"  WARNING: DirectIngestion requires connectionName and mappingRuleName\"\n        }\n    }\n}\n\n# 5. Check node count limits\n$ceCount = @($topo.sources | Where-Object { $_.type -eq 'CustomEndpoint' }).Count +\n           @($topo.destinations | Where-Object { $_.type -eq 'CustomEndpoint' }).Count +\n           @($topo.destinations | Where-Object { $_.type -eq 'Eventhouse' -and\n             $_.properties.dataIngestionMode -eq 'DirectIngestion' }).Count\nWrite-Host \"CustomEndpoint + DI count: $ceCount \u002F 11 limit\"\nif ($ceCount -gt 11) {\n    Write-Host \"WARNING: Exceeds limit of 11 CustomEndpoint + DirectIngestion nodes\"\n}\n",[4907],{"type":42,"tag":82,"props":4908,"children":4909},{"__ignoreMap":741},[4910,4917,4924,4932,4939,4946,4953,4960,4968,4975,4983,4991,4999,5007,5014,5022,5030,5038,5045,5052,5059,5067,5074,5082,5090,5098,5106,5113,5121,5129,5136,5144,5152,5160,5167,5174,5181,5188,5196,5204,5212,5220,5228,5236,5244,5252],{"type":42,"tag":226,"props":4911,"children":4912},{"class":748,"line":749},[4913],{"type":42,"tag":226,"props":4914,"children":4915},{},[4916],{"type":55,"value":4751},{"type":42,"tag":226,"props":4918,"children":4919},{"class":748,"line":781},[4920],{"type":42,"tag":226,"props":4921,"children":4922},{"emptyLinePlaceholder":2107},[4923],{"type":55,"value":2110},{"type":42,"tag":226,"props":4925,"children":4926},{"class":748,"line":830},[4927],{"type":42,"tag":226,"props":4928,"children":4929},{},[4930],{"type":55,"value":4931},"# 2. Get topology\n",{"type":42,"tag":226,"props":4933,"children":4934},{"class":748,"line":950},[4935],{"type":42,"tag":226,"props":4936,"children":4937},{},[4938],{"type":55,"value":3927},{"type":42,"tag":226,"props":4940,"children":4941},{"class":748,"line":1439},[4942],{"type":42,"tag":226,"props":4943,"children":4944},{},[4945],{"type":55,"value":3935},{"type":42,"tag":226,"props":4947,"children":4948},{"class":748,"line":1464},[4949],{"type":42,"tag":226,"props":4950,"children":4951},{},[4952],{"type":55,"value":2230},{"type":42,"tag":226,"props":4954,"children":4955},{"class":748,"line":1500},[4956],{"type":42,"tag":226,"props":4957,"children":4958},{"emptyLinePlaceholder":2107},[4959],{"type":55,"value":2110},{"type":42,"tag":226,"props":4961,"children":4962},{"class":748,"line":2113},[4963],{"type":42,"tag":226,"props":4964,"children":4965},{},[4966],{"type":55,"value":4967},"# 3. Validate sources\n",{"type":42,"tag":226,"props":4969,"children":4970},{"class":748,"line":2732},[4971],{"type":42,"tag":226,"props":4972,"children":4973},{},[4974],{"type":55,"value":3974},{"type":42,"tag":226,"props":4976,"children":4977},{"class":748,"line":2741},[4978],{"type":42,"tag":226,"props":4979,"children":4980},{},[4981],{"type":55,"value":4982},"    $src = $_\n",{"type":42,"tag":226,"props":4984,"children":4985},{"class":748,"line":3709},[4986],{"type":42,"tag":226,"props":4987,"children":4988},{},[4989],{"type":55,"value":4990},"    Write-Host \"Source: $($src.name) (type: $($src.type))\"\n",{"type":42,"tag":226,"props":4992,"children":4993},{"class":748,"line":3718},[4994],{"type":42,"tag":226,"props":4995,"children":4996},{},[4997],{"type":55,"value":4998},"    if ($src.properties.dataConnectionId) {\n",{"type":42,"tag":226,"props":5000,"children":5001},{"class":748,"line":3726},[5002],{"type":42,"tag":226,"props":5003,"children":5004},{},[5005],{"type":55,"value":5006},"        Write-Host \"  Cloud connection: $($src.properties.dataConnectionId)\"\n",{"type":42,"tag":226,"props":5008,"children":5009},{"class":748,"line":3735},[5010],{"type":42,"tag":226,"props":5011,"children":5012},{},[5013],{"type":55,"value":4455},{"type":42,"tag":226,"props":5015,"children":5016},{"class":748,"line":3744},[5017],{"type":42,"tag":226,"props":5018,"children":5019},{},[5020],{"type":55,"value":5021},"    if ($src.type -in @('AzureEventHub','AzureEventHubExtended','AzureIoTHub','ConfluentCloud','ApacheKafka','AmazonMSKKafka') -and\n",{"type":42,"tag":226,"props":5023,"children":5024},{"class":748,"line":3753},[5025],{"type":42,"tag":226,"props":5026,"children":5027},{},[5028],{"type":55,"value":5029},"        -not $src.properties.consumerGroupName) {\n",{"type":42,"tag":226,"props":5031,"children":5032},{"class":748,"line":3762},[5033],{"type":42,"tag":226,"props":5034,"children":5035},{},[5036],{"type":55,"value":5037},"        Write-Host \"  WARNING: No consumer group set (required for $($src.type))\"\n",{"type":42,"tag":226,"props":5039,"children":5040},{"class":748,"line":3771},[5041],{"type":42,"tag":226,"props":5042,"children":5043},{},[5044],{"type":55,"value":4455},{"type":42,"tag":226,"props":5046,"children":5047},{"class":748,"line":3780},[5048],{"type":42,"tag":226,"props":5049,"children":5050},{},[5051],{"type":55,"value":2747},{"type":42,"tag":226,"props":5053,"children":5054},{"class":748,"line":3788},[5055],{"type":42,"tag":226,"props":5056,"children":5057},{"emptyLinePlaceholder":2107},[5058],{"type":55,"value":2110},{"type":42,"tag":226,"props":5060,"children":5061},{"class":748,"line":3968},[5062],{"type":42,"tag":226,"props":5063,"children":5064},{},[5065],{"type":55,"value":5066},"# 4. Validate destinations\n",{"type":42,"tag":226,"props":5068,"children":5069},{"class":748,"line":3977},[5070],{"type":42,"tag":226,"props":5071,"children":5072},{},[5073],{"type":55,"value":4044},{"type":42,"tag":226,"props":5075,"children":5076},{"class":748,"line":3986},[5077],{"type":42,"tag":226,"props":5078,"children":5079},{},[5080],{"type":55,"value":5081},"    $dst = $_\n",{"type":42,"tag":226,"props":5083,"children":5084},{"class":748,"line":3994},[5085],{"type":42,"tag":226,"props":5086,"children":5087},{},[5088],{"type":55,"value":5089},"    Write-Host \"Destination: $($dst.name) (type: $($dst.type))\"\n",{"type":42,"tag":226,"props":5091,"children":5092},{"class":748,"line":4003},[5093],{"type":42,"tag":226,"props":5094,"children":5095},{},[5096],{"type":55,"value":5097},"    if (-not $dst.inputNodes -or $dst.inputNodes.Count -eq 0) {\n",{"type":42,"tag":226,"props":5099,"children":5100},{"class":748,"line":4012},[5101],{"type":42,"tag":226,"props":5102,"children":5103},{},[5104],{"type":55,"value":5105},"        Write-Host \"  WARNING: No input wired — destination will receive no events\"\n",{"type":42,"tag":226,"props":5107,"children":5108},{"class":748,"line":4021},[5109],{"type":42,"tag":226,"props":5110,"children":5111},{},[5112],{"type":55,"value":4455},{"type":42,"tag":226,"props":5114,"children":5115},{"class":748,"line":4029},[5116],{"type":42,"tag":226,"props":5117,"children":5118},{},[5119],{"type":55,"value":5120},"    if ($dst.type -eq 'Eventhouse' -and -not $dst.properties.tableName) {\n",{"type":42,"tag":226,"props":5122,"children":5123},{"class":748,"line":4038},[5124],{"type":42,"tag":226,"props":5125,"children":5126},{},[5127],{"type":55,"value":5128},"        Write-Host \"  WARNING: No target table configured\"\n",{"type":42,"tag":226,"props":5130,"children":5131},{"class":748,"line":4047},[5132],{"type":42,"tag":226,"props":5133,"children":5134},{},[5135],{"type":55,"value":4455},{"type":42,"tag":226,"props":5137,"children":5138},{"class":748,"line":4055},[5139],{"type":42,"tag":226,"props":5140,"children":5141},{},[5142],{"type":55,"value":5143},"    if ($dst.type -eq 'Eventhouse' -and $dst.properties.dataIngestionMode -eq 'DirectIngestion') {\n",{"type":42,"tag":226,"props":5145,"children":5146},{"class":748,"line":4063},[5147],{"type":42,"tag":226,"props":5148,"children":5149},{},[5150],{"type":55,"value":5151},"        if (-not $dst.properties.connectionName -or -not $dst.properties.mappingRuleName) {\n",{"type":42,"tag":226,"props":5153,"children":5154},{"class":748,"line":4072},[5155],{"type":42,"tag":226,"props":5156,"children":5157},{},[5158],{"type":55,"value":5159},"            Write-Host \"  WARNING: DirectIngestion requires connectionName and mappingRuleName\"\n",{"type":42,"tag":226,"props":5161,"children":5162},{"class":748,"line":4081},[5163],{"type":42,"tag":226,"props":5164,"children":5165},{},[5166],{"type":55,"value":4446},{"type":42,"tag":226,"props":5168,"children":5169},{"class":748,"line":4089},[5170],{"type":42,"tag":226,"props":5171,"children":5172},{},[5173],{"type":55,"value":4455},{"type":42,"tag":226,"props":5175,"children":5176},{"class":748,"line":4413},[5177],{"type":42,"tag":226,"props":5178,"children":5179},{},[5180],{"type":55,"value":2747},{"type":42,"tag":226,"props":5182,"children":5183},{"class":748,"line":4422},[5184],{"type":42,"tag":226,"props":5185,"children":5186},{"emptyLinePlaceholder":2107},[5187],{"type":55,"value":2110},{"type":42,"tag":226,"props":5189,"children":5190},{"class":748,"line":4431},[5191],{"type":42,"tag":226,"props":5192,"children":5193},{},[5194],{"type":55,"value":5195},"# 5. Check node count limits\n",{"type":42,"tag":226,"props":5197,"children":5198},{"class":748,"line":4440},[5199],{"type":42,"tag":226,"props":5200,"children":5201},{},[5202],{"type":55,"value":5203},"$ceCount = @($topo.sources | Where-Object { $_.type -eq 'CustomEndpoint' }).Count +\n",{"type":42,"tag":226,"props":5205,"children":5206},{"class":748,"line":4449},[5207],{"type":42,"tag":226,"props":5208,"children":5209},{},[5210],{"type":55,"value":5211},"           @($topo.destinations | Where-Object { $_.type -eq 'CustomEndpoint' }).Count +\n",{"type":42,"tag":226,"props":5213,"children":5214},{"class":748,"line":4458},[5215],{"type":42,"tag":226,"props":5216,"children":5217},{},[5218],{"type":55,"value":5219},"           @($topo.destinations | Where-Object { $_.type -eq 'Eventhouse' -and\n",{"type":42,"tag":226,"props":5221,"children":5222},{"class":748,"line":4467},[5223],{"type":42,"tag":226,"props":5224,"children":5225},{},[5226],{"type":55,"value":5227},"             $_.properties.dataIngestionMode -eq 'DirectIngestion' }).Count\n",{"type":42,"tag":226,"props":5229,"children":5230},{"class":748,"line":4476},[5231],{"type":42,"tag":226,"props":5232,"children":5233},{},[5234],{"type":55,"value":5235},"Write-Host \"CustomEndpoint + DI count: $ceCount \u002F 11 limit\"\n",{"type":42,"tag":226,"props":5237,"children":5238},{"class":748,"line":4485},[5239],{"type":42,"tag":226,"props":5240,"children":5241},{},[5242],{"type":55,"value":5243},"if ($ceCount -gt 11) {\n",{"type":42,"tag":226,"props":5245,"children":5246},{"class":748,"line":4493},[5247],{"type":42,"tag":226,"props":5248,"children":5249},{},[5250],{"type":55,"value":5251},"    Write-Host \"WARNING: Exceeds limit of 11 CustomEndpoint + DirectIngestion nodes\"\n",{"type":42,"tag":226,"props":5253,"children":5254},{"class":748,"line":4501},[5255],{"type":42,"tag":226,"props":5256,"children":5257},{},[5258],{"type":55,"value":2747},{"type":42,"tag":5260,"props":5261,"children":5262},"style",{},[5263],{"type":55,"value":5264},"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":5266,"total":5458},[5267,5289,5310,5329,5343,5360,5371,5384,5399,5414,5433,5446],{"slug":5268,"name":5268,"fn":5269,"description":5270,"org":5271,"tags":5272,"stars":5286,"repoUrl":5287,"updatedAt":5288},"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},[5273,5276,5279,5280,5283],{"name":5274,"slug":5275,"type":15},"Engineering","engineering",{"name":5277,"slug":5278,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":5281,"slug":5282,"type":15},"Project Management","project-management",{"name":5284,"slug":5285,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":5290,"name":5290,"fn":5291,"description":5292,"org":5293,"tags":5294,"stars":5307,"repoUrl":5308,"updatedAt":5309},"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},[5295,5298,5301,5304],{"name":5296,"slug":5297,"type":15},".NET","net",{"name":5299,"slug":5300,"type":15},"Agents","agents",{"name":5302,"slug":5303,"type":15},"Azure","azure",{"name":5305,"slug":5306,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":5311,"name":5311,"fn":5312,"description":5313,"org":5314,"tags":5315,"stars":5307,"repoUrl":5308,"updatedAt":5328},"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},[5316,5319,5320,5323,5326,5327],{"name":5317,"slug":5318,"type":15},"Analytics","analytics",{"name":5302,"slug":5303,"type":15},{"name":5321,"slug":5322,"type":15},"Data Analysis","data-analysis",{"name":5324,"slug":5325,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-05-13T06:14:16.261754",{"slug":5330,"name":5330,"fn":5331,"description":5332,"org":5333,"tags":5334,"stars":5307,"repoUrl":5308,"updatedAt":5342},"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},[5335,5338,5339,5340],{"name":5336,"slug":5337,"type":15},"AI Infrastructure","ai-infrastructure",{"name":5302,"slug":5303,"type":15},{"name":5324,"slug":5325,"type":15},{"name":2281,"slug":5341,"type":15},"security","2026-07-07T06:53:31.293235",{"slug":5344,"name":5344,"fn":5345,"description":5346,"org":5347,"tags":5348,"stars":5307,"repoUrl":5308,"updatedAt":5359},"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},[5349,5350,5353,5354,5355,5358],{"name":5302,"slug":5303,"type":15},{"name":5351,"slug":5352,"type":15},"Compliance","compliance",{"name":5305,"slug":5306,"type":15},{"name":9,"slug":8,"type":15},{"name":5356,"slug":5357,"type":15},"Python","python",{"name":2281,"slug":5341,"type":15},"2026-07-18T05:14:23.017504",{"slug":5361,"name":5361,"fn":5362,"description":5363,"org":5364,"tags":5365,"stars":5307,"repoUrl":5308,"updatedAt":5370},"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},[5366,5367,5368,5369],{"name":5317,"slug":5318,"type":15},{"name":5302,"slug":5303,"type":15},{"name":5305,"slug":5306,"type":15},{"name":5356,"slug":5357,"type":15},"2026-07-31T05:54:29.068751",{"slug":5372,"name":5372,"fn":5373,"description":5374,"org":5375,"tags":5376,"stars":5307,"repoUrl":5308,"updatedAt":5383},"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},[5377,5380,5381,5382],{"name":5378,"slug":5379,"type":15},"API Development","api-development",{"name":5302,"slug":5303,"type":15},{"name":9,"slug":8,"type":15},{"name":5356,"slug":5357,"type":15},"2026-07-18T05:14:16.988376",{"slug":5385,"name":5385,"fn":5386,"description":5387,"org":5388,"tags":5389,"stars":5307,"repoUrl":5308,"updatedAt":5398},"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},[5390,5391,5394,5397],{"name":5302,"slug":5303,"type":15},{"name":5392,"slug":5393,"type":15},"Computer Vision","computer-vision",{"name":5395,"slug":5396,"type":15},"Images","images",{"name":5356,"slug":5357,"type":15},"2026-07-18T05:14:18.007737",{"slug":5400,"name":5400,"fn":5401,"description":5402,"org":5403,"tags":5404,"stars":5307,"repoUrl":5308,"updatedAt":5413},"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},[5405,5406,5409,5412],{"name":5302,"slug":5303,"type":15},{"name":5407,"slug":5408,"type":15},"Configuration","configuration",{"name":5410,"slug":5411,"type":15},"Feature Flags","feature-flags",{"name":5324,"slug":5325,"type":15},"2026-07-03T16:32:01.278468",{"slug":5415,"name":5415,"fn":5416,"description":5417,"org":5418,"tags":5419,"stars":5307,"repoUrl":5308,"updatedAt":5432},"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},[5420,5423,5426,5429],{"name":5421,"slug":5422,"type":15},"Cosmos DB","cosmos-db",{"name":5424,"slug":5425,"type":15},"Database","database",{"name":5427,"slug":5428,"type":15},"NoSQL","nosql",{"name":5430,"slug":5431,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":5434,"name":5434,"fn":5416,"description":5435,"org":5436,"tags":5437,"stars":5307,"repoUrl":5308,"updatedAt":5445},"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},[5438,5439,5440,5441,5442],{"name":5421,"slug":5422,"type":15},{"name":5424,"slug":5425,"type":15},{"name":9,"slug":8,"type":15},{"name":5427,"slug":5428,"type":15},{"name":5443,"slug":5444,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":5447,"name":5447,"fn":5448,"description":5449,"org":5450,"tags":5451,"stars":5307,"repoUrl":5308,"updatedAt":5457},"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},[5452,5453,5454,5455,5456],{"name":5302,"slug":5303,"type":15},{"name":5421,"slug":5422,"type":15},{"name":5424,"slug":5425,"type":15},{"name":5324,"slug":5325,"type":15},{"name":5427,"slug":5428,"type":15},"2026-05-13T06:14:17.582229",267,{"items":5460,"total":3780},[5461,5472,5491,5507,5523,5537,5550],{"slug":63,"name":63,"fn":5462,"description":5463,"org":5464,"tags":5465,"stars":25,"repoUrl":26,"updatedAt":5471},"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},[5466,5467,5468],{"name":9,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":5469,"slug":5470,"type":15},"Operations","operations","2026-07-24T05:41:25.892114",{"slug":5473,"name":5473,"fn":5474,"description":5475,"org":5476,"tags":5477,"stars":25,"repoUrl":26,"updatedAt":5490},"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},[5478,5479,5482,5483,5484,5487],{"name":13,"slug":14,"type":15},{"name":5480,"slug":5481,"type":15},"Databricks","databricks",{"name":9,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":5485,"slug":5486,"type":15},"Migration","migration",{"name":5488,"slug":5489,"type":15},"Notebooks","notebooks","2026-07-24T05:41:22.914341",{"slug":5492,"name":5492,"fn":5493,"description":5494,"org":5495,"tags":5496,"stars":25,"repoUrl":26,"updatedAt":5506},"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},[5497,5498,5499,5502,5503],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":5500,"slug":5501,"type":15},"Data Pipeline","data-pipeline",{"name":23,"slug":24,"type":15},{"name":5504,"slug":5505,"type":15},"REST API","rest-api","2026-07-31T05:54:59.059517",{"slug":5508,"name":5508,"fn":5509,"description":5510,"org":5511,"tags":5512,"stars":25,"repoUrl":26,"updatedAt":5522},"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},[5513,5516,5517,5518,5519],{"name":5514,"slug":5515,"type":15},"Architecture","architecture",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":5520,"slug":5521,"type":15},"PySpark","pyspark","2026-07-31T05:54:57.038396",{"slug":5524,"name":5524,"fn":5525,"description":5526,"org":5527,"tags":5528,"stars":25,"repoUrl":26,"updatedAt":5536},"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},[5529,5530,5533,5534,5535],{"name":5424,"slug":5425,"type":15},{"name":5531,"slug":5532,"type":15},"KQL","kql",{"name":9,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":5469,"slug":5470,"type":15},"2026-04-06T18:36:51.340409",{"slug":139,"name":139,"fn":5538,"description":5539,"org":5540,"tags":5541,"stars":25,"repoUrl":26,"updatedAt":5549},"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},[5542,5543,5544,5545,5546],{"name":5317,"slug":5318,"type":15},{"name":5531,"slug":5532,"type":15},{"name":9,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":5547,"slug":5548,"type":15},"Real-Time Intelligence","real-time-intelligence","2026-04-06T18:36:45.018807",{"slug":4,"name":4,"fn":5,"description":6,"org":5551,"tags":5552,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5553,5554,5555,5556],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15}]