PHPackages                             forgeqc/sonarqube-api-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. forgeqc/sonarqube-api-client

ActiveLibrary[API Development](/categories/api)

forgeqc/sonarqube-api-client
============================

A simple PHP client for sonarqube and sonarcloud.io API

1.2.0(6y ago)53.8k[2 PRs](https://github.com/forgeqc/sonarqube-api-client/pulls)MITPHP

Since Jun 20Pushed 3y agoCompare

[ Source](https://github.com/forgeqc/sonarqube-api-client)[ Packagist](https://packagist.org/packages/forgeqc/sonarqube-api-client)[ RSS](/packages/forgeqc-sonarqube-api-client/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (3)Dependencies (5)Versions (7)Used By (0)

sonarqube-api-client
====================

[](#sonarqube-api-client)

[![Build Status](https://camo.githubusercontent.com/cd87efe444417034527d1c6fee98c21eea25544150258c2d3f80d80749edb837/68747470733a2f2f7472617669732d63692e6f72672f666f72676571632f736f6e6172717562652d6170692d636c69656e742e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/forgeqc/sonarqube-api-client)[![Sonarcloud Status](https://camo.githubusercontent.com/b3a142292a3cc149700c30e5ee87d636607925635be6655552252627903ac488/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d666f72676571635f736f6e6172717562652d6170692d636c69656e74266d65747269633d616c6572745f737461747573)](https://sonarcloud.io/dashboard?id=forgeqc_sonarqube-api-client)

PHP client library for Sonarqube API access from a PHP project. The library has been extensively tested with **sonarqube** and **sonarcloud.io** as it is fully compatible with sonarcloud.io organizations.

Installation
------------

[](#installation)

Via [composer](https://getcomposer.org)

```
composer require forgeqc/sonarqube-api-client
```

General API Usage
-----------------

[](#general-api-usage)

### List all projects of a Sonarqube instance

[](#list-all-projects-of-a-sonarqube-instance)

The getprojects() function returns an array containing all the projects of a sonarqube instance. The example below retrieves all projects from \[\].

```
require '../vendor/autoload.php';

use Forge\SonarqubeApiClient\HttpClient;
use Forge\SonarqubeApiClient\SonarqubeProject;
use Forge\SonarqubeApiClient\SonarqubeInstance;

$api = new HttpClient('https://sonarcloud.io/api/');

$instance = new SonarqubeInstance($api);
$projects = $instance->getProjects();

```

### Manage a single Sonarqube project

[](#manage-a-single-sonarqube-project)

The **SonarqubeProject** class allows creation of a new sonarqube project or metadata / measures extraction from an existing sonarqube project.

#### Create sonarqube project

[](#create-sonarqube-project)

```
require '../vendor/autoload.php';

use Forge\SonarqubeApiClient\HttpClient;
use Forge\SonarqubeApiClient\SonarqubeProject;
use Forge\SonarqubeApiClient\SonarqubeInstance;

$api = new HttpClient('https://sonarcloud.io/api/', '');

$projectKey = 'testProjectFromApi';
$project = new SonarqubeProject($api, $projectKey);

if (!$project->exists()) {
  $project->create('Test Project From Api', 'public', 'testapi');
}

```

#### Get projet measures

[](#get-projet-measures)

Get default list of measures. Without any parameter, the functions return mesures for the following metric keys : **alert\_status,bugs,reliability\_rating,vulnerabilities,security\_rating,code\_smells,sqale\_rating,duplicated\_lines\_density,coverage,ncloc,ncloc\_language\_distribution,reliability\_remediation\_effort,security\_remediation\_effort** . Metric keys list match the one used by Sonarqube to display the project dashboard.

```
$measures = $project->getMeasures();
$measuresHistory = $project->getMeasuresHistory('2019-06-45');

```

Add the list of desired metric keys to customize measures returned by the function.

```
$measures = $project->getMeasures('sqale_index');
$measuresHistory = $project->getMeasuresHistory('2019-06-45', 'sqale_index');

```

### Get measures of multiple sonarqube projects

[](#get-measures-of-multiple-sonarqube-projects)

The **SonarqubeInstance::getMultipleProjectsMeasures** function retrieves measures for a list of sonarqube projects. Maximum number of projects is 100.

Add the list of desired metric keys to customize measures returned by the function.

```
$api = new HttpClient('https://sonarcloud.io/api/');
$instance = new SonarqubeInstance($api);

$measures = $instance->getMultipleProjectsMeasures('Board-Voting,paysuper_paysuper-currencies');

$measures =  $instance->getMultipleProjectsMeasures('Board-Voting,paysuper_paysuper-currencies','sqale_index');

```

### Aggregate measures of multiple sonarqube projects

[](#aggregate-measures-of-multiple-sonarqube-projects)

The **SonarqubeInstance::aggregateMultipleProjectsMeasures** function aggregates measures for a list of sonarqube projects. This function is useful for measures aggregation of a project portfolio. Maximum number of projects is 100.

Function algorithm implements Sonarqube Enterprise project portfolio measures aggregation logic described on ().

```
$api = new HttpClient('https://sonarcloud.io/api/');
$instance = new SonarqubeInstance($api);

$measures = $instance->aggregateMultipleProjectsMeasures('Board-Voting,paysuper_paysuper-currencies');

```

### Manage users, groups, and permissions

[](#manage-users-groups-and-permissions)

Create or deactivate a Sonarqube user :

```
$api = new HttpClient('https://sonarcloud.io/api/', $sonar_api_key);
$instance = new SonarqubeInstance($api);

//Test if user exists
if($instance->userExists('joe')) {
  //Update user data
  $instance->updateUser('jdoe', 'John DOE', 'john.doe@contoso.com');
}
else {
  //Create user or activate existing deactivated user
  $instance->createUser('jdoe', 'John DOE', 'john.doe@contoso.com');
}

//Deactivate user
 $instance->deactivateUser('jdoe');

```

Create or delete a Sonarqube group :

```
$api = new HttpClient('https://sonarcloud.io/api/', $sonar_api_key);
$sonarcloudOrganization = 'testapi';
$instance = new SonarqubeInstance($api, $sonarcloudOrganization);

//Group creation
$group = $instance->createGroup('TestGroup');

//Group deletion
$result = $instance->deleteGroup('TestGroup');

```

Grant project permissions to a user or a group. The library provides functions to **add** or **remove** projects permissions. The **codeviewer** and **user** permissions can't be removed from a public project. Functions return `true` if permissions are successfully granted or removed.

```
$api = new HttpClient('https://sonarcloud.io/api/', $sonar_api_key);
$sonarcloudOrganization = 'testapi';

//Grant permission on testProjectFromApi project in 'testapi' sonarcloud.io organization
$projectKey = 'testProjectFromApi';
$project = new SonarqubeProject($api, $projectKey, $sonarcloudOrganization);

//Grant project permissions to a group
$testGroup = 'TestGroupPermissions';

$project->addGroupPermission($testGroup, 'admin');
$project->addGroupPermission($testGroup, 'codeviewer');
$project->addGroupPermission($testGroup, 'issueadmin');
$project->addGroupPermission($testGroup, 'securityhotspotadmin');
$project->addGroupPermission($testGroup, 'scan');
$project->addGroupPermission($testGroup, 'user');

$project->removeGroupPermission($testGroup, 'admin');
$project->removeGroupPermission($testGroup, 'issueadmin');
$project->removeGroupPermission($testGroup, 'securityhotspotadmin');
$project->removeGroupPermission($testGroup, 'scan');

//Grant project permissions to a user
$project->addUserPermission($testUser, 'admin');
$project->addUserPermission($testUser, 'codeviewer')
$project->addUserPermission($testUser, 'issueadmin');
$project->addUserPermission($testUser, 'securityhotspotadmin');
$project->addUserPermission($testUser, 'scan');
$project->addUserPermission($testUser, 'user');

$project->removeUserPermission($testUser, 'admin');
$project->removeUserPermission($testUser, 'issueadmin');
$project->removeUserPermission($testUser, 'securityhotspotadmin');
$project->removeUserPermission($testUser, 'scan');

```

Contributing
------------

[](#contributing)

This project is currently under development. Feel free to fork this project, apply modifications and send pull requests. SonarQube official API is not part of this project.

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Total

3

Last Release

2500d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/768b3e099a0c8f21b6f9ccf44060a8ecd5a33086ed7bc7bf9445025a8355643b?d=identicon)[forgeqc](/maintainers/forgeqc)

---

Top Contributors

[![matt6697](https://avatars.githubusercontent.com/u/32440697?v=4)](https://github.com/matt6697 "matt6697 (42 commits)")

---

Tags

apiclientsonarqubesonarcloud

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/forgeqc-sonarqube-api-client/health.svg)

```
[![Health](https://phpackages.com/badges/forgeqc-sonarqube-api-client/health.svg)](https://phpackages.com/packages/forgeqc-sonarqube-api-client)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k7.6M74](/packages/openai-php-laravel)[resend/resend-php

Resend PHP library.

564.7M21](/packages/resend-resend-php)[crowdin/crowdin-api-client

PHP client library for Crowdin API v2

611.5M5](/packages/crowdin-crowdin-api-client)[mozex/anthropic-laravel

Anthropic PHP for Laravel is a supercharged PHP API client that allows you to interact with the Anthropic API

71226.4k1](/packages/mozex-anthropic-laravel)[markrogoyski/numverify-api-client-php

Numverify API Client for PHP

1220.9k](/packages/markrogoyski-numverify-api-client-php)[guym4c/airtable-client

PHP Airtable API client

101.9k](/packages/guym4c-airtable-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
