Updates Portal API

Updates Portal 提供了一个轻量级的公开 JSON API,以便您从自己的系统轮询状态、获取 changelog 条目、查看 roadmap 以及检查已知问题。无需身份验证。

Base URL

https://updates.foura.ai

Service Status

GET /api/v1/status

返回每个 FourA 服务的实时运行状态,以及活动中和最近的故障事件。服务端缓存 15 秒,因此更频繁地轮询将返回相同的 payload。

curl https://updates.foura.ai/api/v1/status
{
  "overall": "operational",
  "services": [
    {
      "slug": "api",
      "name": "API",
      "description": "...",
      "status": "operational",
      "daily": [
        { "date": "2026-05-19", "status": "operational", "major_outage_minutes": 0, "partial_outage_minutes": 0, "degraded_minutes": 0, "internal_degraded_minutes": 0 }
      ]
    }
  ],
  "active_incidents": [],
  "recent_incidents": [
    { "id": "...", "service_slug": "api", "service_name": "API", "impact": "minor", "started_at": "...", "resolved_at": "..." }
  ]
}
Top-level field Type Description
overall string 如果所有服务都正常运行,则为 operational,否则为其中一个服务状态值
services array 每个被监控服务对应一个条目,包含 slugnamedescription、当前 status 以及 daily 历史记录(最多 90 天)
active_incidents array 当前未解决的故障事件
recent_incidents array 最近 14 天内已解决的故障事件

服务 status 值:operationaldegradedpartial_outagemajor_outagemaintenance

故障事件 impact 值:minor(性能下降)、major(部分中断)、critical(服务中断)。

Polling pattern

使用此 endpoint 将 FourA 状态接入您自己的 Dashboard 或报警系统。

import requests

def check_foura():
    r = requests.get("https://updates.foura.ai/api/v1/status", timeout=5)
    r.raise_for_status()
    data = r.json()
    if data["overall"] != "operational":
        # Page on-call, post to Slack, flip a feature flag, etc.
        for svc in data["services"]:
            if svc["status"] != "operational":
                print(f"{svc['name']}: {svc['status']}")
    return data

遗留的 GET /api/status 返回 410 Gone 并将调用方引导至此处。

Changelog

GET /api/changelog

按时间倒序返回已发布的 changelog 条目。

curl "https://updates.foura.ai/api/changelog?limit=20"

查询参数:

Parameter Type Default Description
page integer 1 从 1 开始的页码
limit integer 20 每页条目数(最大 50)
category string - 过滤条件,可选值为 newimprovedfixed
{
  "entries": [
    {
      "id": 42,
      "title": "...",
      "body": "Markdown body",
      "category": "new",
      "published_at": "2026-05-19T12:00:00Z",
      "tags": "[\"api\", \"dashboard\"]"
    }
  ],
  "total": 137,
  "page": 1,
  "limit": 20
}

RSS

完整的 changelog(最近的 30 个条目)也以 RSS 形式发布在:

https://updates.foura.ai/rss

可在 Feedly、Miniflux、Thunderbird 或任何阅读器中订阅。Feed 内容与 changelog 内容一致,包括渲染为 HTML 的 markdown。

Roadmap

GET /api/roadmap

返回所有 roadmap 项,先按投票数排序,再按创建时间排序。

curl https://updates.foura.ai/api/roadmap
{
  "items": [
    {
      "id": 12,
      "title": "...",
      "description": "...",
      "category": "API",
      "status": "planned",
      "votes": 23,
      "target_date": "Q3 2026"
    }
  ]
}

Roadmap 项的 status 值:plannedin_progressdonecancelled

Voting

POST /api/roadmap/:id/vote

切换对单个 roadmap 项的投票状态。投票是匿名的,并与调用方的 IP 和 User-Agent 绑定。再次调用将取消投票。

curl -X POST https://updates.foura.ai/api/roadmap/12/vote
{ "votes": 24, "voted": true }

voted 返回调用后的状态:如果添加了您的投票则为 true,如果取消了投票则为 false

Known Issues

GET /api/issues

返回 FourA 支持团队跟踪的已知问题。

curl "https://updates.foura.ai/api/issues?tab=open"

查询参数:

Parameter Type Default Description
tab string open open 表示活动中的问题,resolved 表示已解决/已关闭的问题
{
  "issues": [
    {
      "id": 5,
      "title": "...",
      "body": "Markdown description",
      "severity": "medium",
      "status": "investigating",
      "service_id": "api",
      "opened_at": "2026-05-18T09:00:00Z",
      "resolved_at": null,
      "resolution": null
    }
  ]
}

severity 值:lowmediumhighcriticalstatus 值:openinvestigatingresolvedclosed

说明

  • 所有 endpoint 均为公开。无需 API key,但每个源 IP 会有宽松的 rate limiting。
  • response 为基于 HTTPS 的 JSON。roadmap 或已知问题没有分页,因为列表很小。
  • 如需纯文本或原始 HTML 版本的 changelog,请使用 /rss feed,而不是 /api/changelog

相关内容

更新于: 2026年5月20日