tochka-developers/jsonrpc
Laravel package for building JSON-RPC 2.0 APIs, with server and client support, route registration, middleware, validation, and structured error handling. Expose PHP classes as RPC methods and call remote JSON-RPC services.
summary/description out of package config and "to the openrpc side" is a decision point: your API documentation becomes an external artifact, not a package concern. If you ship public or partner-facing RPC APIs, this clarifies ownership of the contract.ApiValidation on object fields unlock genuinely typed, deep request payloads. This is the headline feature for PMs — it moves the package from flat-parameter RPC toward schema-driven RPC, enabling richer product surface (composite resources, nested filters, structured writes) without hand-rolled validation.allowParentMethods, customCasters), the dropped JsonRpcController trait, the mandatory ApiMethod attribute, and dropped Laravel 10 / PHP 8.2 support are gated changes. Roadmap impact: a mandatory upgrade sprint, potential service compatibility matrix narrowing, and coordinate with any team still on Laravel 10.6.0.0-beta.2 adds PHP 8.5 support. Practically, this means the v6 line is tracking the newest PHP runtime rather than pinning to a floor — good news for platform-roadmap sequencing, since an eventual org-wide PHP 8.4/8.5 upgrade won't strand your RPC layer. It does not relax the lower bound: PHP 8.2 and Laravel 10 remain unsupported. Treat this as a forward-compatibility signal, not a reason to accelerate adoption.6.0.0-beta.1 and 6.0.0-beta.2 should not anchor a customer-facing commitment. Beta.2 is a one-line compatibility patch — it signals active maintenance, not feature maturity. Treat the line as a spike/evaluation input, not a GA plan.Consider it when:
ApiMethod attributes from day one, so the breaking changes cost you nothing.Look elsewhere or hold when:
customCasters for custom type serialization or on allowParentMethods for controller inheritance. Both are gone with no stated replacement — this is the single biggest adoption risk and needs an explicit mitigation plan (fork, adapter, or redesign).JsonRpcController trait. Deprecated and now removed; audit for usage before committing.summary/description are gone, so documentation now depends on an external OpenRPC source of truth you must own and keep in sync.To executives: The package's new major version modernizes our RPC layer — better-typed API inputs, validation handled by the framework instead of custom code, and a cleaner separation where API documentation lives in the API contract rather than in configuration. It reduces long-term maintenance surface, and the latest beta adds PHP 8.5 support so the package keeps pace with our runtime upgrade path rather than becoming a blocker. The trade-off is a breaking upgrade: it requires Laravel 11+/PHP 8.3+, forces every API method to be explicitly annotated, and drops two customization hooks (customCasters, allowParentMethods) plus a deprecated controller trait. It is still a beta — the most recent release is a small compatibility patch, not a stability signal — so we should evaluate now and schedule the migration rather than rush it into production.
To engineering: This is a deliberate breaking release that simplifies the package at the cost of flexibility. All API methods must carry #[ApiMethod]; JsonRpcController, customCasters, allowParentMethods, and config-level summary/description are removed; Laravel 10 and PHP 8.2 are unsupported. PHP 8.5 is now supported (beta.2), so the upper end of our runtime matrix is fine — the constraint that matters is still the floor. In exchange we get nested objects in parameters, ApiValidation on object fields, and a reworked validation pipeline. Action items before adoption: (1) inventory every use of customCasters, allowParentMethods, and the controller trait; (2) confirm our Laravel/PHP versions against the v6 floor (8.3+) rather than the ceiling; (3) prototype the nested-object and field-level validation paths against a representative endpoint; (4) define where the OpenRPC document is authored and how it stays in sync with code.
How can I help you explore Laravel packages today?