devops_utils.core.azure_devops.client module
HTTP client for the Azure DevOps REST API (cloud + on-prem Server).
The httpx import is deferred so importing the package never requires the
azure extra when these tools are unused (mirrors devops_utils.mcp.server).
Credentials are never read from the machine (no az CLI, credential files
or Windows credential store). The bearer token is supplied out-of-band through
the AZURE_DEVOPS_TOKEN environment variable.
- class devops_utils.core.azure_devops.client.AzureDevOpsClient(org_url: str, token: str, auth_scheme: str = 'bearer', api_version: str = '7.1', transport: Any | None = None)[source]
Bases:
objectThin wrapper over
httpxfor the Azure DevOps REST API.- Parameters:
org_url – Base URL. Cloud
https://dev.azure.com/{org}or on-premhttps://server/tfs/{collection}. A trailing slash is stripped.token – Bearer token or Personal Access Token (see
auth_scheme).auth_scheme –
"bearer"sendsAuthorization: Bearer <token>;"pat"sendsAuthorization: Basic base64(":" + token)which is how Azure DevOps expects a raw PAT.api_version – REST
api-versionquery value. Lower it for older on-prem servers (e.g."6.0").
- classmethod from_env() AzureDevOpsClient[source]
Build a client from environment variables.
Reads
AZURE_DEVOPS_ORG_URLandAZURE_DEVOPS_TOKEN(both required), and optionalAZURE_DEVOPS_AUTH_SCHEME(defaultbearer) andAZURE_DEVOPS_API_VERSION(default7.1).
- request(method: str, path: str, *, params: dict[str, Any] | None = None, json: Any | None = None, content: bytes | None = None, content_type: str | None = None, api_version: str | None = None, base_url: str | None = None) Any[source]
Perform a request and return the parsed JSON body (or
None).api-versionis injected into the query string unless already present.base_urloverridesorg_urlfor APIs served from a different host (e.g. cloud code search onalmsearch.dev.azure.com). RaisesAzureDevOpsErrorfor any non-2xx response.