PHPackages                             brixion/ulu-php - 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. [HTTP &amp; Networking](/categories/http)
4. /
5. brixion/ulu-php

ActiveLibrary[HTTP &amp; Networking](/categories/http)

brixion/ulu-php
===============

Typed PHP SDK for the ULU (CarTracker) REST API

v0.1.1(3w ago)1262↑300%[2 PRs](https://github.com/brixion/ulu-php/pulls)MITPHPPHP ^8.2CI passing

Since Jun 15Pushed 2w agoCompare

[ Source](https://github.com/brixion/ulu-php)[ Packagist](https://packagist.org/packages/brixion/ulu-php)[ Docs](https://github.com/brixion/ulu-php)[ RSS](/packages/brixion-ulu-php/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (2)Dependencies (6)Versions (6)Used By (0)

brixion/ulu-php
===============

[](#brixionulu-php)

Typed PHP SDK for the [ULU API](https://driveulu.github.io/api/) (CarTracker fleet tracking).

Requirements
------------

[](#requirements)

- PHP 8.2+
- Composer

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

[](#installation)

```
composer require brixion/ulu-php
```

For local development from this repository:

```
composer install
```

Quick start
-----------

[](#quick-start)

### Authenticate with email and password

[](#authenticate-with-email-and-password)

```
use Brixion\Ulu\UluClient;

$ulu = UluClient::authenticate('user@example.com', 'your-password');
$token = $ulu->getAccessToken();
```

### Use an existing API token

[](#use-an-existing-api-token)

```
use Brixion\Ulu\UluClient;

$ulu = UluClient::withToken(getenv('ULU_TOKEN'));
```

### Fetch company, vehicles, and trips

[](#fetch-company-vehicles-and-trips)

```
$company = $ulu->companies()->me();
echo $company->name;

$vehicles = $ulu->vehicles()->list(page: 1, limit: 50);
foreach ($vehicles->items as $vehicle) {
    echo $vehicle->licensePlate;
}

$trips = $ulu->trips()->listForVehicle(
    vehicleId: 1376,
    fromStartAt: '2017-02-23T00:00',
    toStartAt: '2017-02-24T00:00',
);

$trip = $ulu->trips()->get(242070);
echo $trip->distance;
```

API coverage
------------

[](#api-coverage)

All documented ULU API v1 endpoints are available through resource services on `UluClient`:

ResourceMethods`sessions()``create()``companies()``me()`, `get()`, `list()`, `create()`, `update()`, `delete()``users()``create()`, `resetPassword()`, `changePassword()``companyUsers()``list()`, `get()`, `create()`, `delete()``companyGroups()``create()`, `update()`, `list()`, `get()`, `delete()``companyUserGroups()``create()`, `update()`, `list()`, `get()`, `delete()``vehicleCompanyGroups()``create()`, `list()`, `get()`, `delete()``ibuttons()``create()`, `update()`, `list()`, `get()`, `delete()``userIbuttons()``create()`, `update()`, `list()`, `get()`, `delete()``devices()``list()``vehicles()``list()`, `get()`, `create()`, `update()`, `disconnect()`, `delete()``scores()``getForVehicle()``vehicleErrors()``listForVehicle()``trips()``listForVehicle()`, `get()`, `createFromTracker()`, `tripTypes()`, `tripPoints()``hotspots()``list()`Error handling
--------------

[](#error-handling)

API failures throw `Brixion\Ulu\Exception\ApiException`. Authentication problems throw `AuthenticationException`.

```
use Brixion\Ulu\Exception\ApiException;

try {
    $ulu->companies()->me();
} catch (ApiException $e) {
    echo $e->getMessage();
    print_r($e->getErrors());
}
```

Testing
-------

[](#testing)

```
composer test
composer analyse
composer cs:check
```

See [CONTRIBUTING.md](CONTRIBUTING.md) for the full contributor workflow.

License
-------

[](#license)

MIT

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance96

Actively maintained with recent releases

Popularity18

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 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 ~24 days

Total

2

Last Release

21d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d84111e77a5f625a43a80497d841f172774e27dd700094ea0bc595db339bcc9b?d=identicon)[rickyheijnen](/maintainers/rickyheijnen)

---

Top Contributors

[![rickyheijnen](https://avatars.githubusercontent.com/u/1956522?v=4)](https://github.com/rickyheijnen "rickyheijnen (9 commits)")

---

Tags

apisdkrestvehiclesfleettelematicsulucartrackertrips

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/brixion-ulu-php/health.svg)

```
[![Health](https://phpackages.com/badges/brixion-ulu-php/health.svg)](https://phpackages.com/packages/brixion-ulu-php)
```

###  Alternatives

[xeroapi/xero-php-oauth2

Xero official PHP SDK for oAuth2 generated with OpenAPI spec 3

1054.7M18](/packages/xeroapi-xero-php-oauth2)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

293.1k](/packages/eslazarev-wildberries-sdk)[onesignal/onesignal-php-api

A powerful way to send personalized messages at scale and build effective customer engagement strategies. Learn more at onesignal.com

35216.9k2](/packages/onesignal-onesignal-php-api)[zenditplatform/zendit-php-sdk

PHP client for Zendit API

1194.4k](/packages/zenditplatform-zendit-php-sdk)

PHPackages © 2026

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