This documentation supports an earlier version of BMC Helix Operations Management.

To view the documentation for the latest version, select 23.3 from the Product version picker.

Event management endpoints in the REST API


The following section provides a list of supported endpoints and an overview about running these endpoints. Before you run an endpoint, you must authenticate yourself. For more information, see  Access and authentication for the REST API Open link


Event classes

You can create, update, delete, and get details of event classes by running APIs.

Important

Event class slot nameEvent class slot data typeSlot creationExample

Same name

Same data type

Allowed

Same name

Different data type

Not recommended. The event ingestion works, however, the event search has issues.

POST /events/classes

The following video (3:11) created by BMC Customer Support describes how to create an event class with the REST API.

 https://youtu.be/XOU_zFrqUFQ

Important

Make sure that you specify the request body only in the English locale.

Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/classes
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
nameStringYesName with which you want to create the event class.

parentClassName

StringNo

Name of the parent class under which you want to create the class. This value must be EVENT class.

Default: EVENT

attributes

Object (List)Yes

List of event slots that you want to create for the new event class.

Tips:

  • You can specify a maximum of 400 event slots in an event class. This limit is inclusive of slots in both the parent and child classes. This limit does not apply to the EVENT (base) class.

  • Event slots that are marked for deduplication are not mandatory. If you choose not to specify a value for these slots, a blank value is considered that might cause event deduplication.

The following parameters are supported:

  • name
    Name of the slot.
  • dataType
    Data type you want to specify for the slot.
    For more information, see the list of supported data types.
  • default
    (Optional) Default value that you want to specify for the slot.
    Important:
    When you create an event class with the custom enumeration as an attribute, make sure that the default value for the attribute equals one of the values specified in the custom enumeration. To learn how to manage custom enumerations, see Custom enumeration management endpoints in the REST API.

  • enum
    Indicates whether the slot must have enumeration values. For out-of-the-box and custom enumeration data types, the value of this parameter is mandatory and you must set it as true. If you do not set the value, the value false is set automatically. For non-enumeration data types, the value is optional and you can set it to false. To learn more about enumeration data types, see Slot data types.
  • allFacet
    (Optional) Facets control aspects of a class instance’s processing and they control values that a slot can have. You can assign the following facet types:
    • Mandatory
    • Read-only
    • Hidden
    • Dup-detect
    For more information, see the list of supported facets.

Request body

{
			"name": "<class_name>",
			"parentClassName": "<parent_classname>",
			"attributes": [
				{
   					"name":"<slot_name1>",
   					"dataType":"<slot_datatype>",
   					"default":"<default_value>",
   					"enum":<enum>,
   					"allFacet":[
       					{
        				"name":"<facet1>",
        				"value":"<value>"
       					},
						{
        				"name":"<facet2>",
        				"value":"<value>"
       					}
    				]
   				},
				{
					"name": "<slot_name2>",
					"dataType": "<slot_datatype>"
				}
			]
}

Example request body

{
			"name": "NAGIOS_EV",
			"parentClassName": "EVENT",
			"attributes": [
				{
   					"name":"pn_severity",
   					"dataType":"SEVERITY",
   					"default":"WARNING",
   					"enum":true,
   					"allFacet":[
       					{
        					"name":"mandatory",
        					"value":"true"
      					 }
   					 ]
   				},
				{
					"name": "N_SERVICEPROBLEMID",
					"dataType": "INTEGER"
				}
			]
		}

Here, ROUTER_STATE, custom_slot_german, and custom_slot_chinese are custom enumeration names.

For information about managing custom enumerations, see Custom enumeration management endpoints in the REST API.

{
  "name": "custom_class_enum_display",
  "parentClassName": "EVENT",
  "attributes": [
    {
      "name": "ROUTER_STATE",
      "dataType": "ROUTER_STATE",
      "default": "UP",
      "enum": true,
      "allFacet": []
    },
    {
      "name": "custom_slot_german",
      "dataType": "custom_slot_german",
      "default": "open",
      "enum": true,
      "allFacet": [
        {
          "name": "dup_detect",
          "value": "true"
        }
      ]
    },
    {
      "name": "custom_slot_chinese",
      "dataType": "custom_slot_chinese",
      "default": "minor",
      "enum": true,
      "allFacet": [
        {
          "name": "dup_detect",
          "value": "true"
        }
      ]
    }
  ]
}

Successful response

{
    "responseTimeStamp": 1600258296455,
    "statusCode": "OK",
    "statusMsg": "[Successfully created event class.]",
    "resourceId": [
        "c48b5ac9-f815-11ea-9387-4b66d296b3bd"
    ],
    "resourceName": null,
    "failedResource": null

Unsuccessful responses

Scenario 1: Duplicate class

{
"responseTimeStamp": 1600423987155,
"statusCode": "EVCLASS_ALREADY_EXIST",
"statusMsg": "[Failed to create event class, entry with same name already exists]",
"resourceId": null,
"resourceName": null,
"failedResource": null
}

Scenario 2: Invalid parent class

{
"responseTimeStamp": 1600424373056,
"statusCode": "PARENTCLASS_NOT_EXIST",
"statusMsg": "[Failed to create event class, parent class doesn't exists]",
"resourceId": null,
"resourceName": null,
"failedResource": null
}

Scenario 3: Mandatory field (class name) missing

[
{
"key": "validation.schema.required",
"level": "ERROR",
"message": "Object has missing required properties ([\"name\"])",
"additionalInfo": []
}
]

Scenario 4:

  • Enum value missing for enum data type
  • Invalid enum value for enum data type 
{    "responseTimeStamp": 1600425222656, 
     "statusCode": "ENUM_NOT_EXIST",
     "statusMsg": "[Validation failed, enum doesn't exist]",
     "resourceId": null, 
     "resourceName": null, 
     "failedResource": null
}


{
    "responseTimeStamp": 1567511499957,
    "statusCode": "400",
    "statusMsg": "Bad Request : Enum value is either not supplied or false for data type PRIORITY"
}

Back to top

PUT /events/classes

While updating an event class:

You CanYou Cannot

Add new slots to the existing event class.

Rename the slot.

Update the default slot value and facets.

Change the slot data type and enum information.

To delete slots of custom classes and custom slots of out-the-box classes, see Delete event slots.

Important

Make sure that you specify the request body only in the English locale.

Request URL
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes/<event_class_identifier>
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/classes/91063dd6-ca15-11e9-901e-df18c2b43854
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details (in the request URL)


Parameter NameValue TypeMandatoryDescription

event_class_identifier

StringYesUnique name of ID of the event class.

Request body

{
    "attributes":[
     {
   			"name":"<slot_name1>",
   			"dataType":"<slot_datatype>",
   			"default":"<default_value>",
   			"enum":<enum>,
   			"allFacet":[
       			{
        			"name":"<facet1>",
        			"value":"<value>"
       			},
				{
        			"name":"<facet2>",
        			"value":"<value>"
       			}
    		]
   	}
    ]
}

Parameter details (in the request body)


Parameter NameValue TypeMandatoryDescription

attributes

Object (List)Yes

List of new attributes you want to add in the existing event class.

Important:

You can specify a maximum of 400 event slots in an event class. This limit is inclusive of slots in both the parent and child classes. This limit does not apply to the EVENT (base) class.

Example request body

{
    "attributes":[
     {
        "name":"pn_slot",
        "dataType":"STRING",
        "enum":false
     }
    ]
}

Successful response

{
    "responseTimeStamp": 1600258534062,
    "statusCode": "OK",
    "statusMsg": "[Successfully updated event class.]",
    "resourceId": [
        "c48b5ac9-f815-11ea-9387-4b66d296b3bd"
    ],
    "resourceName": null,
    "failedResource": null
}

Unsuccessful responses

Scenario 1: Valid ID, same attributes, but  incorrect data type

{
    "responseTimeStamp": 1600258908501,
    "statusCode": "ATTR_EXIST_WITH_DIFF_TYPE",
    "statusMsg": "[Validation failed, class attribute already exist with different data type]",
    "resourceId": null,
    "resourceName": null,
    "failedResource": null
}

Scenario 2: New enum value for enum data type

{
    "responseTimeStamp": 1567574692841,
    "statusCode": "400",
    "statusMsg": "Bad Request : Enum value is either not supplied or false for data type SEVERITY"
}

Scenario 3: Invalid class ID

{
    "responseTimeStamp": 1600258782398,
    "statusCode": "EVCLASS_NOT_EXIST",
    "statusMsg": "[Failed to update event class, given entry doesn't exist in database]",
    "resourceId": null,
    "resourceName": null,
    "failedResource": null
}

Back to top

DELETE  /events/classes

Important

You can only delete custom event classes and not out-of-the-box event classes.

Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes/<event_class_identifier>
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/classes/91063dd6-ca15-11e9-901e-df18c2b43854
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


NameValue TypeMandatoryDescription

idType

StringYes

Type of identifier by which you want to perform the operation.

The value can be id or name based on the resources passed in the request body.

resources

ListYes

Comma-separated list of event classes to be deleted.

The value can be a single event class name or ID or a list of event class names or IDs. This value must match the idType specified.

Successful responses

{
    "responseTimeStamp": 1600258614402,
    "statusCode": "OK",
    "statusMsg": "[Event class deletion successful.]",
    "resourceId": [
        "c48b5ac9-f815-11ea-9387-4b66d296b3bd"
    ],
    "resourceName": null,
    "failedResource": null
}

Unsuccessful response

Scenario: Non-existing or out-of-the-box event class deletion failed

{
    "responseTimeStamp": 1600258192867,
    "statusCode": "EVCLASS_NOT_EXIST",
    "statusMsg": "[Operation failed, given entry doesn't exist in database or is a default entry]",
    "resourceId": null,
    "resourceName": null,
    "failedResource": null
}

Scenario: Deleting class with an open event

{    "responseTimeStamp": 1600425861254,
     "statusCode": "409",
     "statusMsg": "[There are 6 open events for class - testclass. Please close these events and retry deleting the class.]",  
     "resourceId": null,
     "resourceName": null, 
     "failedResource": null
}

Back to top

GET  /events/classes
Request URL
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes
Example URL
https://HostA.bmc.com/events-service/api/v1.0/events/classes
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Successful response

{
    "responseTimeStamp": 1600259415190,
    "statusCode": "200",
    "statusMsg": "[Event Classes found successfully for specified Tenant:690188083]",
    "classList": [
        "PATROL_EV",
        "ALARM",
        "INCIDENT_INFO",
        "EVENT",
        "HELIX_SM_EV",
        "ANOMALY"
    ],
    "eventClassList": [
        {...
...    },
                {
                    "name": "an_mean",
                    "dataType": "STRING",
                    "default": "",
                    "allFacet": [],
                    "enumElements": [],
                    "enum": false
                }
            ]
        }
    ]
}

