Skip to content

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, or service
  • scopeId (required for non-global scopes)
  • includeParents (optional, default false)
  • status (optional): draft, published, or archived
  • limit (optional, default 200, max 500)

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}