slick/json-api
A lightweight Laravel package for building JSON:API-compliant APIs with resource serialization, relationships, sparse fieldsets, filtering, pagination, and validation error handling—conventions baked in, minimal configuration required.
application/vnd.api+json content negotiation, structured error objects, pagination links, and relationship endpoints. This package supplies that plumbing so the team spends its time on domain logic rather than spec compliance.include reduce round trips and client-side join logic, which is a measurable latency and support-ticket win.Consider it when:
Look elsewhere when:
NOASSERTION, meaning the license could not be identified. For any commercial or distributed product this is a hard blocker until counsel signs off — treat it as a gating item, not a footnote. Nothing in v1.5.1 changes this.doctrine/collections 1.x. v1.5.1 widened the constraint to ^2.2 || ^3.0 and refreshed Symfony components; it did not keep 1.x support. Check for constraint conflicts with the rest of your dependency graph before estimating — this is the most likely source of a surprise integration day.To executives: This is a small PHP library that makes our API speak JSON:API, an established open standard for API responses. Adopting the standard means every client — web, mobile, partners — consumes the same predictable shape for data, errors, and paging, which shortens integration work and reduces support load as we add consumers. The latest release (v1.5.1) is a maintenance patch: it adds dependency-injection support for schema definitions and refreshes dependencies. That is a positive signal — the project is being actively maintained rather than abandoned — but it does not change the two facts that gate us: the license is still not clearly declared, and the project still has effectively no user base and one maintainer. I continue to recommend a short, timeboxed technical spike rather than a commitment. The decision in front of us is whether JSON:API is our API contract; the library is a replaceable implementation detail.
To engineering: It covers content negotiation, error documents, pagination, and resource fetch/create/update/delete semantics, so we don't reimplement the spec. We still own routing, auth, validation, persistence, and tests. What's new in v1.5.1: (1) schema discovery can now resolve its dependencies through a DI container, so schema objects can be constructed with injected collaborators instead of hardcoded new calls — useful if we want per-tenant or policy-driven schema sets, and a hint that the package expects a Slick-style container we'd need to bridge to Laravel's; (2) doctrine/collections moved to ^2.2 || ^3.0 with Symfony components refreshed — non-breaking on the surface, but verify our lockfile resolves cleanly, since 1.x of that package is no longer allowed. The codebase is small enough to vendor and audit, and we should wrap it behind a thin adapter so the protocol layer can be swapped without touching domain code. Open items before adoption remain: license clarification, a security and quality review, and confirmation of the Slick framework coupling — which v1.5.1 makes more likely, not less. Plan for a one-to-two week spike producing a working vertical slice plus a written risk assessment.
Recommendation: Evaluate now, adopt conditionally. Proceed only if the license is cleared and the spike shows clean integration; otherwise use the spike to justify either a maintained alternative or a minimal in-house serializer scoped to the subset of JSON:API we actually need.
How can I help you explore Laravel packages today?