See the text file with a dump of event classes.

Back to top

GET  /events/classes 
Request URL
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes/<event_class_identifier/event_class_name>?idType=<id/name>
Example request URL: Get event class by ID
https://HostA.bmc.com/events-service/api/v1.0/events/classes/91063dd6-ca15-11e9-901e-df18c2b43854?idType=id
Example request URL: Get event class by name, where the event class name is custom_class
https://HostA.bmc.com/events-service/api/v1.0/events/classes/custom_class?idType=name
Example request URL: Get event class by name, where the event class name is EVENT
https://HostA.bmc.com/events-service/api/v1.0/events/classes/EVENT?idType=name

Parameter details (in the request URL)


Parameter NameValue TypeMandatoryDescription
event_class_identifier/event_class_nameStringYesUnique name of ID of the event class.

idType=id/name

StringYes

Type of identifier by which you want to perform the operation.

The value can be id or name based on the class_identifier value passed in the request URL.

Successful response

{
    "responseTimeStamp": 1567057922470,
    "statusCode": "200",
    "statusMsg": "[Event Class found successfully for specified ID or Name.]",
    "eventClass": {
        "id": "91063dd6-ca15-11e9-901e-df18c2b43854",
        "name": "EVENT",
        "parentClassName": "",
        "childClassNames": [
            "PATROL_EV",
            "ALARM"
        ],
        "allAttributes": [...
... },
            {
                "name": "_relation_source",
                "dataType": "STRING",
                "default": "",
                "allFacet": [
                    {
                        "name": "read_only",
                        "value": "true"
                    }
                ],
                "enumElements": [],
                "enum": false
            }
        ]
    }
}

See the text file with  details of the EVENT base event class.

