Create Stream Rule

Creates a new stream rule.

Required Permissions

Requires the ADMIN role or higher.

HTTP Request

POST /api/sonar/stream-rules
cURL Example
curl -H "Authorization: Bearer <API_KEY>" \
     -d priority="HIGH" \
     -d name="Access to known botnet networks" \
     -d msg="Access to known botnet networks: $dst_ip" \
     -d schema_code="session" \
     -d commands="[{'template_id': 3, 'query': 'matchnet invert=t field=dst_ip guid=697393b6-aecf-4e9d-a32c-8724cd8f067e verify=f', 'field_name': 'dst_ip', 'args':{'subnet':'697393b6-aecf-4e9d-a32c-8724cd8f067e'}}]" \
     -X POST \
     https://HOSTNAME/api/sonar/stream-rules
Request Parameters
KeyRequiredTypeDescriptionNote
priorityYesStringPriorityLOW or MEDIUM or HIGH.
guidNoStringStream rule GUID36 characters
nameYesStringStream rule nameMinimum 1 to maximum 255 characters
descriptionNoStringStream rule descriptionMaximum 2,000 characters
msgYesStringMessage templateMinimum 1 to maximum 2,000 characters
enabledNoBooleanWhether the stream rule is enabled or nottrue or false
category_guidNoStringStream rule category GUID36 characters
schema_codeYesStringLog schema codeMinimum 1 to maximum 50 characters
logger_guidsYesArrayLogger GUID list
commandsYesArrayList of stream rulesAt least one command required. Refer to the below description.
address_group_guidNoStringAddress group GUID36 characters
address_fieldNoStringAddress fieldAddress group field name. Maximum 50 characters.
ticket_repo_guidNoStringTicket repository GUID36 characters. If not specified, a ticket is not generated.
ticket_assignee_guidNoStringTicket assignee GUIDIf specified, ticket is assigned automatically.
ticket_suppress_intervalNo32-bit integerSuppression period for duplicated ticket (in seconds)If set to 0 or not specified, duplicate tickets are not merged.
event_suppress_intervalNo32-bit integerSuppression period for duplicated event (in seconds)If set to 0 or not specified, duplicate events are not merged.
suppress_keyNoStringSuppress key fieldMaximum 2,000 characters. Macro in $field format available.
keep_aliveNoBooleanWhether to keep the suppression timer alivetrue to keep the timer alive, false to reset it.
audit_category_guidNoStringAudit category GUID36 characters. If not specified, an auto audit request is not sent.
auditor_guidNoStringAuditor GUID36 characters. If not specified, the department head is assigned as default.
audit_daysNo32-bit integerAudit due dateMinimum 1 to maximum 365 days
employee_key_fieldNoStringEmployee number fieldMaximum 50 characters. If not specified, an auto audit request is not sent.
alarm_group_guidNoStringAlarm group GUID36 characters
field_orderNoStringEvidence field output orderMaximum 2,000 characters
source_typeNoStringSource typeLOGGER or LOGGER_MODEL. Default: LOGGER
logger_model_guidsNoString listLogger model GUID listUsed when source_type is LOGGER_MODEL. Separated by ,
reviewer_guidNoStringReviewer account GUID36 characters
user_noteNoStringScenario summary

Each array element in commands is defined as follows:

KeyRequiredTypeDescriptionNote
template_idYes32-bit integerStream rule command template ID
queryYesStringQuery string portion
field_nameNoStringTarget field name
argsNoMapArgument key/value
invertNoBooleanWhether to use an invert match option

Success Response

{
  "guid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Error Responses

Required argument is missing

HTTP status code 400

{
  "error_code": "null-argument",
  "error_msg": "name should be not null"
}
Invalid argument length

HTTP status code 400

{
  "error_code": "invalid-argument",
  "error_msg": "'name' must be shorter than or equal to 255 characters."
}
Invalid priority value

HTTP status code 400

{
  "error_code": "invalid-argument",
  "error_msg": "priority should be one of 'LOW', 'MEDIUM', 'HIGH'."
}
Identifier is not in valid GUID format

HTTP status code 400

{
  "error_code": "invalid-param-type",
  "error_msg": "category_guid should be guid type."
}
The logger list is missing when the detection target is LOGGER

HTTP status code 400

{
  "error_code": "null-argument",
  "error_msg": "logger_guids should be not null"
}
The detection command list is not valid JSON

HTTP status code 400

{
  "error_code": "invalid-argument",
  "error_msg": "'commands' parameter should follow valid JSON syntax"
}
field_order contains a pipe character

HTTP status code 400

{
  "error_code": "invalid-argument",
  "error_msg": "field_order doesn't allow pipe characters."
}
No detection command is specified

HTTP status code 500

{
  "error_code": "illegal-state",
  "error_msg": "cannot create rule with empty command: Access to known botnet networks"
}
Log schema is not found

HTTP status code 500

{
  "error_code": "illegal-state",
  "error_msg": "schema not found: session"
}
Rule name is duplicated

HTTP status code 500

{
  "error_code": "illegal-state",
  "error_msg": "duplicated stream rule name: Access to known botnet networks"
}
Permission denied

HTTP status code 500

{
  "error_code": "illegal-state",
  "error_msg": "no-permission"
}