tomatophp/filament-cms-api
A REST API layer for TomatoPHP Filament CMS, exposing pages, posts, media, and content endpoints with token authentication, configurable routes, and resources for headless Laravel applications.
/api/cms/posts, /api/cms/posts/{slug}, /api/cms/categories, /api/cms/categories/{slug}) cover the standard blog/insights/marketing-content use case end to end.type, category, tag, trend, search, for, menu, root) and ?locale= map directly to navigation menus, category landing pages, search, and localized sites — the decisions product managers actually make about content discovery, rather than bespoke query work per client.api/pages routes — is not carried forward. Since the page controller never actually shipped, the realistic impact is low, but it should be confirmed before planning v5 adoption.Adopt when:
tomatophp/filament-cms ^5.0 and want a content API without writing one.?locale= without a separate translation service.Look elsewhere when:
api/pages routes, so any such expectation is now explicitly out of scope.For executives: This is a free, in-house-ecosystem add-on that turns our CMS into a content service. It removes an estimated custom API build from the roadmap — posts, categories, filtering, pagination, search, and localization are delivered and tested — and it comes with a built-in safety property: only published content is ever exposed publicly. The trade-off is coupling to the Filament/TomatoPHP release cadence. This v5 release is a breaking change, but the removed surface (FAQ, ticket, and page endpoints) never actually shipped a working controller, so the practical migration cost is negligible. Approve adoption if we're standardizing on Filament CMS v5 and Laravel 12/13; it converts a backend project into configuration.
For engineering: Version 5 aligns with Filament v5, requires tomatophp/filament-cms ^5.0, Laravel 12/13, and PHP 8.2+, and ships a full endpoint test suite against a Laravel 12/13 × PHP 8.3/8.4 matrix. Four read-only JSON endpoints expose posts and categories by slug, with filters for type, category, tag, trend, search, menu, and root, plus pagination and ?locale= for translated fields. Exposure is limited to published posts and active categories. Prefix, middleware, page size, models, and resources are all configurable, so we can layer auth, rate limiting, and caching at the route level. The breaking changes are confined to unused transformers and the api/pages routes whose controller never shipped — verify no client references them, then upgrade. Recommend adopting behind our standard middleware and confirming the CMS major-version pin in CI.
How can I help you explore Laravel packages today?