{
  "responseTimeStamp": 1672236857739,
  "statusCode": "200",
  "statusMsg": "[Event Class found successfully for specified ID or Name.]",
  "eventClass": {
    "id": "336190c0-3adb-4ed9-a83c-5370d273d001",
    "name": "LOGALERT_EV",
    "parentClassName": "EVENT",
    "childClassNames": [
      "custom_class_3qFOY1Nv",
      "custom_class_Q7kGQkYz"
    ],
    "allAttributes": [
      {
        "name": "alert_id",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "mandatory",
            "value": "true"
          },
          {
            "name": "dup_detect",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_name",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_starttime",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_endtime",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_query",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_launch_params",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_id_pcssj",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_slotJagJHqPf",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "pn_slotJagJHqPf",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_id_eoadt",
        "dataType": "INTEGER",
        "default": "0",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_severity_eoadt",
        "dataType": "SEVERITY",
        "default": "WARNING",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [
          {
            "index": 10,
            "value": "UNKNOWN",
            "label": "Unknown"
          },
          {
            "index": 20,
            "value": "OK",
            "label": "Ok"
          },
          {
            "index": 30,
            "value": "INFO",
            "label": "Information"
          },
          {
            "index": 40,
            "value": "WARNING",
            "label": "Warning"
          },
          {
            "index": 50,
            "value": "MINOR",
            "label": "Minor"
          },
          {
            "index": 60,
            "value": "MAJOR",
            "label": "Major"
          },
          {
            "index": 70,
            "value": "CRITICAL",
            "label": "Critical"
          }
        ],
        "enum": true
      },
      {
        "name": "ng_history_eoadt",
        "dataType": "STRING_LIST",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_name_eoadt",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_thresh_above_eoadt",
        "dataType": "BOOLEAN",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [
          {
            "index": 10,
            "value": "FALSE",
            "label": "False"
          },
          {
            "index": 20,
            "value": "TRUE",
            "label": "True"
          }
        ],
        "enum": true
      },
      {
        "name": "ng_float_slot_eoadt",
        "dataType": "FLOAT",
        "default": "0",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_identifier",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_arrival_time",
        "dataType": "DATE",
        "default": "0",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_modified_time",
        "dataType": "DATE",
        "default": "0",
        "allFacet": [
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_repeat_count",
        "dataType": "INTEGER",
        "default": "0",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_tenant_id",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_tenant_name",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_ci_id",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_unmapped_data",
        "dataType": "OBJECT",
        "default": "[]",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_lifecycle_time",
        "dataType": "LONG",
        "default": "0",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_node_id",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_service_id",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_model",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "class",
        "dataType": "STRING",
        "default": "EVENT",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "source_identifier",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "mandatory",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "source_hostname",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "topology_lookup",
            "value": "name,short_name"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "source_address",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "source_port",
        "dataType": "INTEGER",
        "default": "0",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "location",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "msg",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "mandatory",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "details",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alias",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "creation_time",
        "dataType": "DATE",
        "default": "0",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "tags",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "user_assigned",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "incident_id",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "incident_company",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "componentalias",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "cdmclass",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "modelname",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "instancename",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "status",
        "dataType": "STATUS",
        "default": "OPEN",
        "allFacet": [],
        "enumElements": [
          {
            "index": 0,
            "value": "OPEN",
            "label": "Open"
          },
          {
            "index": 10,
            "value": "ACK",
            "label": "Acknowledged"
          },
          {
            "index": 20,
            "value": "ASSIGNED",
            "label": "Assigned"
          },
          {
            "index": 30,
            "value": "CLOSED",
            "label": "Closed"
          },
          {
            "index": 40,
            "value": "BLACKOUT",
            "label": "Blackout"
          }
        ],
        "enum": true
      },
      {
        "name": "severity",
        "dataType": "SEVERITY",
        "default": "MINOR",
        "allFacet": [],
        "enumElements": [
          {
            "index": 10,
            "value": "UNKNOWN",
            "label": "Unknown"
          },
          {
            "index": 20,
            "value": "OK",
            "label": "Ok"
          },
          {
            "index": 30,
            "value": "INFO",
            "label": "Information"
          },
          {
            "index": 40,
            "value": "WARNING",
            "label": "Warning"
          },
          {
            "index": 50,
            "value": "MINOR",
            "label": "Minor"
          },
          {
            "index": 60,
            "value": "MAJOR",
            "label": "Major"
          },
          {
            "index": 70,
            "value": "CRITICAL",
            "label": "Critical"
          }
        ],
        "enum": true
      },
      {
        "name": "priority",
        "dataType": "PRIORITY",
        "default": "PRIORITY_5",
        "allFacet": [],
        "enumElements": [
          {
            "index": 10,
            "value": "PRIORITY_5",
            "label": "Lowest"
          },
          {
            "index": 20,
            "value": "PRIORITY_4",
            "label": "Low"
          },
          {
            "index": 30,
            "value": "PRIORITY_3",
            "label": "Moderate"
          },
          {
            "index": 40,
            "value": "PRIORITY_2",
            "label": "High"
          },
          {
            "index": 50,
            "value": "PRIORITY_1",
            "label": "Highest"
          }
        ],
        "enum": true
      },
      {
        "name": "category",
        "dataType": "CATEGORY",
        "default": "OPERATIONS_MANAGEMENT",
        "allFacet": [],
        "enumElements": [
          {
            "index": 0,
            "value": "",
            "label": ""
          },
          {
            "index": 100,
            "value": "SLA_MANAGEMENT",
            "label": "SLA Management"
          },
          {
            "index": 110,
            "value": "CAPACITY_MANAGEMENT",
            "label": "Capacity Management"
          },
          {
            "index": 120,
            "value": "SERVICE_CONTINUITY_MANAGEMENT",
            "label": "Service Continuity Management"
          },
          {
            "index": 130,
            "value": "AVAILABILITY_MANAGEMENT",
            "label": "Availability Management"
          },
          {
            "index": 140,
            "value": "INCIDENT_MANAGEMENT",
            "label": "Incident Management"
          },
          {
            "index": 150,
            "value": "CONFIGURATION_MANAGEMENT",
            "label": "Configuration Management"
          },
          {
            "index": 160,
            "value": "RELEASE_MANAGEMENT",
            "label": "Release Management"
          },
          {
            "index": 170,
            "value": "PROBLEM_MANAGEMENT",
            "label": "Problem Management"
          },
          {
            "index": 180,
            "value": "CHANGE_MANAGEMENT",
            "label": "Change Management"
          },
          {
            "index": 190,
            "value": "OPERATIONS_MANAGEMENT",
            "label": "Operations Management"
          },
          {
            "index": 200,
            "value": "SECURITY_MANAGEMENT",
            "label": "Security Management"
          },
          {
            "index": 210,
            "value": "FINANCIAL_MANAGEMENT",
            "label": "Financial Management"
          },
          {
            "index": 220,
            "value": "SERVICE_DESK_MANAGEMENT",
            "label": "Service Desk Management"
          }
        ],
        "enum": true
      },
      {
        "name": "sub_category",
        "dataType": "SUB_CATEGORY",
        "default": "OTHER",
        "allFacet": [],
        "enumElements": [
          {
            "index": 10,
            "value": "OTHER",
            "label": "Other"
          },
          {
            "index": 20,
            "value": "APPLICATION",
            "label": "Application"
          },
          {
            "index": 30,
            "value": "DATABASE",
            "label": "Database"
          },
          {
            "index": 40,
            "value": "NETWORK",
            "label": "Network"
          },
          {
            "index": 50,
            "value": "SYSTEM",
            "label": "System"
          },
          {
            "index": 60,
            "value": "USER_TRANSACTIONS",
            "label": "User Transactions"
          }
        ],
        "enum": true
      },
      {
        "name": "_errors",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_relationships",
        "dataType": "OBJECT",
        "default": "[]",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_node_service_mapping",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "significance",
        "dataType": "INTEGER",
        "default": "0",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_signature",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_entropy",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_node_service_key_mapping",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "_service_name",
        "dataType": "STRING_LIST",
        "default": "[]",
        "allFacet": [
          {
            "name": "read_only",
            "value": "true"
          },
          {
            "name": "internal",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "incident_sysid",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "sourceEntityType",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      }
    ],
    "attributes": [
      {
        "name": "alert_id",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "mandatory",
            "value": "true"
          },
          {
            "name": "dup_detect",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_name",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_starttime",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_endtime",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_query",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "alert_launch_params",
        "dataType": "STRING",
        "default": "",
        "allFacet": [],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_id_pcssj",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_slotJagJHqPf",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "pn_slotJagJHqPf",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_id_eoadt",
        "dataType": "INTEGER",
        "default": "0",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_severity_eoadt",
        "dataType": "SEVERITY",
        "default": "WARNING",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [
          {
            "index": 10,
            "value": "UNKNOWN",
            "label": "Unknown"
          },
          {
            "index": 20,
            "value": "OK",
            "label": "Ok"
          },
          {
            "index": 30,
            "value": "INFO",
            "label": "Information"
          },
          {
            "index": 40,
            "value": "WARNING",
            "label": "Warning"
          },
          {
            "index": 50,
            "value": "MINOR",
            "label": "Minor"
          },
          {
            "index": 60,
            "value": "MAJOR",
            "label": "Major"
          },
          {
            "index": 70,
            "value": "CRITICAL",
            "label": "Critical"
          }
        ],
        "enum": true
      },
      {
        "name": "ng_history_eoadt",
        "dataType": "STRING_LIST",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_name_eoadt",
        "dataType": "STRING",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      },
      {
        "name": "ng_thresh_above_eoadt",
        "dataType": "BOOLEAN",
        "default": "",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [
          {
            "index": 10,
            "value": "FALSE",
            "label": "False"
          },
          {
            "index": 20,
            "value": "TRUE",
            "label": "True"
          }
        ],
        "enum": true
      },
      {
        "name": "ng_float_slot_eoadt",
        "dataType": "FLOAT",
        "default": "0",
        "allFacet": [
          {
            "name": "isCustom",
            "value": "true"
          }
        ],
        "enumElements": [],
        "enum": false
      }
    ]
  }
}

In this response, the isCustom facet is associated with custom slots of the out-of-the-box class LOGALERT_EV and helps to distinguish between a custom and out-of-the-box slot.

Unsuccessful response

Scenario: Invalid ID

{    "responseTimeStamp": 1600425963675, 
     "statusCode": "EVCLASS_NOT_EXIST", 
     "statusMsg": "[Operation failed, given entry doesn't exist in database or is a default entry]", 
     "resourceId": null,  
     "resourceName": null,  
     "failedResource": null
}

Back to top

PATCH  /events/classes

Use this endpoint to delete slots of a custom class or custom slots of an out-of-the-box event class. Custom slots are associated with the isCustom slot facet. For more information, see Slot facets.

Important

  • You can delete slots of a class in which all events are in the Closed state.
  • You can delete a maximum of 10 slots at a time. To change the maximum limit, contact BMC Support.
  • You can delete slots from classes that have a parent-child hierarchy only if events in both the parent and child class are closed.
    For example:
    Parent class P1 contains 50 closed events
    Child class C1 contains 100 open events
    In this case, you cannot delete slots from P1 because there are open events in C1.
  • In this case, you cannot delete Slot P1 from C. However, you can delete it from P, after all events in P and C are closed.
  • When you delete a slot of a class, the table view that you configure to view event details displays the deleted slot with blank values in the deleted slot column.
    For instructions on creating a table view, see Creating table views.
  • If an event policy configuration refers to a slot that is deleted, the policy does not execute and the reason for the policy execution failure is populated in the Errors slot of the event on the Event Details page.
  • The event policy execution is skipped if the slot you delete is used in the event selection criteria.

Request URL
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes/<EventClassId/EventClassName>?idType=<id/name>
Example URL: Delete event slots by specifying the class ID
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes/f0a678ab-33f1-11ed-86d9-459e5bb18573?idType=id
Example URL: Delete event slots by specifying the class name
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/classes/testClass?idType=name
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details

Parameter NameValue TypeLocated InMandatoryDescription
attributesToRemoveList of stringBodyYes

Comma-separated list of slots that you want to delete for a custom class.

You can specify event slots of a custom class or custom slots of an out-of-the-box class.

idTypeStringPathYes

Type of identifier by using which you want to delete the slot.
The value can be id or name.

id indicates the event class ID and name indicates the event class name.

Request body

{
  "attributesToRemove": [
    "attribute_1",
    "attribute_2",
    "attribute_3"
  ]
}

Example request body

{
  "attributesToRemove": [
    "pn_location",
    "pn_group"
  ]
}

Successful response

{
  "responseTimeStamp": 1663671280686,
  "statusCode": "200",
  "statusMsg": "Slot deletion for the event class is successful.",
  "resourceId": [
    "f0a678ab-33f1-11ed-86d9-459e5bb18573"
  ]
}

Unsuccessful response

Scenario: You attempt to delete a slot of a custom class that has an open event.

{
  "responseTimeStamp": 1663671280686,
  "statusCode": "409",
  "statusMsg": "Failed to delete slot(s) as events needs to be in closed state for given class.Currently there are 1 open events available.",
  "resourceId": [
    "f0a678ab-33f1-11ed-86d9-459e5bb18573"
  ]
}

Back to top


Auditing user actions on an event class

As a tenant administrator, use the BMC Helix Audit Dashboard in BMC Helix Dashboards to view the audit trail of activities that users perform on event classes. You can audit the following activities on an event class:

  • Create an event class
  • Update an event class
  • Delete an event class

Scenario

Sarah is an administrator at Apex Global. She has configured an event policy that manages events based on the event class. Sarah realizes that the event policy is not managing events as expected due to a change in the event class structure. To troubleshoot this issue, Sarah can now use the BMC Helix Audit Dashboard in BMC Helix Dashboards to view the audit trail of all activities that users perform on event classes. Viewing the audit trail helps Sarah to track the history of changes made to the event classes and achieve improved user accountability, compliance with organization policies, and system security.

For more information, see Auditing configuration changes in BMC Helix Dashboards. Open link

The following image displays the audit trail of event classes in the BMC Helix Audit Dashboard. Note that the selected resource type is Event Class. Click the link in the Operation column to view the values before and after you perform an activity on an event class.


Event data

You can use the event ingestion API to send events from third-party applications to BMC Helix Operations Management  with custom class and custom slot details.

Important

For the event slots that have the string or list of string data types, the character limit of the slot value is 32766. If the value goes above this limit, the value is trimmed, which results in data loss.

Mandatory slots

The following slots are mandatory for the Event base event class.

  • msg
  • source_identifier

For custom classes, you can define additional mandatory slots.

POST  /events

The following video (5:14) created by BMC Customer Support describes how to send events to BMC Helix Operations Management by using REST APIs.

 https://youtu.be/m8pNkvwRtAI

Example scenario

Do you want to know how you can send events from a .csv file to BMC Helix Operations Management ? Click here Open link  to view the blog on BMC Communities.

Important

  • For event slots that have the List of string data type, "" is considered as an empty list.
    For example, Tags="" is considered as an empty list.
  • When you ingest events, we do not recommend that you update the _identifier slot value. If you still want to update the slot value, make a note of the following points:
    • A combination of only alphanumeric characters, an underscore (_), a hyphen (-), and, a period (.) are allowed for this slot.
    • If the _identifier value of the new event matches the _identifier value of an existing event, the data from the new event overwrites the data in the existing event.
  • Events are not ingested in the following situations:
    • The _identifier slot value contains invalid characters.
      For information about the characters supported for this slot, see Event base event class.
    • The value for the msg or source_identifier slots is not available.
  • If you export an event in JSON format, you can use the exported JSON in the request payload by removing the internal slots of an event class. To know the internal slots of an event class, run the Get details of an event class endpoint.
    These event slots should be removed due to the following reasons:
    • Some event slots are populated in the event automatically.
    • Some event slots need to be blank because a new event is generated.

See the following example.

Example

Sarah is an administrator at Apex Global. She manually creates the JSON request payload for creating events by using the event ingestion API. However, she realizes that creating the JSON request manually is time-consuming and wants a quicker way of creating events. She can now export an event in JSON format and use the exported JSON in the event ingestion API to create events. To learn about exporting an event, see Exporting events.

To be able to run this API, you need the API key, which you generate by performing the following steps:

  1. Log in to the BMC Helix Operations Management console and navigate to Administration > Repository.
  2. Click Copy API Key. The API key is copied to the clipboard.
    If you have configured a rotation interval for the API key in BMC Helix Portal , make sure that you use the latest API key each time the key rotates. For instructions about configuring a rotation interval, see Using API keys for external integrations. Open link

  3. Paste the API key in a text file and use it to run this API.

Request URL
https://<BMC Helix Portal URL>/events-service/api/v1.0/events
Example request URL
https://HostA.bmc.com/events-service/api/v1.0/events
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token> OR apiKey <tentant_API_key>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Request body (for single event)

[
{
  "class": "<event>",
  "severity": "<severity>",
  "msg": "<msg>",
  "source_identifier": "source_id",
  "status": "<status>",
  "category": "<object_category>",
  "priority": "<priority>",
  "details": "<detailed_msg>",
  "source_attributes":{
    "source_hostname": "hostname",
    "source_port": "<port>",
    "source_address": "<ip_address>"
  },
  "class_slots": {
    "<custom_slot1>": "<slotValue1>",
    "<custom_slot2>": "<slotValue2>"
  }
}
]

Example request body

Scenario: Single event

[
{
  "class": "EVENT",
  "severity": "MAJOR",
  "msg": "Event summary text goes here (msg)",
  "source_identifier": "clm-HostA:3181",
  "status": "OPEN",
  "category": "APPLICATION",
  "priority": "PRIORITY_3",
  "details": "Detail information about the event situation",
  "source_attributes": {
    "source_hostname": "clm-HostA",
    "source_port": "3181",
    "source_address": "ip_address"
  },
  "class_slots": {
    "pn_severity": "MAJOR",
    "pn_id": "abcd1111"
  }
}
]

Scenario: An event is sent without the class slot

In this case, the event is ingested and the default class is EVENT.

[
{
"severity": "MINOR",
"msg":  "jjJYThjjh",
"status" : "OPEN",
"source_identifier": "host_name:3181",
"source_attributes" : {
"source_hostname":      "host_name",
"source_port":      "3181",
"source_address" : "ip_address"
},
"class_slots" : {
"p_parameter":      "CPU usage",
"p_parameter_value":      "52",
"p_parameter_unit":      "%",
"p_publish_hostname":      "clm-HostA",
"p_agent_port": "3181",
"p_instance":   "cpu_0",
"p_application":        "NT",
"p_agent_version":      "V12.0.00i",
"p_catalog":    "FINNOVA1-JCS1.PRD_1234.b_zv5678",
"p_class":      "0",
"p_node":       "node_name"
}
}
]

Scenario: An event is sent with the class slot value as empty

In this case, the event is ingested and the default class is EVENT.

[
{
"class": "",
"severity": "CRITICAL",
"msg": "Total Busy Disk Time >= 40  for 3 min.",
"status" : "OPEN",
"source_identifier": "12ff23f8-7c82-481b-becc5-dbb04a985bf3",
"source_attributes" : {
"source_hostname": "clm-HostA",
"source_port": "3181",
"source_address" : "ip_address"
},
"class_slots" : {
"al_alarm_id": "12ff23f8-7c82-481b-bcc5-dbb04a9r85bf3",
"al_parameter_name": "LDldDiskTimePercent",
"al_parameter_value": "45.0",
"al_parameter_unit": "",
"al_baseline_type": "HOURLY",
"al_end_time": 4294967295,
"al_thresh_duration": 180,
"al_thresh_id": "166a3f14-89c7-4692-ae0e-8cd175f323a1b:NT_LOGICAL_DISKS:Logical Disks:LDldDiskTimePercent:Critical",
"al_thresh_type": "INSTABSTHRESHOLDS",
"al_old_severity": "MINOR"
}
}
]

Scenario: An event is sent with the class name in the upper case

In this case, the event is ingested because the class name case matches with known class names, such as PATROL_EV or EVENT.

[
{
"CLASS": "EVENT",
"severity": "MAJOR",
"msg":  "Event summary text goes here (msg)",
"source_identifier": "host_name:3181",
"status" : "OPEN",
"source_attributes" : {
"source_hostname":      "clm-HostA",
"source_port":      "3181",
"source_address" : "ip_address"

},
"creation_time":     "1509356071",
"category": "APPLICATION",
"priority": "PRIORITY_3",
"details":   "Detail information about the event situation"
}
]

Scenario: An event is sent without the event class, severity, category, and priority slots

In this case, the defaults are set as follows:

  • Class: EVENT
  • Severity: MINOR
  • Category: OPERATIONS_MANAGEMENT
  • Priority: PRIORITY_5
[
{
"msg": "Total Busy Disk Time >= 40  for 4 min.",
"status" : "OPEN",
"source_identifier": "2212ff23f8-7c82-481b-becc45-dbb04a985bf3",
"source_attributes" : {
"source_hostname": "clm-HostA",
"source_port": "3181",
"source_address" : "<ip_address>"
},
"class_slots" : {
"al_alarm_id": "2212ff23ft8-7c82-481b-bcc5-dbb04a9r85bf3",
"al_parameter_name": "LDldDiskTimePercent",
"al_parameter_value": "45.0",
"al_parameter_unit": "",
"al_baseline_type": "HOURLY",
"al_end_time": 42944967295,
"al_thresh_duration": 180,
"al_thresh_id": "12266a3f14-89c7-4692-ae0e-8cd175f323a1b:NT_LOGICAL_DISKS:Logical Disks:LDldDiskTimePercent:Critical",
"al_thresh_type": "INSTABSTHRESHOLDS",
"al_old_severity": "MINOR"
}
}
]

Scenario: An event is sent with incorrect values in a mandatory slot

In this case, the severity slot is sent to _unmapped_data and the default severity is set to MINOR.

[
{
"class": "PATROL_EV",
"severity": 8175192739,
"msg": "sample msg",
"object":    "cpu_0",
"status" : "OPEN",
"source_identifier":  "clm-HostA:3181",
"source_attributes" : {
"source_hostname":      "clm-HostA",
"source_port":      "3181",
"source_address" : "<ip_address>"
},
"class_slots" : {
"p_parameter":      "CPU usage",
"p_parameter_value":      "52",
"p_parameter_unit":      "%",
"p_publish_hostname":      "clm-HostA",
"p_agent_port": "3181",
"p_instance":   "cpu_0",
"p_application":        "NT",
"p_agent_version":      "V12.0.00i",
"p_catalog":    "FINNOVA1-JCS1.PRD_1234.b_zv5678",
"p_class":      "0",
"p_node":       "node_name"
}
}
]

Scenario: An event is sent with a custom enumeration as a slot

Here device_status is the custom enumeration. 

Important

While creating an event for event classes, if you do not specify the custom enumeration details in the request body, then the default value for the enumeration is set automatically.


[
  {
    "class": "NAGIOS_EVENT",
    "severity": "MINOR",
    "tag": "jWrAEu.hostA.bmc.com@3181.1635507541109.9333317384",
    "object": "hostA.bmc.com",
    "msg": "CustomEnumTest",
    "category": "CAPACITY_MANAGEMENT",
    "details": "device state",
    "source_attributes": {
      "source_hostname": "hostA",
      "source_port": 3181,
      "source_address": "<source_address>"
    },
    "source_identifier": "jWrAEu.hostA.bmc.com@3181.1635507541109.9333317384",
    "event_id": false,
    "location": "Houston",
    "device_status": "UP"
  }
]

Request body (for multiple events)

[
  {
    "class": "<event_class>",
    "severity": "<severity>",
    "msg": "<msg>",
    "source_identifier": "source_id",
    "status": "<status>",
    "category": "<object_category>",
    "priority": "<priority>",
    "details": "<detailed_msg>",
    "source_attributes": {
      "source_hostname": "hostname",
      "source_port": "<port>",
      "source_address": "<ip_address>"
    },
    "class_slots": {
      "<custom_slot1>": "<slotValue1>",
      "<custom_slot2>": "<slotValue2>"
    }
  },
  {
    "class": "<event_class>",
    "severity": "<severity>",
    "msg": "<msg>",
    "source_identifier": "source_id",
    "status": "<status>",
    "category": "<object_category>",
    "priority": "<priority>",
    "details": "<detailed_msg>",
    "source_attributes": {
      "source_hostname": "hostname",
      "source_port": "<port>",
      "source_address": "<ip_address>"
    },
    "class_slots": {
      "<custom_slot1>": "<slotValue1>",
      "<custom_slot2>": "<slotValue2>"
    }
  }
]

Example request body (for multiple events)

[
  {
    "class": "CLASS1",
    "severity": "MAJOR",
    "msg": "First event summary text goes here (msg)",
    "source_identifier": "clm-HostA:3181",
    "status": "OPEN",
    "category": "APPLICATION",
    "priority": "PRIORITY_3",
    "details": "Detail information about the event situation",
    "source_attributes": {
      "source_hostname": "clm-HostA",
      "source_port": "3181",
      "source_address": "123.23.24.56"
    },
    "class_slots": {
      "pn_severity": "MAJOR",
      "pn_id": "1111"
    }
  },
  {
    "class": "CLASS2",
    "severity": "CRITICAL",
    "msg": "Second event summary text goes here (msg)",
    "source_identifier": "clm-HostA:3181",
    "status": "OPEN",
    "category": "APPLICATION",
    "priority": "PRIORITY_2",
    "details": "Detail information about the event situation",
    "source_attributes": {
      "source_hostname": "clm-HostA",
      "source_port": "3181",
      "source_address": "123.23.24.56"
    },
    "class_slots": {
      "pn_severity": "CRITICAL",
      "pn_id": "22222"
    }
  }
]

Parameter details


Parameter NameValue TypeMandatoryDescription
classStringNo

Custom class name with which you want to associate the event.

Default value: EVENT

severityEnumNo

Severity value of the event.

Default value: WARNING

Possible Values: CRITICAL, MAJOR, MINOR, WARNING, INFO, OK, UNKNOWN

object
StringYes

Component of the host to which the event is related.

For example, name of the disk on which the event is reporting the problem.

object_class
StringNo

Identifies the class of an object.

If the object class cannot be derived from the original event, it must be filled in during enrichment.

msg
StringYesEvent summary (text description) in brief
status
StringNo

Status value of the event.

Default value: OPEN

Possible Values: OPEN, ACK, ASSIGNED, CLOSED, BLACKOUT

source_identifier
StringYes

Unique identifier of the event source identifier. The identifier can differ based on the type of event source.

By default, for PATROL Agents, the event source is added in the format, agentHostName:Port. Furthermore, for alarms, the internally generated alarm ID is added.

source_attributes : {
source_address
source_hostname
source_port
}
Object (Map)NoAdditional source attribute slots for source identification.
creation_time
StringNo

Epoch time (in milliseconds) when the event was received from the event source. The event source can be PATROL Agent or a third party event provider (event generated via the API).

category
StringNo

High-level normalized category of the object that the event represents. This is based on appropriate Information and Technology Infrastructure Library (ITIL) core process.

Possible Values: SLA_MANAGEMENT, CAPACITY_MANAGEMENT, SERVICE_CONTINUITY_MANAGEMENT, AVAILABILITY_MANAGEMENT, INCIDENT_MANAGEMENT, CONFIGURATION_MANAGEMENT, RELEASE_MANAGEMENT, PROBLEM_MANAGEMENT, CHANGE_MANAGEMENT

sub_category
StringNo

Subcategory of the object the event represents based on the appropriate Information Technology Infrastructure Library (ITIL) core process.

Possible values:

  • OTHER
  • APPLICATION
  • DATABASE
  • NETWORK
  • SYSTEM
  • USER_TRANSACTIONS

priority
EnumNo

Records the original priority of the event upon insertion. Also, records current priority of the event.

Possible values:

  • PRIORITY_5 (lowest priority)
  • PRIORITY_4

  • PRIORITY_3

  • PRIORITY_2

  • PRIORITY_1 (highest priority) 

details
StringNo

Detailed information about the event.

Expands the information in the msgslot.

alias
StringNo

Will be used for event association with the CI.

You can provide a combination of slots to form the alias value, for example, BMC_ComputerSystem:source_host:source_por


Successful response

Status code 200 OK

{
    "responseTimeStamp": 1600259952253,
    "statusCode": "200",
    "statusMsg": "OK",
    "resourceId": [
        "eps.690188083.4831460694718336.c99a2ffe-c6c9-4871-bfb0-af2639507577"
    ]
}

In this response, eps.690188083.4831460694718336.c99a2ffe-c6c9-4871-bfb0-af2639507577 is the event ID.

Unsuccessful response

Scenario: An event is sent without a mandatory slot

[
    {
        "key": "validation.schema.required",
        "level": "ERROR",
        "message": "[Path '/0'] Object has missing required properties ([\"msg\",\"source_identifier\"])",
        "additionalInfo": []
    }
]

Scenario: An event is sent with the class name in the lower case

In this case, the event response is OK. However, the event gets dropped because the class name does not match known class names. For example, the known class name PATROL_EV is in the upper case. If an event arrives with the class name patrol_ev in the lower case, it gets dropped. 

[
  {
    "class": "alarm",
    "severity": "CRITICAL",
    "object": "22166a3f14-89c7-4692-ae0e-8cd175f243a1b:NT_LOGICAL_DISKS:Logical Disks",
    "object_class": "NT_LOGICAL_DISKS",
    "msg": "Total Busy Disk Time >= 40  for 4 min.",
    "status": "OPEN",
    "source_identifier": "2212ff23f8-7c82-481b-becc45-dbb04a985bf3",
    "source_attributes": {
      "source_hostname": "clm-pun-spygbh",
      "source_port": "3181",
      "source_address": "22887.23.24.56"
    },
    "class_slots": {
      "al_alarm_id": "2212ff23ft8-7c82-481b-bcc5-dbb04a9r85bf3",
      "al_parameter_name": "LDldDiskTimePercent",
      "al_parameter_value": "45.0",
      "al_parameter_unit": "",
      "al_baseline_type": "HOURLY",
      "al_end_time": 42944967295,
      "al_thresh_duration": 180,
      "al_thresh_id": "12266a3f14-89c7-4692-ae0e-8cd175f323a1b:NT_LOGICAL_DISKS:Logical Disks:LDldDiskTimePercent:Critical",
      "al_thresh_type": "INSTABSTHRESHOLDS",
     "al_old_severity": "MINOR"
    }
  }
]

Back to top

PATCH /events

You can update an event by providing slot names and values in the payload. 

Important

  • You cannot update internal and read-only slots in the payload.
  • You cannot specify slot placeholders (%<slotName>%) in the payload.
  • If you perform bulk updates on an event and don't want to record notes for each update on the Logs and Notes tab, you can omit note generation. Simply use the skipAddNotes parameter in the endpoint URL. For more information, see Request URL.
  • By default, if only the repeat_count slot is updated in an event, the event updates are not published to the corresponding incident in BMC Helix IT Service Management .
    For any other slot updates in an event, the event updates are published to the corresponding incident in BMC Helix IT Service Management .
    To publish event updates to the corresponding incident in BMC Helix IT Service Management  only on specific slot updates in an event, contact BMC Support.

To be able to run this API, you need the API key, which you generate by performing the following steps:

  • Log in to the BMC Helix Operations Management console and navigate to Administration > Repository.
  • Click Copy API Key. The API key is copied to the clipboard.
    If you have configured a rotation interval for the API key in  BMC Helix Portal , make sure that you use the latest API key each time the key rotates. For instructions about configuring a rotation interval, see Using API keys for external integrations. Open link

  • Paste the API key in a text file and use it to run this API.


Request URL
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/<event-id>
Example URL
https://HostA.bmc.com/events-service/api/v1.0/events/eps.544054987.5787269843597304.55ba9187-e171-4890-80af-25443afd0763

Request URL with optional parameters
https://<BMC Helix Portal URL>/events-service/api/v1.0/events/<event-id>/?skipAddNotes=true
Example URL
https://HostA.bmc.com/events-service/api/v1.0/events/eps.544054987.5787269843597304.55ba9187-e171-4890-80af-25443afd0763/?skipAddNotes=true
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token> OR apiKey <tentant_API_key>

For instructions about obtaining the API JWT token, see Access and authentication for the REST API. Open link .

Parameter details


NameValue TypeMandatoryDescription

event-id

StringYes

ID of the event that you want to update.

skipAddNotes

StringNo

Set this parameter to true if you do not want to generate notes for an event update.

Default: false

Example request payload

{
"status": "ACK",
"msg": "updated event",
"severity": "CRITICAL"
}

This request updates existing events with the status, msg, or severity slots.

Successful response (Status code 200 OK)

{
    "responseTimeStamp": 1600260444163,
    "statusCode": "200",
    "statusMsg": "OK",
    "successfullEventIds": [
        "eps.690188083.4831895306669881.c4478cfe-6319-40e2-bb4e-723515dfec2c"
    ]
}

Unsuccessful response

Scenario: Update a closed event

{
    "responseTimeStamp": 1600260577333,
    "statusCode": "400",
    "statusMsg": "Provided event is closed.",
    "failedEventIDs": [
        "eps.690188083.4831895306669881.c4478cfe-6319-40e2-bb4e-723515dfec2c"
    ]
}

Scenario: Update an event with a read-only or an internal slot

{
    "responseTimeStamp": 1600261101813,
    "statusCode": "400",
    "statusMsg": "Slot names: - [_repeat_count, class]Slots are not valid as they are read_only or internal or data type validation failed for provided class",
    "failedEventIDs": [
        "eps.690188083.4832293142128186.ea949c5f-7d05-4961-906e-1edb73345e05"
    ]
}

Back to top

POST  /msearch

You can use this API for event search and aggregation.

The Elastic Search API DSL query language is used to search events. For more information about the query language, see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html Open link .

Important

We recommend that you specify a space after the slot value for custom slots of the String type to avoid intermittent parsing issues.

Raw document query

Search events for a specific date range in the raw document format.

Request URL
https://<host_name>/events-service/api/v1.0/events/msearch
Example request URL
https://HostA.bmc.com/events-service/api/v1.0/events/msearch
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Important

Make sure that you format the request body in a single line before you send the request payload.

Example request body

{
  "size": 500,
  "query": {
    "bool": {
      "filter": [
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": <searchQuery>
          }
        }
      ]
    }
  },
  "sort": {
    "creation_time": {
      "order": "desc",
      "unmapped_type": "boolean"
    }
  },
  "script_fields": {}
}

<searchQuery> that is used to specify the event search criteria can be specified by using the syntax in the following examples:

"query": "source_identifier.keyword:<Host>\\:<Port>"
"query": "alias.keyword:ONBMC_ComputerSystem\\:<Host>"
"query": "p_agent_name:\"patrol agent\""
"query": "quick OR brown",
"query": "(quick OR brown) AND fox",
"query": "(quick OR brown) AND verb:jump",
"query": "_exists_:p_owner"
"query": "host.containerized:false AND al_parameter_value:foo"
"query": "_exists_:host.containerized AND _exists_:al_parameter_value"
"query": "severity_ordinal:[50 TO 70]"
"query": "al_thresh_type: USERDEFINED AND severity_ordinal: { 30 TO 50 ]"
"query": "user_assigned: admin AND severity_ordinal: [ 30 TO 50 ]"
"query": "slot_with_special_chars: \"foo$bar@bmc.com\" AND longslot: { 14 TO 16 }"
"query": "slot_with_special_chars: \"foobar.bmc.com\" AND longslot: [ 16 TO 19 ]"
"query": "slot_with_special_chars: \"foobar.bmc.com\" AND longslot: [ 16 TO 19 }"
"query": "slot_with_special_chars: \"foobar.bmc.com\" AND longslot: { 16 TO 18 ]"
"query": "slot_with_special_chars: \"foobar.bmc.com\" AND longslot: { 17 TO 19 }"
"query": "qu?ck bro*",
"query": "severity_ordinal:(>=50 AND <=70)"
"query": "quikc~ brwn~ foks~",
"query": "\"fox quick\"~5",
"query": "+fox -brown -red",
"query": "order.keyword:{ord-1 TO ord-3}"
"query": "al_parameter_name: Capacity AND NOT (severity: MAJOR, severity: CRITICAL)"
"query": "al_parameter_name: Capacity AND NOT (severity: MAJOR, severity: CRITICAL, severity: INFO)"
"query": "al_parameter_name: Capacity OR NOT (object_class: NUK_FileSystem, object_class: pa-rep-lnx04, alert_class: pa-rep-lnx03)"
Request body
{
  "size": 500,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "creation_time": {
              "gte": 1603860684000,
              "lte": 1603864284000,
              "format": "epoch_millis"
            }
          }
        },
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "status:OPEN"
          }
        }
      ]
    }
  },
  "sort": {
    "creation_time": {
      "order": "desc",
      "unmapped_type": "boolean"
    }
  },
  "script_fields": {}
}
{
  "size": 500,
  "query": {
    "bool": {
      "filter": [
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "(severity:CRITICAL OR severity:MAJOR) AND (status:OPEN)"
          }
        }
      ]
    }
  },
  "sort": {
    "creation_time": {
      "order": "desc",
      "unmapped_type": "boolean"
    }
  },
  "script_fields": {}
}

