ONE Record for PHP¶
lambda-twelve/one-record is a framework-agnostic PHP implementation of
IATA ONE Record: the server
side (a data holder publishing logistics objects to partners) and the
client side (talking to other parties' ONE Record servers), in one
Composer package with no framework dependency.
Release status
In beta on Packagist: API 2.2.0 and 2.3.0 served and consumed, compliance and NE:ONE interoperability green, every release signed and tagged. Betas follow the review rounds of the Laravel and Drupal integrations and of independent adversarial reviews; public API changes are still allowed between betas and recorded in the changelog. The roadmap shows what is done and what comes next.
Who it is for¶
- Freight forwarders, airlines, handlers and platforms that need to publish or consume ONE Record data from a PHP system.
- Framework integrators. The package is designed to be wrapped: a Laravel
wrapper (
lambda-twelve/one-record-laravel) and a Drupal wrapper are being built against it, and their first review round shaped the SPI. The SDK boundary page says exactly what the SDK owns and what a wrapper supplies;Testing\Contractships the store contract tests a wrapper runs against its own implementations.
What it supports¶
| Specification | Versions |
|---|---|
| ONE Record API | 2.2.0 and 2.3.0, negotiated per request |
| ONE Record cargo ontology | 3.2 and 3.3 |
| ONE Record code lists | 1.1.0 |
See API and data model versions for how both editions are served at once, and Spec coverage for the endpoint-by-endpoint status.
How it fits together¶
flowchart LR
partner[Partner ONE Record server] -- HTTPS, bearer token --> host
subgraph host [Your application]
wrapper[Wrapper: routes, storage, auth binding]
sdk[one-record SDK: PSR-15 server, model, JSON-LD, changes]
wrapper --> sdk
sdk -. SPI interfaces .-> wrapper
end
sdk -- PSR-18 client --> partner
The SDK is a single PSR-15 request handler plus a client. Everything a host must provide (storage, authentication, access policy, outgoing notifications) is an interface with an in-memory reference implementation, so the whole thing runs and is tested with no framework at all.
Quality signals¶
Every push runs the test suite on PHP 8.3, 8.4 and 8.5 with lowest and highest
dependencies, PHPStan at level max with the SDK-boundary and layer rules, the
code style check, the vocabulary regeneration check, the newman compliance
collection for API 2.2.0 and 2.3.0 against bin/serve, and this site's build;
pushes to main also run the NE:ONE interoperability suite.
The test coverage report
is published with the site on every change to main.