Quality Gates
API for managing SonarQube quality gates.
Quality Gates API for SonarQube SDK.
This module provides methods to manage SonarQube quality gates.
Example
Using the Quality Gates API:
from sonarqube import SonarQubeClient
client = SonarQubeClient(base_url="...", token="...")
# List quality gates
gates = client.qualitygates.list()
for gate in gates.qualitygates:
print(gate.name)
# Check project status
status = client.qualitygates.project_status(project_key="my-project")
print(f"Status: {status.project_status.status}")
- class sonarqube.api.qualitygates.QualityGatesAPI(client)[source]
Bases:
BaseAPIAPI for managing SonarQube quality gates.
Quality gates are conditions that must be met for a project to pass. This API provides methods to create, update, and manage quality gates.
- API_PATH
Base path for quality gates API (“/api/qualitygates”).
Example
Using the quality gates API:
# List quality gates gates = client.qualitygates.list() # Check project status status = client.qualitygates.project_status(project_key="my-project")
- Parameters:
client (
HTTPClient)
- copy(source_name, name)[source]
Copy a quality gate.
Requires ‘Administer Quality Gates’ permission.
- Parameters:
- Return type:
QualityGateCreateResponse- Returns:
Response containing the new quality gate.
Example
>>> gate = client.qualitygates.copy(source_name="Sonar way", name="My Quality Gate")
- create(name)[source]
Create a new quality gate.
Requires ‘Administer Quality Gates’ permission.
- Parameters:
name (
str) – Quality gate name.- Return type:
QualityGateCreateResponse- Returns:
Response containing the created quality gate.
Example
>>> gate = client.qualitygates.create(name="My Quality Gate") >>> print(gate.id)
- create_condition(gate_name, metric, error, op=None)[source]
Create a condition on a quality gate.
Requires ‘Administer Quality Gates’ permission.
- Parameters:
- Return type:
CreateConditionResponse- Returns:
Response containing the created condition.
Example
>>> condition = client.qualitygates.create_condition( ... gate_name="My Quality Gate", metric="new_coverage", op="LT", error="80" ... )
- delete_condition(id)[source]
Delete a condition from a quality gate.
Requires ‘Administer Quality Gates’ permission.
Example
>>> client.qualitygates.delete_condition(id=123)
- deselect(project_key=None)[source]
Remove quality gate from a project.
Requires ‘Administer’ permission on the project.
Example
>>> client.qualitygates.deselect(project_key="my-project")
- destroy(name)[source]
Delete a quality gate.
Requires ‘Administer Quality Gates’ permission.
Example
>>> client.qualitygates.destroy(name="My Quality Gate")
- get_by_project(project)[source]
Get the quality gate for a project.
Requires ‘Browse’ permission on the project.
- Parameters:
project (
str) – Project key.- Return type:
- Returns:
Dictionary containing quality gate information.
Example
>>> gate = client.qualitygates.get_by_project(project="my-project")
- list()[source]
List all quality gates.
- Return type:
QualityGateListResponse- Returns:
Response containing list of quality gates.
Example
>>> response = client.qualitygates.list() >>> for gate in response.qualitygates: ... print(gate.name)
- project_status(analysis_id=None, branch=None, project_id=None, project_key=None, pull_request=None)[source]
Get quality gate status for a project.
Requires ‘Browse’ permission on the project.
- Parameters:
- Return type:
ProjectStatusResponse- Returns:
Response containing project status.
Example
>>> status = client.qualitygates.project_status(project_key="my-project") >>> if status.project_status.status == "OK": ... print("Quality gate passed!")
- rename(current_name, name)[source]
Rename a quality gate.
Requires ‘Administer Quality Gates’ permission.
- Parameters:
- Return type:
Example
>>> client.qualitygates.rename(current_name="Old Name", name="New Name")
- search(gate_name, page=None, page_size=None, query=None, selected=None)[source]
Search projects associated with a quality gate.
Requires ‘Administer Quality Gates’ permission.
- Parameters:
- Return type:
SearchProjectsResponse- Returns:
Response containing projects.
Example
>>> response = client.qualitygates.search(gate_name="Sonar way")
- select(gate_name, project_key=None)[source]
Associate a project with a quality gate.
Requires ‘Administer’ permission on the project.
- Parameters:
- Return type:
Example
>>> client.qualitygates.select(gate_name="Sonar way", project_key="my-project")
- set_as_default(name)[source]
Set a quality gate as the default.
Requires ‘Administer Quality Gates’ permission.
Example
>>> client.qualitygates.set_as_default(name="My Quality Gate")
- show(name=None)[source]
Get quality gate details.
- Parameters:
- Return type:
QualityGateShowResponse- Returns:
Response containing quality gate details.
Example
>>> gate = client.qualitygates.show(name="Sonar way") >>> print(gate.name)
Models
Pydantic models for Quality Gates API.
This module provides models for the /api/qualitygates endpoints including creating, updating, and managing quality gates.
Example
Using quality gate models:
from sonarqube.models.qualitygates import QualityGateListResponse
response = client.qualitygates.list()
for gate in response.qualitygates:
print(gate.name)
- class sonarqube.models.qualitygates.QualityGateCondition(**data)[source]
Bases:
SonarQubeModelA condition in a quality gate.
- id
Condition ID.
- metric
Metric key.
- op
Operator (LT, GT, EQ).
- error
Error threshold.
- id: Optional[int]
- metric: str
- op: Optional[str]
- error: Optional[str]
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.QualityGate(**data)[source]
Bases:
SonarQubeModelA SonarQube quality gate.
- id
Quality gate ID.
- name
Quality gate name.
- is_default
Whether this is the default quality gate.
- is_built_in
Whether this is a built-in quality gate.
- actions
Available actions on this quality gate.
- conditions
List of conditions.
Example
>>> gate = QualityGate(id="1", name="My Quality Gate", isDefault=True)
- Parameters:
- id: Optional[str]
- name: str
- is_default: Optional[bool]
- is_built_in: Optional[bool]
- actions: Optional[dict[str, Any]]
- conditions: Optional[list[QualityGateCondition]]
- caycStatus: Optional[str]
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.QualityGateCreateResponse(**data)[source]
Bases:
SonarQubeModelResponse from creating a quality gate.
- id
Created quality gate ID.
- name
Quality gate name.
- id: str
- name: str
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.QualityGateListResponse(**data)[source]
Bases:
SonarQubeModelResponse from listing quality gates.
- qualitygates
List of quality gates.
- default
ID of the default quality gate.
- actions
Available actions.
- Parameters:
- qualitygates: list[QualityGate]
- default: Optional[str]
- actions: Optional[dict[str, Any]]
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.QualityGateShowResponse(**data)[source]
Bases:
SonarQubeModelResponse from showing a quality gate.
- id
Quality gate ID.
- name
Quality gate name.
- is_default
Whether this is the default.
- is_built_in
Whether this is built-in.
- conditions
List of conditions.
- actions
Available actions.
- Parameters:
- id: str
- name: str
- is_default: Optional[bool]
- is_built_in: Optional[bool]
- conditions: Optional[list[QualityGateCondition]]
- actions: Optional[dict[str, Any]]
- caycStatus: Optional[str]
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.ProjectStatusCondition(**data)[source]
Bases:
SonarQubeModelA condition status for a project.
- status
Condition status (OK, ERROR).
- metric_key
Metric key.
- comparator
Comparator used.
- error_threshold
Error threshold.
- actual_value
Actual metric value.
- Parameters:
- status: str
- metric_key: str
- comparator: str
- error_threshold: Optional[str]
- actual_value: Optional[str]
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.ProjectStatus(**data)[source]
Bases:
SonarQubeModelProject quality gate status.
- status
Overall status (OK, ERROR, NONE).
- conditions
List of condition statuses.
- periods
Analysis periods.
- ignored_conditions
Whether conditions were ignored.
- Parameters:
- status: str
- conditions: Optional[list[ProjectStatusCondition]]
- periods: Optional[list[dict[str, Any]]]
- ignored_conditions: Optional[bool]
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.ProjectStatusResponse(**data)[source]
Bases:
SonarQubeModelResponse from getting project status.
- project_status
Project quality gate status.
- Parameters:
data (
Any)projectStatus (ProjectStatus)
- project_status: ProjectStatus
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.CreateConditionResponse(**data)[source]
Bases:
SonarQubeModelResponse from creating a condition.
- id
Condition ID.
- metric
Metric key.
- op
Operator.
- error
Error threshold.
- id: int
- metric: str
- op: str
- error: str
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class sonarqube.models.qualitygates.SearchProjectsResponse(**data)[source]
Bases:
SonarQubeModelResponse from searching projects with quality gate.
- paging
Paging information.
- results
List of projects.
- paging: Optional[dict[str, Any]]
- results: list[dict[str, Any]]
- model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].