News
Scoped news items that power the launcher home feed and other surfaces. Drafts are only visible to users with news:draft.read.
List news (authenticated)
GET /v1/news
Query params:
scope(required):global,server,network,extension, orservicescopeId(required for non-global scopes)includeParents(optional, defaultfalse)status(optional):draft,published, orarchivedlimit(optional, default200, max500)
Response:
json
{
"items": [
{
"id": "66c8c2d5f5d8b1b1b1b1b1b1",
"scope": { "type": "service", "id": "launcher" },
"title": "Launcher beta is live",
"summary": "Try the new profile sync preview.",
"body": "Full markdown body...",
"tag": "Launcher",
"link": "https://uebliche.net",
"status": "published",
"releaseDate": "2026-02-05T12:00:00Z",
"createdAt": "2026-02-04T11:00:00Z",
"updatedAt": "2026-02-04T11:30:00Z"
}
]
}List news (public)
GET /v1/public/news
Query params are the same as the authenticated endpoint, but the response only includes published entries with a releaseDate in the past.
Create news
POST /v1/news
Body:
json
{
"scope": { "type": "service", "id": "launcher" },
"title": "Launcher beta is live",
"summary": "Try the new profile sync preview.",
"body": "Full markdown body...",
"tag": "Launcher",
"link": "https://uebliche.net",
"status": "draft",
"releaseDate": "2026-02-05"
}releaseDate accepts YYYY-MM-DD (time optional) or an RFC3339 timestamp.
Update news
PATCH /v1/news/{newsId}
Body fields are optional. Use the same fields as POST /v1/news.
Delete news
DELETE /v1/news/{newsId}