Successful response

Status code 200 OK

{
    "took": 19,
    "status": 200,
    "responses": [
        {
            "took": 18,
            "timed_out": false,
            "_shards": {
                "total": 10,
                "successful": 10,
                "skipped": 7,
                "failed": 0
            },
            "hits": {
                "total": {
                    "value": 80,
                    "relation": "eq"
                },
                "max_score": null,
                "hits": [
                    {
                        "_score": null,
                        "_source": {
                            "msg": "9cd6e9f9c33fc4a",
                            "creation_time": 1603862648418,
                            "_tenant_id": "1846876061",
                            "severity_ordinal": 60,
                            "sub_category": "OTHER",
                            "modelname": "",
                            "source_identifier": "9cd6e9f9c33fc4a.clm-pun-t8x5kf.bmc.com@3181.1603862648418.9726262116",
                            "_tenant_name": "",
                            "_errors": "[]",
                            "incident_id": "",
                            "_operations": "[]",
                            "incident_company": "",
                            "_ci_id": "",
                            "source_port": 3181,
                            "source_address": "10.10.10.10",
                            "alias": [
                                "BMC_ComputerSystem:clm-pun-t8x5kf.bmc.com"...
...
	"status": "OPEN",
                            "al_extremeness": 0,
                            "al_parameter_threshold": "",
                            "al_baseline_hourly_low": "",
                            "al_thresh_above_ordinal": 20,
                            "al_thresh_above": null,
                            "al_pts_exceeded": 0,
                            "incident_item": "",
                            "al_event_score": 0.0,
                            "object": "clm-pun-t8x5kf.bmc.com",
                            "al_end_time": 1603862534075,
                            "al_predict_to_occur_time": 1603862534075,
                            "al_agent_port": "",
                            "al_thresh_id": "4449542027",
                            "incident_operational_category1": "",
                            "cross_launch_uri": "",
                            "al_avg_value": "",
                            "incident_operational_category2": "",
                            "object_class": "",
                            "al_is_predicted_ordinal": 10,
                            "al_is_predicted": null,
                            "al_agent_name": "",
                            "al_parameter_name": "zPTZ9GkwwB",
                            "incident_operational_category3": "",
                            "al_baseline_weekly_low": "",
                            "al_thresh_duration": 1,
                            "al_agent_os": "",
                            "al_baseline_daily_high": "",
                            "al_baseline_weekly_high": "",
                            "al_prediction_severity": "CRITICAL",
                            "incident_type": "",
                            "al_parameter_unit": "MB",
                            "al_last_time": "0",
                            "al_alarm_id": "4718821724",
                            "al_baseline_hourly_high": "",
                            "al_thresh_type": "Custom",
                            "object_id": "",
                            "al_pts_total": 0,
                            "al_highest_severity_ordinal": 40,
                            "al_highest_severity": "WARNING",
                            "al_old_severity_ordinal": 40,
                            "al_old_severity": "WARNING",
                            "al_parameter_value": "79",
                            "al_baseline_daily_low": "",
                            "incident_category": "",
                            "al_device_ipaddress": "",
                            "al_baseline_type_ordinal": 10,
                            "al_baseline_type": "HOURLY"
                        },
                        "sort": [
                            1603862534075
                        ]
                    }
                ]
            },
            "status": 200
        }
    ]
}

In this response, the event search query is: status:OPEN

All events with the status OPEN event are searched and the response is in the raw document format.

Aggregation query

Perform event search and aggregation on a specific time range.

Request URL
https://<host_name>/events-service/api/v1.0/events/msearch
Example request URL
https://HostA.bmc.com/events-service/api/v1.0/events/msearch


Request body
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "creation_time": {
              "gte": 1603860684000,
              "lte": 1603864284000,
              "format": "epoch_millis"
            }
          }
        },
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "status:OPEN"
          }
        }
      ]
    }
  },
  "aggs": {
    "2": {
      "date_histogram": {
        "interval": "15m",
        "field": "creation_time",
        "min_doc_count": 0,
        "extended_bounds": {
          "min": 1603860684000,
          "max": 1603864284000
        },
        "format": "epoch_millis"
      },
      "aggs": {}
    }
  }
}


