Copilot commented on code in PR #13886:
URL: https://github.com/apache/skywalking/pull/13886#discussion_r3321927898


##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.
+
+- HTTP GET method.
+
 ```bash
 curl http://oap:17128/status/cluster/nodes
 ```
 
-### `/status/alarm/rules`
+```json
+{
+  "nodes": [
+    {
+      "host": "10.0.12.23",
+      "port": 11800,
+      "self": true
+    },
+    {
+      "host": "10.0.12.25",
+      "port": 11800,
+      "self": false
+    },
+    {
+      "host": "10.0.12.37",
+      "port": 11800,
+      "self": false
+    }
+  ]
+}
+```
+
+The `nodes` list all the nodes in the cluster. The size of the list should be 
exactly same as your cluster setup. The `host` and `port` are the address of 
the OAP node, which are used for OAP nodes communicating with each other. The 
`self` is a flag to indicate whether the node is the current node, others are 
remote nodes.
+
+### Alarm Runtime Status
+
+OAP calculates the alarm conditions in the memory based on the alarm rules and 
the metrics data. If the OAP cluster has multiple instances, each instance will 
calculate the alarm conditions independently. You can query from any OAP 
instance to get the all instances' alarm running status.
+
+The following APIs are exposed to make the alerting running kernel visible.
+
+#### /status/alarm/rules
+
+Return the list of alarm running rules.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    }
+  ]
+}
+```
+
+#### /status/alarm/rules/{ruleId}
+
+Return the detailed information of the alarm running rule.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_b_service",
+            "formattedMessage": "Service mock_b_service response time is more 
than 1000ms of last 10 minutes"
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_a_service",
+            "formattedMessage": "Service mock_a_service response time is more 
than 1000ms of last 10 minutes."
+          },
+          {
+            "scope": "SERVICE",
+            "name": "mock_c_service",
+            "formattedMessage": "Service mock_c_service response time is more 
than 1000ms of last 10 minutes."
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    }
+  ]
+}
+```
+
+- `additonalPeriod` is the additional period if the expression includes the 
[increase/rate 
function](../../../api/metrics-query-expression.md#trend-operation). This 
additional period is used to enlarge window size for calculating the trend 
value.
+- `runningEntities` is the entities that have metrics data and being 
calculated by the alarm rule.
+- `formattedMessages` is the result message according to the message template 
and the affected running entities.

Review Comment:
   The field names in this explanation don’t match the JSON examples: 
`additionalPeriod` is misspelled as `additonalPeriod`, and the JSON uses 
`formattedMessage` (singular) rather than `formattedMessages`. This can confuse 
users who copy/paste field names.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.
+
+- HTTP GET method.
+
 ```bash
 curl http://oap:17128/status/cluster/nodes
 ```
 
-### `/status/alarm/rules`
+```json
+{
+  "nodes": [
+    {
+      "host": "10.0.12.23",
+      "port": 11800,
+      "self": true
+    },
+    {
+      "host": "10.0.12.25",
+      "port": 11800,
+      "self": false
+    },
+    {
+      "host": "10.0.12.37",
+      "port": 11800,
+      "self": false
+    }
+  ]
+}
+```
+
+The `nodes` list all the nodes in the cluster. The size of the list should be 
exactly same as your cluster setup. The `host` and `port` are the address of 
the OAP node, which are used for OAP nodes communicating with each other. The 
`self` is a flag to indicate whether the node is the current node, others are 
remote nodes.
+
+### Alarm Runtime Status
+
+OAP calculates the alarm conditions in the memory based on the alarm rules and 
the metrics data. If the OAP cluster has multiple instances, each instance will 
calculate the alarm conditions independently. You can query from any OAP 
instance to get the all instances' alarm running status.
+
+The following APIs are exposed to make the alerting running kernel visible.
+
+#### /status/alarm/rules
+
+Return the list of alarm running rules.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    }
+  ]
+}
+```
+
+#### /status/alarm/rules/{ruleId}
+
+Return the detailed information of the alarm running rule.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_b_service",
+            "formattedMessage": "Service mock_b_service response time is more 
than 1000ms of last 10 minutes"
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_a_service",
+            "formattedMessage": "Service mock_a_service response time is more 
than 1000ms of last 10 minutes."
+          },
+          {
+            "scope": "SERVICE",
+            "name": "mock_c_service",
+            "formattedMessage": "Service mock_c_service response time is more 
than 1000ms of last 10 minutes."
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    }
+  ]
+}
+```
+
+- `additonalPeriod` is the additional period if the expression includes the 
[increase/rate 
function](../../../api/metrics-query-expression.md#trend-operation). This 
additional period is used to enlarge window size for calculating the trend 
value.
+- `runningEntities` is the entities that have metrics data and being 
calculated by the alarm rule.
+- `formattedMessages` is the result message according to the message template 
and the affected running entities.
 
-Lists registered alarm rules.
+#### `/status/alarm/{ruleId}/{entityName}`
 
-### `/status/alarm/{ruleId}`
+Return the running context of the alarm rule.
 
-Per-rule runtime status — current window state, last evaluation, the
-entities the rule has triggered against.
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "endTime": "2025-11-19T15:20:00.000",
+        "additionalPeriod": 0,
+        "size": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 0,
+        "silenceCountdown": 10,
+        "recoveryObservationCountdown": 0,
+        "currentState": "FIRING",
+        "entityName": "mock_b_service",
+        "windowValues": [
+          {
+            "index": 0,
+            "metrics": []
+          },
+          {
+            "index": 1,
+            "metrics": []
+          },
+          {
+            "index": 2,
+            "metrics": []
+          },
+          {
+            "index": 3,
+            "metrics": []
+          },
+          {
+            "index": 4,
+            "metrics": []
+          },
+          {
+            "index": 5,
+            "metrics": []
+          },
+          {
+            "index": 6,
+            "metrics": []
+          },
+          {
+            "index": 7,
+            "metrics": []
+          },
+          {
+            "index": 8,
+            "metrics": [
+              {
+                "name": "service_resp_time",
+                "timeBucket": 202511191519,
+                "value": "6000"
+              }
+            ]
+          },
+          {
+            "index": 9,
+            "metrics": []
+          }
+        ],
+        "mqeMetricsSnapshot": {
+          "service_resp_time": 
"[{\"metric\":{\"labels\":[]},\"values\":[{\"id\":\"202511191511\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191512\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191513\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191514\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191515\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191516\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191517\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191518\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191519\",\"doubleValue\":6000.0,\"isEmptyValue\":false},{\"id\":\"202511191520\",\"doubleValue\":0.0,\"isEmptyValue\":true}]}]"
+        },
+        "lastAlarmTime": "1763536823628",

Review Comment:
   `lastAlarmTime` is a `long` in the status payload, but this example shows it 
as a JSON string. The second instance in the same example uses a numeric value 
(`0`), so this is inconsistent and may mislead clients about the field type.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes

Review Comment:
   Endpoint headings are formatted inconsistently: some are wrapped in 
backticks (code style) while others are plain text. Consistent formatting makes 
the endpoint list easier to scan and avoids accidental Markdown rendering 
issues.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.
+
+- HTTP GET method.
+
 ```bash
 curl http://oap:17128/status/cluster/nodes
 ```
 
-### `/status/alarm/rules`
+```json
+{
+  "nodes": [
+    {
+      "host": "10.0.12.23",
+      "port": 11800,
+      "self": true
+    },
+    {
+      "host": "10.0.12.25",
+      "port": 11800,
+      "self": false
+    },
+    {
+      "host": "10.0.12.37",
+      "port": 11800,
+      "self": false
+    }
+  ]
+}
+```
+
+The `nodes` list all the nodes in the cluster. The size of the list should be 
exactly same as your cluster setup. The `host` and `port` are the address of 
the OAP node, which are used for OAP nodes communicating with each other. The 
`self` is a flag to indicate whether the node is the current node, others are 
remote nodes.
+
+### Alarm Runtime Status
+
+OAP calculates the alarm conditions in the memory based on the alarm rules and 
the metrics data. If the OAP cluster has multiple instances, each instance will 
calculate the alarm conditions independently. You can query from any OAP 
instance to get the all instances' alarm running status.
+
+The following APIs are exposed to make the alerting running kernel visible.
+
+#### /status/alarm/rules
+
+Return the list of alarm running rules.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    }
+  ]
+}
+```
+
+#### /status/alarm/rules/{ruleId}
+
+Return the detailed information of the alarm running rule.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_b_service",
+            "formattedMessage": "Service mock_b_service response time is more 
than 1000ms of last 10 minutes"
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_a_service",
+            "formattedMessage": "Service mock_a_service response time is more 
than 1000ms of last 10 minutes."
+          },
+          {
+            "scope": "SERVICE",
+            "name": "mock_c_service",
+            "formattedMessage": "Service mock_c_service response time is more 
than 1000ms of last 10 minutes."
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    }
+  ]
+}
+```
+
+- `additonalPeriod` is the additional period if the expression includes the 
[increase/rate 
function](../../../api/metrics-query-expression.md#trend-operation). This 
additional period is used to enlarge window size for calculating the trend 
value.
+- `runningEntities` is the entities that have metrics data and being 
calculated by the alarm rule.
+- `formattedMessages` is the result message according to the message template 
and the affected running entities.
 
-Lists registered alarm rules.
+#### `/status/alarm/{ruleId}/{entityName}`
 
-### `/status/alarm/{ruleId}`
+Return the running context of the alarm rule.
 
-Per-rule runtime status — current window state, last evaluation, the
-entities the rule has triggered against.
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "endTime": "2025-11-19T15:20:00.000",
+        "additionalPeriod": 0,
+        "size": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 0,
+        "silenceCountdown": 10,
+        "recoveryObservationCountdown": 0,
+        "currentState": "FIRING",
+        "entityName": "mock_b_service",
+        "windowValues": [
+          {
+            "index": 0,
+            "metrics": []
+          },
+          {
+            "index": 1,
+            "metrics": []
+          },
+          {
+            "index": 2,
+            "metrics": []
+          },
+          {
+            "index": 3,
+            "metrics": []
+          },
+          {
+            "index": 4,
+            "metrics": []
+          },
+          {
+            "index": 5,
+            "metrics": []
+          },
+          {
+            "index": 6,
+            "metrics": []
+          },
+          {
+            "index": 7,
+            "metrics": []
+          },
+          {
+            "index": 8,
+            "metrics": [
+              {
+                "name": "service_resp_time",
+                "timeBucket": 202511191519,
+                "value": "6000"
+              }
+            ]
+          },
+          {
+            "index": 9,
+            "metrics": []
+          }
+        ],
+        "mqeMetricsSnapshot": {
+          "service_resp_time": 
"[{\"metric\":{\"labels\":[]},\"values\":[{\"id\":\"202511191511\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191512\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191513\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191514\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191515\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191516\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191517\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191518\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191519\",\"doubleValue\":6000.0,\"isEmptyValue\":false},{\"id\":\"202511191520\",\"doubleValue\":0.0,\"isEmptyValue\":true}]}]"
+        },
+        "lastAlarmTime": "1763536823628",

Review Comment:
   `lastAlarmTime` is a `long` in the status payload, but this example shows it 
as a JSON string. The second instance in the same example uses a numeric value 
(`0`), so this is inconsistent and may mislead clients about the field type.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes

Review Comment:
   Endpoint headings are formatted inconsistently: some are wrapped in 
backticks (code style) while others are plain text. Consistent formatting makes 
the endpoint list easier to scan and avoids accidental Markdown rendering 
issues.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.

Review Comment:
   The cluster node list description has several grammatical issues (e.g., 
singular/plural mismatch, awkward phrasing) that make the documentation harder 
to understand.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.

Review Comment:
   The cluster node list description has several grammatical issues (e.g., 
singular/plural mismatch, awkward phrasing) that make the documentation harder 
to understand.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes

Review Comment:
   Endpoint headings are formatted inconsistently: some are wrapped in 
backticks (code style) while others are plain text. Consistent formatting makes 
the endpoint list easier to scan and avoids accidental Markdown rendering 
issues.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.

Review Comment:
   The cluster node list description has several grammatical issues (e.g., 
singular/plural mismatch, awkward phrasing) that make the documentation harder 
to understand.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.
+
+- HTTP GET method.
+
 ```bash
 curl http://oap:17128/status/cluster/nodes
 ```
 
-### `/status/alarm/rules`
+```json
+{
+  "nodes": [
+    {
+      "host": "10.0.12.23",
+      "port": 11800,
+      "self": true
+    },
+    {
+      "host": "10.0.12.25",
+      "port": 11800,
+      "self": false
+    },
+    {
+      "host": "10.0.12.37",
+      "port": 11800,
+      "self": false
+    }
+  ]
+}
+```
+
+The `nodes` list all the nodes in the cluster. The size of the list should be 
exactly same as your cluster setup. The `host` and `port` are the address of 
the OAP node, which are used for OAP nodes communicating with each other. The 
`self` is a flag to indicate whether the node is the current node, others are 
remote nodes.
+
+### Alarm Runtime Status
+
+OAP calculates the alarm conditions in the memory based on the alarm rules and 
the metrics data. If the OAP cluster has multiple instances, each instance will 
calculate the alarm conditions independently. You can query from any OAP 
instance to get the all instances' alarm running status.
+
+The following APIs are exposed to make the alerting running kernel visible.
+
+#### /status/alarm/rules
+
+Return the list of alarm running rules.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    }
+  ]
+}
+```
+
+#### /status/alarm/rules/{ruleId}
+
+Return the detailed information of the alarm running rule.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_b_service",
+            "formattedMessage": "Service mock_b_service response time is more 
than 1000ms of last 10 minutes"
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_a_service",
+            "formattedMessage": "Service mock_a_service response time is more 
than 1000ms of last 10 minutes."
+          },
+          {
+            "scope": "SERVICE",
+            "name": "mock_c_service",
+            "formattedMessage": "Service mock_c_service response time is more 
than 1000ms of last 10 minutes."
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    }
+  ]
+}
+```
+
+- `additonalPeriod` is the additional period if the expression includes the 
[increase/rate 
function](../../../api/metrics-query-expression.md#trend-operation). This 
additional period is used to enlarge window size for calculating the trend 
value.
+- `runningEntities` is the entities that have metrics data and being 
calculated by the alarm rule.
+- `formattedMessages` is the result message according to the message template 
and the affected running entities.

Review Comment:
   The field names in this explanation don’t match the JSON examples: 
`additionalPeriod` is misspelled as `additonalPeriod`, and the JSON uses 
`formattedMessage` (singular) rather than `formattedMessages`. This can confuse 
users who copy/paste field names.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.
+
+- HTTP GET method.
+
 ```bash
 curl http://oap:17128/status/cluster/nodes
 ```
 
-### `/status/alarm/rules`
+```json
+{
+  "nodes": [
+    {
+      "host": "10.0.12.23",
+      "port": 11800,
+      "self": true
+    },
+    {
+      "host": "10.0.12.25",
+      "port": 11800,
+      "self": false
+    },
+    {
+      "host": "10.0.12.37",
+      "port": 11800,
+      "self": false
+    }
+  ]
+}
+```
+
+The `nodes` list all the nodes in the cluster. The size of the list should be 
exactly same as your cluster setup. The `host` and `port` are the address of 
the OAP node, which are used for OAP nodes communicating with each other. The 
`self` is a flag to indicate whether the node is the current node, others are 
remote nodes.
+
+### Alarm Runtime Status
+
+OAP calculates the alarm conditions in the memory based on the alarm rules and 
the metrics data. If the OAP cluster has multiple instances, each instance will 
calculate the alarm conditions independently. You can query from any OAP 
instance to get the all instances' alarm running status.
+
+The following APIs are exposed to make the alerting running kernel visible.
+
+#### /status/alarm/rules
+
+Return the list of alarm running rules.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    }
+  ]
+}
+```
+
+#### /status/alarm/rules/{ruleId}
+
+Return the detailed information of the alarm running rule.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_b_service",
+            "formattedMessage": "Service mock_b_service response time is more 
than 1000ms of last 10 minutes"
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_a_service",
+            "formattedMessage": "Service mock_a_service response time is more 
than 1000ms of last 10 minutes."
+          },
+          {
+            "scope": "SERVICE",
+            "name": "mock_c_service",
+            "formattedMessage": "Service mock_c_service response time is more 
than 1000ms of last 10 minutes."
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    }
+  ]
+}
+```
+
+- `additonalPeriod` is the additional period if the expression includes the 
[increase/rate 
function](../../../api/metrics-query-expression.md#trend-operation). This 
additional period is used to enlarge window size for calculating the trend 
value.
+- `runningEntities` is the entities that have metrics data and being 
calculated by the alarm rule.
+- `formattedMessages` is the result message according to the message template 
and the affected running entities.
 
-Lists registered alarm rules.
+#### `/status/alarm/{ruleId}/{entityName}`
 
-### `/status/alarm/{ruleId}`
+Return the running context of the alarm rule.
 
-Per-rule runtime status — current window state, last evaluation, the
-entities the rule has triggered against.
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "endTime": "2025-11-19T15:20:00.000",
+        "additionalPeriod": 0,
+        "size": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 0,
+        "silenceCountdown": 10,
+        "recoveryObservationCountdown": 0,
+        "currentState": "FIRING",
+        "entityName": "mock_b_service",
+        "windowValues": [
+          {
+            "index": 0,
+            "metrics": []
+          },
+          {
+            "index": 1,
+            "metrics": []
+          },
+          {
+            "index": 2,
+            "metrics": []
+          },
+          {
+            "index": 3,
+            "metrics": []
+          },
+          {
+            "index": 4,
+            "metrics": []
+          },
+          {
+            "index": 5,
+            "metrics": []
+          },
+          {
+            "index": 6,
+            "metrics": []
+          },
+          {
+            "index": 7,
+            "metrics": []
+          },
+          {
+            "index": 8,
+            "metrics": [
+              {
+                "name": "service_resp_time",
+                "timeBucket": 202511191519,
+                "value": "6000"
+              }
+            ]
+          },
+          {
+            "index": 9,
+            "metrics": []
+          }
+        ],
+        "mqeMetricsSnapshot": {
+          "service_resp_time": 
"[{\"metric\":{\"labels\":[]},\"values\":[{\"id\":\"202511191511\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191512\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191513\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191514\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191515\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191516\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191517\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191518\",\"doubleValue\":0.0,\"isEmptyValue\":true},{\"id\":\"202511191519\",\"doubleValue\":6000.0,\"isEmptyValue\":false},{\"id\":\"202511191520\",\"doubleValue\":0.0,\"isEmptyValue\":true}]}]"
+        },
+        "lastAlarmTime": "1763536823628",

Review Comment:
   `lastAlarmTime` is a `long` in the status payload, but this example shows it 
as a JSON string. The second instance in the same example uses a numeric value 
(`0`), so this is inconsistent and may mislead clients about the field type.



##########
docs/en/setup/backend/admin-api/status.md:
##########
@@ -36,36 +36,395 @@ to redact configuration values whose key contains any 
listed substring.
 
 ## Endpoints
 
-### `/status/cluster/nodes`
+### /status/cluster/nodes
 
 Returns the OAP cluster peer list as the cluster module sees it. Useful
 for confirming that every node has joined and is reporting back.
 
+The OAP cluster is a set of OAP servers that work together to provide a 
scalable and reliable service. The OAP cluster supports [various cluster 
coordinator](../backend-cluster.md) to manage the cluster membership and the 
communication. This API provides capability to query the node list in the 
cluster from every OAP node perspective. If the cluster coordinator doesn't 
work properly, the node list may be incomplete or incorrect. So, we recommend 
you to check the node list when set up a cluster.
+
+- HTTP GET method.
+
 ```bash
 curl http://oap:17128/status/cluster/nodes
 ```
 
-### `/status/alarm/rules`
+```json
+{
+  "nodes": [
+    {
+      "host": "10.0.12.23",
+      "port": 11800,
+      "self": true
+    },
+    {
+      "host": "10.0.12.25",
+      "port": 11800,
+      "self": false
+    },
+    {
+      "host": "10.0.12.37",
+      "port": 11800,
+      "self": false
+    }
+  ]
+}
+```
+
+The `nodes` list all the nodes in the cluster. The size of the list should be 
exactly same as your cluster setup. The `host` and `port` are the address of 
the OAP node, which are used for OAP nodes communicating with each other. The 
`self` is a flag to indicate whether the node is the current node, others are 
remote nodes.
+
+### Alarm Runtime Status
+
+OAP calculates the alarm conditions in the memory based on the alarm rules and 
the metrics data. If the OAP cluster has multiple instances, each instance will 
calculate the alarm conditions independently. You can query from any OAP 
instance to get the all instances' alarm running status.
+
+The following APIs are exposed to make the alerting running kernel visible.
+
+#### /status/alarm/rules
+
+Return the list of alarm running rules.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleList": [
+          {
+            "id": "service_percentile_rule"
+          },
+          {
+            "id": "service_resp_time_rule"
+          }
+        ]
+      }
+    }
+  ]
+}
+```
+
+#### /status/alarm/rules/{ruleId}
+
+Return the detailed information of the alarm running rule.
+
+- HTTP GET method.
+
+```json
+{
+  "oapInstances": [
+    {
+      "address": "127.0.0.1_11800",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_b_service",
+            "formattedMessage": "Service mock_b_service response time is more 
than 1000ms of last 10 minutes"
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    },
+    {
+      "address": "127.0.0.1_11801",
+      "status": {
+        "ruleId": "service_resp_time_rule",
+        "expression": "sum(service_resp_time > 1000) >= 1",
+        "period": 10,
+        "silencePeriod": 10,
+        "recoveryObservationPeriod": 2,
+        "additionalPeriod": 0,
+        "includeEntityNames": [],
+        "excludeEntityNames": [],
+        "includeEntityNamesRegex": "",
+        "excludeEntityNamesRegex": "",
+        "runningEntities": [
+          {
+            "scope": "SERVICE",
+            "name": "mock_a_service",
+            "formattedMessage": "Service mock_a_service response time is more 
than 1000ms of last 10 minutes."
+          },
+          {
+            "scope": "SERVICE",
+            "name": "mock_c_service",
+            "formattedMessage": "Service mock_c_service response time is more 
than 1000ms of last 10 minutes."
+          }
+        ],
+        "tags": [
+          {
+            "key": "level",
+            "value": "WARNING"
+          }
+        ],
+        "hooks": [
+          "webhook.default",
+          "wechat.default"
+        ],
+        "includeMetrics": [
+          "service_resp_time"
+        ]
+      }
+    }
+  ]
+}
+```
+
+- `additonalPeriod` is the additional period if the expression includes the 
[increase/rate 
function](../../../api/metrics-query-expression.md#trend-operation). This 
additional period is used to enlarge window size for calculating the trend 
value.
+- `runningEntities` is the entities that have metrics data and being 
calculated by the alarm rule.
+- `formattedMessages` is the result message according to the message template 
and the affected running entities.

Review Comment:
   The field names in this explanation don’t match the JSON examples: 
`additionalPeriod` is misspelled as `additonalPeriod`, and the JSON uses 
`formattedMessage` (singular) rather than `formattedMessages`. This can confuse 
users who copy/paste field names.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to