Microsoft Support Python API Docs | dltHub
Build a Microsoft Support-to-database pipeline in Python using dlt with AI harness support for Claude Code, Cursor, and Codex.
Last updated:
The Azure Support REST API allows users to programmatically create and manage Azure support tickets and access troubleshooting resources for billing, subscription, and technical issues. The REST API base URL is https://management.azure.com and requests require a Bearer token obtained from Microsoft Entra ID (Azure AD).
dlt is an open-source Python library that handles authentication, pagination, and schema evolution automatically. dlthub provides AI context files that enable code assistants to generate production-ready pipelines. Install with uv add "dlt[hub]" and start loading Microsoft Support data in under 10 minutes.
What data can I load from Microsoft Support?
Here are some of the endpoints you can load from Microsoft Support:
| Resource | Endpoint | Method | Data selector | Description |
|---|---|---|---|---|
| support_tickets | subscriptions/{subscriptionId}/providers/Microsoft.Support/supportTickets | GET | value | Lists all support tickets for a subscription. |
| communications | subscriptions/{subscriptionId}/providers/Microsoft.Support/supportTickets/{supportTicketName}/communications | GET | value | Lists all communications for a support ticket. |
| services | providers/Microsoft.Support/services | GET | value | Lists all services available for support. |
| problem_classifications | providers/Microsoft.Support/services/{serviceName}/problemClassifications | GET | value | Lists problem classifications for a specific service. |
| operations | providers/Microsoft.Support/operations | GET | value | Lists all available support REST API operations. |
How do I authenticate with the Microsoft Support API?
Authentication requires an Azure Active Directory (Microsoft Entra) OAuth2 access token provided in the Authorization header as a Bearer token. For certain scenarios like on-behalf-of requests, an additional x-ms-authorization-auxiliary header may be required.
1. Get your credentials
- Confirm the correct API: Microsoft Support REST API (Azure Support) is a control-plane Azure REST API under the Azure resource manager endpoint https://management.azure.com and uses Microsoft Entra ID (Azure AD) OAuth2 bearer authentication. 2) Ensure you have Azure prerequisites for the API operations (at minimum, an Azure subscription id and the right support-plan/role depending on which operations you call). The API reference lists prerequisites such as subscription ID and appropriate support-request contributor/reader access depending on the operation. 3) Create an Entra ID app registration (service principal) and grant it permissions to call Azure Microsoft.Support APIs (assign an appropriate role to the service principal). The Azure SDK guidance notes you must register an AAD application and grant access to Azure MicrosoftSupport by assigning the suitable role; roles like Owner do not grant the necessary permissions. 4) Store your Entra credentials as environment variables (recommended for production). The SDK README example sets: - AZURE_CLIENT_ID - AZURE_TENANT_ID - AZURE_CLIENT_SECRET 5) Obtain an OAuth2 access token for calls to https://management.azure.com. - The Azure Resource Manager REST guidance states that you must include the token in the Authorization header as Bearer {access-token}. - For interactive CLI testing, you can retrieve a token with az account get-access-token --query accessToken --output tsv and pass it as Authorization: Bearer $token. 6) Use the access token in requests to the Support REST API, e.g. Authorization: Bearer plus the standard Content-Type: application/json when you send a body. 7) If you are using the Azure Support REST client libraries, they handle token acquisition for you when you supply an Entra credential provider (for example, DefaultAzureCredential), but the underlying requirement remains: calls are authenticated with Azure/Entra bearer tokens.
2. Add them to .dlt/secrets.toml
[sources.microsoft_support_source] AZURE_TENANT_ID = "your_tenant_id" AZURE_CLIENT_SECRET = "your_client_secret" # dlt will use these to acquire an Entra (Azure AD) OAuth2 bearer token for https://management.azure.com and send it as the HTTP Authorization header.
dlt reads this automatically at runtime — never hardcode tokens in your pipeline script. For production environments, see setting up credentials with dlt for environment variable and vault-based options.
How do I set up and run the pipeline?
Set up a virtual environment and install dlt:
uv init uv add "dlt[hub]"
1. Install the dlt AI harness:
uv run dlthub ai init --agent <your-agent> # <agent>: claude | cursor | codex
This installs project rules, a secrets management skill, appropriate ignore files, and configures the dlt MCP server for your agent. Learn more →
2. Install the rest-api-pipeline toolkit:
uv run dlthub ai toolkit install rest-api-pipeline
This loads the skills and context about dlt the agent uses to build the pipeline iteratively, efficiently, and safely. The agent uses MCP tools to inspect credentials — it never needs to read your secrets.toml directly. Learn more →
3. Start LLM-assisted coding:
Use /find-source to load data from the Microsoft Support API into DuckDB.
The rest-api-pipeline toolkit takes over from here — it reads relevant API documentation, presents you with options for which endpoints to load, and follows a structured workflow to scaffold, debug, and validate the pipeline step by step.
4. Run the pipeline:
uv run python microsoft_support_pipeline.py
If everything is configured correctly, you'll see output like this:
Pipeline microsoft_support_pipeline load step completed in 0.26 seconds 1 load package(s) were loaded to destination duckdb and into dataset microsoft_support_data The duckdb destination used duckdb:/microsoft_support.duckdb location to store data Load package 1749667187.541553 is LOADED and contains no failed jobs
Inspect your pipeline and data:
uv run dlthub show
This opens the Pipeline Dashboard where you can verify pipeline state, load metrics, schema (tables, columns, types), and query the loaded data directly.
Python pipeline example
This example loads /providers/Microsoft.Support/operations and /subscriptions/{subscriptionId}/providers/Microsoft.Support/supportTickets from the Microsoft Support API into DuckDB. It mirrors the endpoint and data selector configuration from the table above:
import dlt from dlt.sources.rest_api import RESTAPIConfig, rest_api_resources @dlt.source def microsoft_support_source(access_token=dlt.secrets.value): config: RESTAPIConfig = { "client": { "base_url": "https://management.azure.com", "auth": {"type": "bearer", "token": access_token}, }, "resources": [ {"name": "support_tickets", "endpoint": {"path": "subscriptions/{subscriptionId}/providers/Microsoft.Support/supportTickets", "data_selector": "value"}}, {"name": "communications", "endpoint": {"path": "subscriptions/{subscriptionId}/providers/Microsoft.Support/supportTickets/{supportTicketName}/communications", "data_selector": "value"}} ], } yield from rest_api_resources(config) def get_data() -> None: pipeline = dlt.pipeline( pipeline_name="microsoft_support_pipeline", destination="duckdb", dataset_name="microsoft_support_data", ) load_info = pipeline.run(microsoft_support_source()) print(load_info)
To add more endpoints, append entries from the resource table to the "resources" list using the same name, path, and data_selector pattern.
How do I query the loaded data?
Once the pipeline runs, dlt creates one table per resource. You can query with Python or SQL.
Python (pandas DataFrame):
import dlt data = dlt.pipeline("microsoft_support_pipeline").dataset() sessions_df = data.support_tickets.df() print(sessions_df.head())
SQL (DuckDB example):
SELECT * FROM microsoft_support_data.support_tickets LIMIT 10;
In a marimo or Jupyter notebook:
import dlt data = dlt.pipeline("microsoft_support_pipeline").dataset() data.support_tickets.df().head()
See how to explore your data in marimo Notebooks and how to query your data in Python with dataset.
What destinations can I load Microsoft Support data to?
dlt supports loading into any of these destinations — only the destination parameter changes:
| Destination | Example value |
|---|---|
| DuckDB (local, default) | "duckdb" |
| PostgreSQL | "postgres" |
| BigQuery | "bigquery" |
| Snowflake | "snowflake" |
| Redshift | "redshift" |
| Databricks | "databricks" |
| Filesystem (S3, GCS, Azure) | "filesystem" |
Change the destination in dlt.pipeline(destination="snowflake") and add credentials in .dlt/secrets.toml. See the full destinations list.
Next steps
Continue your data engineering journey with the other toolkits of the dltHub AI harness:
data-exploration— Build custom notebooks, charts, and dashboards for deeper analysis with marimo notebooks.dlthub-platform— Deploy, schedule, and monitor your pipeline in production.
uv run dlthub ai toolkit install data-exploration uv run dlthub ai toolkit install dlthub-platform
Was this page helpful?
Community Hub
Need more dlt context for Microsoft Support?
Request dlt skills, commands, AGENT.md files, and AI-native context.