{"id":10181,"library":"qase-api-v2-client","title":"Qase TestOps API V2 Client","description":"The `qase-api-v2-client` library provides a Python client for interacting with the Qase TestOps API V2. It allows users to programmatically manage projects, test cases, runs, and other entities within Qase. The current version is 2.0.6, and it is part of a larger `qase-python` monorepo, with updates typically occurring when the Qase API specification changes or bug fixes are introduced across the ecosystem.","status":"active","version":"2.0.6","language":"en","source_language":"en","source_url":"https://github.com/qase-tms/qase-python","tags":["Qase","TestOps","API client","testing","test management"],"install":[{"cmd":"pip install qase-api-v2-client","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Provides shared models and utilities used by the Qase Python ecosystem.","package":"qase-python-commons","optional":false},{"reason":"HTTP client for making API requests.","package":"urllib3","optional":false},{"reason":"Used for data validation and settings management.","package":"pydantic","optional":false}],"imports":[{"symbol":"ApiClient","correct":"from qase_api_v2_client import ApiClient"},{"symbol":"Configuration","correct":"from qase_api_v2_client import Configuration"},{"note":"API services are found in `qase_api_v2_client.api.<service_name>_api`.","symbol":"ProjectsApi","correct":"from qase_api_v2_client.api.projects_api import ProjectsApi"},{"symbol":"ApiException","correct":"from qase_api_v2_client.exceptions import ApiException"}],"quickstart":{"code":"import os\nfrom qase_api_v2_client import ApiClient, Configuration\nfrom qase_api_v2_client.api.projects_api import ProjectsApi\nfrom qase_api_v2_client.exceptions import ApiException\n\n# Configure API key authentication\nconfiguration = Configuration()\nconfiguration.api_key['TokenAuth'] = os.environ.get('QASE_API_TOKEN', 'YOUR_QASE_API_TOKEN_HERE')\n\n# IMPORTANT: The client is named 'v2-client' but its default host is 'v1'.\n# Explicitly set the host to the Qase API V2 endpoint.\nconfiguration.host = os.environ.get('QASE_API_BASE_URL', 'https://api.qase.io/v2')\n\n# Create an instance of the API client\napi_client = ApiClient(configuration)\n\n# Create an instance of a specific API service, e.g., ProjectsApi\nprojects_api = ProjectsApi(api_client)\n\ntry:\n    # Example: List projects\n    response = projects_api.get_projects()\n    print(f\"Successfully connected to Qase API V2. Found {response.total} projects.\")\n    if response.entities:\n        print(f\"First project: {response.entities[0].title} (Code: {response.entities[0].code})\")\nexcept ApiException as e:\n    print(f\"Error calling Qase API: {e.status} - {e.body}\")\n    if e.status == 401:\n        print(\"Please check your QASE_API_TOKEN and ensure it's valid for the v2 API.\")\n    elif e.status == 404 and 'v1' in configuration.host:\n        print(\"Consider changing QASE_API_BASE_URL to 'https://api.qase.io/v2'.\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to initialize the Qase API V2 client, authenticate using an API token (preferably from environment variables), and make a basic call to list projects. It explicitly highlights and corrects the common pitfall of the default API host."},"warnings":[{"fix":"Set `configuration.host = 'https://api.qase.io/v2'` or ensure `os.environ['QASE_API_BASE_URL'] = 'https://api.qase.io/v2'` before initializing the `Configuration`.","message":"The `qase-api-v2-client` library, despite its name, defaults its `Configuration.host` to `https://api.qase.io/v1`. To use the Qase API V2, you *must* explicitly set `configuration.host = 'https://api.qase.io/v2'` or configure `QASE_API_BASE_URL` environment variable.","severity":"gotcha","affected_versions":"All versions up to 2.0.6"},{"fix":"Review the Qase API V2 documentation and the `qase-api-v2-client` source code/examples for the new API structure and model definitions. Your existing V1 API calls will not work directly.","message":"Migrating from a Qase API v1 client to `qase-api-v2-client` will involve significant breaking changes. API endpoints, request/response models, and method signatures are different, reflecting the V2 API specification.","severity":"breaking","affected_versions":"All versions (when upgrading from V1 client)"},{"fix":"Always check the release notes on GitHub for `qase-api-v2-client` specifically and the overall `qase-python` project when upgrading to new major or minor versions to anticipate changes.","message":"This library is part of the `qase-python` monorepo. While it is a standalone install, updates to shared components (like `qase-python-commons`) or new API versions may prompt updates to this client, potentially changing method signatures or data models.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-17T00:00:00.000Z","next_check":"2026-07-16T00:00:00.000Z","problems":[{"fix":"Ensure you have installed the package correctly using `pip install qase-api-v2-client`.","cause":"The package was not installed or installed incorrectly. The PyPI package name is `qase-api-v2-client`, but the import name is `qase_api_v2_client`.","error":"ModuleNotFoundError: No module named 'qase_api_v2_client'"},{"fix":"Verify your `QASE_API_TOKEN` is correct, active, and has the necessary scope within your Qase TestOps account. Ensure it's correctly loaded into the `Configuration` object.","cause":"The provided Qase API token (`QASE_API_TOKEN`) is either missing, invalid, or does not have sufficient permissions for the requested operation.","error":"qase_api_v2_client.exceptions.ApiException: (401) Unauthorized"},{"fix":"Explicitly set `configuration.host = 'https://api.qase.io/v2'` (or your custom Qase V2 API URL) when initializing the `Configuration` object.","cause":"This often indicates an incorrect API base URL. The `qase-api-v2-client` defaults to `v1`, but the client is designed for `v2` endpoints.","error":"qase_api_v2_client.exceptions.ApiException: (404) Not Found (or similar network error)"}]}