import requests import urllib.request import urllib.parse import json DEVOPS_SCOPE = "https://app.vssps.visualstudio.com/.default" DEVOPS_API_VERSION = "7.1" class Client: def __init__(self, org_url: str, token: str, api_version: str = DEVOPS_API_VERSION): self._org_url = org_url.rstrip("/") + "/" # Ensure trailing slash self._token = token self._api_version = api_version def get(self, path: str, params: dict = {}): p = { "api-version": self._api_version, **params } url = self._org_url + path.lstrip("/") # Ensure single slash between base and path r = requests.get(url=url, params=p, headers={ "Authorization": f"Bearer {self._token}" }) return r def get_projects(self): r = self.get("_apis/projects") r.raise_for_status() return r.json()