跳转到主要内容
Webhook 订阅会把公开状态页每一次已发布的变更,以 JSON POST 请求发送到一个 HTTPS 端点。可用它把服务状态同步到聊天群、工单系统或内部状态看板。 组件、事件、维护与订阅者管理视图的说明见状态页。

订阅如何生效

1

登记端点

在公开页面或通过 API 提交端点 URL。订阅先处于待确认状态。
2

接收确认请求

MoleSignal 向端点发送一次 status_page_subscription_confirmation 请求。端点必须返回 2xx 状态码,否则登记失败。
3

用 Token 确认

打开请求中的 confirm_url,或把 token 发送到确认接口。订阅随即生效。
4

接收更新

确认之后发布的每一次变更都会作为一个请求投递。确认之前发布的变更不会补发。

端点要求

每次投递前,MoleSignal 都会重新解析主机,并再次套用同样的地址规则。

订阅

在公开页面选择订阅,把接收方式设为 Webhook,填入端点 URL,然后选择发送确认。 通过 API 订阅时,请求发往提供该状态页的源站:
只想接收部分组件的更新时,加上 component_ids,填写各组件的 id(见公开页面接口 GET /api/v1/public/status-pages/<slug> 列出的组件)。不传或传空数组表示整个页面。分组不能被选择,请填写组内的组件。 该调用无需认证。登记成功返回 202 Accepted:
订阅链接基于 http.external_url 生成;页面的自定义域名处于有效状态时,则基于该域名生成。http.external_url 为空时,登记会以 503 失败。

请求格式

发往端点的每个请求形态相同。 请求不携带签名 Header。如需识别请求是否真实,可在登记的 URL 的路径或查询串中加入一段难以猜测的值,并拒绝缺少该值的请求。管理视图只显示 Webhook 目标的协议与主机,例如 https://hooks.example.com/***。 按 type 分发处理。忽略未知字段与未知的 type 取值,这样 Payload 增加字段时端点仍可正常工作。

确认请求

每次登记,MoleSignal 发送一次如下 Payload:
打开 confirm_url,或发送 Token 来确认订阅:
确认成功返回 200 OK:
Token 不存在、已被之后的登记替换,或已用于退订时,返回 400 与错误码 invalid_argument。
请保存好 Token。更新 Payload 不会再次携带它,而它是端点所有者结束订阅的唯一凭证。

管理订阅请求

为已经生效的端点再次登记时,MoleSignal 发送的是管理订阅的链接,而不是新的确认请求,10 分钟内最多一次:
字段与确认请求相同,只是没有 confirm_url。

更新 Payload

所有时间戳均为整数,表示自 Unix 纪元起的微秒数(UTC)。组件名称、事件标题与消息保持页面团队写入时的原文,不做翻译。 选择了组件的订阅,只接收涉及其中某个组件的更新。关闭通知订阅者发布的更新不发送任何请求。每个更新 Payload 还带有订阅自身的链接:

事件与维护更新

事件或维护每发布一条更新,MoleSignal 就发送一次 incident_update。计划维护使用同一种 Payload,incident_kind 为 maintenance。草稿不发送任何请求。 事件更新:
维护公告:
对维护而言,每条更新中的 started_at 都是计划开始时间。团队改期时该值随之变化。工作开始后它仍是计划时间:实际开始时间是 in_progress 那条更新的 occurred_at。维护没有计划结束时间,因此在工作完成或取消之前,ended_at 为 null。
开启到点自动开始时(默认开启),MoleSignal 在计划开始时间发布 in_progress 更新,并作为 incident_update 发出。关闭时,到达计划开始时间不会发送请求:下一次请求随团队发布的下一条更新发出。

维护提醒

已计划的维护开始之前,MoleSignal 发送 maintenance_reminder。提前量在每个维护上设置,默认 60 分钟。提醒不是一条更新:它不会出现在维护的时间线上。
每个计划开始时间只发送一次提醒,因此改期后的维护会在新的开始时间之前再次提醒。维护在提醒时间之后才发布或改期、提前量为 0,或已离开 scheduled 状态时,不发送提醒。

组件状态变更

页面上显示的组件状态被修改时,MoleSignal 发送 component_status_changed。组件创建时的初始状态不发送请求。已隐藏与已归档的组件不发送请求。
事件不会为其影响的组件发送 component_status_changed。incident_update Payload 通过 component_names 列出这些组件。
变更发布时处于隐藏状态的组件,不会出现在发给订阅者的内容中。它的状态变更不发送请求,incident_update 的 component_names 也不会列出它。只影响已隐藏组件的事件或维护仍会发送,component_names 为空数组。隐藏或重新显示组件这一操作本身不发送请求。

事故复盘

已解决事件的复盘发布时,或复盘修订发布时,只要打开了通知订阅者,MoleSignal 就发送 postmortem_published。
page_name、page_slug、started_at、ended_at 与 component_names 的含义同 incident_update。

投递与重试

重试的投递会重复同样的请求体。Payload 不携带投递标识,因此请用 type、incident_id 或 component_id 加上 occurred_at 去重。同一事件的多条更新按 occurred_at 排序。 订阅结束、页面归档或页面改为私有之后,不再为该端点排队新的更新。 页面管理者可在状态页 → 订阅者 → 投递记录中查看每一次投递的尝试次数、状态与最后错误。已送达与已失败的记录会在页面的投递保留期之后清除:30、60、90、180 或 365 天。

退订

打开确认请求中的 unsubscribe_url,或发送 Token:
调用返回 200 OK 与 "accepted": true。仍在等待该端点的投递会被取消。 拥有 status_pages.manage 权限的用户也可以在状态页 → 订阅者中撤销订阅者,或为待确认的订阅者选择重新发送确认。重新发送会签发新的 Token。

状态页

创建页面、发布事件与维护,并管理订阅者。

Webhook 通知连接器

把告警通知发送到 Slack、飞书或通用 Webhook。
最后修改于 2026年10月26日