Client

The main client for interacting with the SonarQube API.

Main client for SonarQube SDK.

This module provides the main entry point for interacting with the SonarQube API. The SonarQubeClient class provides access to all API namespaces through a clean, namespace-based interface.

Example

Using the SonarQube client:

from sonarqube import SonarQubeClient

# Initialize with token authentication
client = SonarQubeClient(
    base_url="https://sonarqube.example.com", token="your-token"
)

# Access API namespaces
projects = client.projects.search(q="backend")
issues = client.issues.search(project_keys=["my-project"])

# Close when done
client.close()

Using as context manager:

with SonarQubeClient(base_url="...", token="...") as client:
    projects = client.projects.search()
class sonarqube.client.SonarQubeClient(base_url, token=None, username=None, password=None, auth=None, timeout=30.0, verify_ssl=True)[source]

Bases: object

Main client for interacting with the SonarQube API.

This client provides access to all SonarQube API domains through namespace properties. Each namespace corresponds to an API domain (e.g., projects, issues, rules).

Example

Basic usage:

from sonarqube import SonarQubeClient

client = SonarQubeClient(
    base_url="https://sonarqube.example.com", token="your-token"
)

# Search for projects
projects = client.projects.search(q="backend")
for project in projects.components:
    print(project.name)

# Get issues for a project
issues = client.issues.search(
    project_keys=["my-project"], severities=["CRITICAL", "BLOCKER"]
)
for issue in issues.issues:
    print(f"{issue.severity}: {issue.message}")

client.close()

Using context manager:

with SonarQubeClient(base_url="...", token="...") as client:
    projects = client.projects.search()

Using basic authentication:

client = SonarQubeClient(
    base_url="https://sonarqube.example.com", username="admin", password="admin"
)
Parameters:
__init__(base_url, token=None, username=None, password=None, auth=None, timeout=30.0, verify_ssl=True)[source]

Initialize the SonarQube client.

Parameters:
  • base_url (str) – Base URL of the SonarQube instance.

  • token (Optional[str], default: None) – Optional API token for authentication.

  • username (Optional[str], default: None) – Optional username for basic authentication.

  • password (Optional[str], default: None) – Optional password for basic authentication.

  • auth (Optional[BaseAuth], default: None) – Optional custom authentication handler.

  • timeout (float, default: 30.0) – Request timeout in seconds.

  • verify_ssl (bool, default: True) – Whether to verify SSL certificates.

Raises:

ValueError – If no authentication is provided or if username is provided without password.

Return type:

None

Example

Token authentication:

client = SonarQubeClient(
    base_url="https://sonarqube.example.com", token="squ_abcdef123456"
)

Basic authentication:

client = SonarQubeClient(
    base_url="https://sonarqube.example.com", username="admin", password="admin"
)

Custom authentication:

from sonarqube.auth import TokenAuth

auth = TokenAuth(token="my-token")
client = SonarQubeClient(base_url="https://sonarqube.example.com", auth=auth)
close()[source]

Close the client and release resources.

Example

>>> client = SonarQubeClient(base_url="...", token="...")
>>> # ... use client ...
>>> client.close()
Return type:

None

__enter__()[source]

Enter context manager.

Return type:

SonarQubeClient

__exit__(exc_type, exc_val, exc_tb)[source]

Exit context manager and close client.

Parameters:
Return type:

None

property applications: ApplicationsAPI

Access the Applications API.

Returns:

ApplicationsAPI instance for managing applications.

Example

>>> app = client.applications.create(name="My Application", key="my-app")
property components: ComponentsAPI

Access the Components API.

Returns:

ComponentsAPI instance for searching components.

Example

>>> component = client.components.show(component="my-project")
property hotspots: HotspotsAPI

Access the Hotspots API.

Returns:

HotspotsAPI instance for managing security hotspots.

Example

>>> hotspots = client.hotspots.search(project_key="my-project")
property issues: IssuesAPI

Access the Issues API.

Returns:

IssuesAPI instance for managing issues.

Example

>>> issues = client.issues.search(
...     project_keys=["my-project"], severities=["CRITICAL"]
... )
property measures: MeasuresAPI

Access the Measures API.

Returns:

MeasuresAPI instance for getting measures.

Example

>>> measures = client.measures.component(
...     component="my-project", metric_keys=["coverage", "bugs"]
... )
property projects: ProjectsAPI

Access the Projects API.

Returns:

ProjectsAPI instance for managing projects.

Example

>>> projects = client.projects.search(q="backend")
>>> for project in projects.components:
...     print(project.name)
property qualitygates: QualityGatesAPI

Access the Quality Gates API.

Returns:

QualityGatesAPI instance for managing quality gates.

Example

>>> status = client.qualitygates.project_status(project_key="my-project")
>>> print(status.project_status.status)
property qualityprofiles: QualityProfilesAPI

Access the Quality Profiles API.

Returns:

QualityProfilesAPI instance for managing quality profiles.

Example

>>> profiles = client.qualityprofiles.search(language="py")
>>> for profile in profiles.profiles:
...     print(profile.name)
property rules: RulesAPI

Access the Rules API.

Returns:

RulesAPI instance for managing rules.

Example

>>> rules = client.rules.search(languages=["py"])
>>> for rule in rules.rules:
...     print(rule.name)
property settings: SettingsAPI

Access the Settings API.

Returns:

SettingsAPI instance for managing settings.

Example

>>> settings = client.settings.values(keys=["sonar.core.serverBaseURL"])
property sources: SourcesAPI

Access the Sources API.

Returns:

SourcesAPI instance for getting source code.

Example

>>> sources = client.sources.lines(key="my-project:src/main.py")
property system: SystemAPI

Access the System API.

Returns:

SystemAPI instance for system information.

Example

>>> status = client.system.status()
>>> print(f"SonarQube {status.version}")
property users: UsersAPI

Access the Users API.

Returns:

UsersAPI instance for managing users.

Example

>>> users = client.users.search(q="john")
property user_tokens: UserTokensAPI

Access the User Tokens API.

Returns:

UserTokensAPI instance for managing user tokens.

Example

>>> token = client.user_tokens.generate(name="ci-token")