aedart / athenaeum-http-api
Json based API utilities
10.10.0
2026-06-23 06:46 UTC
Requires
- php: ^8.4
- aedart/athenaeum-contracts: ^10.10
- aedart/athenaeum-etags: ^10.10
- aedart/athenaeum-streams: ^10.10
- aedart/athenaeum-support: ^10.10
- aedart/athenaeum-validation: ^10.10
- illuminate/http: ^v13.16.1
- shrikeh/teapot: ^3.0.0
Suggests
- laravel/framework: Required if you want to make use of API Request abstractions
This package is auto-updated.
Last update: 2026-06-23 06:48:02 UTC
README
Opinionated utilities to help shape and format your API, using Laravel's API Resources.
Example
The following example shows an "API Resource", for an Eloquent User model.
use Aedart\Http\Api\Resources\ApiResource; use Illuminate\Http\Request; class UserResource extends ApiResource { public function formatPayload(Request $request): array { return $this->withTimestamps([ 'id' => $this->getResourceKey(), 'name' => $this->name, 'roles' => $this->belongsToManyReference('roles') ->withLabel('name') ->withSelfLink() ->withResourceType(); ]); } public function type(): string { return 'user'; } }
When a response is returned for a single user, the following JSON will be output:
{
"data": {
"id": 34,
"name": "Retta Altenwerth Jr.",
"created_at": "2022-10-21T14:51:43+00:00",
"updated_at": "2022-10-21T14:51:43+00:00",
"roles": [
{
"id": 23,
"name": "Machine Operator",
"type": "role",
"self": "http://localhost/roles/23"
},
{
"id": 56,
"name": "File Clerk",
"type": "role",
"self": "http://localhost/roles/56"
}
]
},
"meta": {
"type": "user",
"self": "http://localhost/users/34"
}
}
Documentation
Please read the official documentation for additional information.
Repository
The mono repository is located at github.com/aedart/athenaeum
Versioning
This package follows Semantic Versioning 2.0.0
License
BSD-3-Clause, Read the LICENSE file included in this package