[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-azure-monitor-ingestion-py":3,"mdc--orikcl-key":45,"related-repo-microsoft-azure-monitor-ingestion-py":1805,"related-org-microsoft-azure-monitor-ingestion-py":1912},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":28,"repoUrl":29,"updatedAt":30,"license":31,"forks":32,"topics":33,"repo":40,"sourceUrl":43,"mdContent":44},"azure-monitor-ingestion-py","ingest custom logs into Azure Monitor","Azure Monitor Ingestion SDK for Python. Use for sending custom logs to Log Analytics workspace via Logs Ingestion API.\nTriggers: \"azure-monitor-ingestion\", \"LogsIngestionClient\", \"custom logs\", \"DCR\", \"data collection rule\", \"Log Analytics\".\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,25],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":17,"slug":18,"type":15},"Azure","azure",{"name":20,"slug":21,"type":15},"Logs","logs",{"name":23,"slug":24,"type":15},"Monitoring","monitoring",{"name":26,"slug":27,"type":15},"Python","python",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-18T05:14:18.984932","MIT",315,[34,35,18,36,37,38,39],"agent-skills","agents","foundry","mcp","sdk","skills",{"repoUrl":29,"stars":28,"forks":32,"topics":41,"description":42},[34,35,18,36,37,38,39],"Skills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Ftree\u002FHEAD\u002F.github\u002Fplugins\u002Fazure-sdk-python\u002Fskills\u002Fazure-monitor-ingestion-py","---\nname: azure-monitor-ingestion-py\ndescription: |\n  Azure Monitor Ingestion SDK for Python. Use for sending custom logs to Log Analytics workspace via Logs Ingestion API.\n  Triggers: \"azure-monitor-ingestion\", \"LogsIngestionClient\", \"custom logs\", \"DCR\", \"data collection rule\", \"Log Analytics\".\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: azure-monitor-ingestion\n---\n\n# Azure Monitor Ingestion SDK for Python\n\nSend custom logs to Azure Monitor Log Analytics workspace using the Logs Ingestion API.\n\n## Installation\n\n```bash\npip install azure-monitor-ingestion\npip install azure-identity\n```\n\n## Environment Variables\n\n```bash\n# Data Collection Endpoint (DCE)\nAZURE_DCE_ENDPOINT=https:\u002F\u002F\u003Cdce-name>.\u003Cregion>.ingest.monitor.azure.com  # Required for all auth methods\n\n# Data Collection Rule (DCR) immutable ID\nAZURE_DCR_RULE_ID=dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  # Required for all auth methods\n\n# Stream name from DCR\nAZURE_DCR_STREAM_NAME=Custom-MyTable_CL  # Required for all auth methods\nAZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production\n```\n\n## Prerequisites\n\nBefore using this SDK, you need:\n\n1. **Log Analytics Workspace** — Target for your logs\n2. **Data Collection Endpoint (DCE)** — Ingestion endpoint\n3. **Data Collection Rule (DCR)** — Defines schema and destination\n4. **Custom Table** — In Log Analytics (created via DCR or manually)\n\n## Authentication & Lifecycle\n\n> **🔑 Two rules apply to every code sample below:**\n>\n> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI \u002F VS Code \u002F Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account\u002FAPI keys — they bypass Entra audit and rotation.\n>    - Local dev: `DefaultAzureCredential` works as-is.\n>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>`) to constrain the credential chain to production-safe credentials.\n> 2. **Wrap every client in a context manager** so HTTP transports, sockets, and token caches are released deterministically:\n>    - Sync: `with \u003CClient>(...) as client:`\n>    - Async: `async with \u003CClient>(...) as client:` **and** `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)\n>\n> Snippets may abbreviate this setup, but production code should always follow both rules.\n\n```python\nfrom azure.monitor.ingestion import LogsIngestionClient\nfrom azure.identity import DefaultAzureCredential, ManagedIdentityCredential\nimport os\n\n# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\ncredential = DefaultAzureCredential(require_envvar=True)\n# Or use a specific credential directly in production:\n# See https:\u002F\u002Flearn.microsoft.com\u002Fpython\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-python#credential-classes\n# credential = ManagedIdentityCredential()\n\nwith LogsIngestionClient(\n    endpoint=os.environ[\"AZURE_DCE_ENDPOINT\"],\n    credential=credential\n) as client:\n    # Use `client.upload(...)` for all subsequent operations (see examples below)\n    ...\n```\n\n## Upload Custom Logs\n\n```python\nfrom azure.monitor.ingestion import LogsIngestionClient\nfrom azure.identity import DefaultAzureCredential\nimport os\n\nrule_id = os.environ[\"AZURE_DCR_RULE_ID\"]\nstream_name = os.environ[\"AZURE_DCR_STREAM_NAME\"]\n\nlogs = [\n    {\"TimeGenerated\": \"2024-01-15T10:00:00Z\", \"Computer\": \"server1\", \"Message\": \"Application started\"},\n    {\"TimeGenerated\": \"2024-01-15T10:01:00Z\", \"Computer\": \"server1\", \"Message\": \"Processing request\"},\n    {\"TimeGenerated\": \"2024-01-15T10:02:00Z\", \"Computer\": \"server2\", \"Message\": \"Connection established\"}\n]\n\nwith LogsIngestionClient(\n    endpoint=os.environ[\"AZURE_DCE_ENDPOINT\"],\n    credential=DefaultAzureCredential()\n) as client:\n    client.upload(rule_id=rule_id, stream_name=stream_name, logs=logs)\n```\n\n## Upload from JSON File\n\n```python\nimport json\n\nwith open(\"logs.json\", \"r\") as f:\n    logs = json.load(f)\n\nclient.upload(rule_id=rule_id, stream_name=stream_name, logs=logs)\n```\n\n## Custom Error Handling\n\nHandle partial failures with a callback:\n\n```python\nfailed_logs = []\n\ndef on_error(error):\n    print(f\"Upload failed: {error.error}\")\n    failed_logs.extend(error.failed_logs)\n\nclient.upload(\n    rule_id=rule_id,\n    stream_name=stream_name,\n    logs=logs,\n    on_error=on_error\n)\n\n# Retry failed logs\nif failed_logs:\n    print(f\"Retrying {len(failed_logs)} failed logs...\")\n    client.upload(rule_id=rule_id, stream_name=stream_name, logs=failed_logs)\n```\n\n## Ignore Errors\n\n```python\ndef ignore_errors(error):\n    pass  # Silently ignore upload failures\n\nclient.upload(\n    rule_id=rule_id,\n    stream_name=stream_name,\n    logs=logs,\n    on_error=ignore_errors\n)\n```\n\n## Async Client\n\n```python\nimport asyncio\nfrom azure.monitor.ingestion.aio import LogsIngestionClient\nfrom azure.identity.aio import DefaultAzureCredential\n\nasync def upload_logs():\n    async with LogsIngestionClient(\n        endpoint=endpoint,\n        credential=DefaultAzureCredential()\n    ) as client:\n        await client.upload(\n            rule_id=rule_id,\n            stream_name=stream_name,\n            logs=logs\n        )\n\nasyncio.run(upload_logs())\n```\n\n## Sovereign Clouds\n\n```python\nfrom azure.identity import AzureAuthorityHosts, DefaultAzureCredential\nfrom azure.monitor.ingestion import LogsIngestionClient\n\n# Azure Government\ncredential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)\nwith LogsIngestionClient(\n    endpoint=\"https:\u002F\u002Fexample.ingest.monitor.azure.us\",\n    credential=credential,\n    credential_scopes=[\"https:\u002F\u002Fmonitor.azure.us\u002F.default\"]\n) as client:\n    # client.upload(...)\n    ...\n```\n\n## Batching Behavior\n\nThe SDK automatically:\n- Splits logs into chunks of 1MB or less\n- Compresses each chunk with gzip\n- Uploads chunks in parallel\n\nNo manual batching needed for large log sets.\n\n## Client Types\n\n| Client | Purpose |\n|--------|---------|\n| `LogsIngestionClient` | Sync client for uploading logs |\n| `LogsIngestionClient` (aio) | Async client for uploading logs |\n\n## Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| **DCE** | Data Collection Endpoint — ingestion URL |\n| **DCR** | Data Collection Rule — defines schema, transformations, destination |\n| **Stream** | Named data flow within a DCR |\n| **Custom Table** | Target table in Log Analytics (ends with `_CL`) |\n\n## DCR Stream Name Format\n\nStream names follow patterns:\n- `Custom-\u003CTableName>_CL` — For custom tables\n- `Microsoft-\u003CTableName>` — For built-in tables\n\n## Best Practices\n\n1. **Pick sync OR async and stay consistent.** Do not mix `azure.xxx` sync clients with `azure.xxx.aio` async clients in the same call path. Choose one mode per module.\n2. **Always use context managers for clients and async credentials.** Wrap every client in `with Client(...) as client:` (sync) or `async with Client(...) as client:` (async) to ensure proper cleanup. For async `DefaultAzureCredential` from `azure.identity.aio`, also use `async with credential:` so tokens and transports are cleaned up.\n3. **Use `DefaultAzureCredential`** for code that runs locally. Use a specific token credential for code that runs in Azure.\n4. **Handle errors gracefully** — use `on_error` callback for partial failures\n5. **Include TimeGenerated** — Required field for all logs\n6. **Match DCR schema** — Log fields must match DCR column definitions\n7. **Use async client** for high-throughput scenarios\n8. **Batch uploads** — SDK handles batching, but send reasonable chunks\n9. **Monitor ingestion** — Check Log Analytics for ingestion status\n\n## Reference Files\n\n| File | Contents |\n|------|----------|\n| [references\u002Fcapabilities.md](references\u002Fcapabilities.md) | Additional non-hero capabilities, operation-group coverage, and production checklists. |\n| [references\u002Fnon-hero-scenarios.md](references\u002Fnon-hero-scenarios.md) | Dedicated non-hero examples for secondary\u002Fadvanced scenarios. |\n",{"data":46,"body":50},{"name":4,"description":6,"license":31,"metadata":47},{"author":9,"version":48,"package":49},"1.0.0","azure-monitor-ingestion",{"type":51,"children":52},"root",[53,62,68,75,127,133,315,321,326,372,378,511,652,658,803,809,862,868,873,1013,1019,1092,1098,1231,1237,1335,1341,1346,1364,1369,1375,1438,1444,1536,1542,1547,1572,1578,1738,1744,1799],{"type":54,"tag":55,"props":56,"children":58},"element","h1",{"id":57},"azure-monitor-ingestion-sdk-for-python",[59],{"type":60,"value":61},"text","Azure Monitor Ingestion SDK for Python",{"type":54,"tag":63,"props":64,"children":65},"p",{},[66],{"type":60,"value":67},"Send custom logs to Azure Monitor Log Analytics workspace using the Logs Ingestion API.",{"type":54,"tag":69,"props":70,"children":72},"h2",{"id":71},"installation",[73],{"type":60,"value":74},"Installation",{"type":54,"tag":76,"props":77,"children":82},"pre",{"className":78,"code":79,"language":80,"meta":81,"style":81},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pip install azure-monitor-ingestion\npip install azure-identity\n","bash","",[83],{"type":54,"tag":84,"props":85,"children":86},"code",{"__ignoreMap":81},[87,110],{"type":54,"tag":88,"props":89,"children":92},"span",{"class":90,"line":91},"line",1,[93,99,105],{"type":54,"tag":88,"props":94,"children":96},{"style":95},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[97],{"type":60,"value":98},"pip",{"type":54,"tag":88,"props":100,"children":102},{"style":101},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[103],{"type":60,"value":104}," install",{"type":54,"tag":88,"props":106,"children":107},{"style":101},[108],{"type":60,"value":109}," azure-monitor-ingestion\n",{"type":54,"tag":88,"props":111,"children":113},{"class":90,"line":112},2,[114,118,122],{"type":54,"tag":88,"props":115,"children":116},{"style":95},[117],{"type":60,"value":98},{"type":54,"tag":88,"props":119,"children":120},{"style":101},[121],{"type":60,"value":104},{"type":54,"tag":88,"props":123,"children":124},{"style":101},[125],{"type":60,"value":126}," azure-identity\n",{"type":54,"tag":69,"props":128,"children":130},{"id":129},"environment-variables",[131],{"type":60,"value":132},"Environment Variables",{"type":54,"tag":76,"props":134,"children":136},{"className":78,"code":135,"language":80,"meta":81,"style":81},"# Data Collection Endpoint (DCE)\nAZURE_DCE_ENDPOINT=https:\u002F\u002F\u003Cdce-name>.\u003Cregion>.ingest.monitor.azure.com  # Required for all auth methods\n\n# Data Collection Rule (DCR) immutable ID\nAZURE_DCR_RULE_ID=dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  # Required for all auth methods\n\n# Stream name from DCR\nAZURE_DCR_STREAM_NAME=Custom-MyTable_CL  # Required for all auth methods\nAZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production\n",[137],{"type":54,"tag":84,"props":138,"children":139},{"__ignoreMap":81},[140,149,212,222,231,253,261,270,292],{"type":54,"tag":88,"props":141,"children":142},{"class":90,"line":91},[143],{"type":54,"tag":88,"props":144,"children":146},{"style":145},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[147],{"type":60,"value":148},"# Data Collection Endpoint (DCE)\n",{"type":54,"tag":88,"props":150,"children":151},{"class":90,"line":112},[152,158,164,169,174,179,184,189,193,198,202,207],{"type":54,"tag":88,"props":153,"children":155},{"style":154},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[156],{"type":60,"value":157},"AZURE_DCE_ENDPOINT",{"type":54,"tag":88,"props":159,"children":161},{"style":160},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[162],{"type":60,"value":163},"=",{"type":54,"tag":88,"props":165,"children":166},{"style":101},[167],{"type":60,"value":168},"https:\u002F\u002F",{"type":54,"tag":88,"props":170,"children":171},{"style":160},[172],{"type":60,"value":173},"\u003C",{"type":54,"tag":88,"props":175,"children":176},{"style":101},[177],{"type":60,"value":178},"dce-name",{"type":54,"tag":88,"props":180,"children":181},{"style":160},[182],{"type":60,"value":183},">",{"type":54,"tag":88,"props":185,"children":186},{"style":101},[187],{"type":60,"value":188},".",{"type":54,"tag":88,"props":190,"children":191},{"style":160},[192],{"type":60,"value":173},{"type":54,"tag":88,"props":194,"children":195},{"style":101},[196],{"type":60,"value":197},"region",{"type":54,"tag":88,"props":199,"children":200},{"style":160},[201],{"type":60,"value":183},{"type":54,"tag":88,"props":203,"children":204},{"style":101},[205],{"type":60,"value":206},".ingest.monitor.azure.com",{"type":54,"tag":88,"props":208,"children":209},{"style":145},[210],{"type":60,"value":211},"  # Required for all auth methods\n",{"type":54,"tag":88,"props":213,"children":215},{"class":90,"line":214},3,[216],{"type":54,"tag":88,"props":217,"children":219},{"emptyLinePlaceholder":218},true,[220],{"type":60,"value":221},"\n",{"type":54,"tag":88,"props":223,"children":225},{"class":90,"line":224},4,[226],{"type":54,"tag":88,"props":227,"children":228},{"style":145},[229],{"type":60,"value":230},"# Data Collection Rule (DCR) immutable ID\n",{"type":54,"tag":88,"props":232,"children":234},{"class":90,"line":233},5,[235,240,244,249],{"type":54,"tag":88,"props":236,"children":237},{"style":154},[238],{"type":60,"value":239},"AZURE_DCR_RULE_ID",{"type":54,"tag":88,"props":241,"children":242},{"style":160},[243],{"type":60,"value":163},{"type":54,"tag":88,"props":245,"children":246},{"style":101},[247],{"type":60,"value":248},"dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",{"type":54,"tag":88,"props":250,"children":251},{"style":145},[252],{"type":60,"value":211},{"type":54,"tag":88,"props":254,"children":256},{"class":90,"line":255},6,[257],{"type":54,"tag":88,"props":258,"children":259},{"emptyLinePlaceholder":218},[260],{"type":60,"value":221},{"type":54,"tag":88,"props":262,"children":264},{"class":90,"line":263},7,[265],{"type":54,"tag":88,"props":266,"children":267},{"style":145},[268],{"type":60,"value":269},"# Stream name from DCR\n",{"type":54,"tag":88,"props":271,"children":273},{"class":90,"line":272},8,[274,279,283,288],{"type":54,"tag":88,"props":275,"children":276},{"style":154},[277],{"type":60,"value":278},"AZURE_DCR_STREAM_NAME",{"type":54,"tag":88,"props":280,"children":281},{"style":160},[282],{"type":60,"value":163},{"type":54,"tag":88,"props":284,"children":285},{"style":101},[286],{"type":60,"value":287},"Custom-MyTable_CL",{"type":54,"tag":88,"props":289,"children":290},{"style":145},[291],{"type":60,"value":211},{"type":54,"tag":88,"props":293,"children":295},{"class":90,"line":294},9,[296,301,305,310],{"type":54,"tag":88,"props":297,"children":298},{"style":154},[299],{"type":60,"value":300},"AZURE_TOKEN_CREDENTIALS",{"type":54,"tag":88,"props":302,"children":303},{"style":160},[304],{"type":60,"value":163},{"type":54,"tag":88,"props":306,"children":307},{"style":101},[308],{"type":60,"value":309},"prod",{"type":54,"tag":88,"props":311,"children":312},{"style":145},[313],{"type":60,"value":314}," # Required only if DefaultAzureCredential is used in production\n",{"type":54,"tag":69,"props":316,"children":318},{"id":317},"prerequisites",[319],{"type":60,"value":320},"Prerequisites",{"type":54,"tag":63,"props":322,"children":323},{},[324],{"type":60,"value":325},"Before using this SDK, you need:",{"type":54,"tag":327,"props":328,"children":329},"ol",{},[330,342,352,362],{"type":54,"tag":331,"props":332,"children":333},"li",{},[334,340],{"type":54,"tag":335,"props":336,"children":337},"strong",{},[338],{"type":60,"value":339},"Log Analytics Workspace",{"type":60,"value":341}," — Target for your logs",{"type":54,"tag":331,"props":343,"children":344},{},[345,350],{"type":54,"tag":335,"props":346,"children":347},{},[348],{"type":60,"value":349},"Data Collection Endpoint (DCE)",{"type":60,"value":351}," — Ingestion endpoint",{"type":54,"tag":331,"props":353,"children":354},{},[355,360],{"type":54,"tag":335,"props":356,"children":357},{},[358],{"type":60,"value":359},"Data Collection Rule (DCR)",{"type":60,"value":361}," — Defines schema and destination",{"type":54,"tag":331,"props":363,"children":364},{},[365,370],{"type":54,"tag":335,"props":366,"children":367},{},[368],{"type":60,"value":369},"Custom Table",{"type":60,"value":371}," — In Log Analytics (created via DCR or manually)",{"type":54,"tag":69,"props":373,"children":375},{"id":374},"authentication-lifecycle",[376],{"type":60,"value":377},"Authentication & Lifecycle",{"type":54,"tag":379,"props":380,"children":381},"blockquote",{},[382,390,506],{"type":54,"tag":63,"props":383,"children":384},{},[385],{"type":54,"tag":335,"props":386,"children":387},{},[388],{"type":60,"value":389},"🔑 Two rules apply to every code sample below:",{"type":54,"tag":327,"props":391,"children":392},{},[393,447],{"type":54,"tag":331,"props":394,"children":395},{},[396,408,410],{"type":54,"tag":335,"props":397,"children":398},{},[399,401,407],{"type":60,"value":400},"Prefer ",{"type":54,"tag":84,"props":402,"children":404},{"className":403},[],[405],{"type":60,"value":406},"DefaultAzureCredential",{"type":60,"value":188},{"type":60,"value":409}," It works locally (Azure CLI \u002F VS Code \u002F Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account\u002FAPI keys — they bypass Entra audit and rotation.\n",{"type":54,"tag":411,"props":412,"children":413},"ul",{},[414,426],{"type":54,"tag":331,"props":415,"children":416},{},[417,419,424],{"type":60,"value":418},"Local dev: ",{"type":54,"tag":84,"props":420,"children":422},{"className":421},[],[423],{"type":60,"value":406},{"type":60,"value":425}," works as-is.",{"type":54,"tag":331,"props":427,"children":428},{},[429,431,437,439,445],{"type":60,"value":430},"Production: set ",{"type":54,"tag":84,"props":432,"children":434},{"className":433},[],[435],{"type":60,"value":436},"AZURE_TOKEN_CREDENTIALS=prod",{"type":60,"value":438}," (or ",{"type":54,"tag":84,"props":440,"children":442},{"className":441},[],[443],{"type":60,"value":444},"AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>",{"type":60,"value":446},") to constrain the credential chain to production-safe credentials.",{"type":54,"tag":331,"props":448,"children":449},{},[450,455,457],{"type":54,"tag":335,"props":451,"children":452},{},[453],{"type":60,"value":454},"Wrap every client in a context manager",{"type":60,"value":456}," so HTTP transports, sockets, and token caches are released deterministically:\n",{"type":54,"tag":411,"props":458,"children":459},{},[460,471],{"type":54,"tag":331,"props":461,"children":462},{},[463,465],{"type":60,"value":464},"Sync: ",{"type":54,"tag":84,"props":466,"children":468},{"className":467},[],[469],{"type":60,"value":470},"with \u003CClient>(...) as client:",{"type":54,"tag":331,"props":472,"children":473},{},[474,476,482,484,489,490,496,498,504],{"type":60,"value":475},"Async: ",{"type":54,"tag":84,"props":477,"children":479},{"className":478},[],[480],{"type":60,"value":481},"async with \u003CClient>(...) as client:",{"type":60,"value":483}," ",{"type":54,"tag":335,"props":485,"children":486},{},[487],{"type":60,"value":488},"and",{"type":60,"value":483},{"type":54,"tag":84,"props":491,"children":493},{"className":492},[],[494],{"type":60,"value":495},"async with DefaultAzureCredential() as credential:",{"type":60,"value":497}," (from ",{"type":54,"tag":84,"props":499,"children":501},{"className":500},[],[502],{"type":60,"value":503},"azure.identity.aio",{"type":60,"value":505},")",{"type":54,"tag":63,"props":507,"children":508},{},[509],{"type":60,"value":510},"Snippets may abbreviate this setup, but production code should always follow both rules.",{"type":54,"tag":76,"props":512,"children":515},{"className":513,"code":514,"language":27,"meta":81,"style":81},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from azure.monitor.ingestion import LogsIngestionClient\nfrom azure.identity import DefaultAzureCredential, ManagedIdentityCredential\nimport os\n\n# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\ncredential = DefaultAzureCredential(require_envvar=True)\n# Or use a specific credential directly in production:\n# See https:\u002F\u002Flearn.microsoft.com\u002Fpython\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-python#credential-classes\n# credential = ManagedIdentityCredential()\n\nwith LogsIngestionClient(\n    endpoint=os.environ[\"AZURE_DCE_ENDPOINT\"],\n    credential=credential\n) as client:\n    # Use `client.upload(...)` for all subsequent operations (see examples below)\n    ...\n",[516],{"type":54,"tag":84,"props":517,"children":518},{"__ignoreMap":81},[519,527,535,543,550,558,566,574,582,590,598,607,616,625,634,643],{"type":54,"tag":88,"props":520,"children":521},{"class":90,"line":91},[522],{"type":54,"tag":88,"props":523,"children":524},{},[525],{"type":60,"value":526},"from azure.monitor.ingestion import LogsIngestionClient\n",{"type":54,"tag":88,"props":528,"children":529},{"class":90,"line":112},[530],{"type":54,"tag":88,"props":531,"children":532},{},[533],{"type":60,"value":534},"from azure.identity import DefaultAzureCredential, ManagedIdentityCredential\n",{"type":54,"tag":88,"props":536,"children":537},{"class":90,"line":214},[538],{"type":54,"tag":88,"props":539,"children":540},{},[541],{"type":60,"value":542},"import os\n",{"type":54,"tag":88,"props":544,"children":545},{"class":90,"line":224},[546],{"type":54,"tag":88,"props":547,"children":548},{"emptyLinePlaceholder":218},[549],{"type":60,"value":221},{"type":54,"tag":88,"props":551,"children":552},{"class":90,"line":233},[553],{"type":54,"tag":88,"props":554,"children":555},{},[556],{"type":60,"value":557},"# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\n",{"type":54,"tag":88,"props":559,"children":560},{"class":90,"line":255},[561],{"type":54,"tag":88,"props":562,"children":563},{},[564],{"type":60,"value":565},"credential = DefaultAzureCredential(require_envvar=True)\n",{"type":54,"tag":88,"props":567,"children":568},{"class":90,"line":263},[569],{"type":54,"tag":88,"props":570,"children":571},{},[572],{"type":60,"value":573},"# Or use a specific credential directly in production:\n",{"type":54,"tag":88,"props":575,"children":576},{"class":90,"line":272},[577],{"type":54,"tag":88,"props":578,"children":579},{},[580],{"type":60,"value":581},"# See https:\u002F\u002Flearn.microsoft.com\u002Fpython\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-python#credential-classes\n",{"type":54,"tag":88,"props":583,"children":584},{"class":90,"line":294},[585],{"type":54,"tag":88,"props":586,"children":587},{},[588],{"type":60,"value":589},"# credential = ManagedIdentityCredential()\n",{"type":54,"tag":88,"props":591,"children":593},{"class":90,"line":592},10,[594],{"type":54,"tag":88,"props":595,"children":596},{"emptyLinePlaceholder":218},[597],{"type":60,"value":221},{"type":54,"tag":88,"props":599,"children":601},{"class":90,"line":600},11,[602],{"type":54,"tag":88,"props":603,"children":604},{},[605],{"type":60,"value":606},"with LogsIngestionClient(\n",{"type":54,"tag":88,"props":608,"children":610},{"class":90,"line":609},12,[611],{"type":54,"tag":88,"props":612,"children":613},{},[614],{"type":60,"value":615},"    endpoint=os.environ[\"AZURE_DCE_ENDPOINT\"],\n",{"type":54,"tag":88,"props":617,"children":619},{"class":90,"line":618},13,[620],{"type":54,"tag":88,"props":621,"children":622},{},[623],{"type":60,"value":624},"    credential=credential\n",{"type":54,"tag":88,"props":626,"children":628},{"class":90,"line":627},14,[629],{"type":54,"tag":88,"props":630,"children":631},{},[632],{"type":60,"value":633},") as client:\n",{"type":54,"tag":88,"props":635,"children":637},{"class":90,"line":636},15,[638],{"type":54,"tag":88,"props":639,"children":640},{},[641],{"type":60,"value":642},"    # Use `client.upload(...)` for all subsequent operations (see examples below)\n",{"type":54,"tag":88,"props":644,"children":646},{"class":90,"line":645},16,[647],{"type":54,"tag":88,"props":648,"children":649},{},[650],{"type":60,"value":651},"    ...\n",{"type":54,"tag":69,"props":653,"children":655},{"id":654},"upload-custom-logs",[656],{"type":60,"value":657},"Upload Custom Logs",{"type":54,"tag":76,"props":659,"children":661},{"className":513,"code":660,"language":27,"meta":81,"style":81},"from azure.monitor.ingestion import LogsIngestionClient\nfrom azure.identity import DefaultAzureCredential\nimport os\n\nrule_id = os.environ[\"AZURE_DCR_RULE_ID\"]\nstream_name = os.environ[\"AZURE_DCR_STREAM_NAME\"]\n\nlogs = [\n    {\"TimeGenerated\": \"2024-01-15T10:00:00Z\", \"Computer\": \"server1\", \"Message\": \"Application started\"},\n    {\"TimeGenerated\": \"2024-01-15T10:01:00Z\", \"Computer\": \"server1\", \"Message\": \"Processing request\"},\n    {\"TimeGenerated\": \"2024-01-15T10:02:00Z\", \"Computer\": \"server2\", \"Message\": \"Connection established\"}\n]\n\nwith LogsIngestionClient(\n    endpoint=os.environ[\"AZURE_DCE_ENDPOINT\"],\n    credential=DefaultAzureCredential()\n) as client:\n    client.upload(rule_id=rule_id, stream_name=stream_name, logs=logs)\n",[662],{"type":54,"tag":84,"props":663,"children":664},{"__ignoreMap":81},[665,672,680,687,694,702,710,717,725,733,741,749,757,764,771,778,786,794],{"type":54,"tag":88,"props":666,"children":667},{"class":90,"line":91},[668],{"type":54,"tag":88,"props":669,"children":670},{},[671],{"type":60,"value":526},{"type":54,"tag":88,"props":673,"children":674},{"class":90,"line":112},[675],{"type":54,"tag":88,"props":676,"children":677},{},[678],{"type":60,"value":679},"from azure.identity import DefaultAzureCredential\n",{"type":54,"tag":88,"props":681,"children":682},{"class":90,"line":214},[683],{"type":54,"tag":88,"props":684,"children":685},{},[686],{"type":60,"value":542},{"type":54,"tag":88,"props":688,"children":689},{"class":90,"line":224},[690],{"type":54,"tag":88,"props":691,"children":692},{"emptyLinePlaceholder":218},[693],{"type":60,"value":221},{"type":54,"tag":88,"props":695,"children":696},{"class":90,"line":233},[697],{"type":54,"tag":88,"props":698,"children":699},{},[700],{"type":60,"value":701},"rule_id = os.environ[\"AZURE_DCR_RULE_ID\"]\n",{"type":54,"tag":88,"props":703,"children":704},{"class":90,"line":255},[705],{"type":54,"tag":88,"props":706,"children":707},{},[708],{"type":60,"value":709},"stream_name = os.environ[\"AZURE_DCR_STREAM_NAME\"]\n",{"type":54,"tag":88,"props":711,"children":712},{"class":90,"line":263},[713],{"type":54,"tag":88,"props":714,"children":715},{"emptyLinePlaceholder":218},[716],{"type":60,"value":221},{"type":54,"tag":88,"props":718,"children":719},{"class":90,"line":272},[720],{"type":54,"tag":88,"props":721,"children":722},{},[723],{"type":60,"value":724},"logs = [\n",{"type":54,"tag":88,"props":726,"children":727},{"class":90,"line":294},[728],{"type":54,"tag":88,"props":729,"children":730},{},[731],{"type":60,"value":732},"    {\"TimeGenerated\": \"2024-01-15T10:00:00Z\", \"Computer\": \"server1\", \"Message\": \"Application started\"},\n",{"type":54,"tag":88,"props":734,"children":735},{"class":90,"line":592},[736],{"type":54,"tag":88,"props":737,"children":738},{},[739],{"type":60,"value":740},"    {\"TimeGenerated\": \"2024-01-15T10:01:00Z\", \"Computer\": \"server1\", \"Message\": \"Processing request\"},\n",{"type":54,"tag":88,"props":742,"children":743},{"class":90,"line":600},[744],{"type":54,"tag":88,"props":745,"children":746},{},[747],{"type":60,"value":748},"    {\"TimeGenerated\": \"2024-01-15T10:02:00Z\", \"Computer\": \"server2\", \"Message\": \"Connection established\"}\n",{"type":54,"tag":88,"props":750,"children":751},{"class":90,"line":609},[752],{"type":54,"tag":88,"props":753,"children":754},{},[755],{"type":60,"value":756},"]\n",{"type":54,"tag":88,"props":758,"children":759},{"class":90,"line":618},[760],{"type":54,"tag":88,"props":761,"children":762},{"emptyLinePlaceholder":218},[763],{"type":60,"value":221},{"type":54,"tag":88,"props":765,"children":766},{"class":90,"line":627},[767],{"type":54,"tag":88,"props":768,"children":769},{},[770],{"type":60,"value":606},{"type":54,"tag":88,"props":772,"children":773},{"class":90,"line":636},[774],{"type":54,"tag":88,"props":775,"children":776},{},[777],{"type":60,"value":615},{"type":54,"tag":88,"props":779,"children":780},{"class":90,"line":645},[781],{"type":54,"tag":88,"props":782,"children":783},{},[784],{"type":60,"value":785},"    credential=DefaultAzureCredential()\n",{"type":54,"tag":88,"props":787,"children":789},{"class":90,"line":788},17,[790],{"type":54,"tag":88,"props":791,"children":792},{},[793],{"type":60,"value":633},{"type":54,"tag":88,"props":795,"children":797},{"class":90,"line":796},18,[798],{"type":54,"tag":88,"props":799,"children":800},{},[801],{"type":60,"value":802},"    client.upload(rule_id=rule_id, stream_name=stream_name, logs=logs)\n",{"type":54,"tag":69,"props":804,"children":806},{"id":805},"upload-from-json-file",[807],{"type":60,"value":808},"Upload from JSON File",{"type":54,"tag":76,"props":810,"children":812},{"className":513,"code":811,"language":27,"meta":81,"style":81},"import json\n\nwith open(\"logs.json\", \"r\") as f:\n    logs = json.load(f)\n\nclient.upload(rule_id=rule_id, stream_name=stream_name, logs=logs)\n",[813],{"type":54,"tag":84,"props":814,"children":815},{"__ignoreMap":81},[816,824,831,839,847,854],{"type":54,"tag":88,"props":817,"children":818},{"class":90,"line":91},[819],{"type":54,"tag":88,"props":820,"children":821},{},[822],{"type":60,"value":823},"import json\n",{"type":54,"tag":88,"props":825,"children":826},{"class":90,"line":112},[827],{"type":54,"tag":88,"props":828,"children":829},{"emptyLinePlaceholder":218},[830],{"type":60,"value":221},{"type":54,"tag":88,"props":832,"children":833},{"class":90,"line":214},[834],{"type":54,"tag":88,"props":835,"children":836},{},[837],{"type":60,"value":838},"with open(\"logs.json\", \"r\") as f:\n",{"type":54,"tag":88,"props":840,"children":841},{"class":90,"line":224},[842],{"type":54,"tag":88,"props":843,"children":844},{},[845],{"type":60,"value":846},"    logs = json.load(f)\n",{"type":54,"tag":88,"props":848,"children":849},{"class":90,"line":233},[850],{"type":54,"tag":88,"props":851,"children":852},{"emptyLinePlaceholder":218},[853],{"type":60,"value":221},{"type":54,"tag":88,"props":855,"children":856},{"class":90,"line":255},[857],{"type":54,"tag":88,"props":858,"children":859},{},[860],{"type":60,"value":861},"client.upload(rule_id=rule_id, stream_name=stream_name, logs=logs)\n",{"type":54,"tag":69,"props":863,"children":865},{"id":864},"custom-error-handling",[866],{"type":60,"value":867},"Custom Error Handling",{"type":54,"tag":63,"props":869,"children":870},{},[871],{"type":60,"value":872},"Handle partial failures with a callback:",{"type":54,"tag":76,"props":874,"children":876},{"className":513,"code":875,"language":27,"meta":81,"style":81},"failed_logs = []\n\ndef on_error(error):\n    print(f\"Upload failed: {error.error}\")\n    failed_logs.extend(error.failed_logs)\n\nclient.upload(\n    rule_id=rule_id,\n    stream_name=stream_name,\n    logs=logs,\n    on_error=on_error\n)\n\n# Retry failed logs\nif failed_logs:\n    print(f\"Retrying {len(failed_logs)} failed logs...\")\n    client.upload(rule_id=rule_id, stream_name=stream_name, logs=failed_logs)\n",[877],{"type":54,"tag":84,"props":878,"children":879},{"__ignoreMap":81},[880,888,895,903,911,919,926,934,942,950,958,966,974,981,989,997,1005],{"type":54,"tag":88,"props":881,"children":882},{"class":90,"line":91},[883],{"type":54,"tag":88,"props":884,"children":885},{},[886],{"type":60,"value":887},"failed_logs = []\n",{"type":54,"tag":88,"props":889,"children":890},{"class":90,"line":112},[891],{"type":54,"tag":88,"props":892,"children":893},{"emptyLinePlaceholder":218},[894],{"type":60,"value":221},{"type":54,"tag":88,"props":896,"children":897},{"class":90,"line":214},[898],{"type":54,"tag":88,"props":899,"children":900},{},[901],{"type":60,"value":902},"def on_error(error):\n",{"type":54,"tag":88,"props":904,"children":905},{"class":90,"line":224},[906],{"type":54,"tag":88,"props":907,"children":908},{},[909],{"type":60,"value":910},"    print(f\"Upload failed: {error.error}\")\n",{"type":54,"tag":88,"props":912,"children":913},{"class":90,"line":233},[914],{"type":54,"tag":88,"props":915,"children":916},{},[917],{"type":60,"value":918},"    failed_logs.extend(error.failed_logs)\n",{"type":54,"tag":88,"props":920,"children":921},{"class":90,"line":255},[922],{"type":54,"tag":88,"props":923,"children":924},{"emptyLinePlaceholder":218},[925],{"type":60,"value":221},{"type":54,"tag":88,"props":927,"children":928},{"class":90,"line":263},[929],{"type":54,"tag":88,"props":930,"children":931},{},[932],{"type":60,"value":933},"client.upload(\n",{"type":54,"tag":88,"props":935,"children":936},{"class":90,"line":272},[937],{"type":54,"tag":88,"props":938,"children":939},{},[940],{"type":60,"value":941},"    rule_id=rule_id,\n",{"type":54,"tag":88,"props":943,"children":944},{"class":90,"line":294},[945],{"type":54,"tag":88,"props":946,"children":947},{},[948],{"type":60,"value":949},"    stream_name=stream_name,\n",{"type":54,"tag":88,"props":951,"children":952},{"class":90,"line":592},[953],{"type":54,"tag":88,"props":954,"children":955},{},[956],{"type":60,"value":957},"    logs=logs,\n",{"type":54,"tag":88,"props":959,"children":960},{"class":90,"line":600},[961],{"type":54,"tag":88,"props":962,"children":963},{},[964],{"type":60,"value":965},"    on_error=on_error\n",{"type":54,"tag":88,"props":967,"children":968},{"class":90,"line":609},[969],{"type":54,"tag":88,"props":970,"children":971},{},[972],{"type":60,"value":973},")\n",{"type":54,"tag":88,"props":975,"children":976},{"class":90,"line":618},[977],{"type":54,"tag":88,"props":978,"children":979},{"emptyLinePlaceholder":218},[980],{"type":60,"value":221},{"type":54,"tag":88,"props":982,"children":983},{"class":90,"line":627},[984],{"type":54,"tag":88,"props":985,"children":986},{},[987],{"type":60,"value":988},"# Retry failed logs\n",{"type":54,"tag":88,"props":990,"children":991},{"class":90,"line":636},[992],{"type":54,"tag":88,"props":993,"children":994},{},[995],{"type":60,"value":996},"if failed_logs:\n",{"type":54,"tag":88,"props":998,"children":999},{"class":90,"line":645},[1000],{"type":54,"tag":88,"props":1001,"children":1002},{},[1003],{"type":60,"value":1004},"    print(f\"Retrying {len(failed_logs)} failed logs...\")\n",{"type":54,"tag":88,"props":1006,"children":1007},{"class":90,"line":788},[1008],{"type":54,"tag":88,"props":1009,"children":1010},{},[1011],{"type":60,"value":1012},"    client.upload(rule_id=rule_id, stream_name=stream_name, logs=failed_logs)\n",{"type":54,"tag":69,"props":1014,"children":1016},{"id":1015},"ignore-errors",[1017],{"type":60,"value":1018},"Ignore Errors",{"type":54,"tag":76,"props":1020,"children":1022},{"className":513,"code":1021,"language":27,"meta":81,"style":81},"def ignore_errors(error):\n    pass  # Silently ignore upload failures\n\nclient.upload(\n    rule_id=rule_id,\n    stream_name=stream_name,\n    logs=logs,\n    on_error=ignore_errors\n)\n",[1023],{"type":54,"tag":84,"props":1024,"children":1025},{"__ignoreMap":81},[1026,1034,1042,1049,1056,1063,1070,1077,1085],{"type":54,"tag":88,"props":1027,"children":1028},{"class":90,"line":91},[1029],{"type":54,"tag":88,"props":1030,"children":1031},{},[1032],{"type":60,"value":1033},"def ignore_errors(error):\n",{"type":54,"tag":88,"props":1035,"children":1036},{"class":90,"line":112},[1037],{"type":54,"tag":88,"props":1038,"children":1039},{},[1040],{"type":60,"value":1041},"    pass  # Silently ignore upload failures\n",{"type":54,"tag":88,"props":1043,"children":1044},{"class":90,"line":214},[1045],{"type":54,"tag":88,"props":1046,"children":1047},{"emptyLinePlaceholder":218},[1048],{"type":60,"value":221},{"type":54,"tag":88,"props":1050,"children":1051},{"class":90,"line":224},[1052],{"type":54,"tag":88,"props":1053,"children":1054},{},[1055],{"type":60,"value":933},{"type":54,"tag":88,"props":1057,"children":1058},{"class":90,"line":233},[1059],{"type":54,"tag":88,"props":1060,"children":1061},{},[1062],{"type":60,"value":941},{"type":54,"tag":88,"props":1064,"children":1065},{"class":90,"line":255},[1066],{"type":54,"tag":88,"props":1067,"children":1068},{},[1069],{"type":60,"value":949},{"type":54,"tag":88,"props":1071,"children":1072},{"class":90,"line":263},[1073],{"type":54,"tag":88,"props":1074,"children":1075},{},[1076],{"type":60,"value":957},{"type":54,"tag":88,"props":1078,"children":1079},{"class":90,"line":272},[1080],{"type":54,"tag":88,"props":1081,"children":1082},{},[1083],{"type":60,"value":1084},"    on_error=ignore_errors\n",{"type":54,"tag":88,"props":1086,"children":1087},{"class":90,"line":294},[1088],{"type":54,"tag":88,"props":1089,"children":1090},{},[1091],{"type":60,"value":973},{"type":54,"tag":69,"props":1093,"children":1095},{"id":1094},"async-client",[1096],{"type":60,"value":1097},"Async Client",{"type":54,"tag":76,"props":1099,"children":1101},{"className":513,"code":1100,"language":27,"meta":81,"style":81},"import asyncio\nfrom azure.monitor.ingestion.aio import LogsIngestionClient\nfrom azure.identity.aio import DefaultAzureCredential\n\nasync def upload_logs():\n    async with LogsIngestionClient(\n        endpoint=endpoint,\n        credential=DefaultAzureCredential()\n    ) as client:\n        await client.upload(\n            rule_id=rule_id,\n            stream_name=stream_name,\n            logs=logs\n        )\n\nasyncio.run(upload_logs())\n",[1102],{"type":54,"tag":84,"props":1103,"children":1104},{"__ignoreMap":81},[1105,1113,1121,1129,1136,1144,1152,1160,1168,1176,1184,1192,1200,1208,1216,1223],{"type":54,"tag":88,"props":1106,"children":1107},{"class":90,"line":91},[1108],{"type":54,"tag":88,"props":1109,"children":1110},{},[1111],{"type":60,"value":1112},"import asyncio\n",{"type":54,"tag":88,"props":1114,"children":1115},{"class":90,"line":112},[1116],{"type":54,"tag":88,"props":1117,"children":1118},{},[1119],{"type":60,"value":1120},"from azure.monitor.ingestion.aio import LogsIngestionClient\n",{"type":54,"tag":88,"props":1122,"children":1123},{"class":90,"line":214},[1124],{"type":54,"tag":88,"props":1125,"children":1126},{},[1127],{"type":60,"value":1128},"from azure.identity.aio import DefaultAzureCredential\n",{"type":54,"tag":88,"props":1130,"children":1131},{"class":90,"line":224},[1132],{"type":54,"tag":88,"props":1133,"children":1134},{"emptyLinePlaceholder":218},[1135],{"type":60,"value":221},{"type":54,"tag":88,"props":1137,"children":1138},{"class":90,"line":233},[1139],{"type":54,"tag":88,"props":1140,"children":1141},{},[1142],{"type":60,"value":1143},"async def upload_logs():\n",{"type":54,"tag":88,"props":1145,"children":1146},{"class":90,"line":255},[1147],{"type":54,"tag":88,"props":1148,"children":1149},{},[1150],{"type":60,"value":1151},"    async with LogsIngestionClient(\n",{"type":54,"tag":88,"props":1153,"children":1154},{"class":90,"line":263},[1155],{"type":54,"tag":88,"props":1156,"children":1157},{},[1158],{"type":60,"value":1159},"        endpoint=endpoint,\n",{"type":54,"tag":88,"props":1161,"children":1162},{"class":90,"line":272},[1163],{"type":54,"tag":88,"props":1164,"children":1165},{},[1166],{"type":60,"value":1167},"        credential=DefaultAzureCredential()\n",{"type":54,"tag":88,"props":1169,"children":1170},{"class":90,"line":294},[1171],{"type":54,"tag":88,"props":1172,"children":1173},{},[1174],{"type":60,"value":1175},"    ) as client:\n",{"type":54,"tag":88,"props":1177,"children":1178},{"class":90,"line":592},[1179],{"type":54,"tag":88,"props":1180,"children":1181},{},[1182],{"type":60,"value":1183},"        await client.upload(\n",{"type":54,"tag":88,"props":1185,"children":1186},{"class":90,"line":600},[1187],{"type":54,"tag":88,"props":1188,"children":1189},{},[1190],{"type":60,"value":1191},"            rule_id=rule_id,\n",{"type":54,"tag":88,"props":1193,"children":1194},{"class":90,"line":609},[1195],{"type":54,"tag":88,"props":1196,"children":1197},{},[1198],{"type":60,"value":1199},"            stream_name=stream_name,\n",{"type":54,"tag":88,"props":1201,"children":1202},{"class":90,"line":618},[1203],{"type":54,"tag":88,"props":1204,"children":1205},{},[1206],{"type":60,"value":1207},"            logs=logs\n",{"type":54,"tag":88,"props":1209,"children":1210},{"class":90,"line":627},[1211],{"type":54,"tag":88,"props":1212,"children":1213},{},[1214],{"type":60,"value":1215},"        )\n",{"type":54,"tag":88,"props":1217,"children":1218},{"class":90,"line":636},[1219],{"type":54,"tag":88,"props":1220,"children":1221},{"emptyLinePlaceholder":218},[1222],{"type":60,"value":221},{"type":54,"tag":88,"props":1224,"children":1225},{"class":90,"line":645},[1226],{"type":54,"tag":88,"props":1227,"children":1228},{},[1229],{"type":60,"value":1230},"asyncio.run(upload_logs())\n",{"type":54,"tag":69,"props":1232,"children":1234},{"id":1233},"sovereign-clouds",[1235],{"type":60,"value":1236},"Sovereign Clouds",{"type":54,"tag":76,"props":1238,"children":1240},{"className":513,"code":1239,"language":27,"meta":81,"style":81},"from azure.identity import AzureAuthorityHosts, DefaultAzureCredential\nfrom azure.monitor.ingestion import LogsIngestionClient\n\n# Azure Government\ncredential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)\nwith LogsIngestionClient(\n    endpoint=\"https:\u002F\u002Fexample.ingest.monitor.azure.us\",\n    credential=credential,\n    credential_scopes=[\"https:\u002F\u002Fmonitor.azure.us\u002F.default\"]\n) as client:\n    # client.upload(...)\n    ...\n",[1241],{"type":54,"tag":84,"props":1242,"children":1243},{"__ignoreMap":81},[1244,1252,1259,1266,1274,1282,1289,1297,1305,1313,1320,1328],{"type":54,"tag":88,"props":1245,"children":1246},{"class":90,"line":91},[1247],{"type":54,"tag":88,"props":1248,"children":1249},{},[1250],{"type":60,"value":1251},"from azure.identity import AzureAuthorityHosts, DefaultAzureCredential\n",{"type":54,"tag":88,"props":1253,"children":1254},{"class":90,"line":112},[1255],{"type":54,"tag":88,"props":1256,"children":1257},{},[1258],{"type":60,"value":526},{"type":54,"tag":88,"props":1260,"children":1261},{"class":90,"line":214},[1262],{"type":54,"tag":88,"props":1263,"children":1264},{"emptyLinePlaceholder":218},[1265],{"type":60,"value":221},{"type":54,"tag":88,"props":1267,"children":1268},{"class":90,"line":224},[1269],{"type":54,"tag":88,"props":1270,"children":1271},{},[1272],{"type":60,"value":1273},"# Azure Government\n",{"type":54,"tag":88,"props":1275,"children":1276},{"class":90,"line":233},[1277],{"type":54,"tag":88,"props":1278,"children":1279},{},[1280],{"type":60,"value":1281},"credential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)\n",{"type":54,"tag":88,"props":1283,"children":1284},{"class":90,"line":255},[1285],{"type":54,"tag":88,"props":1286,"children":1287},{},[1288],{"type":60,"value":606},{"type":54,"tag":88,"props":1290,"children":1291},{"class":90,"line":263},[1292],{"type":54,"tag":88,"props":1293,"children":1294},{},[1295],{"type":60,"value":1296},"    endpoint=\"https:\u002F\u002Fexample.ingest.monitor.azure.us\",\n",{"type":54,"tag":88,"props":1298,"children":1299},{"class":90,"line":272},[1300],{"type":54,"tag":88,"props":1301,"children":1302},{},[1303],{"type":60,"value":1304},"    credential=credential,\n",{"type":54,"tag":88,"props":1306,"children":1307},{"class":90,"line":294},[1308],{"type":54,"tag":88,"props":1309,"children":1310},{},[1311],{"type":60,"value":1312},"    credential_scopes=[\"https:\u002F\u002Fmonitor.azure.us\u002F.default\"]\n",{"type":54,"tag":88,"props":1314,"children":1315},{"class":90,"line":592},[1316],{"type":54,"tag":88,"props":1317,"children":1318},{},[1319],{"type":60,"value":633},{"type":54,"tag":88,"props":1321,"children":1322},{"class":90,"line":600},[1323],{"type":54,"tag":88,"props":1324,"children":1325},{},[1326],{"type":60,"value":1327},"    # client.upload(...)\n",{"type":54,"tag":88,"props":1329,"children":1330},{"class":90,"line":609},[1331],{"type":54,"tag":88,"props":1332,"children":1333},{},[1334],{"type":60,"value":651},{"type":54,"tag":69,"props":1336,"children":1338},{"id":1337},"batching-behavior",[1339],{"type":60,"value":1340},"Batching Behavior",{"type":54,"tag":63,"props":1342,"children":1343},{},[1344],{"type":60,"value":1345},"The SDK automatically:",{"type":54,"tag":411,"props":1347,"children":1348},{},[1349,1354,1359],{"type":54,"tag":331,"props":1350,"children":1351},{},[1352],{"type":60,"value":1353},"Splits logs into chunks of 1MB or less",{"type":54,"tag":331,"props":1355,"children":1356},{},[1357],{"type":60,"value":1358},"Compresses each chunk with gzip",{"type":54,"tag":331,"props":1360,"children":1361},{},[1362],{"type":60,"value":1363},"Uploads chunks in parallel",{"type":54,"tag":63,"props":1365,"children":1366},{},[1367],{"type":60,"value":1368},"No manual batching needed for large log sets.",{"type":54,"tag":69,"props":1370,"children":1372},{"id":1371},"client-types",[1373],{"type":60,"value":1374},"Client Types",{"type":54,"tag":1376,"props":1377,"children":1378},"table",{},[1379,1398],{"type":54,"tag":1380,"props":1381,"children":1382},"thead",{},[1383],{"type":54,"tag":1384,"props":1385,"children":1386},"tr",{},[1387,1393],{"type":54,"tag":1388,"props":1389,"children":1390},"th",{},[1391],{"type":60,"value":1392},"Client",{"type":54,"tag":1388,"props":1394,"children":1395},{},[1396],{"type":60,"value":1397},"Purpose",{"type":54,"tag":1399,"props":1400,"children":1401},"tbody",{},[1402,1420],{"type":54,"tag":1384,"props":1403,"children":1404},{},[1405,1415],{"type":54,"tag":1406,"props":1407,"children":1408},"td",{},[1409],{"type":54,"tag":84,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":60,"value":1414},"LogsIngestionClient",{"type":54,"tag":1406,"props":1416,"children":1417},{},[1418],{"type":60,"value":1419},"Sync client for uploading logs",{"type":54,"tag":1384,"props":1421,"children":1422},{},[1423,1433],{"type":54,"tag":1406,"props":1424,"children":1425},{},[1426,1431],{"type":54,"tag":84,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":60,"value":1414},{"type":60,"value":1432}," (aio)",{"type":54,"tag":1406,"props":1434,"children":1435},{},[1436],{"type":60,"value":1437},"Async client for uploading logs",{"type":54,"tag":69,"props":1439,"children":1441},{"id":1440},"key-concepts",[1442],{"type":60,"value":1443},"Key Concepts",{"type":54,"tag":1376,"props":1445,"children":1446},{},[1447,1463],{"type":54,"tag":1380,"props":1448,"children":1449},{},[1450],{"type":54,"tag":1384,"props":1451,"children":1452},{},[1453,1458],{"type":54,"tag":1388,"props":1454,"children":1455},{},[1456],{"type":60,"value":1457},"Concept",{"type":54,"tag":1388,"props":1459,"children":1460},{},[1461],{"type":60,"value":1462},"Description",{"type":54,"tag":1399,"props":1464,"children":1465},{},[1466,1482,1498,1514],{"type":54,"tag":1384,"props":1467,"children":1468},{},[1469,1477],{"type":54,"tag":1406,"props":1470,"children":1471},{},[1472],{"type":54,"tag":335,"props":1473,"children":1474},{},[1475],{"type":60,"value":1476},"DCE",{"type":54,"tag":1406,"props":1478,"children":1479},{},[1480],{"type":60,"value":1481},"Data Collection Endpoint — ingestion URL",{"type":54,"tag":1384,"props":1483,"children":1484},{},[1485,1493],{"type":54,"tag":1406,"props":1486,"children":1487},{},[1488],{"type":54,"tag":335,"props":1489,"children":1490},{},[1491],{"type":60,"value":1492},"DCR",{"type":54,"tag":1406,"props":1494,"children":1495},{},[1496],{"type":60,"value":1497},"Data Collection Rule — defines schema, transformations, destination",{"type":54,"tag":1384,"props":1499,"children":1500},{},[1501,1509],{"type":54,"tag":1406,"props":1502,"children":1503},{},[1504],{"type":54,"tag":335,"props":1505,"children":1506},{},[1507],{"type":60,"value":1508},"Stream",{"type":54,"tag":1406,"props":1510,"children":1511},{},[1512],{"type":60,"value":1513},"Named data flow within a DCR",{"type":54,"tag":1384,"props":1515,"children":1516},{},[1517,1524],{"type":54,"tag":1406,"props":1518,"children":1519},{},[1520],{"type":54,"tag":335,"props":1521,"children":1522},{},[1523],{"type":60,"value":369},{"type":54,"tag":1406,"props":1525,"children":1526},{},[1527,1529,1535],{"type":60,"value":1528},"Target table in Log Analytics (ends with ",{"type":54,"tag":84,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":60,"value":1534},"_CL",{"type":60,"value":505},{"type":54,"tag":69,"props":1537,"children":1539},{"id":1538},"dcr-stream-name-format",[1540],{"type":60,"value":1541},"DCR Stream Name Format",{"type":54,"tag":63,"props":1543,"children":1544},{},[1545],{"type":60,"value":1546},"Stream names follow patterns:",{"type":54,"tag":411,"props":1548,"children":1549},{},[1550,1561],{"type":54,"tag":331,"props":1551,"children":1552},{},[1553,1559],{"type":54,"tag":84,"props":1554,"children":1556},{"className":1555},[],[1557],{"type":60,"value":1558},"Custom-\u003CTableName>_CL",{"type":60,"value":1560}," — For custom tables",{"type":54,"tag":331,"props":1562,"children":1563},{},[1564,1570],{"type":54,"tag":84,"props":1565,"children":1567},{"className":1566},[],[1568],{"type":60,"value":1569},"Microsoft-\u003CTableName>",{"type":60,"value":1571}," — For built-in tables",{"type":54,"tag":69,"props":1573,"children":1575},{"id":1574},"best-practices",[1576],{"type":60,"value":1577},"Best Practices",{"type":54,"tag":327,"props":1579,"children":1580},{},[1581,1607,1655,1670,1688,1698,1708,1718,1728],{"type":54,"tag":331,"props":1582,"children":1583},{},[1584,1589,1591,1597,1599,1605],{"type":54,"tag":335,"props":1585,"children":1586},{},[1587],{"type":60,"value":1588},"Pick sync OR async and stay consistent.",{"type":60,"value":1590}," Do not mix ",{"type":54,"tag":84,"props":1592,"children":1594},{"className":1593},[],[1595],{"type":60,"value":1596},"azure.xxx",{"type":60,"value":1598}," sync clients with ",{"type":54,"tag":84,"props":1600,"children":1602},{"className":1601},[],[1603],{"type":60,"value":1604},"azure.xxx.aio",{"type":60,"value":1606}," async clients in the same call path. Choose one mode per module.",{"type":54,"tag":331,"props":1608,"children":1609},{},[1610,1615,1617,1623,1625,1631,1633,1638,1640,1645,1647,1653],{"type":54,"tag":335,"props":1611,"children":1612},{},[1613],{"type":60,"value":1614},"Always use context managers for clients and async credentials.",{"type":60,"value":1616}," Wrap every client in ",{"type":54,"tag":84,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":60,"value":1622},"with Client(...) as client:",{"type":60,"value":1624}," (sync) or ",{"type":54,"tag":84,"props":1626,"children":1628},{"className":1627},[],[1629],{"type":60,"value":1630},"async with Client(...) as client:",{"type":60,"value":1632}," (async) to ensure proper cleanup. For async ",{"type":54,"tag":84,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":60,"value":406},{"type":60,"value":1639}," from ",{"type":54,"tag":84,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":60,"value":503},{"type":60,"value":1646},", also use ",{"type":54,"tag":84,"props":1648,"children":1650},{"className":1649},[],[1651],{"type":60,"value":1652},"async with credential:",{"type":60,"value":1654}," so tokens and transports are cleaned up.",{"type":54,"tag":331,"props":1656,"children":1657},{},[1658,1668],{"type":54,"tag":335,"props":1659,"children":1660},{},[1661,1663],{"type":60,"value":1662},"Use ",{"type":54,"tag":84,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":60,"value":406},{"type":60,"value":1669}," for code that runs locally. Use a specific token credential for code that runs in Azure.",{"type":54,"tag":331,"props":1671,"children":1672},{},[1673,1678,1680,1686],{"type":54,"tag":335,"props":1674,"children":1675},{},[1676],{"type":60,"value":1677},"Handle errors gracefully",{"type":60,"value":1679}," — use ",{"type":54,"tag":84,"props":1681,"children":1683},{"className":1682},[],[1684],{"type":60,"value":1685},"on_error",{"type":60,"value":1687}," callback for partial failures",{"type":54,"tag":331,"props":1689,"children":1690},{},[1691,1696],{"type":54,"tag":335,"props":1692,"children":1693},{},[1694],{"type":60,"value":1695},"Include TimeGenerated",{"type":60,"value":1697}," — Required field for all logs",{"type":54,"tag":331,"props":1699,"children":1700},{},[1701,1706],{"type":54,"tag":335,"props":1702,"children":1703},{},[1704],{"type":60,"value":1705},"Match DCR schema",{"type":60,"value":1707}," — Log fields must match DCR column definitions",{"type":54,"tag":331,"props":1709,"children":1710},{},[1711,1716],{"type":54,"tag":335,"props":1712,"children":1713},{},[1714],{"type":60,"value":1715},"Use async client",{"type":60,"value":1717}," for high-throughput scenarios",{"type":54,"tag":331,"props":1719,"children":1720},{},[1721,1726],{"type":54,"tag":335,"props":1722,"children":1723},{},[1724],{"type":60,"value":1725},"Batch uploads",{"type":60,"value":1727}," — SDK handles batching, but send reasonable chunks",{"type":54,"tag":331,"props":1729,"children":1730},{},[1731,1736],{"type":54,"tag":335,"props":1732,"children":1733},{},[1734],{"type":60,"value":1735},"Monitor ingestion",{"type":60,"value":1737}," — Check Log Analytics for ingestion status",{"type":54,"tag":69,"props":1739,"children":1741},{"id":1740},"reference-files",[1742],{"type":60,"value":1743},"Reference Files",{"type":54,"tag":1376,"props":1745,"children":1746},{},[1747,1763],{"type":54,"tag":1380,"props":1748,"children":1749},{},[1750],{"type":54,"tag":1384,"props":1751,"children":1752},{},[1753,1758],{"type":54,"tag":1388,"props":1754,"children":1755},{},[1756],{"type":60,"value":1757},"File",{"type":54,"tag":1388,"props":1759,"children":1760},{},[1761],{"type":60,"value":1762},"Contents",{"type":54,"tag":1399,"props":1764,"children":1765},{},[1766,1783],{"type":54,"tag":1384,"props":1767,"children":1768},{},[1769,1778],{"type":54,"tag":1406,"props":1770,"children":1771},{},[1772],{"type":54,"tag":1773,"props":1774,"children":1776},"a",{"href":1775},"references\u002Fcapabilities.md",[1777],{"type":60,"value":1775},{"type":54,"tag":1406,"props":1779,"children":1780},{},[1781],{"type":60,"value":1782},"Additional non-hero capabilities, operation-group coverage, and production checklists.",{"type":54,"tag":1384,"props":1784,"children":1785},{},[1786,1794],{"type":54,"tag":1406,"props":1787,"children":1788},{},[1789],{"type":54,"tag":1773,"props":1790,"children":1792},{"href":1791},"references\u002Fnon-hero-scenarios.md",[1793],{"type":60,"value":1791},{"type":54,"tag":1406,"props":1795,"children":1796},{},[1797],{"type":60,"value":1798},"Dedicated non-hero examples for secondary\u002Fadvanced scenarios.",{"type":54,"tag":1800,"props":1801,"children":1802},"style",{},[1803],{"type":60,"value":1804},"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":1806,"total":1911},[1807,1823,1842,1857,1872,1883,1896],{"slug":1808,"name":1808,"fn":1809,"description":1810,"org":1811,"tags":1812,"stars":28,"repoUrl":29,"updatedAt":1822},"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},[1813,1816,1818,1819],{"name":1814,"slug":1815,"type":15},".NET","net",{"name":1817,"slug":35,"type":15},"Agents",{"name":17,"slug":18,"type":15},{"name":1820,"slug":1821,"type":15},"LLM","llm","2026-07-03T16:32:10.297433",{"slug":1824,"name":1824,"fn":1825,"description":1826,"org":1827,"tags":1828,"stars":28,"repoUrl":29,"updatedAt":1841},"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},[1829,1832,1833,1836,1839,1840],{"name":1830,"slug":1831,"type":15},"Analytics","analytics",{"name":17,"slug":18,"type":15},{"name":1834,"slug":1835,"type":15},"Data Analysis","data-analysis",{"name":1837,"slug":1838,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":23,"slug":24,"type":15},"2026-05-13T06:14:16.261754",{"slug":1843,"name":1843,"fn":1844,"description":1845,"org":1846,"tags":1847,"stars":28,"repoUrl":29,"updatedAt":1856},"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},[1848,1851,1852,1853],{"name":1849,"slug":1850,"type":15},"AI Infrastructure","ai-infrastructure",{"name":17,"slug":18,"type":15},{"name":1837,"slug":1838,"type":15},{"name":1854,"slug":1855,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":1858,"name":1858,"fn":1859,"description":1860,"org":1861,"tags":1862,"stars":28,"repoUrl":29,"updatedAt":1871},"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},[1863,1864,1867,1868,1869,1870],{"name":17,"slug":18,"type":15},{"name":1865,"slug":1866,"type":15},"Compliance","compliance",{"name":1820,"slug":1821,"type":15},{"name":9,"slug":8,"type":15},{"name":26,"slug":27,"type":15},{"name":1854,"slug":1855,"type":15},"2026-07-18T05:14:23.017504",{"slug":1873,"name":1873,"fn":1874,"description":1875,"org":1876,"tags":1877,"stars":28,"repoUrl":29,"updatedAt":1882},"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},[1878,1879,1880,1881],{"name":1830,"slug":1831,"type":15},{"name":17,"slug":18,"type":15},{"name":1820,"slug":1821,"type":15},{"name":26,"slug":27,"type":15},"2026-07-31T05:54:29.068751",{"slug":1884,"name":1884,"fn":1885,"description":1886,"org":1887,"tags":1888,"stars":28,"repoUrl":29,"updatedAt":1895},"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},[1889,1892,1893,1894],{"name":1890,"slug":1891,"type":15},"API Development","api-development",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":26,"slug":27,"type":15},"2026-07-18T05:14:16.988376",{"slug":1897,"name":1897,"fn":1898,"description":1899,"org":1900,"tags":1901,"stars":28,"repoUrl":29,"updatedAt":1910},"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},[1902,1903,1906,1909],{"name":17,"slug":18,"type":15},{"name":1904,"slug":1905,"type":15},"Computer Vision","computer-vision",{"name":1907,"slug":1908,"type":15},"Images","images",{"name":26,"slug":27,"type":15},"2026-07-18T05:14:18.007737",38,{"items":1913,"total":2048},[1914,1936,1943,1952,1959,1968,1975,1982,1989,2004,2023,2036],{"slug":1915,"name":1915,"fn":1916,"description":1917,"org":1918,"tags":1919,"stars":1933,"repoUrl":1934,"updatedAt":1935},"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},[1920,1923,1926,1927,1930],{"name":1921,"slug":1922,"type":15},"Engineering","engineering",{"name":1924,"slug":1925,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":1928,"slug":1929,"type":15},"Project Management","project-management",{"name":1931,"slug":1932,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":1808,"name":1808,"fn":1809,"description":1810,"org":1937,"tags":1938,"stars":28,"repoUrl":29,"updatedAt":1822},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1939,1940,1941,1942],{"name":1814,"slug":1815,"type":15},{"name":1817,"slug":35,"type":15},{"name":17,"slug":18,"type":15},{"name":1820,"slug":1821,"type":15},{"slug":1824,"name":1824,"fn":1825,"description":1826,"org":1944,"tags":1945,"stars":28,"repoUrl":29,"updatedAt":1841},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1946,1947,1948,1949,1950,1951],{"name":1830,"slug":1831,"type":15},{"name":17,"slug":18,"type":15},{"name":1834,"slug":1835,"type":15},{"name":1837,"slug":1838,"type":15},{"name":9,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"slug":1843,"name":1843,"fn":1844,"description":1845,"org":1953,"tags":1954,"stars":28,"repoUrl":29,"updatedAt":1856},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1955,1956,1957,1958],{"name":1849,"slug":1850,"type":15},{"name":17,"slug":18,"type":15},{"name":1837,"slug":1838,"type":15},{"name":1854,"slug":1855,"type":15},{"slug":1858,"name":1858,"fn":1859,"description":1860,"org":1960,"tags":1961,"stars":28,"repoUrl":29,"updatedAt":1871},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1962,1963,1964,1965,1966,1967],{"name":17,"slug":18,"type":15},{"name":1865,"slug":1866,"type":15},{"name":1820,"slug":1821,"type":15},{"name":9,"slug":8,"type":15},{"name":26,"slug":27,"type":15},{"name":1854,"slug":1855,"type":15},{"slug":1873,"name":1873,"fn":1874,"description":1875,"org":1969,"tags":1970,"stars":28,"repoUrl":29,"updatedAt":1882},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1971,1972,1973,1974],{"name":1830,"slug":1831,"type":15},{"name":17,"slug":18,"type":15},{"name":1820,"slug":1821,"type":15},{"name":26,"slug":27,"type":15},{"slug":1884,"name":1884,"fn":1885,"description":1886,"org":1976,"tags":1977,"stars":28,"repoUrl":29,"updatedAt":1895},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1978,1979,1980,1981],{"name":1890,"slug":1891,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":26,"slug":27,"type":15},{"slug":1897,"name":1897,"fn":1898,"description":1899,"org":1983,"tags":1984,"stars":28,"repoUrl":29,"updatedAt":1910},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1985,1986,1987,1988],{"name":17,"slug":18,"type":15},{"name":1904,"slug":1905,"type":15},{"name":1907,"slug":1908,"type":15},{"name":26,"slug":27,"type":15},{"slug":1990,"name":1990,"fn":1991,"description":1992,"org":1993,"tags":1994,"stars":28,"repoUrl":29,"updatedAt":2003},"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},[1995,1996,1999,2002],{"name":17,"slug":18,"type":15},{"name":1997,"slug":1998,"type":15},"Configuration","configuration",{"name":2000,"slug":2001,"type":15},"Feature Flags","feature-flags",{"name":1837,"slug":1838,"type":15},"2026-07-03T16:32:01.278468",{"slug":2005,"name":2005,"fn":2006,"description":2007,"org":2008,"tags":2009,"stars":28,"repoUrl":29,"updatedAt":2022},"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},[2010,2013,2016,2019],{"name":2011,"slug":2012,"type":15},"Cosmos DB","cosmos-db",{"name":2014,"slug":2015,"type":15},"Database","database",{"name":2017,"slug":2018,"type":15},"NoSQL","nosql",{"name":2020,"slug":2021,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":2024,"name":2024,"fn":2006,"description":2025,"org":2026,"tags":2027,"stars":28,"repoUrl":29,"updatedAt":2035},"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},[2028,2029,2030,2031,2032],{"name":2011,"slug":2012,"type":15},{"name":2014,"slug":2015,"type":15},{"name":9,"slug":8,"type":15},{"name":2017,"slug":2018,"type":15},{"name":2033,"slug":2034,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":2037,"name":2037,"fn":2038,"description":2039,"org":2040,"tags":2041,"stars":28,"repoUrl":29,"updatedAt":2047},"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},[2042,2043,2044,2045,2046],{"name":17,"slug":18,"type":15},{"name":2011,"slug":2012,"type":15},{"name":2014,"slug":2015,"type":15},{"name":1837,"slug":1838,"type":15},{"name":2017,"slug":2018,"type":15},"2026-05-13T06:14:17.582229",267]