From f7c9b2d1ecb4c8eb5dae52c73567ac1e78fce5ee Mon Sep 17 00:00:00 2001 From: Flashduty AI-SRE Date: Tue, 10 Nov 2026 08:12:20 +0000 Subject: [PATCH 1/2] =?UTF-8?q?docs(api-reference):=20daily=20api-review?= =?UTF-8?q?=202026-11-10=20=E2=80=94=20exchange=20calendars,=20team=20assi?= =?UTF-8?q?gnment,=20RUM=20crash=20beacon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Audit window 2026-11-09T09:16:29Z → 2026-11-10T08:12Z. On-call calendars (fc-pgy feat/exchange-calendar, merged 8e09b643): - CalendarListRequest.kind / CalendarItem.kind gain `exchange.holiday`. - CalEventItem.day_end and CalDay.day_end document the early-close wall clock. - extra_cal_ids: at most one exchange calendar, and linking one sets `timezone`. - calendar/create usage: the per-account cap is 20, not 5. On-call incidents (fc-event feat/manual-incident-notify, merged 5da74c6de): - AssignedTo.team_ids and CreateIncidentRequest.assigned_to.team_ids (1–20). - AddIncidentResponderRequest: person_ids no longer required, maxItems 100, new team_ids. - assigned_to.notify.template_id must exist in the account. RUM remote config (fc-rum feat/crash-ledger-main, merged 49ec5df): - RemoteConfigValues gains crashBeaconEnabled and crashBeaconTimeoutMs (500–2000). No paths added or removed, so docs.json and api-catalog.mdx are untouched. --- api-reference/on-call.openapi.en.json | 67 ++++++++++++++++----- api-reference/on-call.openapi.zh.json | 67 ++++++++++++++++----- api-reference/openapi.en.json | 83 ++++++++++++++++++++++----- api-reference/openapi.zh.json | 83 ++++++++++++++++++++++----- api-reference/rum.openapi.en.json | 16 ++++++ api-reference/rum.openapi.zh.json | 16 ++++++ 6 files changed, 276 insertions(+), 56 deletions(-) diff --git a/api-reference/on-call.openapi.en.json b/api-reference/on-call.openapi.en.json index 10306d6a..3dbb8326 100644 --- a/api-reference/on-call.openapi.en.json +++ b/api-reference/on-call.openapi.en.json @@ -6638,7 +6638,7 @@ "On-call/Calendars" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` returns public holiday calendars, filtered to the caller's locale unless `no_locale` is `true`; use their `cal_id` in `extra_cal_ids`.\n- The list is not paginated; `total` equals the number of items.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` returns public holiday calendars, filtered to the caller's locale unless `no_locale` is `true`; use their `cal_id` in `extra_cal_ids`. `exchange.holiday` returns the shared stock-exchange calendars, whose `cal_id` a rule may read directly.\n- The list is not paginated; `total` equals the number of items.", "href": "/en/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "List calendars" @@ -7310,7 +7310,7 @@ "On-call/Calendars" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **300 requests/minute**; **20 requests/second** per account |\n| Permissions | **Calendars Manage** (`on-call`) |\n\n## Usage\n\n- An account can hold at most 5 calendars: once it has 5, a create call by any member returns `InvalidParameter`.\n- `cal_name` must be unique within the account, `timezone` must be a valid IANA name, and a nonzero `team_id` must be a team of the account; otherwise the call returns `InvalidParameter`.\n- Every call is recorded in the account audit log.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **300 requests/minute**; **20 requests/second** per account |\n| Permissions | **Calendars Manage** (`on-call`) |\n\n## Usage\n\n- An account can hold at most 20 calendars: once it has 20, a create call by any member returns `InvalidParameter`.\n- `cal_name` must be unique within the account, `timezone` must be a valid IANA name, and a nonzero `team_id` must be a team of the account; otherwise the call returns `InvalidParameter`.\n- Every call is recorded in the account audit log.", "href": "/en/api-reference/on-call/calendars/calendar-create", "metadata": { "sidebarTitle": "Create calendar" @@ -20691,10 +20691,9 @@ }, "AddIncidentResponderRequest": { "type": "object", - "description": "Parameters for adding responders to an existing incident.", + "description": "Parameters for adding responders to an existing incident. At least one of `person_ids` and `team_ids` is required.", "required": [ - "incident_id", - "person_ids" + "incident_id" ], "properties": { "incident_id": { @@ -20708,7 +20707,17 @@ "type": "integer", "format": "int64" }, - "description": "Member IDs to add as responders. IDs that are already responders, or that do not exist in the account, are skipped." + "maxItems": 100, + "description": "Member IDs to add as responders (at most 100). IDs that are already responders, or that do not exist in the account, are skipped." + }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "maxItems": 20, + "description": "Team IDs whose members are added as responders (at most 20). Each team is expanded to its enabled members, merged with `person_ids`, and the result is capped at 100 responders." }, "notify": { "type": "object", @@ -22046,7 +22055,7 @@ }, "AssignedTo": { "type": "object", - "description": "Assignment target. In requests, set `person_ids`, `escalate_rule_id`, or `emails`; when none is set the server re-runs the channel's escalation rule matching. In responses the object is always present; an incident that was never assigned has empty `type`, `id`, and `assigned_at` of `0`.", + "description": "Assignment target. In requests, set `person_ids`, `team_ids`, `escalate_rule_id`, or `emails`; when none is set the server re-runs the channel's escalation rule matching. In responses the object is always present; an incident that was never assigned has empty `type`, `id`, and `assigned_at` of `0`.", "properties": { "person_ids": { "type": "array", @@ -22058,6 +22067,16 @@ "maxItems": 100, "description": "Member IDs to assign directly." }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "Team IDs to assign by (1–20). Each team is expanded to its members that are enabled and merged into `person_ids` when the assignment runs, so a later membership change does not re-expand it; a selection whose teams hold no member of the account returns `InvalidParameter`, and the expanded responders are capped at 100 in total. Requests only: a stored assignment keeps the expanded members, so responses omit it." + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -22214,6 +22233,10 @@ "type": "boolean", "description": "Whether the event marks a non-working day." }, + "day_end": { + "type": "string", + "description": "Local wall-clock time (`HH:MM`) at which a working day closes early, e.g. `12:00`. Only events of a shared exchange calendar carry one; omitted for a full day." + }, "created_at": { "type": "integer", "format": "int64", @@ -22235,7 +22258,7 @@ "properties": { "cal_id": { "type": "string", - "description": "Calendar ID; obtain it from `POST /calendar/list`." + "description": "Calendar ID, obtained from `POST /calendar/list`. A calendar listed there with `kind` = `exchange.holiday` is accepted too, so a trading calendar can be read directly." }, "year": { "type": "integer", @@ -22309,6 +22332,10 @@ "weekly" ], "description": "Layer that decided the day: custom = the calendar's own events, holiday = a linked holiday calendar, weekly = the weekly workdays. Absent when no event covers the day." + }, + "day_end": { + "type": "string", + "description": "Local wall-clock time (`HH:MM`) at which the day ends, when it is a working day that closes early. Omitted for a full day or a day off." } } }, @@ -22420,7 +22447,7 @@ "items": { "type": "string" }, - "description": "Additional public-holiday calendar IDs to inherit events from (for example zh-cn.china.official)." + "description": "Additional public calendar IDs to inherit events from — `region.official.holiday` IDs such as `zh-cn.china.official`, plus at most one `exchange.holiday` calendar. Linking an exchange calendar sets this calendar's `timezone` to the exchange's, overriding the value you send; linking two of them returns `InvalidParameter`." } } }, @@ -22506,9 +22533,10 @@ }, "kind": { "type": "string", - "description": "Calendar kind. `region.official.holiday` is a public regional holiday calendar (served by the central holiday service), `religion.holiday` is a public religious holiday calendar (reserved, currently no data), and `personal` is an account-created personal/team calendar.", + "description": "Calendar kind. `region.official.holiday` is a public regional holiday calendar (served by the central holiday service), `exchange.holiday` is a shared stock-exchange calendar whose timezone is the exchange's and whose dates a rule may read directly, `religion.holiday` is a public religious holiday calendar (reserved, currently no data), and `personal` is an account-created personal/team calendar.", "enum": [ "region.official.holiday", + "exchange.holiday", "religion.holiday", "personal" ] @@ -22565,9 +22593,10 @@ "properties": { "kind": { "type": "string", - "description": "Calendar kind filter; defaults to personal when empty. `region.official.holiday` queries public regional holiday calendars (filtered by the caller's locale); `personal` queries account-created calendars.", + "description": "Calendar kind filter; defaults to personal when empty. `region.official.holiday` queries public regional holiday calendars (filtered by the caller's locale); `exchange.holiday` queries the shared stock-exchange calendars, whose `cal_id` a rule may read directly; `personal` queries account-created calendars.", "enum": [ "region.official.holiday", + "exchange.holiday", "personal" ] }, @@ -22656,7 +22685,7 @@ "items": { "type": "string" }, - "description": "Public holiday calendar IDs to inherit events from (see `POST /calendar/list` with `kind` = `region.official.holiday`). When sent, replaces the stored list; an empty array removes them all; omit to keep it." + "description": "Public calendar IDs to inherit events from (see `POST /calendar/list` with `kind` = `region.official.holiday` or `exchange.holiday`); at most one of them may be an `exchange.holiday` calendar, and linking one sets `timezone` to the exchange's. When sent, replaces the stored list; an empty array removes them all; omit to keep it." } } }, @@ -23230,7 +23259,7 @@ }, "assigned_to": { "type": "object", - "description": "Who to assign. When omitted or empty, the channel's escalation rules decide (a standalone incident gets no responders); required when the account has a create form. `person_ids`, `escalate_rule_id` and `emails` can be combined — responders are the union. Assignment runs after creation, and its failure does not undo the incident.", + "description": "Who to assign. When omitted or empty, the channel's escalation rules decide (a standalone incident gets no responders); required when the account has a create form. `person_ids`, `team_ids`, `escalate_rule_id` and `emails` can be combined — responders are the union. Assignment runs after creation, and its failure does not undo the incident.", "properties": { "person_ids": { "type": "array", @@ -23242,6 +23271,16 @@ "maxItems": 100, "description": "Member IDs to assign directly (1–100). Can be combined with `escalate_rule_id`." }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "Team IDs to assign by (1–20). Each team is expanded to its members that are enabled and merged into `person_ids`; the responders are capped at 100 in total, and a selection whose teams hold no member of the account returns `InvalidParameter`." + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -23292,7 +23331,7 @@ "template_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", - "description": "Notification template ID (MongoDB ObjectID)." + "description": "Notification template ID (MongoDB ObjectID). Must exist in the account, otherwise the call fails with `InvalidParameter`." } } } diff --git a/api-reference/on-call.openapi.zh.json b/api-reference/on-call.openapi.zh.json index 92a31208..34c9ecd0 100644 --- a/api-reference/on-call.openapi.zh.json +++ b/api-reference/on-call.openapi.zh.json @@ -6638,7 +6638,7 @@ "On-call/日历管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 返回公共节假日日历,默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;其 `cal_id` 可填入 `extra_cal_ids`。\n- 列表不分页,`total` 等于返回的条目数。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 返回公共节假日日历,默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;其 `cal_id` 可填入 `extra_cal_ids`。`exchange.holiday` 返回共享的交易所休市日历,规则可直接读取其 `cal_id`。\n- 列表不分页,`total` 等于返回的条目数。", "href": "/zh/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "查询服务日历列表" @@ -7310,7 +7310,7 @@ "On-call/日历管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **300 次/分钟**;**20 次/秒** |\n| 权限要求 | **服务日历管理**(`on-call`) |\n\n## 使用说明\n\n- 每个账户最多 5 个日历:账户已有 5 个日历后,任何成员的创建请求都返回 `InvalidParameter`。\n- `cal_name` 在账户内必须唯一,`timezone` 必须是合法的 IANA 时区,非零 `team_id` 必须是账户中的团队,否则返回 `InvalidParameter`。\n- 每次调用都会记录到账户审计日志。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **300 次/分钟**;**20 次/秒** |\n| 权限要求 | **服务日历管理**(`on-call`) |\n\n## 使用说明\n\n- 每个账户最多 20 个日历:账户已有 20 个日历后,任何成员的创建请求都返回 `InvalidParameter`。\n- `cal_name` 在账户内必须唯一,`timezone` 必须是合法的 IANA 时区,非零 `team_id` 必须是账户中的团队,否则返回 `InvalidParameter`。\n- 每次调用都会记录到账户审计日志。", "href": "/zh/api-reference/on-call/calendars/calendar-create", "metadata": { "sidebarTitle": "创建服务日历" @@ -20691,10 +20691,9 @@ }, "AddIncidentResponderRequest": { "type": "object", - "description": "向已有故障添加处理人员的参数。", + "description": "向已有故障添加处理人员的参数。`person_ids` 与 `team_ids` 至少要提供一个。", "required": [ - "incident_id", - "person_ids" + "incident_id" ], "properties": { "incident_id": { @@ -20708,7 +20707,17 @@ "type": "integer", "format": "int64" }, - "description": "要添加为处理人的成员 ID。已经是处理人或账户中不存在的 ID 会被跳过。" + "maxItems": 100, + "description": "要添加为处理人的成员 ID(最多 100 个)。已经是处理人或账户中不存在的 ID 会被跳过。" + }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "maxItems": 20, + "description": "按团队添加处理人时的团队 ID 列表(最多 20 个)。每个团队展开为状态为启用的成员后与 `person_ids` 合并,处理人员总数上限为 100。" }, "notify": { "type": "object", @@ -22046,7 +22055,7 @@ }, "AssignedTo": { "type": "object", - "description": "分派对象。请求中设置 `person_ids`、`escalate_rule_id` 或 `emails`;都未设置时服务端会重新匹配协作空间的分派策略。响应中该对象始终存在;从未分派过的故障 `type`、`id` 为空,`assigned_at` 为 `0`。", + "description": "分派对象。请求中设置 `person_ids`、`team_ids`、`escalate_rule_id` 或 `emails`;都未设置时服务端会重新匹配协作空间的分派策略。响应中该对象始终存在;从未分派过的故障 `type`、`id` 为空,`assigned_at` 为 `0`。", "properties": { "person_ids": { "type": "array", @@ -22058,6 +22067,16 @@ "maxItems": 100, "description": "直接指派的成员 ID 列表。" }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "按团队指派的团队 ID 列表(1–20 个)。分派执行时每个团队展开为状态为启用的成员并并入 `person_ids`,之后团队成员变动不会重新展开;若所选团队在账户中没有任何成员则返回 `InvalidParameter`,展开后处理人员总数上限为 100。仅请求可用:已落存的分派只保留展开后的成员,响应中不返回该字段。" + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -22214,6 +22233,10 @@ "type": "boolean", "description": "是否为非工作日。" }, + "day_end": { + "type": "string", + "description": "该工作日提前收盘的当地时刻(`HH:MM`),例如 `12:00`。仅共享交易所日历的事件带该字段,整日不提前收盘时省略。" + }, "created_at": { "type": "integer", "format": "int64", @@ -22235,7 +22258,7 @@ "properties": { "cal_id": { "type": "string", - "description": "日历 ID,可通过 `POST /calendar/list` 获取。" + "description": "日历 ID,可通过 `POST /calendar/list` 获取;该接口以 `kind` = `exchange.holiday` 返回的交易所日历 ID 同样可用,因此规则可直接读取交易所日历。" }, "year": { "type": "integer", @@ -22309,6 +22332,10 @@ "weekly" ], "description": "决定该日期的层:custom = 日历自己的事件,holiday = 关联的节假日日历,weekly = 每周工作日设置。没有事件覆盖该日期时不返回。" + }, + "day_end": { + "type": "string", + "description": "该日提前收盘的当地时刻(`HH:MM`),仅在“工作日提前收盘”时返回;整日或休市日省略。" } } }, @@ -22420,7 +22447,7 @@ "items": { "type": "string" }, - "description": "需要继承事件的公共节假日日历 ID 列表(例如 zh-cn.china.official)。" + "description": "需要继承事件的公共日历 ID 列表,例如 `zh-cn.china.official` 这样的 `region.official.holiday` 日历,以及最多一个 `exchange.holiday` 交易所日历。关联交易所日历后,本日历的 `timezone` 会跟随交易所时区并覆盖请求中的取值;关联两个交易所日历则返回 `InvalidParameter`。" } } }, @@ -22506,9 +22533,10 @@ }, "kind": { "type": "string", - "description": "日历类型。`region.official.holiday` 为地区法定假日公共日历(数据来自中心假日服务),`religion.holiday` 为宗教假日公共日历(预留值,当前无数据),`personal` 为账户自建的个人/团队日历。", + "description": "日历类型。`region.official.holiday` 为地区法定假日公共日历(数据来自中心假日服务),`exchange.holiday` 为共享的交易所休市日历,其时区即交易所时区,规则可直接读取其日期,`religion.holiday` 为宗教假日公共日历(预留值,当前无数据),`personal` 为账户自建的个人/团队日历。", "enum": [ "region.official.holiday", + "exchange.holiday", "religion.holiday", "personal" ] @@ -22565,9 +22593,10 @@ "properties": { "kind": { "type": "string", - "description": "日历类型过滤条件,为空时默认 personal。`region.official.holiday` 查询地区法定假日公共日历(按调用方 locale 过滤);`personal` 查询账户自建日历。", + "description": "日历类型过滤条件,为空时默认 personal。`region.official.holiday` 查询地区法定假日公共日历(按调用方 locale 过滤);`exchange.holiday` 查询共享的交易所休市日历,规则可直接读取其 `cal_id`;`personal` 查询账户自建日历。", "enum": [ "region.official.holiday", + "exchange.holiday", "personal" ] }, @@ -22656,7 +22685,7 @@ "items": { "type": "string" }, - "description": "要继承事件的公共节假日日历 ID(见 `kind` 为 `region.official.holiday` 的 `POST /calendar/list`)。传入时整体替换原列表,空数组即全部移除,不传则保持不变。" + "description": "要继承事件的公共日历 ID(见 `kind` 为 `region.official.holiday` 或 `exchange.holiday` 的 `POST /calendar/list`);其中最多一个可以是 `exchange.holiday` 交易所日历,关联后 `timezone` 跟随交易所时区。传入时整体替换原列表,空数组即全部移除,不传则保持不变。" } } }, @@ -23230,7 +23259,7 @@ }, "assigned_to": { "type": "object", - "description": "分派对象。省略或为空时由协作空间的分派策略决定(独立故障不会有处理人员);账户配置了创建表单时必填。`person_ids`、`escalate_rule_id` 和 `emails` 可同时设置,处理人员取并集。分派在创建之后执行,分派失败不会撤销故障。", + "description": "分派对象。省略或为空时由协作空间的分派策略决定(独立故障不会有处理人员);账户配置了创建表单时必填。`person_ids`、`team_ids`、`escalate_rule_id` 和 `emails` 可同时设置,处理人员取并集。分派在创建之后执行,分派失败不会撤销故障。", "properties": { "person_ids": { "type": "array", @@ -23242,6 +23271,16 @@ "maxItems": 100, "description": "直接指派的成员 ID 列表(1–100 个),可与 `escalate_rule_id` 同时使用。" }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "按团队指派的团队 ID 列表(1–20 个)。每个团队展开为状态为启用的成员后并入 `person_ids`;处理人员总数上限为 100,若所选团队在账户中没有任何成员则返回 `InvalidParameter`。" + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -23292,7 +23331,7 @@ "template_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", - "description": "通知模板 ID(MongoDB ObjectID)。" + "description": "通知模板 ID(MongoDB ObjectID)。必须是账户中存在的模板,否则返回 `InvalidParameter`。" } } } diff --git a/api-reference/openapi.en.json b/api-reference/openapi.en.json index 4f15346d..8b233492 100644 --- a/api-reference/openapi.en.json +++ b/api-reference/openapi.en.json @@ -750,10 +750,9 @@ }, "AddIncidentResponderRequest": { "type": "object", - "description": "Parameters for adding responders to an existing incident.", + "description": "Parameters for adding responders to an existing incident. At least one of `person_ids` and `team_ids` is required.", "required": [ - "incident_id", - "person_ids" + "incident_id" ], "properties": { "incident_id": { @@ -767,7 +766,17 @@ "type": "integer", "format": "int64" }, - "description": "Member IDs to add as responders. IDs that are already responders, or that do not exist in the account, are skipped." + "maxItems": 100, + "description": "Member IDs to add as responders (at most 100). IDs that are already responders, or that do not exist in the account, are skipped." + }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "maxItems": 20, + "description": "Team IDs whose members are added as responders (at most 20). Each team is expanded to its enabled members, merged with `person_ids`, and the result is capped at 100 responders." }, "notify": { "type": "object", @@ -2935,7 +2944,7 @@ }, "AssignedTo": { "type": "object", - "description": "Assignment target. In requests, set `person_ids`, `escalate_rule_id`, or `emails`; when none is set the server re-runs the channel's escalation rule matching. In responses the object is always present; an incident that was never assigned has empty `type`, `id`, and `assigned_at` of `0`.", + "description": "Assignment target. In requests, set `person_ids`, `team_ids`, `escalate_rule_id`, or `emails`; when none is set the server re-runs the channel's escalation rule matching. In responses the object is always present; an incident that was never assigned has empty `type`, `id`, and `assigned_at` of `0`.", "properties": { "person_ids": { "type": "array", @@ -2947,6 +2956,16 @@ "maxItems": 100, "description": "Member IDs to assign directly." }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "Team IDs to assign by (1–20). Each team is expanded to its members that are enabled and merged into `person_ids` when the assignment runs, so a later membership change does not re-expand it; a selection whose teams hold no member of the account returns `InvalidParameter`, and the expanded responders are capped at 100 in total. Requests only: a stored assignment keeps the expanded members, so responses omit it." + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -4430,6 +4449,10 @@ "type": "boolean", "description": "Whether the event marks a non-working day." }, + "day_end": { + "type": "string", + "description": "Local wall-clock time (`HH:MM`) at which a working day closes early, e.g. `12:00`. Only events of a shared exchange calendar carry one; omitted for a full day." + }, "created_at": { "type": "integer", "format": "int64", @@ -4446,7 +4469,7 @@ "description": "Calendar event list request. When day > 0 month must also be specified. month and day accept 0 to mean \"not filtered\".", "properties": { "cal_id": { - "description": "Calendar ID; obtain it from `POST /calendar/list`.", + "description": "Calendar ID, obtained from `POST /calendar/list`. A calendar listed there with `kind` = `exchange.holiday` is accepted too, so a trading calendar can be read directly.", "type": "string" }, "day": { @@ -4521,6 +4544,10 @@ "weekly" ], "type": "string" + }, + "day_end": { + "type": "string", + "description": "Local wall-clock time (`HH:MM`) at which the day ends, when it is a working day that closes early. Omitted for a full day or a day off." } }, "required": [ @@ -4636,7 +4663,7 @@ "items": { "type": "string" }, - "description": "Additional public-holiday calendar IDs to inherit events from (for example zh-cn.china.official)." + "description": "Additional public calendar IDs to inherit events from — `region.official.holiday` IDs such as `zh-cn.china.official`, plus at most one `exchange.holiday` calendar. Linking an exchange calendar sets this calendar's `timezone` to the exchange's, overriding the value you send; linking two of them returns `InvalidParameter`." } } }, @@ -4722,9 +4749,10 @@ }, "kind": { "type": "string", - "description": "Calendar kind. `region.official.holiday` is a public regional holiday calendar (served by the central holiday service), `religion.holiday` is a public religious holiday calendar (reserved, currently no data), and `personal` is an account-created personal/team calendar.", + "description": "Calendar kind. `region.official.holiday` is a public regional holiday calendar (served by the central holiday service), `exchange.holiday` is a shared stock-exchange calendar whose timezone is the exchange's and whose dates a rule may read directly, `religion.holiday` is a public religious holiday calendar (reserved, currently no data), and `personal` is an account-created personal/team calendar.", "enum": [ "region.official.holiday", + "exchange.holiday", "religion.holiday", "personal" ] @@ -4779,9 +4807,10 @@ "description": "Calendar list request. kind filters by calendar kind; no_locale disables locale filtering for public holiday calendars.", "properties": { "kind": { - "description": "Calendar kind filter; defaults to personal when empty. `region.official.holiday` queries public regional holiday calendars (filtered by the caller's locale); `personal` queries account-created calendars.", + "description": "Calendar kind filter; defaults to personal when empty. `region.official.holiday` queries public regional holiday calendars (filtered by the caller's locale); `exchange.holiday` queries the shared stock-exchange calendars, whose `cal_id` a rule may read directly; `personal` queries account-created calendars.", "enum": [ "region.official.holiday", + "exchange.holiday", "personal" ], "type": "string" @@ -4872,7 +4901,7 @@ "items": { "type": "string" }, - "description": "Public holiday calendar IDs to inherit events from (see `POST /calendar/list` with `kind` = `region.official.holiday`). When sent, replaces the stored list; an empty array removes them all; omit to keep it." + "description": "Public calendar IDs to inherit events from (see `POST /calendar/list` with `kind` = `region.official.holiday` or `exchange.holiday`); at most one of them may be an `exchange.holiday` calendar, and linking one sets `timezone` to the exchange's. When sent, replaces the stored list; an empty array removes them all; omit to keep it." } } }, @@ -5902,7 +5931,7 @@ }, "assigned_to": { "type": "object", - "description": "Who to assign. When omitted or empty, the channel's escalation rules decide (a standalone incident gets no responders); required when the account has a create form. `person_ids`, `escalate_rule_id` and `emails` can be combined — responders are the union. Assignment runs after creation, and its failure does not undo the incident.", + "description": "Who to assign. When omitted or empty, the channel's escalation rules decide (a standalone incident gets no responders); required when the account has a create form. `person_ids`, `team_ids`, `escalate_rule_id` and `emails` can be combined — responders are the union. Assignment runs after creation, and its failure does not undo the incident.", "properties": { "person_ids": { "type": "array", @@ -5914,6 +5943,16 @@ "maxItems": 100, "description": "Member IDs to assign directly (1–100). Can be combined with `escalate_rule_id`." }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "Team IDs to assign by (1–20). Each team is expanded to its members that are enabled and merged into `person_ids`; the responders are capped at 100 in total, and a selection whose teams hold no member of the account returns `InvalidParameter`." + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -5964,7 +6003,7 @@ "template_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", - "description": "Notification template ID (MongoDB ObjectID)." + "description": "Notification template ID (MongoDB ObjectID). Must exist in the account, otherwise the call fails with `InvalidParameter`." } } } @@ -18683,6 +18722,22 @@ "RemoteConfigValues": { "description": "The SDK knobs a configuration can set. Every field is optional: a value absent from both rule and default is omitted from the SDK response, which tells the SDK to keep its init value.", "properties": { + "crashBeaconEnabled": { + "type": [ + "boolean", + "null" + ], + "description": "Whether native SDKs send a crash beacon: a few hundred bytes sent while a foreground crash takes the process down, so the crash is counted even when the user never opens the app again. On by default in the SDKs; `false` also makes the collector discard beacons it still receives. Unlike the session-scoped knobs below, a change applies as soon as the SDK receives it." + }, + "crashBeaconTimeoutMs": { + "type": [ + "integer", + "null" + ], + "minimum": 500, + "maximum": 2000, + "description": "How long the crashed thread waits for the crash beacon before the process dies, in milliseconds (500–2000). Omitted, the SDK uses 1000." + }, "defaultPrivacyLevel": { "description": "How Session Replay masks a page by default:\n\n- `mask`: replaces text and hides input values.\n- `mask-user-input`: keeps page text but hides what users type.\n- `allow`: records the page as it is; content already uploaded cannot be masked later.", "enum": [ @@ -38665,7 +38720,7 @@ "On-call/Calendars" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **300 requests/minute**; **20 requests/second** per account |\n| Permissions | **Calendars Manage** (`on-call`) |\n\n## Usage\n\n- An account can hold at most 5 calendars: once it has 5, a create call by any member returns `InvalidParameter`.\n- `cal_name` must be unique within the account, `timezone` must be a valid IANA name, and a nonzero `team_id` must be a team of the account; otherwise the call returns `InvalidParameter`.\n- Every call is recorded in the account audit log.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **300 requests/minute**; **20 requests/second** per account |\n| Permissions | **Calendars Manage** (`on-call`) |\n\n## Usage\n\n- An account can hold at most 20 calendars: once it has 20, a create call by any member returns `InvalidParameter`.\n- `cal_name` must be unique within the account, `timezone` must be a valid IANA name, and a nonzero `team_id` must be a team of the account; otherwise the call returns `InvalidParameter`.\n- Every call is recorded in the account audit log.", "href": "/en/api-reference/on-call/calendars/calendar-create", "metadata": { "sidebarTitle": "Create calendar" @@ -39199,7 +39254,7 @@ "On-call/Calendars" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` returns public holiday calendars, filtered to the caller's locale unless `no_locale` is `true`; use their `cal_id` in `extra_cal_ids`.\n- The list is not paginated; `total` equals the number of items.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` returns public holiday calendars, filtered to the caller's locale unless `no_locale` is `true`; use their `cal_id` in `extra_cal_ids`. `exchange.holiday` returns the shared stock-exchange calendars, whose `cal_id` a rule may read directly.\n- The list is not paginated; `total` equals the number of items.", "href": "/en/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "List calendars" diff --git a/api-reference/openapi.zh.json b/api-reference/openapi.zh.json index 20772295..c846e7a7 100644 --- a/api-reference/openapi.zh.json +++ b/api-reference/openapi.zh.json @@ -750,10 +750,9 @@ }, "AddIncidentResponderRequest": { "type": "object", - "description": "向已有故障添加处理人员的参数。", + "description": "向已有故障添加处理人员的参数。`person_ids` 与 `team_ids` 至少要提供一个。", "required": [ - "incident_id", - "person_ids" + "incident_id" ], "properties": { "incident_id": { @@ -767,7 +766,17 @@ "type": "integer", "format": "int64" }, - "description": "要添加为处理人的成员 ID。已经是处理人或账户中不存在的 ID 会被跳过。" + "maxItems": 100, + "description": "要添加为处理人的成员 ID(最多 100 个)。已经是处理人或账户中不存在的 ID 会被跳过。" + }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "maxItems": 20, + "description": "按团队添加处理人时的团队 ID 列表(最多 20 个)。每个团队展开为状态为启用的成员后与 `person_ids` 合并,处理人员总数上限为 100。" }, "notify": { "type": "object", @@ -2935,7 +2944,7 @@ }, "AssignedTo": { "type": "object", - "description": "分派对象。请求中设置 `person_ids`、`escalate_rule_id` 或 `emails`;都未设置时服务端会重新匹配协作空间的分派策略。响应中该对象始终存在;从未分派过的故障 `type`、`id` 为空,`assigned_at` 为 `0`。", + "description": "分派对象。请求中设置 `person_ids`、`team_ids`、`escalate_rule_id` 或 `emails`;都未设置时服务端会重新匹配协作空间的分派策略。响应中该对象始终存在;从未分派过的故障 `type`、`id` 为空,`assigned_at` 为 `0`。", "properties": { "person_ids": { "type": "array", @@ -2947,6 +2956,16 @@ "maxItems": 100, "description": "直接指派的成员 ID 列表。" }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "按团队指派的团队 ID 列表(1–20 个)。分派执行时每个团队展开为状态为启用的成员并并入 `person_ids`,之后团队成员变动不会重新展开;若所选团队在账户中没有任何成员则返回 `InvalidParameter`,展开后处理人员总数上限为 100。仅请求可用:已落存的分派只保留展开后的成员,响应中不返回该字段。" + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -4430,6 +4449,10 @@ "type": "boolean", "description": "是否为非工作日。" }, + "day_end": { + "type": "string", + "description": "该工作日提前收盘的当地时刻(`HH:MM`),例如 `12:00`。仅共享交易所日历的事件带该字段,整日不提前收盘时省略。" + }, "created_at": { "type": "integer", "format": "int64", @@ -4446,7 +4469,7 @@ "description": "日历事件列表请求。day > 0 时必须同时指定 month;month 与 day 为 0 表示不过滤。", "properties": { "cal_id": { - "description": "日历 ID,可通过 `POST /calendar/list` 获取。", + "description": "日历 ID,可通过 `POST /calendar/list` 获取;该接口以 `kind` = `exchange.holiday` 返回的交易所日历 ID 同样可用,因此规则可直接读取交易所日历。", "type": "string" }, "day": { @@ -4521,6 +4544,10 @@ "weekly" ], "type": "string" + }, + "day_end": { + "type": "string", + "description": "该日提前收盘的当地时刻(`HH:MM`),仅在“工作日提前收盘”时返回;整日或休市日省略。" } }, "required": [ @@ -4636,7 +4663,7 @@ "items": { "type": "string" }, - "description": "需要继承事件的公共节假日日历 ID 列表(例如 zh-cn.china.official)。" + "description": "需要继承事件的公共日历 ID 列表,例如 `zh-cn.china.official` 这样的 `region.official.holiday` 日历,以及最多一个 `exchange.holiday` 交易所日历。关联交易所日历后,本日历的 `timezone` 会跟随交易所时区并覆盖请求中的取值;关联两个交易所日历则返回 `InvalidParameter`。" } } }, @@ -4722,9 +4749,10 @@ }, "kind": { "type": "string", - "description": "日历类型。`region.official.holiday` 为地区法定假日公共日历(数据来自中心假日服务),`religion.holiday` 为宗教假日公共日历(预留值,当前无数据),`personal` 为账户自建的个人/团队日历。", + "description": "日历类型。`region.official.holiday` 为地区法定假日公共日历(数据来自中心假日服务),`exchange.holiday` 为共享的交易所休市日历,其时区即交易所时区,规则可直接读取其日期,`religion.holiday` 为宗教假日公共日历(预留值,当前无数据),`personal` 为账户自建的个人/团队日历。", "enum": [ "region.official.holiday", + "exchange.holiday", "religion.holiday", "personal" ] @@ -4779,9 +4807,10 @@ "description": "日历列表请求。kind 用于按类型过滤;no_locale 在查询公共节假日日历时关闭 locale 过滤。", "properties": { "kind": { - "description": "日历类型过滤条件,为空时默认 personal。`region.official.holiday` 查询地区法定假日公共日历(按调用方 locale 过滤);`personal` 查询账户自建日历。", + "description": "日历类型过滤条件,为空时默认 personal。`region.official.holiday` 查询地区法定假日公共日历(按调用方 locale 过滤);`exchange.holiday` 查询共享的交易所休市日历,规则可直接读取其 `cal_id`;`personal` 查询账户自建日历。", "enum": [ "region.official.holiday", + "exchange.holiday", "personal" ], "type": "string" @@ -4872,7 +4901,7 @@ "items": { "type": "string" }, - "description": "要继承事件的公共节假日日历 ID(见 `kind` 为 `region.official.holiday` 的 `POST /calendar/list`)。传入时整体替换原列表,空数组即全部移除,不传则保持不变。" + "description": "要继承事件的公共日历 ID(见 `kind` 为 `region.official.holiday` 或 `exchange.holiday` 的 `POST /calendar/list`);其中最多一个可以是 `exchange.holiday` 交易所日历,关联后 `timezone` 跟随交易所时区。传入时整体替换原列表,空数组即全部移除,不传则保持不变。" } } }, @@ -5902,7 +5931,7 @@ }, "assigned_to": { "type": "object", - "description": "分派对象。省略或为空时由协作空间的分派策略决定(独立故障不会有处理人员);账户配置了创建表单时必填。`person_ids`、`escalate_rule_id` 和 `emails` 可同时设置,处理人员取并集。分派在创建之后执行,分派失败不会撤销故障。", + "description": "分派对象。省略或为空时由协作空间的分派策略决定(独立故障不会有处理人员);账户配置了创建表单时必填。`person_ids`、`team_ids`、`escalate_rule_id` 和 `emails` 可同时设置,处理人员取并集。分派在创建之后执行,分派失败不会撤销故障。", "properties": { "person_ids": { "type": "array", @@ -5914,6 +5943,16 @@ "maxItems": 100, "description": "直接指派的成员 ID 列表(1–100 个),可与 `escalate_rule_id` 同时使用。" }, + "team_ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "minItems": 1, + "maxItems": 20, + "description": "按团队指派的团队 ID 列表(1–20 个)。每个团队展开为状态为启用的成员后并入 `person_ids`;处理人员总数上限为 100,若所选团队在账户中没有任何成员则返回 `InvalidParameter`。" + }, "escalate_rule_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", @@ -5964,7 +6003,7 @@ "template_id": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$", - "description": "通知模板 ID(MongoDB ObjectID)。" + "description": "通知模板 ID(MongoDB ObjectID)。必须是账户中存在的模板,否则返回 `InvalidParameter`。" } } } @@ -18683,6 +18722,22 @@ "RemoteConfigValues": { "description": "配置可设置的 SDK 参数。每个字段都是可选的:规则与默认值都未设置的字段不会出现在 SDK 响应中,SDK 将沿用初始化值。", "properties": { + "crashBeaconEnabled": { + "type": [ + "boolean", + "null" + ], + "description": "原生 SDK 是否上报崩溃信标:前台崩溃导致进程退出前发出的数百字节数据,使用户此后不再打开 App 也能统计到这次崩溃。SDK 默认开启;设为 `false` 后采集端也会丢弃已收到的信标。与之下的按会话生效的开关不同,该值在 SDK 收到时立即生效。" + }, + "crashBeaconTimeoutMs": { + "type": [ + "integer", + "null" + ], + "minimum": 500, + "maximum": 2000, + "description": "崩溃线程等待崩溃信标发送的时长,单位毫秒(500–2000);不传时 SDK 取 1000。" + }, "defaultPrivacyLevel": { "description": "Session Replay 默认的页面脱敏方式:\n\n- `mask`:替换页面文本并隐藏输入值。\n- `mask-user-input`:保留页面文本,只隐藏用户输入的内容。\n- `allow`:按原样录制页面;已上传的内容无法事后脱敏。", "enum": [ @@ -38665,7 +38720,7 @@ "On-call/日历管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **300 次/分钟**;**20 次/秒** |\n| 权限要求 | **服务日历管理**(`on-call`) |\n\n## 使用说明\n\n- 每个账户最多 5 个日历:账户已有 5 个日历后,任何成员的创建请求都返回 `InvalidParameter`。\n- `cal_name` 在账户内必须唯一,`timezone` 必须是合法的 IANA 时区,非零 `team_id` 必须是账户中的团队,否则返回 `InvalidParameter`。\n- 每次调用都会记录到账户审计日志。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **300 次/分钟**;**20 次/秒** |\n| 权限要求 | **服务日历管理**(`on-call`) |\n\n## 使用说明\n\n- 每个账户最多 20 个日历:账户已有 20 个日历后,任何成员的创建请求都返回 `InvalidParameter`。\n- `cal_name` 在账户内必须唯一,`timezone` 必须是合法的 IANA 时区,非零 `team_id` 必须是账户中的团队,否则返回 `InvalidParameter`。\n- 每次调用都会记录到账户审计日志。", "href": "/zh/api-reference/on-call/calendars/calendar-create", "metadata": { "sidebarTitle": "创建服务日历" @@ -39199,7 +39254,7 @@ "On-call/日历管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 返回公共节假日日历,默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;其 `cal_id` 可填入 `extra_cal_ids`。\n- 列表不分页,`total` 等于返回的条目数。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 返回公共节假日日历,默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;其 `cal_id` 可填入 `extra_cal_ids`。`exchange.holiday` 返回共享的交易所休市日历,规则可直接读取其 `cal_id`。\n- 列表不分页,`total` 等于返回的条目数。", "href": "/zh/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "查询服务日历列表" diff --git a/api-reference/rum.openapi.en.json b/api-reference/rum.openapi.en.json index 065e5146..2d40e222 100644 --- a/api-reference/rum.openapi.en.json +++ b/api-reference/rum.openapi.en.json @@ -530,6 +530,22 @@ "RemoteConfigValues": { "description": "The SDK knobs a configuration can set. Every field is optional: a value absent from both rule and default is omitted from the SDK response, which tells the SDK to keep its init value.", "properties": { + "crashBeaconEnabled": { + "type": [ + "boolean", + "null" + ], + "description": "Whether native SDKs send a crash beacon: a few hundred bytes sent while a foreground crash takes the process down, so the crash is counted even when the user never opens the app again. On by default in the SDKs; `false` also makes the collector discard beacons it still receives. Unlike the session-scoped knobs below, a change applies as soon as the SDK receives it." + }, + "crashBeaconTimeoutMs": { + "type": [ + "integer", + "null" + ], + "minimum": 500, + "maximum": 2000, + "description": "How long the crashed thread waits for the crash beacon before the process dies, in milliseconds (500–2000). Omitted, the SDK uses 1000." + }, "defaultPrivacyLevel": { "description": "How Session Replay masks a page by default:\n\n- `mask`: replaces text and hides input values.\n- `mask-user-input`: keeps page text but hides what users type.\n- `allow`: records the page as it is; content already uploaded cannot be masked later.", "enum": [ diff --git a/api-reference/rum.openapi.zh.json b/api-reference/rum.openapi.zh.json index 52906d1a..0e2c5527 100644 --- a/api-reference/rum.openapi.zh.json +++ b/api-reference/rum.openapi.zh.json @@ -530,6 +530,22 @@ "RemoteConfigValues": { "description": "配置可设置的 SDK 参数。每个字段都是可选的:规则与默认值都未设置的字段不会出现在 SDK 响应中,SDK 将沿用初始化值。", "properties": { + "crashBeaconEnabled": { + "type": [ + "boolean", + "null" + ], + "description": "原生 SDK 是否上报崩溃信标:前台崩溃导致进程退出前发出的数百字节数据,使用户此后不再打开 App 也能统计到这次崩溃。SDK 默认开启;设为 `false` 后采集端也会丢弃已收到的信标。与之下的按会话生效的开关不同,该值在 SDK 收到时立即生效。" + }, + "crashBeaconTimeoutMs": { + "type": [ + "integer", + "null" + ], + "minimum": 500, + "maximum": 2000, + "description": "崩溃线程等待崩溃信标发送的时长,单位毫秒(500–2000);不传时 SDK 取 1000。" + }, "defaultPrivacyLevel": { "description": "Session Replay 默认的页面脱敏方式:\n\n- `mask`:替换页面文本并隐藏输入值。\n- `mask-user-input`:保留页面文本,只隐藏用户输入的内容。\n- `allow`:按原样录制页面;已上传的内容无法事后脱敏。", "enum": [ From 4151b281d75ab8933abcf92ef70271dc88a29c60 Mon Sep 17 00:00:00 2001 From: Flashduty AI-SRE Date: Tue, 10 Nov 2026 08:15:25 +0000 Subject: [PATCH 2/2] docs(api-reference): escalation/silence time filters read hours in the calendar timezone fc-event feat/channel-calendar (merged aa61cb096) changed TimeFilter.Check so that a calendar decides the day and the calendar's timezone the wall clock `start`/`end` are read in: a rule on a US trading calendar means New York time wherever the service runs. TimeFilter is used by the escalation-rule and silence-rule request/response bodies. Also says how /calendar/list filters the shared exchange calendars by locale. --- api-reference/on-call.openapi.en.json | 4 ++-- api-reference/on-call.openapi.zh.json | 4 ++-- api-reference/openapi.en.json | 4 ++-- api-reference/openapi.zh.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/api-reference/on-call.openapi.en.json b/api-reference/on-call.openapi.en.json index 3dbb8326..2c0e7050 100644 --- a/api-reference/on-call.openapi.en.json +++ b/api-reference/on-call.openapi.en.json @@ -6638,7 +6638,7 @@ "On-call/Calendars" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` returns public holiday calendars, filtered to the caller's locale unless `no_locale` is `true`; use their `cal_id` in `extra_cal_ids`. `exchange.holiday` returns the shared stock-exchange calendars, whose `cal_id` a rule may read directly.\n- The list is not paginated; `total` equals the number of items.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` and `exchange.holiday` return the shared calendars (public holidays, and stock-exchange trading days whose timezone is the exchange's), filtered to the caller's locale unless `no_locale` is `true`; use a holiday `cal_id` in `extra_cal_ids`, and an exchange `cal_id` directly in a rule.\n- The list is not paginated; `total` equals the number of items.", "href": "/en/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "List calendars" @@ -32226,7 +32226,7 @@ }, "cal_id": { "type": "string", - "description": "Service calendar ID from `POST /calendar/list` (for example `cal.xxxx`). When set, the window applies only on the calendar's workdays or days off, as chosen by `is_off`." + "description": "Service calendar ID from `POST /calendar/list` (for example `cal.xxxx`, or a shared calendar such as `zh-cn.exchange.us`). When set, the window applies only on the calendar's workdays or days off as chosen by `is_off`, and `start` / `end` are read in that calendar's timezone — for a trading calendar, the exchange's — so the window means the same thing wherever the service runs." }, "is_off": { "type": "boolean", diff --git a/api-reference/on-call.openapi.zh.json b/api-reference/on-call.openapi.zh.json index 34c9ecd0..af4d0387 100644 --- a/api-reference/on-call.openapi.zh.json +++ b/api-reference/on-call.openapi.zh.json @@ -6638,7 +6638,7 @@ "On-call/日历管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 返回公共节假日日历,默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;其 `cal_id` 可填入 `extra_cal_ids`。`exchange.holiday` 返回共享的交易所休市日历,规则可直接读取其 `cal_id`。\n- 列表不分页,`total` 等于返回的条目数。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 与 `exchange.holiday` 返回共享日历(公共节假日,以及时区为交易所时区的交易日历),默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;节假日日历的 `cal_id` 可填入 `extra_cal_ids`,交易所日历的 `cal_id` 可直接在规则中引用。\n- 列表不分页,`total` 等于返回的条目数。", "href": "/zh/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "查询服务日历列表" @@ -32226,7 +32226,7 @@ }, "cal_id": { "type": "string", - "description": "服务日历 ID,来自 `POST /calendar/list`(如 `cal.xxxx`)。设置后,窗口只在该日历的工作日或休息日生效,由 `is_off` 决定。" + "description": "服务日历 ID,取自 `POST /calendar/list`(例如 `cal.xxxx`,或 `zh-cn.exchange.us` 这类共享日历)。设置后,时间窗只在 `is_off` 指定的工作日或休息日生效,且 `start` / `end` 按该日历的时区解读——交易所日历时即交易所时区——因此无论服务部署在哪里,时间窗含义都一致。" }, "is_off": { "type": "boolean", diff --git a/api-reference/openapi.en.json b/api-reference/openapi.en.json index 8b233492..7cf2524f 100644 --- a/api-reference/openapi.en.json +++ b/api-reference/openapi.en.json @@ -28189,7 +28189,7 @@ }, "cal_id": { "type": "string", - "description": "Service calendar ID from `POST /calendar/list` (for example `cal.xxxx`). When set, the window applies only on the calendar's workdays or days off, as chosen by `is_off`." + "description": "Service calendar ID from `POST /calendar/list` (for example `cal.xxxx`, or a shared calendar such as `zh-cn.exchange.us`). When set, the window applies only on the calendar's workdays or days off as chosen by `is_off`, and `start` / `end` are read in that calendar's timezone — for a trading calendar, the exchange's — so the window means the same thing wherever the service runs." }, "is_off": { "type": "boolean", @@ -39254,7 +39254,7 @@ "On-call/Calendars" ], "x-mint": { - "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` returns public holiday calendars, filtered to the caller's locale unless `no_locale` is `true`; use their `cal_id` in `extra_cal_ids`. `exchange.holiday` returns the shared stock-exchange calendars, whose `cal_id` a rule may read directly.\n- The list is not paginated; `total` equals the number of items.", + "content": "## Restrictions\n\n| Aspect | Value |\n| ------ | ----- |\n| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |\n| Permissions | None — any valid `app_key` can call this operation |\n\n## Usage\n\n- Without `kind`, personal calendars are returned. `region.official.holiday` and `exchange.holiday` return the shared calendars (public holidays, and stock-exchange trading days whose timezone is the exchange's), filtered to the caller's locale unless `no_locale` is `true`; use a holiday `cal_id` in `extra_cal_ids`, and an exchange `cal_id` directly in a rule.\n- The list is not paginated; `total` equals the number of items.", "href": "/en/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "List calendars" diff --git a/api-reference/openapi.zh.json b/api-reference/openapi.zh.json index c846e7a7..48316d37 100644 --- a/api-reference/openapi.zh.json +++ b/api-reference/openapi.zh.json @@ -28189,7 +28189,7 @@ }, "cal_id": { "type": "string", - "description": "服务日历 ID,来自 `POST /calendar/list`(如 `cal.xxxx`)。设置后,窗口只在该日历的工作日或休息日生效,由 `is_off` 决定。" + "description": "服务日历 ID,取自 `POST /calendar/list`(例如 `cal.xxxx`,或 `zh-cn.exchange.us` 这类共享日历)。设置后,时间窗只在 `is_off` 指定的工作日或休息日生效,且 `start` / `end` 按该日历的时区解读——交易所日历时即交易所时区——因此无论服务部署在哪里,时间窗含义都一致。" }, "is_off": { "type": "boolean", @@ -39254,7 +39254,7 @@ "On-call/日历管理" ], "x-mint": { - "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 返回公共节假日日历,默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;其 `cal_id` 可填入 `extra_cal_ids`。`exchange.holiday` 返回共享的交易所休市日历,规则可直接读取其 `cal_id`。\n- 列表不分页,`total` 等于返回的条目数。", + "content": "## 限制说明\n\n| 项目 | 说明 |\n| ---- | ---- |\n| 速率限制 | 每个账户 **1,000 次/分钟**;**50 次/秒** |\n| 权限要求 | 无 —— 持有有效的 `app_key` 即可调用 |\n\n## 使用说明\n\n- 不传 `kind` 时返回个人日历。`region.official.holiday` 与 `exchange.holiday` 返回共享日历(公共节假日,以及时区为交易所时区的交易日历),默认按调用方语言区域过滤,`no_locale` 为 `true` 时不过滤;节假日日历的 `cal_id` 可填入 `extra_cal_ids`,交易所日历的 `cal_id` 可直接在规则中引用。\n- 列表不分页,`total` 等于返回的条目数。", "href": "/zh/api-reference/on-call/calendars/calendar-list", "metadata": { "sidebarTitle": "查询服务日历列表"