Successful response

Status code 200 OK

{
    "took": 5,
    "status": 200,
    "responses": [
        {
            "took": 4,
            "timed_out": false,
            "_shards": {
                "total": 10,
                "successful": 10,
                "skipped": 0,
                "failed": 0
            },
            "hits": {
                "total": {
                    "value": 80,
                    "relation": "eq"
                },
                "max_score": null,
                "hits": []
            },
            "aggregations": {
                "date_histogram#2": {
                    "buckets": [
                        {
                            "key_as_string": "1603860300000",
                            "key": 1603860300000,
                            "doc_count": 0
                        },
                        {
                            "key_as_string": "1603861200000",
                            "key": 1603861200000,
                            "doc_count": 0
                        },
                        {
                            "key_as_string": "1603862100000",
                            "key": 1603862100000,
                            "doc_count": 80
                        },
                        {
                            "key_as_string": "1603863000000",
                            "key": 1603863000000,
                            "doc_count": 0
                        },
                        {
                            "key_as_string": "1603863900000",
                            "key": 1603863900000,
                            "doc_count": 0
                        }
                    ]
                }
            },
            "status": 200
        }
    ]
}

In this response, the event search query is: status:OPEN

All events with the status OPEN event are searched and the response is in the aggregate format.

Group By query

Perform event search and aggregation on a specific time range.

