From 606da3caba2bc73b690568626b109f759f54f8ea Mon Sep 17 00:00:00 2001 From: Flashduty AI-SRE Date: Tue, 13 Oct 2026 08:18:26 +0000 Subject: [PATCH] =?UTF-8?q?docs(api):=20daily=20audit=202026-10-13=20?= =?UTF-8?q?=E2=80=94=20localize=20Monitors=20zh=20200=20descriptions,=20re?= =?UTF-8?q?fresh=20work-item=20Usage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two evidence-backed fixes, 42 insertions / 42 deletions, no key reordering: - zh specs: 18 Monitors operations (/monit/dashboard/*, /monit/folder/list) had the English 200 description "Success" while the other 22 operations in the same file — and every other zh module — use "成功". Applied to the rendered split and the consolidated copy. - On-call split (what Mintlify renders): three /incident/work-item/* Usage bullets predated AI SRE assignee support. Verified against fc-event origin/main: WorkItemAssigneeRef{type,id?}, WorkItemAssigneeTypeAISRE, "assignees and assignee_ids cannot both be set", and the "incident_id, post_mortem_id, assignee_id, or assignee_type=ai_sre is required" list guard. Recorded but not fixed: the work-item split response examples still omit `assignees` (a required field) — ~216 lines in either direction with a contested direction; the marked DutyError.reason hand-edit; the unresolved POST /channel/incident/daily-counts registry row. See PR body. --- api-reference/monitors.openapi.zh.json | 36 +++++++++++++------------- api-reference/on-call.openapi.en.json | 6 ++--- api-reference/on-call.openapi.zh.json | 6 ++--- api-reference/openapi.zh.json | 36 +++++++++++++------------- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/api-reference/monitors.openapi.zh.json b/api-reference/monitors.openapi.zh.json index b87f4e77..0b51d7df 100644 --- a/api-reference/monitors.openapi.zh.json +++ b/api-reference/monitors.openapi.zh.json @@ -2421,7 +2421,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -2699,7 +2699,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -2886,7 +2886,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -3168,7 +3168,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -3357,7 +3357,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -3434,7 +3434,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -3620,7 +3620,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -3725,7 +3725,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -3829,7 +3829,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -3929,7 +3929,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -4019,7 +4019,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -4199,7 +4199,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -4342,7 +4342,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -4463,7 +4463,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -4612,7 +4612,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -4738,7 +4738,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -4899,7 +4899,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -5124,7 +5124,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { diff --git a/api-reference/on-call.openapi.en.json b/api-reference/on-call.openapi.en.json index 800e61e7..3192671e 100644 --- a/api-reference/on-call.openapi.en.json +++ b/api-reference/on-call.openapi.en.json @@ -17321,7 +17321,7 @@ "On-call/Incidents" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | **Incidents Read** (`on-call`) |\n\n## Usage\n\n- At least one of `incident_id`, `post_mortem_id`, or `assignee_id` is required.\n- Cursor pagination sorted by `updated_at_seconds` descending — pass the previous response's `next_cursor` as `cursor` until `has_more` is false.\n- Listing by `incident_id` also includes follow-ups anchored on the incident's post-mortem.\n- Listing by `assignee_id` alone requires being that assignee or an account admin.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | **Incidents Read** (`on-call`) |\n\n## Usage\n\n- At least one of `incident_id`, `post_mortem_id`, `assignee_id`, or `assignee_type` = `ai_sre` is required.\n- `assignee_type` = `ai_sre` lists items assigned to AI SRE and can be used on its own.\n- Cursor pagination sorted by `updated_at_seconds` descending — pass the previous response's `next_cursor` as `cursor` until `has_more` is false.\n- Listing by `incident_id` also includes follow-ups anchored on the incident's post-mortem.\n- Listing by `assignee_id` alone requires being that assignee or an account admin.", "href": "/en/api-reference/on-call/incidents/incident-work-item-list", "metadata": { "sidebarTitle": "List work items" @@ -17433,7 +17433,7 @@ "On-call/Incidents" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | **Incidents Manage** (`on-call`) |\n\n## Usage\n\n- Requires the On-call Pro license.\n- An `action` anchors to an active incident and must NOT set `post_mortem_id`; a `follow_up` REQUIRES the `post_mortem_id` of a post-mortem linked to `incident_id`.\n- Assignees must be active members who can already read the anchor incident or post-mortem — assignment never grants access.\n- Newly added assignees are notified.\n- Retrying with the same (`creator`, `idempotency_key`) replays the original item with `idempotent_replay: true` instead of creating a duplicate.\n- Audited — changes are recorded in the audit log.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | **Incidents Manage** (`on-call`) |\n\n## Usage\n\n- Requires the On-call Pro license.\n- An `action` anchors to an active incident and must NOT set `post_mortem_id`; a `follow_up` REQUIRES the `post_mortem_id` of a post-mortem linked to `incident_id`.\n- Set either `assignees` or the legacy `assignee_ids`, not both. `assignees` entries are `{type, id?}` with `type` `person` or `ai_sre`; an `ai_sre` entry omits `id`. `assignee_ids` is equivalent to an all-`person` list. Sending both returns an error.\n- Person assignees must be active members who can already read the anchor incident or post-mortem — assignment never grants access.\n- Newly added assignees are notified.\n- Retrying with the same (`creator`, `idempotency_key`) replays the original item with `idempotent_replay: true` instead of creating a duplicate.\n- Audited — changes are recorded in the audit log.", "href": "/en/api-reference/on-call/incidents/incident-work-item-create", "metadata": { "sidebarTitle": "Create a work item" @@ -17882,7 +17882,7 @@ "On-call/Incidents" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | **Incidents Manage** (`on-call`) |\n\n## Usage\n\n- Requires the On-call Pro license.\n- Full replacement of the assignee set — an empty array clears all assignees.\n- Only newly added assignees are notified; removals never notify.\n- Audited — changes are recorded in the audit log.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | **Incidents Manage** (`on-call`) |\n\n## Usage\n\n- Requires the On-call Pro license.\n- Full replacement of the assignee set — an empty array clears all assignees.\n- Set either `assignees` or the legacy `assignee_ids`, not both (sending both returns an error). An `ai_sre` entry omits `id`.\n- Only newly added assignees are notified; removals never notify.\n- Audited — changes are recorded in the audit log.", "href": "/en/api-reference/on-call/incidents/incident-work-item-reset-assignees", "metadata": { "sidebarTitle": "Reset work item assignees" diff --git a/api-reference/on-call.openapi.zh.json b/api-reference/on-call.openapi.zh.json index 88840313..40acd1d6 100644 --- a/api-reference/on-call.openapi.zh.json +++ b/api-reference/on-call.openapi.zh.json @@ -17321,7 +17321,7 @@ "On-call/故障管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | **故障查看**(`on-call`) |\n\n## 使用说明\n\n- `incident_id`、`post_mortem_id`、`assignee_id` 至少提供一个。\n- 按 `updated_at_seconds` 倒序的游标分页 —— 将上一次响应的 `next_cursor` 作为 `cursor` 传入,直到 `has_more` 为 false。\n- 按 `incident_id` 查询时,同时包含锚定在该故障复盘上的后续行动。\n- 仅按 `assignee_id` 查询时,须为本人或账户管理员。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | **故障查看**(`on-call`) |\n\n## 使用说明\n\n- `incident_id`、`post_mortem_id`、`assignee_id`,或 `assignee_type` 为 `ai_sre`,至少满足一个。\n- `assignee_type` 为 `ai_sre` 时返回指派给 AI SRE 的事项,可单独作为查询条件。\n- 按 `updated_at_seconds` 倒序的游标分页 —— 将上一次响应的 `next_cursor` 作为 `cursor` 传入,直到 `has_more` 为 false。\n- 按 `incident_id` 查询时,同时包含锚定在该故障复盘上的后续行动。\n- 仅按 `assignee_id` 查询时,须为本人或账户管理员。", "href": "/zh/api-reference/on-call/incidents/incident-work-item-list", "metadata": { "sidebarTitle": "查询跟进事项列表" @@ -17433,7 +17433,7 @@ "On-call/故障管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | **故障管理**(`on-call`) |\n\n## 使用说明\n\n- 需要 On-call Pro 许可。\n- `action` 锚定活动故障,且不得设置 `post_mortem_id`;`follow_up` 必须设置为关联到 `incident_id` 的故障复盘 ID。\n- 负责人须为已能查看锚定故障或复盘的活跃成员 —— 指派不会授予访问权限。\n- 新添加的负责人会收到通知。\n- 以相同的(`creator`、`idempotency_key`)重试时,返回原事项并标记 `idempotent_replay: true`,不会创建重复事项。\n- 已审计 —— 变更会记录到审计日志。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | **故障管理**(`on-call`) |\n\n## 使用说明\n\n- 需要 On-call Pro 许可。\n- `action` 锚定活动故障,且不得设置 `post_mortem_id`;`follow_up` 必须设置为关联到 `incident_id` 的故障复盘 ID。\n- 使用 `assignees`(`person` 带 `id`,或 `ai_sre` 不带 `id`),或使用旧版 `assignee_ids`(全部为 `person`)。两者同时出现会报错。\n- 人员负责人须为已能查看锚定故障或复盘的活跃成员 —— 指派不会授予访问权限。\n- 新添加的负责人会收到通知。\n- 以相同的(`creator`、`idempotency_key`)重试时,返回原事项并标记 `idempotent_replay: true`,不会创建重复事项。\n- 已审计 —— 变更会记录到审计日志。", "href": "/zh/api-reference/on-call/incidents/incident-work-item-create", "metadata": { "sidebarTitle": "创建跟进事项" @@ -17882,7 +17882,7 @@ "On-call/故障管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | **故障管理**(`on-call`) |\n\n## 使用说明\n\n- 需要 On-call Pro 许可。\n- 整体替换负责人集合 —— 空数组表示清空所有负责人。\n- 仅新添加的负责人会收到通知;移除不通知。\n- 已审计 —— 变更会记录到审计日志。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | **故障管理**(`on-call`) |\n\n## 使用说明\n\n- 需要 On-call Pro 许可。\n- 整体替换负责人集合 —— 空数组表示清空所有负责人。\n- 使用 `assignees` 或旧版 `assignee_ids`。两者同时出现会报错。`ai_sre` 条目不带 `id`。\n- 仅新添加的负责人会收到通知;移除不通知。\n- 已审计 —— 变更会记录到审计日志。", "href": "/zh/api-reference/on-call/incidents/incident-work-item-reset-assignees", "metadata": { "sidebarTitle": "重置跟进事项负责人" diff --git a/api-reference/openapi.zh.json b/api-reference/openapi.zh.json index 30821d0a..d2df26db 100644 --- a/api-reference/openapi.zh.json +++ b/api-reference/openapi.zh.json @@ -64386,7 +64386,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -64664,7 +64664,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -64851,7 +64851,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65133,7 +65133,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65322,7 +65322,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65399,7 +65399,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65585,7 +65585,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65690,7 +65690,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65794,7 +65794,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65894,7 +65894,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -65984,7 +65984,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -66164,7 +66164,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -66307,7 +66307,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -66428,7 +66428,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -66577,7 +66577,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -66703,7 +66703,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -66864,7 +66864,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": { @@ -67089,7 +67089,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "成功", "content": { "application/json": { "schema": {