PHPackages                             tpjasar/laravel-api-foundation - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. tpjasar/laravel-api-foundation

ActiveLibrary[API Development](/categories/api)

tpjasar/laravel-api-foundation
==============================

API versioning, standard JSON response/error format, and pagination for Laravel APIs

10PHP

Since Mar 10Pushed 2mo agoCompare

[ Source](https://github.com/tpjasar/laravel-api-foundation)[ Packagist](https://packagist.org/packages/tpjasar/laravel-api-foundation)[ RSS](/packages/tpjasar-laravel-api-foundation/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel API Foundation
======================

[](#laravel-api-foundation)

Keeps your Laravel API consistent: versioned routes (v1, v2, v3…), same JSON shape for success and errors, and pagination. No config needed for new versions - just use them in the URL.

Install
-------

[](#install)

```
composer require tpjasar/laravel-api-foundation
```

Publish config (optional):

```
php artisan vendor:publish --tag=api-foundation-config
```

Versioned routes
----------------

[](#versioned-routes)

Hit `/api/v1/users`, `/api/v2/users`, `/api/v99/users`- all work. No need to add each version in config.

In `App\Providers\RouteServiceProvider` or `routes/api.php`:

```
use Tpjasar\ApiFoundation\Route\VersionedRoute;

VersionedRoute::register(function () {
    Route::get('users', [UserController::class, 'index']);
    Route::get('users/{id}', [UserController::class, 'show']);
});
```

This registers `/api/v1/users`, `/api/v2/users`, `/api/v3/users`, etc. Get the current version in your handler: `request()->route('version')`.

Response format
---------------

[](#response-format)

Success responses:

```
use Tpjasar\ApiFoundation\Response\ApiResponse;

return ApiResponse::success($user, 'User found');
// { "data": {...}, "message": "User found" }

return ApiResponse::success($users);
// { "data": [...] }
```

Error format
------------

[](#error-format)

```
return ApiResponse::error('Not found', 404, null, 404);
// { "error": { "code": 404, "message": "Not found" } }

return ApiResponse::error('Validation failed', 422, $validator->errors(), 422);
// { "error": { "code": 422, "message": "Validation failed", "details": {...} } }
```

Pagination
----------

[](#pagination)

```
$users = User::paginate(15);
return ApiResponse::paginated($users);
// { "data": [...], "meta": { "current_page": 1, "per_page": 15, "total": 50, "last_page": 4 } }
```

Config
------

[](#config)

Publish with `--tag=api-foundation-config`. You can change the JSON keys (data\_key, error\_key, etc.) and pagination meta keys. Set `prefix` to `''` if your routes are already under `api`.

License
-------

[](#license)

MIT

Author
------

[](#author)

Muhammad Jasar T P

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance62

Regular maintenance activity

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/15633479d5d10f1aa1a43bfcdb6fb15e3bb5e5aa95e614ec7608f9c017bd90ed?d=identicon)[tpjasar](/maintainers/tpjasar)

---

Top Contributors

[![tpjasar](https://avatars.githubusercontent.com/u/24247323?v=4)](https://github.com/tpjasar "tpjasar (3 commits)")

### Embed Badge

![Health badge](/badges/tpjasar-laravel-api-foundation/health.svg)

```
[![Health](https://phpackages.com/badges/tpjasar-laravel-api-foundation/health.svg)](https://phpackages.com/packages/tpjasar-laravel-api-foundation)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M475](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M270](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M186](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M451](/packages/google-gax)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