Request URL
https://<host_name>/events-service/api/v1.0/events/msearch
Example request URL
https://HostA.bmc.com/events-service/api/v1.0/events/msearch


Request body
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "creation_time": {
              "gte": 1603860684000,
              "lte": 1603864284000,
              "format": "epoch_millis"
            }
          }
        },
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "*"
          }
        }
      ]
    }
  },
  "aggs": {
    "3": {
      "terms": {
        "field": "severity",
        "size": 10,
        "order": {
          "_key": "desc"
        },
        "min_doc_count": 1
      },
      "aggs": {
        "2": {
          "date_histogram": {
            "interval": "5m",
            "field": "creation_time",
            "min_doc_count": 0,
            "extended_bounds": {
              "min": 1603860684000,
              "max": 1603864284000
            },
            "format": "epoch_millis"
          },
          "aggs": {}
        }
      }
    }
  }
}


Successful response

Status code 200 OK

{
    "took": 9,
    "status": 200,
    "responses": [
        {
            "took": 8,
            "timed_out": false,
            "_shards": {
                "total": 10,
                "successful": 10,
                "skipped": 0,
                "failed": 0
            },
            "hits": {
                "total": {
                    "value": 190,
                    "relation": "eq"
                },
                "max_score": null,
                "hits": []
            },
            "aggregations": {
                "sterms#3": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": "WARNING",
                            "doc_count": 65,
                            "date_histogram#2": {
                                "buckets": [
                                    {
                                        "key_as_string": "1603860600000",
                                        "key": 1603860600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603860900000",
                                        "key": 1603860900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861200000",
                                        "key": 1603861200000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861500000",
                                        "key": 1603861500000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861800000",
                                        "key": 1603861800000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862100000",
                                        "key": 1603862100000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862400000",
                                        "key": 1603862400000,
                                        "doc_count": 16
                                    },
                                    {
                                        "key_as_string": "1603862700000",
                                        "key": 1603862700000,
                                        "doc_count": 49
                                    },
                                    {
                                        "key_as_string": "1603863000000",
                                        "key": 1603863000000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863300000",
                                        "key": 1603863300000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863600000",
                                        "key": 1603863600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863900000",
                                        "key": 1603863900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603864200000",
                                        "key": 1603864200000,
                                        "doc_count": 0
                                    }
                                ]
                            }
                        },
                        {
                            "key": "MINOR",
                            "doc_count": 25,
                            "date_histogram#2": {
                                "buckets": [
                                    {
                                        "key_as_string": "1603860600000",
                                        "key": 1603860600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603860900000",
                                        "key": 1603860900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861200000",
                                        "key": 1603861200000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861500000",
                                        "key": 1603861500000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861800000",
                                        "key": 1603861800000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862100000",
                                        "key": 1603862100000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862400000",
                                        "key": 1603862400000,
                                        "doc_count": 25
                                    },
                                    {
                                        "key_as_string": "1603862700000",
                                        "key": 1603862700000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863000000",
                                        "key": 1603863000000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863300000",
                                        "key": 1603863300000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863600000",
                                        "key": 1603863600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863900000",
                                        "key": 1603863900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603864200000",
                                        "key": 1603864200000,
                                        "doc_count": 0
                                    }
                                ]
                            }
                        },
                        {
                            "key": "MAJOR",
                            "doc_count": 65,
                            "date_histogram#2": {
                                "buckets": [
                                    {
                                        "key_as_string": "1603860600000",
                                        "key": 1603860600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603860900000",
                                        "key": 1603860900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861200000",
                                        "key": 1603861200000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861500000",
                                        "key": 1603861500000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861800000",
                                        "key": 1603861800000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862100000",
                                        "key": 1603862100000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862400000",
                                        "key": 1603862400000,
                                        "doc_count": 65
                                    },
                                    {
                                        "key_as_string": "1603862700000",
                                        "key": 1603862700000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863000000",
                                        "key": 1603863000000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863300000",
                                        "key": 1603863300000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863600000",
                                        "key": 1603863600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863900000",
                                        "key": 1603863900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603864200000",
                                        "key": 1603864200000,
                                        "doc_count": 0
                                    }
                                ]
                            }
                        },
                        {
                            "key": "CRITICAL",
                            "doc_count": 35,
                            "date_histogram#2": {
                                "buckets": [
                                    {
                                        "key_as_string": "1603860600000",
                                        "key": 1603860600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603860900000",
                                        "key": 1603860900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861200000",
                                        "key": 1603861200000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861500000",
                                        "key": 1603861500000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603861800000",
                                        "key": 1603861800000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862100000",
                                        "key": 1603862100000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603862400000",
                                        "key": 1603862400000,
                                        "doc_count": 35
                                    },
                                    {
                                        "key_as_string": "1603862700000",
                                        "key": 1603862700000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863000000",
                                        "key": 1603863000000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863300000",
                                        "key": 1603863300000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863600000",
                                        "key": 1603863600000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603863900000",
                                        "key": 1603863900000,
                                        "doc_count": 0
                                    },
                                    {
                                        "key_as_string": "1603864200000",
                                        "key": 1603864200000,
                                        "doc_count": 0
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            "status": 200
        }
    ]
}

In this response, the event search query is * and the terms field is severity.

All events are searched and the response is in the group format with severity.

Terms query

Perform event search and aggregation on source_hostname.

Request URL
https://<host_name>/events-service/api/v1.0/events/msearch
Example request URL
https://HostA.bmc.com/events-service/api/v1.0/events/msearch


Request body
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "creation_time": {
              "gte": 1603860684000,
              "lte": 1603864284000,
              "format": "epoch_millis"
            }
          }
        },
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "*"
          }
        }
      ]
    }
  },
  "aggs": {
    "2": {
      "terms": {
        "field": "source_hostname.keyword",
        "size": 10,
        "order": {
          "_key": "desc"
        },
        "min_doc_count": 1
      },
      "aggs": {}
    }
  }
}

