Notification (NOTIF) is registered with the db or BangDB Stream manager (bsm) or it can be directly made part of the schema. Notification has metadata that gets registered with the db/bsm is as follows:

"notifs":[
    {
       "notifid":12345,
       "name":"notif1",
       "msg":"users msg",
       "rule":"notification rule/condition",
       "pri":1,
       "mailto":[
          
       ],
       "endpoints":[
          "http://192.168.1.49:10102/account"
       ],
       "schemaid":1234,
       "notif_streamid":4321,
       "notif_stream_name":"sdf",
       "freq":1,
       "tags":[
          "a"
       ],
       "rel_streams":[
          "s1"
       ]
    }
]

It has id associated with it, along with name provided by the user. Please note the id is not computed one, but provided by the user. "msg" is user defined message that should be part of every notification sent. "rule" is not used at this moment but in sometime it will have some useful processing logic. "pri" is priority set by the user. Since notification could also be stored in some stream, hence"notif_stream_name" is for this, not necessary in all cases.

When notification is sent, it's sent for certain event. Therefore, before sending it to the user or to the end point, the event which caused the notification is also added to the data. It's done using a key “event” with value as the entire event data which caused it. Please see the Notification C++ API for details on the API.

The notification can be sent to an endpoint which knows how to parse the data. It can also be sent to user over mail. Endpoint can be implemented in such a manner which can trigger some action to automate the process. The onus on implementing the end point API is up to the user as they know best about how to use the notification event for their operations.