Adds JSON API for Posts (index/show/store/update/destroy) so an AI
agent can draft posts, read what's due for publishing, and report
back publish/fail status. Unlike the existing read-only Sites/Accounts
APIs, this is full CRUD since the app itself never publishes anything.
- PostController with status/site_id/social_account_id/due filters
- StorePostRequest/UpdatePostRequest validate against Post::TYPES/STATUSES
- PostResource shapes the JSON response
- Route::apiResource('posts', ...) registered with ->names('api.posts')
to avoid colliding with the existing web posts.index route name
- store() calls ->fresh() after create() so the response reflects the
DB-level default status ('draft') instead of a stale in-memory null
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
15 lines
533 B
PHP
15 lines
533 B
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\PostController;
|
|
use App\Http\Controllers\Api\SiteController;
|
|
use App\Http\Controllers\Api\SocialAccountController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/sites', [SiteController::class, 'index']);
|
|
Route::get('/sites/{site}', [SiteController::class, 'show']);
|
|
|
|
Route::get('/accounts', [SocialAccountController::class, 'index']);
|
|
Route::get('/accounts/{socialAccount}', [SocialAccountController::class, 'show']);
|
|
|
|
Route::apiResource('posts', PostController::class)->names('api.posts');
|