API - Completed Features

These capabilities from the Next-Generation CMS Solution Draft Proposal (v0.2) are already implemented. Overall API coverage: ~35-40% of v1.0 scope.

Coverage by Domain

DomainCoverageKey implementations
Pages CRUD + versioning~70%Entity, draft/publish/schedule/archive, auto-versioning with diffs, preview tokens
Articles + taxonomies~65%Full CRUD, categories, tags, featured image
Dynamic blocks~50%7 block types, zone-based assignment, reusable cross-pages
Multi-tenancy~60%Master/Tenant DB split, dynamic connection switching, multi-site with X-Site-Id
Editorial workflows~80%Draft/Scheduled/Published/Archived + audit trail + version history (exceeds v1.0 target)
Media upload~55%3-step presigned S3 upload, thumbnails, quotas, deduplication
Redirects~75%CRUD + auto-redirect on slug change + hit tracking
Performance~40%Rate limiting, ETag, Redis caching, capped pagination

Detailed Breakdown

Pages & Versioning (~70%)

Status: DoneFull Page entity with title, slug, body_html (JSON multilingual), body_json (JSON multilingual), meta_title, meta_description, featured_image.Admin CRUD endpoints with API Platform. Public read endpoints with preview token support.
Status: DoneContentVersioningSubscriber automatically creates ContentVersion records on save with full diff tracking. Version history and rollback support.
Status: Done64-character hex preview tokens. PreviewController for token-based access. Global refonte preview support.

Articles & Taxonomies (~65%)

Status: DoneFull Article entity with categories, tags, featured image. Admin CRUD and public read endpoints.Missing: Article subtypes (news/announcement/publication), secondary categories (ManyToMany).
Status: DoneCategory and Tag entities with slug, translations. CRUD endpoints.Missing: Auto-generated landing pages (/public/categories/{slug}, /public/tags/{slug}).

Editorial Workflows (~80%)

Status: Done (exceeds v1.0 target)ContentStatus enum: draft, scheduled, published, archived. WorkflowService with transitions. ScheduledContentPublisher for automatic publishing.Audit trail with ContentAuditLog. Version history with diffs.

Multi-tenancy (~60%)

Status: DoneMaster DB (cms_master) with Tenant, Site, User entities. Tenant DBs (cms_tenant_*) with content entities. TenantSubscriber for dynamic connection switching.
Status: DoneX-Site-Id header for site context. SiteFilterExtension for automatic query filtering. Site-scoped content.Missing: Sub-sites, domain mapping, content sharing, channels.

Media Upload (~55%)

Status: Done3-step presigned upload to S3/MinIO via MinioStorageAdapter. Thumbnail generation, quotas, deduplication by hash.Missing: On-the-fly resize, rich metadata (title i18n, credit, rights), focal point, media collections.

Dynamic Blocks (~50%)

Status: Done7 block types: hero, cta, gallery, testimonials, faq, text, contact_form. Zone-based assignment. Reusable blocks across pages.Missing: Plugin-provided block types, conditional rendering.

Redirects (~75%)

Status: DoneRedirect entity with CRUD. Auto-redirect on slug change. Hit tracking and counting.Missing: Bulk import/export, wildcard rules, hreflang.

Performance (~40%)

Status: PartialRedis caching, ETag headers, rate limiting, capped pagination.Missing: CDN Cache-Control/Surrogate headers, image optimization pipeline, Elasticsearch (using PostgreSQL LIKE).

What’s Next

The remaining ~60% is tracked in the current and upcoming phases:
Completed    ████████████████░░░░░░░░░░░░░░░░░░░░░░░░ ~35-40%
Phase 0-1    ░░░░░░░░░░░░░░░░████████████░░░░░░░░░░░░ Foundations + Core
Phase 2-10   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░████████████ Search → Plugins
For the full gap analysis per proposal section, see .context/global/proposal-coverage.md. Last update: February 16, 2026.