roadrunner/api-dto
roadrunner/api-dto provides typed Data Transfer Objects for Laravel APIs. Define DTOs to convert request arrays into structured objects, validate and cast attributes, and handle nested data, keeping controllers lean and API payloads consistent and type-safe. Designed to keep API code organized.
roadrunner-php/roadrunner-api-dto to roadrunner/api-dto. That is a dependency-identity change (composer name, and any lockfile, require line, CI install step, or SCA/inventory entry that references it). It changes how we consume the package, not what it does — but it must be captured in the epic's definition of done or we'll carry a stale reference.Adopt when:
rpc.listen in .rr.yaml). Without that, the package is inert.roadrunner/api-dto for new work and record the rename in the decision log rather than silently following whatever the lockfile resolves. Assume the v2.0.0-era name is a legacy alias at best; do not build new tooling against it..proto files directly. The README refresh in v2.1.0 is a genuine but modest improvement — documentation and examples are still thin, and the API surface is still raw generated DTOs.Look elsewhere or skip when:
Risk note for the decision record: low adoption here is not a market-opportunity signal — the "opportunity" score reflects whitespace in a niche generated-code package, not unmet demand you can monetize. The rename shipping as a minor version bump (2.1.0) rather than a major signals the maintainers treat package identity as non-breaking — either a replace/alias is in place or the namespace is unchanged. Verify that assumption against our own composer resolution before planning work; if it holds, the migration is a lockfile-and-require edit, not a refactor. Treat the release cadence as evidence of active upstream tracking, not of stability guarantees.
For executives: A free, MIT-licensed, first-party component that lets our PHP application manage its own RoadRunner runtime — the foundation for real health checks, safer deploys, and eventually autoscaling. No license cost, no vendor lock-in, and it removes weeks of custom integration work. It won't win customers on its own; it's the cheap enabler under reliability and ops features we're already planning. The latest release renames the package; it's a one-line dependency change on our side, not a new integration, and it's a sign the upstream project is actively maintained.
For engineering: Generated DTOs plus the .proto definitions for RoadRunner's gRPC API — we get type safety and IDE support instead of hand-maintained stubs that drift. Two conditions: treat the package version as coupled to the RoadRunner binary and pin both, with a CI check that the protocol versions agree; and keep all usage behind a thin internal adapter so replacing it later is a one-file change. Action item from v2.1.0: install and reference roadrunner/api-dto (the roadrunner-php/roadrunner-api-dto name is legacy), update our composer.json, lockfile, and any SCA/allowlist entries, and confirm in CI that nothing still resolves the old name. Upstream adoption is low, so assume we own the support burden and budget accordingly. Scope it inside the ops-tooling epic as a day-or-two integration, not a project.
How can I help you explore Laravel packages today?