Creating a Playbook Rule
Function
This API is used to create a playbook rule.
Calling Method
For details, see Calling APIs.
URI
POST /v1/{project_id}/workspaces/{workspace_id}/soc/playbooks/versions/{version_id}/rules
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Project ID. |
workspace_id |
Yes |
String |
Workspace ID. |
version_id |
Yes |
String |
Playbook version ID. |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
User token. It can be obtained by calling the IAM API used to obtain a user token. The value of X-Subject-Token in the response header is the user token. |
content-type |
Yes |
String |
application/json;charset=UTF-8 |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
rule |
Yes |
ConditionInfo object |
Details about playbook triggering rules. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
expression_type |
No |
String |
Expression type. The default value is common. This parameter is mandatory for event-triggered playbooks. |
conditions |
No |
Array of ConditionItem objects |
Trigger condition. This parameter is mandatory for event-triggered playbooks. |
logics |
No |
Array of strings |
Condition logic combination. This parameter is mandatory for event-triggered playbooks. |
cron |
No |
String |
Cron expression (scheduled task). This parameter is mandatory for timer-triggered playbooks. |
schedule_type |
No |
String |
Scheduled repetition type (second; hour; day; week). This parameter is mandatory for timer-triggered playbooks. |
start_type |
No |
String |
Playbook execution start type. IMMEDIATELY: The playbook is executed immediately after being created. CUSTOM: The playbook is executed at the time you specify for it. This parameter is mandatory for timer-triggered playbooks. |
end_type |
No |
String |
Playbook execution end type. FOREVER: The playbook will be executed permanently. CUSTOM: The playbook will end at the time you specify for it. This parameter is mandatory for timer-triggered playbooks. |
end_time |
No |
String |
End time of a scheduled task. This parameter is mandatory for timer-triggered playbooks. |
repeat_range |
No |
String |
Execution time: 2021-01-30T23:00:00Z+0800. This parameter is mandatory for timer-triggered playbooks. |
only_once |
No |
Boolean |
Whether to execute it only once. This parameter is mandatory for timer-triggered playbooks. |
execution_type |
No |
String |
Execution queue type. PARALLEL: The new task is executed concurrently with the previous task. This parameter is mandatory for timer-triggered playbooks. |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
X-request-id |
String |
Request ID. Format: request_uuid-timestamp-hostname. |
Parameter |
Type |
Description |
---|---|---|
code |
String |
Error code. |
message |
String |
Error message. |
data |
RuleInfo object |
Playbook trigger information. |
Parameter |
Type |
Description |
---|---|---|
id |
String |
Rule ID. |
project_id |
String |
Project ID. |
rule |
String |
Trigger rules. |
Status code: 400
Parameter |
Type |
Description |
---|---|---|
X-request-id |
String |
Request ID. Format: request_uuid-timestamp-hostname. |
Parameter |
Type |
Description |
---|---|---|
code |
String |
Error code. |
message |
String |
Error description. |
Example Requests
Create a playbook rule named condition_0 and set the expression type to all.
{ "rule" : { "expression_type" : "common", "conditions" : [ { "name" : "condition_0", "detail" : "123", "data" : [ "handle_status, ==, Open" ] } ], "logics" : [ "condition_0" ] } }
Example Responses
Status code: 200
Response to a successful request.
{ "code" : 0, "message" : "", "data" : { "id" : "909494e3-558e-46b6-a9eb-07a8e18ca62f", "project_id" : "909494e3-558e-46b6-a9eb-07a8e18ca62f", "rule" : "{\"expression_type\":\"common\",\"conditions\":[{\"name\":\"condition_0\",\"data\":[\"ref_order_id\",\"==\",\"123\"],\"detail\":\"123\"}],\"logics\":[\"condition_0\"]}" } }
SDK Sample Code
The SDK sample code is as follows.
Java
Create a playbook rule named condition_0 and set the expression type to all.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.secmaster.v2.region.SecMasterRegion; import com.huaweicloud.sdk.secmaster.v2.*; import com.huaweicloud.sdk.secmaster.v2.model.*; import java.util.List; import java.util.ArrayList; public class CreatePlaybookRuleSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); SecMasterClient client = SecMasterClient.newBuilder() .withCredential(auth) .withRegion(SecMasterRegion.valueOf("<YOUR REGION>")) .build(); CreatePlaybookRuleRequest request = new CreatePlaybookRuleRequest(); request.withWorkspaceId("{workspace_id}"); request.withVersionId("{version_id}"); CreateRuleInfo body = new CreateRuleInfo(); List<String> listRuleLogics = new ArrayList<>(); listRuleLogics.add("condition_0"); List<String> listConditionsData = new ArrayList<>(); listConditionsData.add("handle_status, ==, Open"); List<ConditionItem> listRuleConditions = new ArrayList<>(); listRuleConditions.add( new ConditionItem() .withName("condition_0") .withDetail("123") .withData(listConditionsData) ); ConditionInfo rulebody = new ConditionInfo(); rulebody.withExpressionType("common") .withConditions(listRuleConditions) .withLogics(listRuleLogics); body.withRule(rulebody); request.withBody(body); try { CreatePlaybookRuleResponse response = client.createPlaybookRule(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Python
Create a playbook rule named condition_0 and set the expression type to all.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdksecmaster.v2.region.secmaster_region import SecMasterRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdksecmaster.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = SecMasterClient.new_builder() \ .with_credentials(credentials) \ .with_region(SecMasterRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreatePlaybookRuleRequest() request.workspace_id = "{workspace_id}" request.version_id = "{version_id}" listLogicsRule = [ "condition_0" ] listDataConditions = [ "handle_status, ==, Open" ] listConditionsRule = [ ConditionItem( name="condition_0", detail="123", data=listDataConditions ) ] rulebody = ConditionInfo( expression_type="common", conditions=listConditionsRule, logics=listLogicsRule ) request.body = CreateRuleInfo( rule=rulebody ) response = client.create_playbook_rule(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
Create a playbook rule named condition_0 and set the expression type to all.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" secmaster "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := secmaster.NewSecMasterClient( secmaster.SecMasterClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreatePlaybookRuleRequest{} request.WorkspaceId = "{workspace_id}" request.VersionId = "{version_id}" var listLogicsRule = []string{ "condition_0", } var listDataConditions = []string{ "handle_status, ==, Open", } nameConditions:= "condition_0" detailConditions:= "123" var listConditionsRule = []model.ConditionItem{ { Name: &nameConditions, Detail: &detailConditions, Data: &listDataConditions, }, } expressionTypeRule:= "common" rulebody := &model.ConditionInfo{ ExpressionType: &expressionTypeRule, Conditions: &listConditionsRule, Logics: &listLogicsRule, } request.Body = &model.CreateRuleInfo{ Rule: rulebody, } response, err := client.CreatePlaybookRule(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
More
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
Status Code |
Description |
---|---|
200 |
Response to a successful request. |
400 |
Response message for failed requests. |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot