wizards/rest-api
wizards/rest-api is a Laravel package for building RESTful APIs, offering a structured foundation for routes, controllers, and JSON responses so you can expose application data and resources with less boilerplate.
composer require wizards/rest-api, then immediately open vendor/wizards/rest-api/ and read composer.json, README.md, and src/. With 3 stars, 0 dependents, and a last release of January 2021, you are the de facto maintainer — treat the source as the documentation.illuminate/* constraints in the package's composer.json against your app version before committing; expect to either pin an older Laravel or patch the package via a vcs repository and a local fork.Wizards\RestApi\...ServiceProvider in the source. Publish any config with php artisan vendor:publish --provider="..." and read every key — this is where response envelopes, serializers, and middleware bindings are usually toggled.GET /api/users/{id}) and route its output through the package's response/transformer service rather than returning an Eloquent model directly. Compare the JSON shape against what Laravel's native JsonResource would produce, so you can see exactly what the package adds.tests/ exists in the repo, it is the most reliable specification of intended behavior — far more so than the README for a package this small.data/meta/errors keys, and content negotiation. Keep controllers thin: validate with FormRequests, delegate shaping to the package.transform() contract, implement it per-resource and register bindings in a service provider.meta (current page, total, per-page, links) is emitted uniformly. If it lacks one, wrap Laravel's LengthAwarePaginator yourself and feed it into the package's response service — don't hand-roll links per controller.app/Exceptions/Handler.php (or the Laravel 11+ bootstrap/app.php withExceptions callback) so validation, auth, and 404 errors share the same envelope as success responses. This is the single biggest consistency win.api middleware group and document the order — it typically must run before your auth middleware when it influences response format.$response->assertJsonStructure(['data', 'meta']) and a shared assertApiError() helper. Because docs are thin, lock behavior with your own feature tests — they become your upgrade safety net.packages/ (path repository) and own it. For most teams, Laravel's built-in API Resources + a small response helper covers 90% of what this package offers with zero risk.php -l and the test suite on your target PHP version; expect to patch signatures.bind() or clone the service per request.php artisan config:cache, any closures in the package config will break the app. Audit the published config for closures and convert them to class strings.auth will miss 401s; place it early in the api group so error responses use the same envelope.JsonResource and the package's transformers on the same route — double-wrapping produces nested data keys. Pick one convention per module.php artisan route:list, php artisan tinker to instantiate the response service directly, and dd() inside the transformer to confirm what is actually being passed. With sparse docs, reading the call stack from the service provider downward is faster than guessing.ApiResponse facade. If the package stalls, you swap the implementation without touching controllers.How can I help you explore Laravel packages today?