The endpoints the Connected CMS reads and writes. A reference for whoever wires the front end (or Claude Code) to the content store. Shapes mirror the CMS data model: pages, content, the content calendar, projects, and settings.
Field note. This documents the intended contract — the demo CMS runs on an in-browser store. Point the same shapes at your real backend (Barcelona or otherwise) and the UI doesn't change.
All write endpoints expect a bearer token. Reads on published content are public.
# Header on every authenticated request
Authorization: Bearer <token>
Content-Type: application/json
The 30-day marketing run. Feeds the ContentCalendar component and the 30-Day Run page.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/marketing/calendar | All entries, sorted by day. |
| GET | /api/marketing/calendar/:day | One day's entry. |
| PUT | /api/marketing/calendar/:day | Update topic, hook, caption, CTA, status. |
// Calendar entry shape { "day": 1, "week": "1 · Local data", "category": "Local", "topic": "Kingman is mobile-first", "hook": "Most of your neighbors are reading this on a phone.", "caption": "…", "cta": "[ Read more ]", "promptRef": "PAM-01", "status": "scheduled" // draft | approved | scheduled | posted | archived }
| Method | Path | Purpose |
|---|---|---|
| GET | /api/content | List posts, press releases, case studies. Filter by ?type= and ?status=. |
| POST | /api/content | Create a content item. |
| PUT | /api/content/:id | Update an item. |
| GET | /api/pages | List site pages (slug, title, meta, status). |
| POST | /api/pages | Create a page. |
| Method | Path | Purpose |
|---|---|---|
| GET | /api/projects | Kanban projects and their tasks. |
| GET | /api/settings | Site name, tagline, brand colors, social links. |
| PUT | /api/settings | Update global settings. |
{ "data": [...], "count": n }.{ "error": { "code", "message" } } with the matching HTTP status.For the full build sequence and collection setup, see the CMS Build Plan and Wiring Guide.