PHPackages                             virtuallast/adt-php-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. virtuallast/adt-php-client

ActiveLibrary

virtuallast/adt-php-client
==========================

A strongly typed PHP client for the Applied Driving ADT API.

v1.0.0(today)00MITPHPPHP ^8.3CI passing

Since Jul 31Pushed todayCompare

[ Source](https://github.com/virtualLast/adt-php-client)[ Packagist](https://packagist.org/packages/virtuallast/adt-php-client)[ RSS](/packages/virtuallast-adt-php-client/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (15)Versions (2)Used By (0)

Applied Driving ADT PHP client
==============================

[](#applied-driving-adt-php-client)

A strongly typed PHP 8.3+ client for the Applied Driving ADT API v2.2. Jane-generated endpoints and models provide faithful wire types; the stable hand-written surface provides configuration, authentication, resource grouping, pagination, dates, exceptions, and PSR dependency integration.

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

[](#installation)

```
composer require virtuallast/adt-php-client
```

An installed PSR-18 client and PSR-17 factories are discovered automatically. Symfony HTTP Client and Nyholm PSR-7 are suggested implementations.

Quick start and authentication
------------------------------

[](#quick-start-and-authentication)

The official specification requires an API key in `X-API-Key` and advertises live and development servers.

```
use VirtualLast\Adt\AdtClient;
use VirtualLast\Adt\Configuration;

$client = AdtClient::create(new Configuration($_ENV['ADT_API_KEY']));
$page = $client->users()->list(take: 100);
```

To use the documented development server, pass `Environment::Development`. For explicit PSR injection:

```
$client = AdtClient::create($configuration, $psr18Client, $requestFactory, $streamFactory);
```

Users
-----

[](#users)

The users API supports every documented user collection write: create, update, and delete.

```
use VirtualLast\Adt\Generated\Model\UserCreateRequest;
use VirtualLast\Adt\Generated\Model\UserUpdateRequest;

$create = (new UserCreateRequest())
    ->setEmail('driver@example.com')
    ->setFirstName('Example')
    ->setLastName('Driver');
$created = $client->users()->create($create);
$updated = $client->users()->update($created->getUserId(), (new UserUpdateRequest())->setFirstName('Updated'));
$client->users()->delete($updated->getUserId());
```

Set actual fields through the generated request-model setters required by your ADT account workflow. For pagination, `list()` returns one `UserReport`; `iterate()` lazily advances `skip` by returned records and never retains all pages:

```
foreach ($client->users()->iterate(take: 500) as $user) {
    // $user is Generated\Model\User
}
```

`modifiedAfter` accepts `DateTimeInterface` and preserves its supplied offset in RFC 3339 form. Telematics date path parameters use the same rule.

Resource groups
---------------

[](#resource-groups)

- `users()` — list, lazy iteration, create, update, delete, and deleted-user reports.
- `reports()` — reminders, vehicle categories, extended user data, licence, courses, training progress, progress, Ultra, risk, and endorsements.
- `telematics()` — weekly event and per-kilometre reports with the three documented date-range variants.

`generated()` deliberately provides advanced access to all 22 generated operations. It follows upstream naming and is less stable than grouped APIs.

Errors
------

[](#errors)

Catch `AdtException`; specialized exceptions cover configuration, authentication, API status, and transport failures. Exceptions retain causes while omitting API keys, authorization headers, and bodies. The package performs no general retry, including for documented rate limits.

Maintaining the specification
-----------------------------

[](#maintaining-the-specification)

```
composer update-spec
composer process-spec
composer validate-spec
composer generate
composer update-client
composer test
composer analyse
composer validate
```

The unmodified upstream document lives at `openapi/source/swagger.json`; deterministic Jane input lives at `openapi/processed/openapi.json`. See `openapi/README.md`. Never edit `generated/` manually.

PHP API reference
-----------------

[](#php-api-reference)

Generate browsable reference documentation for the stable SDK surface and generated models with:

```
composer docs
```

The output is written to `build/docs/php`. Generated endpoints, normalizers, and runtime internals are intentionally excluded; use `generated()` and the upstream OpenAPI documentation when advanced endpoint-level access is required.

Current limitations
-------------------

[](#current-limitations)

The upstream document defines only successful responses, so API error bodies and correlation identifiers are not typed. Its development server is documented only by name and URL. No live integration test is enabled, and compatibility with a real ADT account is therefore not claimed.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

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

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6ad19b55308041d797f054247db4eb1b32f370cb6869edb14e7e4934614fd618?d=identicon)[virtualLast](/maintainers/virtualLast)

---

Top Contributors

[![virtualLast](https://avatars.githubusercontent.com/u/2872439?v=4)](https://github.com/virtualLast "virtualLast (2 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/virtuallast-adt-php-client/health.svg)

```
[![Health](https://phpackages.com/badges/virtuallast-adt-php-client/health.svg)](https://phpackages.com/packages/virtuallast-adt-php-client)
```

###  Alternatives

[telnyx/telnyx-php

Official Telnyx PHP SDK — APIs for Voice, SMS, MMS, WhatsApp, Fax, SIP Trunking, Wireless IoT, Call Control, and more. Build global communications on Telnyx's private carrier-grade network.

36826.2k2](/packages/telnyx-telnyx-php)[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

86337.5k](/packages/flow-php-flow)[tempest/framework

The PHP framework that gets out of your way.

2.3k37.6k18](/packages/tempest-framework)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k6.0M760](/packages/sylius-sylius)[getbrevo/brevo-php

Official PHP SDK for the Brevo API.

1004.1M53](/packages/getbrevo-brevo-php)[gotenberg/gotenberg-php

A PHP client for interacting with Gotenberg, a developer-friendly API for converting numerous document formats into PDF files, and more!

3906.6M32](/packages/gotenberg-gotenberg-php)

PHPackages © 2026

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