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: BaseAPI

API 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:
  • source_name (str) – Source quality gate name.

  • name (str) – Name for the new quality gate.

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:
  • gate_name (str) – Quality gate name.

  • metric (str) – Metric key.

  • error (str) – Error threshold.

  • op (Optional[str], default: None) – Operator (LT, GT).

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.

Parameters:

id (int) – Condition ID.

Return type:

None

Example

>>> client.qualitygates.delete_condition(id=123)
deselect(project_key=None)[source]

Remove quality gate from a project.

Requires ‘Administer’ permission on the project.

Parameters:

project_key (Optional[str], default: None) – Project key.

Return type:

None

Example

>>> client.qualitygates.deselect(project_key="my-project")
destroy(name)[source]

Delete a quality gate.

Requires ‘Administer Quality Gates’ permission.

Parameters:

name (str) – Quality gate name.

Return type:

None

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:

dict[str, Any]

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:
  • analysis_id (Optional[str], default: None) – Analysis ID.

  • branch (Optional[str], default: None) – Branch name.

  • project_id (Optional[str], default: None) – Project ID.

  • project_key (Optional[str], default: None) – Project key.

  • pull_request (Optional[str], default: None) – Pull request ID.

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:
  • current_name (str) – Current quality gate name.

  • name (str) – New name.

Return type:

None

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:
  • gate_name (str) – Quality gate name.

  • page (Optional[int], default: None) – Page number.

  • page_size (Optional[int], default: None) – Page size.

  • query (Optional[str], default: None) – Search query.

  • selected (Optional[str], default: None) – Filter selection (all, selected, deselected).

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:
  • gate_name (str) – Quality gate name.

  • project_key (Optional[str], default: None) – Project key.

Return type:

None

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.

Parameters:

name (str) – Quality gate name.

Return type:

None

Example

>>> client.qualitygates.set_as_default(name="My Quality Gate")
show(name=None)[source]

Get quality gate details.

Parameters:

name (Optional[str], default: None) – Quality gate name.

Return type:

QualityGateShowResponse

Returns:

Response containing quality gate details.

Example

>>> gate = client.qualitygates.show(name="Sonar way")
>>> print(gate.name)
update_condition(id, error, metric, op=None)[source]

Update a condition on a quality gate.

Requires ‘Administer Quality Gates’ permission.

Parameters:
  • id (int) – Condition ID.

  • error (str) – Error threshold.

  • metric (str) – Metric key.

  • op (Optional[str], default: None) – Operator (LT, GT).

Return type:

None

Example

>>> client.qualitygates.update_condition(id=123, metric="new_coverage", error="85")

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: SonarQubeModel

A condition in a quality gate.

id

Condition ID.

metric

Metric key.

op

Operator (LT, GT, EQ).

error

Error threshold.

Parameters:
  • data (Any)

  • id (int | None)

  • metric (str)

  • op (str | None)

  • error (str | None)

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: SonarQubeModel

A 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:
  • data (Any)

  • id (str | None)

  • name (str)

  • isDefault (bool | None)

  • isBuiltIn (bool | None)

  • actions (dict[str, Any] | None)

  • conditions (list[QualityGateCondition] | None)

  • caycStatus (str | None)

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: SonarQubeModel

Response from creating a quality gate.

id

Created quality gate ID.

name

Quality gate name.

Parameters:
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: SonarQubeModel

Response 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: SonarQubeModel

Response 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:
  • data (Any)

  • id (str)

  • name (str)

  • isDefault (bool | None)

  • isBuiltIn (bool | None)

  • conditions (list[QualityGateCondition] | None)

  • actions (dict[str, Any] | None)

  • caycStatus (str | None)

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: SonarQubeModel

A 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:
  • data (Any)

  • status (str)

  • metricKey (str)

  • comparator (str)

  • errorThreshold (str | None)

  • actualValue (str | None)

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: SonarQubeModel

Project quality gate status.

status

Overall status (OK, ERROR, NONE).

conditions

List of condition statuses.

periods

Analysis periods.

ignored_conditions

Whether conditions were ignored.

Parameters:
  • data (Any)

  • status (str)

  • conditions (list[ProjectStatusCondition] | None)

  • periods (list[dict[str, Any]] | None)

  • ignoredConditions (bool | None)

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: SonarQubeModel

Response 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: SonarQubeModel

Response from creating a condition.

id

Condition ID.

metric

Metric key.

op

Operator.

error

Error threshold.

Parameters:
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: SonarQubeModel

Response from searching projects with quality gate.

paging

Paging information.

results

List of projects.

Parameters:
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].