Search Alert Rule


Search for alert rules based on the search criteria.

Request Format

POST https://{apigw-address}/event-service/v2.1/alert-rules?action=search

Request Parameters (URI)

Name Location (Path/Query) Mandatory/Optional Data Type Description
orgId Query Mandatory String The organization ID which the asset belongs to. How to get orgId>>

Request Parameters (Body)

Name Mandatory/Optional Data Type Description
modelId Optional String The model ID. How to get modelID>>
measurepointId Optional String The measurement point ID. How to get pointId>>
expression Optional String

The query expression, which supports sql-like query. The supported logical operators are “and” and “or”, and query fields are as per the below.

  • ruleId and modelId: support operators “=” and “in”.
  • measurepointId and deviceStatus: support “is null” and operators “=” and “in”.
  • tags.*: supports operator “=”.

How to use expression>>

pagination Optional Pagination Request Struct Lists the paging requirements in a request. When not specified, 10 records are displayed per page by default. The maximum records per page is 1000 but for optimal performance, it is recommended to have not more than 50 records per page. You can use sorters to sort the response based on ruleId, modelId, measurepointId, deviceStatus, and orgId. For more details, see Pagination Request Struct.

Response Parameters

Name Data Type Description
data Array of AlertRule Struct The list of alert rule details. For more information, see AlertRule Struct.

AlertRule Struct

Name Data Type Description
orgId String The organization ID which the asset belongs to.
ruleId String The alert rule ID.
ruleDesc StringI18n The alert rule description.
modelId String The model ID.
measurepointId String The measurement point ID.
deviceStatus String The device status.
condition String The query expression. For example, “${temperature} = 19” indicates that the value of the measurement point “temperature” is 19. A slash “/” is used to express the hierarchical relationship, for which only one downward layer is supported now. For example, “${pointA/att1} = 18” indicates the “att1” attribute value of the measurement point “A” is 18.
isEnabled Boolean
  • true = the alert rule is enabled
  • false = the alert rule is not enabled
severityId String The alert severity ID.
severityDesc StringI18n The alert severity description.
contentId String The alert content ID.
contentDesc StringI18n The alert content description.
tags Map User-defined tags. (The Key and Value are of String type.)
isRoot Boolean
  • true = a root alert
  • false (default) = not a root alert
scope AssetNode struct Uses the assetNode struct to indicate the scope of the asset to which the alert applies to. For more information, see AssetNode Struct.
triggeringDelayTimer Integer The amount of time to delay triggering the alert. The unit is seconds with a range between [60 - 10800]. The alert will only be triggered when an anomaly that matches the alert rule occurs and does not return to normal within the set time. To trigger the alert immediately, set the time to 0.

AssetNode Struct

Name Required or Not Data Type Description
treeId true String The asset tree ID. When the response is “all”, it includes all the asset trees in the specified orgID.
assetId true String The asset ID.

Samples

Request Sample

url: https://{apigw-address}/event-service/v2.1/alert-rules?action=search&orgId=yourOrgId
method: POST
requestBody:
{
    "modelId": "EnOS_Solar_CombinerBox",
    "measurepointId": "CBX.BranchStateAttr"
}

Return Sample

{
    "pagination": {
        "pageNo": 1,
        "pageSize": 10,
        "totalSize": 2,
        "sortedBy": [{
            "field": "update_time",
            "order": "DESC"
        }]
    },
    "code": 0,
    "msg": "OK",
    "requestId": "a9689b9f-0cb6-4e47-a41c-bd459b687309",
    "data": [{
        "orgId": "yourOrgId",
        "ruleId": "zh_model_struct",
        "ruleDesc": {
            "defaultValue": "Grid is connected from converter",
            "i18nValue": {
                "en_US": "Grid is connected from converter",
                "zh_CN": "电网由变频器连接"
            }
        },
        "modelId": "zh_model",
        "measurepointId": "aa",
        "condition": "aa = 18",
        "isEnabled": true,
        "severityId": "WARN",
        "severityDesc": {
            "defaultValue": "WARN"
        },
        "contentId": "planetTemperature",
        "contentDesc": {
            "defaultValue": "连接"
        },
        "typeId": "warning_Type",
        "typeDesc": {
            "defaultValue": "connected"
        },
        "tags": {
            "key1": "v1"
        },
        "isRoot": false,
        "scope": [{
            "treeId": "ptde66nd",
            "assetId": "FbFy8qyz"
        }]
    },{
        "orgId": "yourOrgId",
        "ruleId": "zh_model_struct2",
        "ruleDesc": {
            "defaultValue": "Grid is connected from converter",
            "i18nValue": {
                "en_US": "Grid is connected from converter",
                "zh_CN": "电网由变频器连接"
            }
        },
        "modelId": "zh_model",
        "measurepointId": "aa",
        "condition": "aa = 18",
        "isEnabled": true,
        "severityId": "WARN",
        "severityDesc": {
            "defaultValue": "WARN"
        },
        "contentId": "planetTemperature",
        "contentDesc": {
            "defaultValue": "连接"
        },
        "typeId": "warning_Type",
        "typeDesc": {
            "defaultValue": "connected"
        },
        "tags": {
            "key1": "v1"
        },
        "isRoot": false,
        "scope": [{
            "treeId": "ptde66nd",
            "assetId": "FbFy8qyz"
        }]
    }]
}

Java SDK Sample

public void testSearchAlertRule() {
    private static String accessKey = "yourAppAccessKey";
    private static String secretKey = "yourAppSecretKey";
    private static String orgId = "yourOrgId";
    private static String url = "https://{apigw-address}";
    SearchAlertRuleRequest request = new SearchAlertRuleRequest();
    request.setOrgId(orgId);
    request.setExpression("deviceStatus = 'offline'");
    try {
        SearchAlertRuleResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
            .url(url)
            .getResponse(request, SearchAlertRuleResponse.class);
        System.out.println(response);
    } catch (Exception e) {
        System.out.print(e);
    }
}