Successful response

Status code 200 OK

{
    "took": 5,
    "status": 200,
    "responses": [
        {
            "took": 4,
            "timed_out": false,
            "_shards": {
                "total": 10,
                "successful": 10,
                "skipped": 0,
                "failed": 0
            },
            "hits": {
                "total": {
                    "value": 190,
                    "relation": "eq"
                },
                "max_score": null,
                "hits": []
            },
            "aggregations": {
                "sterms#2": {
                    "doc_count_error_upper_bound": 0,
                    "sum_other_doc_count": 0,
                    "buckets": [
                        {
                            "key": "clm-pun-t8x5kf.bmc.com",
                            "doc_count": 175
                        },
                        {
                            "key": "clm-pun-52612",
                            "doc_count": 5
                        },
                        {
                            "key": "clm-pun-526",
                            "doc_count": 5
                        },
                        {
                            "key": "clm-pun-458",
                            "doc_count": 5
                        }
                    ]
                }
            },
            "status": 200
        }
    ]
}

In this response, the event search query is * and the terms field is source_hostname.keyword.

All events are searched and the response is in the group format with source_hostname.keyword.

Back to top

GET  /mapping

You can obtain the event classes schema mapping as per the Elastic Search structure.

Request URL
https://<host_name>/events-service/api/v1.0/events/mapping
Example request URL
https://HostA.bmc.com/events-service/api/v1.0/events/mapping
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Request body
None

Successful response

Status code 200 OK

{
    "event-0_r0": {
        "mappings": {
            "properties": {
                "_arrival_time": {
                    "type": "date"
                },
                "_modified_time": {
                    "type": "date"
                },
                "al_agent_name": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "ignore_above": 256,
                            "type": "keyword"
                        }
                    }
                },
                "al_agent_os": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "ignore_above": 256,
                            "type": "keyword"
                        }
                    }...
...
 				"Temp10": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "ignore_above": 256,
                            "type": "keyword"
                        }
                    }
                },
                "user_assigned": {
                    "type": "keyword",
                    "fields": {
                        "ignore_case": {
                            "type": "keyword",
                            "normalizer": "lc_norm"
                        }
                    }
                }
            }
        }
    }
}

