marcelthole/openapi-merge
marcelthole/openapi-merge is a PHP package for combining multiple OpenAPI specification files into one merged document. Split large API specs into manageable parts and merge them back, simplifying documentation and code generation workflows.
paths-merge implementation is deceptively fiddly and nobody on staff wants to own it. Buy (adopt) here, and spend engineering time on spec quality and CI instead.symfony/console constraint to allow v8 means this package won't pin your console version during a Symfony 8 / newer Laravel upgrade. This is the kind of transitive-constraint change that silently blocks a framework upgrade three months later; it's cheap insurance and a reason to take the bump now rather than triage it during a time-boxed upgrade window.Adopt when:
symfony/console. Take the upgrade — the change is a constraint widening only, with no behavioral or API surface change, so it is a very low-risk patch to your locked version.Look elsewhere when:
Assessment note on the release itself: 2.6.0 is a maintenance release with no new capability, no breaking changes, and no deprecations. On its own it does not change the adoption calculus — it removes a future friction point. Treat it as "keep current," not "re-evaluate."
To executives (one or two lines): We can publish a single, accurate API specification assembled automatically from the specs each team already writes, instead of paying people to keep one large document in sync by hand. It's a small open-source dependency, not a platform commitment, and the latest version keeps us compatible with our upcoming framework upgrade rather than blocking it.
To engineering (the real case): Each service owns its own OpenAPI fragment; CI merges them into one published spec with marcelthole/openapi-merge and fails the build on invalid input. We stop hand-merging YAML and stop resolving trivial conflicts in review. The cost is one Composer dependency and one CI step; the code is small, the input is plain OpenAPI, and the output is a file — so the exit cost is near zero if it stops fitting. This release is a no-drama dependency bump: it widens the symfony/console constraint to include v8, so it won't hold us back during the Symfony/Laravel upgrade. No behavior changes, no breaking changes — safe to take now.
Risks to flag honestly: low maintenance activity on a small single-maintainer package is the main long-term risk; mitigate by keeping the invocation confined to CI so a swap is a contained change. Also validate behavior against your actual spec versions (3.0 vs 3.1) before making it the publication path for external consumers.
How can I help you explore Laravel packages today?