- How do I install kodepandai/laravel-api-response?
- Install it with Composer by running composer require kodepandai/laravel-api-response, then pin the version you have validated, such as v1.3.1. Laravel package discovery normally registers the service provider automatically, so no manual provider entry should be required. After installing, hit one success endpoint and one error endpoint to confirm the JSON envelope matches what your team expects.
- What response structure does this package standardize?
- The package is designed to standardize API output into a consistent JSON envelope with data, a message, and a status code. It provides dedicated helpers for success, error, validation, and paginated results so normal and error paths share the same shape. That consistency is the main reason to use it instead of ad-hoc response() calls scattered across controllers.
- Which Laravel and PHP versions are supported?
- Version 1.3.1 adds PHP 8.2 support, but the release notes do not publish a full Laravel version matrix or a minimum PHP version. Check the composer.json constraints in the repository before installing to confirm your framework and PHP versions are allowed. If you run an older Laravel release, verify the exception-handler behavior in a staging service first.
- How do I return a success response with this package?
- Use the package's success helper to wrap your payload, and it returns a JSON response with the standard envelope and a 2xx status code. This keeps controllers short and avoids repeating response() arrays with hand-written messages and codes. Pass your resource data or arrays directly and let the helper handle the envelope.
- How do I return validation errors in the standard format?
- The package includes a dedicated validation helper for returning validation failures in the same envelope as your other API responses. Pass your validator errors or message bag to it rather than returning Laravel's default validation response, so clients only need to parse one error shape. Confirm the status code your team expects, typically 422, in a contract test.
- Does it support paginated API responses?
- Yes, it includes a paginated output helper that converts a Laravel paginator into the standard envelope while preserving pagination metadata. Use it instead of returning the paginator directly so list endpoints match the shape of your other endpoints. Test the first page, a later page, and an empty result set to confirm the metadata stays consistent.
- Does the package convert exceptions into JSON responses?
- Version 1.3.1 fixes a failure to convert ApiResponse into JsonResponse during exception handling, which directly affects API error consistency. To benefit from it, route exceptions through Laravel's exception handler so your API returns JSON instead of an HTML error page. Add a test that throws inside a route and asserts a JSON body, since a misconfigured handler can still fall back to non-JSON output.
- Is upgrading to v1.3.1 safe, or does it contain breaking changes?
- v1.3.1 is a low-risk patch release: a bugfix plus PHP 8.2 compatibility, with no deprecations or breaking changes noted. Pin the version in composer.json and roll it out to one service before broader adoption. The key thing to re-verify after upgrading is your exception-handler configuration, because that is where the fix lands.
- How should I test and roll out this package in production?
- Add contract tests that assert both JSON shape and status code for success, validation failure, unauthenticated, not found, and server error paths. Introduce the package in a non-critical service or internal endpoint first, review the config surface, and smoke-test those cases before expanding. Throughput risk is minimal because response formatting is application-layer behavior compared with database and queue workloads.
- Do I need to publish a config file or register middleware?
- The release notes do not document a published configuration file or required middleware, so check the repository README and service provider before assuming any setup steps. If the package does publish config, review it in a pilot service and commit the published file so the settings are explicit. Also confirm that existing response macros or a custom exception handler do not conflict with the package.