34 lines
1.9 KiB
Markdown
34 lines
1.9 KiB
Markdown
# Public content API v1
|
|
|
|
Status: approved by the owner on 2026-09-27. These anonymous `GET` endpoints expose the latest saved CMS values. Content saves are live immediately; there are no revision, publication, or preview fields or routes.
|
|
|
|
## Routes
|
|
|
|
- `GET /api/v1/content/site` returns shared association identity, navigation labels, contacts, footer copy, logo, and SEO defaults.
|
|
- `GET /api/v1/content/pages/home` returns the fixed Home fields and SEO.
|
|
- `GET /api/v1/content/pages/about` returns the fixed About fields, SEO, and its typed text items.
|
|
- `GET /api/v1/content/pages/events` and `/api/v1/content/pages/blog` return listing copy and SEO. Event and blog records remain owned by their existing APIs.
|
|
|
|
Unknown page slugs and missing fixed records return `404`. Successful content responses send `Cache-Control: no-store`, so a saved admin edit is available on the next API request. Image values are either `null` or `{ "url": "absolute media URL", "alt": "description" }`. Route paths are code-owned; the API returns only the fixed route keys and editable labels.
|
|
|
|
## Shapes
|
|
|
|
Site response:
|
|
|
|
```json
|
|
{
|
|
"official_name": "Association name",
|
|
"short_name": "Association",
|
|
"faculty_subline": "Faculty name",
|
|
"description": "Shared description",
|
|
"logo": null,
|
|
"navigation": { "home": "Home", "about": "About", "events": "Events", "blog": "Blog" },
|
|
"contacts": { "email": "", "phone": "", "telegram": "", "instagram": "", "website": "" },
|
|
"address": "",
|
|
"footer_copy": "",
|
|
"seo": { "title": "", "description": "", "image": null }
|
|
}
|
|
```
|
|
|
|
Every page response has `slug`, `title`, `intro`, and `seo: { title, description, image }`. Home adds its fixed hero, featured event/post introductions, and participation fields. About adds its fixed identity, mission, activities, values, committee, affiliation, FAQ, and contact fields plus `items: [{ kind, title, text, position }]`. Events and Blog listing responses contain only their page copy and SEO fields.
|