In this response, eps.690188083.4831460694718336.c99a2ffe-c6c9-4871-bfb0-af2639507577 is the event ID.

Back to top


Event operations

You can perform the following event operations by running APIs on a maximum of 500 (default limit) events.

Tip

Get the event ID by viewing the event details or by exporting the events

POST  /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/assign
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/assign
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs to assign to a user.

We recommend a limit of 1500 event IDs.

slotsStringYes

List of event slots to update while assigning the events:

  • assigned_user
    Name of the user to whom you want to assign the events.

    Important: This API doesn't validate the user name to whom you assign the events. Ensure that you provide a valid username.

  • (Optional) notes
    A note for the current operation.

Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "assigned_user": "user_name",
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
  ],
  "slots": {
    "assigned_user": "Mark",
    "notes": "assign this event to Mark"
  }
}


Successful response

{
  "responseTimeStamp": 1620793458647,
  "statusCode": "200",
  "statusMsg": "OK",
  "response": true,
  "passedIds": [
    "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
  ]
}

Unsuccessful responses

Scenario : Mandatory event slot is missing

{
    "responseTimeStamp": 1620823213851,
    "statusCode": "400",
    "statusMsg": "Missing mandatory event slot 'assigned_user' for operation : [AssignTo]",
    "failedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}
POST /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/close
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/close
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs with which you close the events.

We recommend a limit of 1500 event IDs.

slotsStringNo

Includes the notes parameter that you can specify for closing the events.


Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "eps.1311824585.14845808440222688.338b4c04-78b7-4289-85cc-4beec7056e1e"
  ],
  "slots": {
    "notes": "closing this event"
  }
}


Successful response

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": true,
    "passedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}

Unsuccessful responses

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": false,
    "failedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}
POST /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/setPriority
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/setPriority
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs that you assign a priority level.

We recommend a limit of 1500 event IDs.

slotsStringYes

List of event slots to update while setting priorities for the events.

  • priority

    Assign a priority level for the events.

    Possible values:

    • PRIORITY_5 (lowest priority)
    • PRIORITY_4

    • PRIORITY_3

    • PRIORITY_2

    • PRIORITY_1 (highest priority) 

  • (Optional) notes
    A note for the current operation.

Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "priority": "PRIORITY_4",
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
  ],
  "slots": {
    "priority": "PRIORITY_4",
    "notes": "change event priority"
  }
}


Successful response

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": true,
    "passedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}

Unsuccessful responses

Scenario: Mandatory event slot is missing

{
    "responseTimeStamp": 1620823213851,
    "statusCode": "400",
    "statusMsg": "Missing mandatory event slot 'priority' for operation : [SetPriority]",
    "failedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}
POST /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/takeOwnership
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/takeOwnership
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs for which you take ownership.

We recommend a limit of 1500 event IDs.

slotsStringNo

Includes the notes parameter that you can specify for the current operation.


Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
  ],
  "slots": {
    "notes": "Take Ownership"
  }
}


Successful response

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": true,
    "passedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}

Unsuccessful responses

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": false,
    "failedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}
POST /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/declineOwnership
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/declineOwnership
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs for which you decline ownership.
This operation changes the event status to Acknowledged.

We recommend a limit of 1500 event IDs.

slotsStringNo

Includes the notes parameter that you can specify for the current operation.


Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
  ],
  "slots": {
    "notes": "decline ownership"
  }
}


Successful response

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": true,
    "passedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}

Unsuccessful responses

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": false,
    "failedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}
POST /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/addNote
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/addNote
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs for which you add a note.

We recommend a limit of 1500 event IDs.

slotsStringYes

Includes the notes parameter that you have to specify while adding a note to the events.


Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
  ],
  "slots": {
    "notes": "adding a respective note to events"
  }
}


Successful response

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": true,
    "passedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}

Unsuccessful responses

Scenario: Mandatory event slot is missing

{
    "responseTimeStamp": 1620823213851,
    "statusCode": "400",
    "statusMsg": "Missing mandatory event slot 'notes' for operation : [addNote]",
    "failedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}
POST /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/acknowledge
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/acknowledge
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs that you acknowledge.

This operation changes the event status from Open to Acknowledged.

We recommend a limit of 1500 event IDs.

slotsStringNo

Includes the notes parameter that you can specify while acknowledging the events.


Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "ff181c33-0567-47de-b0ae-ea6125f48d38"
  ],
  "slots": {
    "notes": "acknowledging the events"
  }
}


Successful response

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": true,
    "passedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}

Unsuccessful responses

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": false,
    "failedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}
POST /events/service
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/unacknowledge
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/unacknowledge
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs of previously acknowledged events that you want to change to the Open state.

We recommend a limit of 1500 event IDs.

slotsStringNo

Includes the notes parameter that you can specify for the current operation.


Request body

{
  "eventIds": [
    "eventId1", "eventId2", "eventIdn"
  ],
  "slots": {
    "notes": "add a note to the current operation"
  }
}

Example request body

{
  "eventIds": [
    "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
  ],
  "slots": {
    "notes": "unacknowledging the events"
  }
}


Successful response

{
    "responseTimeStamp": 1620793458647,
    "statusCode": "200",
    "statusMsg": "OK",
    "response": true,
    "passedIds": [
        "eps.283198267.12868788805515522.edeb077e-cdc7-4908-9223-94f6c869882d"
    ]
}

Unsuccessful responses

Scenario: Missing object properties

[
    {
        "key": "validation.schema.required",
        "level": "ERROR",
        "message": "Object has missing required properties ([\"eventIds\"])",
        "additionalInfo": []
    }
]
POST /events/operations/incident
Request URL
 https://<BMC Helix Portal URL>/events-service/api/v1.0/events/operations/incident
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/incident
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions about obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeMandatoryDescription
eventIdsStringYes

Comma-separated list of event IDs for which you want to create an incident.


Request body

{
  "eventIds": [
    "eventId1",
    "eventId2",
    "eventIdn"
  ]
}

Example request body

{
  "eventIds": [
    "eps.1220296999.32042773063967749.8953ee55-b393-4314-8964-4b851dabc7d6"
  ]
}


Successful response

{
  "responseTimeStamp": 1641469008322,
  "statusCode": "200",
  "statusMsg": "OK",
  "response": true,
  "passedIds": [
    "eps.1220296999.34995522708619637.5ba9b5af-1c74-42c7-91f6-9815a722fe28"
  ]
}

Unsuccessful responses

Scenario 1: Incident creation is not enabled for a tenant

[
  {
    "key": "500",
    "level": "ERROR",
    "message": "Manual Incident Creation feature is not enabled for tenant 1003829062",
    "additionalInfo": null
  }
]

Scenario 2: BMC Helix ITSM integration is not available

[
  {
    "key": "500",
    "level": "ERROR",
    "message": "Integration with ITSM is not available. Contact Administrator.",
    "additionalInfo": null
  }
]
POST /events/operations/delete

Important

  • Only the administrator can use this API to delete closed events.
  • This API does not delete events that have a status other than Closed. It only submits a request to delete an event and does not return the result of event deletion.
  • If you delete closed events, it might result in an event count mismatch for closed events on the Group Details page. However, the system auto-corrects this mismatch within an hour.
Request URL
https://<tenant-url>/events-service/api/v1.0/events/operations/delete
Example request URL
 https://HostA.bmc.com/events-service/api/v1.0/events/operations/delete
Request Header
Content-Type: application/json
Authorization: Bearer <JWT_token>

For instructions on obtaining the JWT token, see Access and authentication for the REST API. Open link .

Parameter details


Parameter NameValue TypeLocated InMandatoryDescription
eventIdsStringBodyYes

Comma-separated list of event IDs for events that are closed.


Request body

{
  "eventIds": [
    "String"
  ]
}

Example request body

{
  "eventIds": [
    "eps.222799795.31352921754574826.0deffff8-f1ae-4e79-ab73-adae35cdb3f2",
    "eps.222799795.31352956067121499.143c98be-9c96-4518-9579-70203df4b9db",
    "eps.222799795.31353102395663813.4d53a1ca-5cd8-44e1-9468-0995d6836933"
  ]
}


Successful response

{
  "responseTimeStamp": 1660121429273,
  "statusCode": "202",
  "statusMsg": "Accepted",
  "response": true,
  "passedIds": [
    "eps.222799795.31352921754574826.0deffff8-f1ae-4e79-ab73-adae35cdb3f2",
    "eps.222799795.31352956067121499.143c98be-9c96-4518-9579-70203df4b9db",
    "eps.222799795.31353102395663813.4d53a1ca-5cd8-44e1-9468-0995d6836933"
  ],
  "failedIds": []
}

Unsuccessful responses

Scenario 1: You attempt to delete an event on a tenant for which the feature is not enabled.

[
  {
    "key": "500",
    "level": "ERROR",
    "message": "Delete event feature is not enabled for tenant 1980396036",
    "additionalInfo": null
  }
]

Scenario 2: You specify events that exceed the maximum event limit of 500.

[
  {
    "key": "400",
    "level": "ERROR",
    "message": "Events present in the body are exceeding maximum allowed limit of 500.",
    "additionalInfo": null
  }
]















Was this page helpful? Yes No Submitting... Thank you

Comments