yoanm/symfony-jsonrpc-http-server-openapi-doc
Architecture fit — the framing problem first. This is a Symfony bundle, not a Laravel package. It ships no ServiceProvider, no publishable config, no Laravel route registration, and no facade. It is also not a JSON-RPC server: it is a documentation adapter that projects an existing yoanm/symfony-jsonrpc-http-server method catalog into an OpenAPI 3.0.0 spec. Its value is entirely contingent on adopting the surrounding yoanm stack — the server bundle, the jsonrpc-doc generators, and their method-registration conventions. For a Laravel codebase, the honest reading is: this package is reference material and a spec-generation pattern, not a drop-in dependency.
Configuration/Extension classes), and routing loader.POST / with a oneOf request body keyed by method). It will confuse consumers, codegen tools, and API gateways that expect REST semantics. Do not let stakeholders believe "we have OpenAPI" means "we have REST-grade tooling."Integration feasibility — two paths, one of which uses this package.
| Path | What it means | Uses this package? | Effort | Verdict |
|---|---|---|---|---|
| A. Symfony sidecar service | Run the yoanm server + this doc bundle as a standalone Symfony microservice; Laravel calls it over HTTP | Yes, natively | 4–6 weeks + permanent ops surface | Only if JSON-RPC is already a strategic commitment |
| B. Reimplement in Laravel | Use the framework-agnostic jsonrpc-doc libraries directly; write your own controller, route, and config in a Laravel ServiceProvider |
No — as a design reference | 2–4 weeks | Realistic default for a Laravel shop |
| C. Do nothing / hand-author | Write the OpenAPI YAML manually or via attributes + l5-swagger/scribe |
No | 3–5 days upfront, ongoing drift cost | Acceptable if the surface is small and stable |
Technical risk (scored for a decision memo):
Key questions to resolve before any commitment:
composer.json constraints — Symfony and PHP versions — and do they intersect with our runtime?Stack fit. The package is a native fit for: Symfony 5.4/6.x/7.x + PHP 8.1+ + yoanm/symfony-jsonrpc-http-server. It is a non-fit for Laravel as a direct dependency. Treat "Laravel compatibility" as not supported, and plan accordingly — the asymmetry is the central fact of this assessment.
Migration path (recommended: Path B, borrowing the design).
oneOf-dispatched OpenAPI document is acceptable to consumers. If the real requirement is REST-grade tooling (SDK codegen, gateway policies, Mockoon/Postman collections), JSON-RPC-over-OpenAPI will not deliver it and the project should be reframed.jsonrpc-doc generation libraries; wrap them in a Laravel ServiceProvider + artisan command that emits openapi.json as a build artifact, not a runtime endpoint. Serve it read-only from public/ or a CDN.Compatibility notes. Pin the underlying doc libraries explicitly and record the OpenAPI version they emit. If the libraries' constraints drift away from your Laravel-supported PHP version, you will be pinned to an older library — plan an owner for that pin.
Sequencing. Spike → protocol/consumer sign-off → build-time generator in Laravel → CI drift gate → auth/exposure review of any served spec → only then consider serving live docs. Do not reverse this order; the exposure review is frequently skipped and frequently regretted.
Maintenance. Two distinct burdens. (1) Dependency maintenance: you inherit the release cadence of a single-maintainer ecosystem with zero dependents. Expect to read source, not Stack Overflow, when something breaks. (2) Fork maintenance: if the maintainer goes quiet and a Symfony/PHP bump breaks it, you own the patch. MIT licensing makes this legal; it does not make it free. Budget a named owner and roughly 1–2 days per quarter of dependency hygiene, spiking during major PHP or Symfony upgrades.
Support. No vendor, no SLA, no community. Internal support means one engineer who has read the generator code. That is a bus-factor of one inside your own org, layered on top of the upstream bus-factor of one. Document the generator's behavior in an ADR while the spike is fresh — this is the single highest-leverage artifact you can produce.
Scaling. Generation cost is the only scaling axis and it is trivially bounded: the spec is a function of the method catalog, so generation is O(methods) and belongs at build time. Do not generate per-request — it adds latency and a failure mode for zero benefit. The spec document itself can grow large with many methods (discriminated unions balloon fast); plan pagination-by-tag or per-domain spec splitting past ~50 methods, and watch client-side renderer performance in Swagger UI/Redoc.
Failure modes to design against:
composer update. Mitigation: committed composer.lock, dependabot with a human gate, not auto-merge.Ramp-up. For an engineer already fluent in Laravel: half a day to understand the pattern, 2–3 days for the Path B generator, and roughly a week before they can confidently extend method schemas. For Path A, add 1–2 weeks of Symfony bundle/DI literacy that has no reuse value in a Laravel org — a real cost with a poor return.
Bottom line for the portfolio. Do not add yoanm/symfony-jsonrpc-http-server-openapi-doc as a dependency in a Laravel codebase; the framework mismatch plus 1-star/0-dependent adoption makes the integration cost exceed the benefit. Do run the 3–5 day spike and mine it for the pattern — build-time spec generation from a single method registry, gated in CI. That pattern is worth 2–4 weeks of Path B work if you genuinely own a JSON-RPC surface. If you do not own a JSON-RPC surface, or if consumers need REST-grade tooling, close this out now and spend the budget on l5-swagger or scribe instead.
How can I help you explore Laravel packages today?