get_notification_data
The get_notification_data function is used to get detailed information about specified notifications.
svc=resource/get_notification_data¶ms={"itemId":<long>,
"col":[<long>]}
Parameters
Name | Description |
---|---|
itemId | Resource ID. |
col | The array of notification IDs. The field is optional. If it is not present, the function is executed for all the notifications. |
Response
If the request is completed successfully, a response of the following format is returned:
[
{
"id":<long>, /* notification ID */
"n":"<text>", /* name */
"txt":"<text>", /* notification text */
"ta":<uint>, /* activation time (Unix format) */
"td":<uint>, /* deactivation time (Unix format) */
"ma":<uint>, /* maximum number of alarms (0 — unlimited) */
"mmtd":<uint>, /* maximum time interval between messages, s */
"cdt":<uint>, /* timeout of alarm, sec */
"mast":<uint>, /* minimum duration of the alarm state, s */
"mpst":<uint>, /* minimum duration of previous state, s */
"cp":<uint>, /* period of control relative to current time, s */
"fl":<uint>, /* notification flags (see below) */
"tz":<uint>, /* time zone */
"la":"<text>", /* user language (two-letter code) */
"ac":<uint>, /* alarms count */
"d":"<text>", /* notification description */
"sch":{ /* time limitation */
"f1":<uint>, /* the beginning of the interval 1 (minutes from midnight) */
"f2":<uint>, /* the beginning of the interval 2 (minutes from midnight) */
"t1":<uint>, /* the end of the interval 1 (minutes from midnight) */
"t2":<uint>, /* the end of the interval 2 (minutes from midnight) */
"m":<uint>, /* the mask of days of month [1: 2||0, 31: 2||30] */
"y":<uint>, /* the mask of months [Jan: 2||0, Dec: 2||11] */
"w":<uint>, /* the mask of days of week [Mon: 2||0, Sun: 2||6] */
"fl":<int> /* schedule flags */
},
"ctrl_sch":{ /* the schedule of maximum alarms count intervals */
"f1":<uint>, /* the beginning of the interval 1 (minutes from midnight) */
"f2":<uint>, /* the beginning of the interval 2 (minutes from midnight) */
"t1":<uint>, /* the end of the interval 1 (minutes from midnight) */
"t2":<uint>, /* the end of the interval 2 (minutes from midnight) */
"m":<uint>, /* the mask of days of month [1: 2||0, 31: 2||30] */
"y":<uint>, /* the mask of months [Jan: 2||0, Dec: 2||11] */
"w":<uint> /* the mask of days of week [Mon: 2||0, Sun: 2||6] */
"fl":<int> /* schedule flags */
},
"un":[<long>], /* array of IDs of units/unit groups */
"act":[ /* actions */
{
"t":"<text>", /* action type (see below) */
"p":{ /* parameters */
"blink": "<text>", /* mini-map blinking when triggered */
"color": "<text>", /* online notification colour */
"url": "<text>", /* URL address of the notification sound */
...
},
...
}
],
"trg":{ /* control */
"t":"<text>", /* control type (see below) */
"p":{ /* parameters */
"<text>":"<text>", /* parameter name: value */
...
}
},
"ct":<uint>, /* creation time */
"mt":<uint> /* last modification time */
}
]
Notification flags:
Flag | Description |
---|---|
0x0 | Notification triggers for the first message. |
0x1 | Notification triggers for every message. |
0x2 | Notification is disabled. |
For notifications of the Off time control type, the value of the mast parameter specified in seconds must correspond to the value of the min_idle_time parameter specified in minutes. Thus, if you want the notification to be triggered after 10 minutes of off time, specify 10 for min_idle_time and 600 for mast.
If the request fails, an error code is returned.
Action types
The following types of actions are available for notifications:
- Notify by email;
- Notify by SMS;
- Display online notification in a pop-up window;
- Send mobile notification;
- Send a request;
- Send notification to Telegram;
- Register event for unit;
- Send a command;
- Change access to units;
- Set counter value;
- Store counter value as a parameter;
- Register unit status;
- Add or remove units from groups;
- Send a report by email;
- Create a ride;
- Separate driver;
- Separate trailer.
Notify by email
{
"t":"email", /* action type */
"p":{
"email_to":"<text>", /* email address */
"html":"<text>", /* use HTML tags: 0 — no, 1 — yes */
"img_attach":"<text>", /* attach image from notification: 1 — yes, 0 — no */
"subj":"<text>" /* text of message */
}
}
Notify by SMS
{
"t":"sms", /* action type */
"p":{
"phones":"<text>" /* list of phone numbers (separated by semicolons) */
}
}
Display online notification in a pop-up window
{
"t":"message", /* action type */
"p":{
"color":"<text>", /* notification colour */
"name":"<text>", /* notification name */
"url":"<text>" /* URL address of the notification sound */
}
}
Send mobile notification
{
"t":"mobile_apps", /* action type */
"p":{
"apps":"{\"<text>\":[ /* mobile app name */
<uint> /* user ID */
]}"
}
}
Send a request
{
"t":"push_messages", /* action type */
"p":{
"url":"<text>", /* server name (port may be defined), start it with "http(s)" */
"get":<bool> /* request type: 1 — GET, 0 — POST */
}
}
Send notification to Telegram
{
"t":"messenger_messages", /* action type */
"p":{
"chat_id":"<text>", /* channel ID in Telegram */
"token":"<text>" /* user token in Telegram */
}
}
Register event for unit
{
"t":"event", /* action type */
"p":{
"flags":"<text>" /* register as: 0 — event, 1 — violation */
}
}
Send a command
{
"t":"exec_cmd", /* action type */
"p":{
"cmd_type":"<text>", /* command type */
"link":"<text>", /* link type */
"name":"<text>", /* command name */
"param":"<text>" /* parameters */
}
}
You can find the list of available types of commands here.
Change access to units
{
"t":"user_access", /* action type */
"p":{
"acl_bits":"<text>", /* 1 — set bit, 0 — remove bit */
"acl_mask":"<text>", /* mask of bits which must be changed */
"units":"<text>", /* list of unit IDs (separated by commas) */
"users":"<text>" /* list of user IDs (separated by commas) */
}
}
Set counter value
{
"t":"counter", /* action type */
"p":{
"engine_hours":"<text>", /* engine hours counter value */
"flags":"<text>", /* counter flags (see below) */
"mileage":"<text>", /* mileage counter value */
"traffic":"<text>" /* GPRS traffic counter value */
}
}
Counter flags:
Flag | Description |
---|---|
1 | Set mileage counter value. |
2 | Set engine hours counter value. |
4 | Set GPRS traffic counter value. |
Store counter value as a parameter
{
"t":"store_counter", /* action type */
"p":{
"engine_hours":"<text>", /* name of parameter for engine hours counter */
"flags":"<text>", /* flags (see below) */
"mileage":"<text>" /* name of parameter for mileage counter */
}
}
Flags:
Flag | Description |
---|---|
1 | Store mileage counter value as a parameter. |
2 | Store engine hours counter value as a parameter. |
Register unit status
{
"t":"status", /* action type */
"p":{
"ui_text":"<text>" /* status */
}
}
Add or remove units from groups
{
"t":"group_manipulation", /* action type */
"p":{
"add_to":"<text>", /* add to specified groups */
"remove_from":"<text>" /* remove from specified groups */
}
}
Send a report by email
{
"t":"email_report", /* action type */
"p":{
"email_to":"<text>", /* email address */
"file_type":"<text>", /* file format (see below) */
"flags":"<text>", /* interval flags */
"params":"<text>", /* report configuration (XML) */
"report_guid":"<text>", /* resource ID */
"report_id":"<text>", /* template ID */
"report_object_guid":"<text>", /* ID of item for report */
"report_object_id":"<text>", /* ID of subitem (0 — if report executed for item) */
"time_from":"<text>", /* the beginning of the time interval */
"time_to":"<text>" /* the end of the time interval */
}
}
Interval flags are described here.
File formats:
- 1 — HTML;
- 2 — PDF;
- 4 — XLS;
- 8 — XLSX;
- 16 — XML;
- 32 — CSV.
Create a ride
{
"t":"route_control", /* action type */
"p":{
"description":"<text>", /* description */
"expiration":"<text>", /* expiration date */
"flags":"<text>", /* ride flags */
"name":"<text>", /* name */
"route":"<text>", /* route ID */
"schedule":"<text>" /* schedule ID */
}
}
Ride flags are described here.
Separate driver
{
"t":"drivers_reset", /* action type */
"p":{}
}
Separate trailer
{
"t":"trailers_reset", /* action type */
"p":{}
}
Control types
The following control types are available for notifications:
- Geofence;
- Address;
- Speed;
- Alarm (SOS);
- Digital input;
- Parameter in a message;
- Sensor value;
- Connection loss;
- Off time;
- SMS;
- Interposition of units;
- Excess of messages;
- Route progress;
- Driver;
- Trailer;
- Maintenance;
- Fuel filling or battery charge;
- Fuel drain
- Device health check status.
Geofence
"trg":{
"t":"geozone", /* control type */
"p":{
"sensor_type":"<text>", /* sensor type */
"sensor_name_mask":"<text>", /* sensor name mask */
"lower_bound":<uint>, /* sensor value from */
"upper_bound":<uint>, /* sensor value to */
"prev_msg_diff":<uint>, /* this flag allows forming boundaries for the current value according to the previous value(prev) in the following way: [prev+lower_bound ; prev+upper_bound]; so boundaries for the current value are always relative to the previous value; 0 — disable the option, 1 — enable the option */
"merge":<uint>, /* similar sensors: 0 — calculate separately, 1 — sum up values */
"reversed":<uint>, /* trigger: 0 — in the specified range, 1 — out of the specified range */
"geozone_ids":"<text>", /* list of geofence IDs (separated by commas) */
"type":<uint>, /* control type: 0 — control entries to a geofence, 1 — control exits from a geofence */
"min_speed":<uint>, /* minimum speed, km/h */
"max_speed":<uint>, /* maximum speed, km/h */
"include_lbs":<uint>, /* process LBS messages: 1 — yes, 0 — no */
"lo":"<text>" /* logic operator (optional): "AND", "OR" */
}
}
Address
"trg":{
"t":"address", /* control type */
"p":{
"sensor_type":"<text>", /* sensor type */
"sensor_name_mask":"<text>", /* sensor name mask */
"lower_bound":<uint>, /* sensor value from */
"upper_bound":<uint>, /* sensor value to */
"prev_msg_diff":<uint>, /* this flag allows forming boundaries for the current value according to the previous value(prev) in the following way: [prev+lower_bound ; prev+upper_bound]; so boundaries for the current value are always relative to the previous value; 0 — disable the option, 1 — enable the option */
"merge":<uint>, /* similar sensors: 0 — calculate separately, 1 — sum up values */
"reversed":<uint>, /* trigger: 0 — in the specified range, 1 — out of the specified range */
"radius":<uint>, /* trigger radius */
"type":<uint>, /* control type: 0 — control in the address radius, 1 — control out of the address radius */
"min_speed":<uint>, /* minimum speed, km/h */
"max_speed":<uint>, /* maximum speed, km/h */
"country":"<text>", /* country */
"region":"<text>", /* region */
"city":"<text>", /* city */
"street":"<text>", /* street */
"house":"<text>", /* house */
"include_lbs":<uint> /* process LBS messages: 1 — yes, 0 — no */
}
}
Speed
"trg":{
"t":"speed", /* control type */
"p":{
"lower_bound":"<text>", /* sensor value from */
"max_speed":"<text>", /* maximum speed, km/h */
"merge":"<text>", /* similar sensors: 0 — calculate separately, 1 — sum up values */
"min_speed":"<text>", /* minimum speed, km/h */
"prev_msg_diff":"<text>", /* this flag allows forming boundaries for the current value according to the previous value(prev) in the following way: [prev+lower_bound ; prev+upper_bound]; so boundaries for the current value are always relative to the previous value; 0 — disable the option, 1 — enable the option */
"reversed":"<text>", /* trigger: 0 — in the specified range, 1 — out of the specified range */
"sensor_name_mask":"<text>", /* sensor name mask */
"sensor_type":"<text>", /* sensor type */
"upper_bound":"<text>" /* sensor value to */
}
}
Alarm (SOS)
"trg":{
"t":"alarm", /* control type */
"p":{}
}
Digital input
"trg":{
"t":"digital_input", /* control type */
"p":{
"input_index":"<text>", /* digital input (1-32) */
"type":"<text>" /* control type: 0 — check for activation, 1 — check for deactivation */
}
}
Parameter in a message
"trg":{
"t":"msg_param", /* control type */
"p":{
"kind":"<text>", /* parameter control type (see below) */
"lower_bound":"<text>", /* parameter value from */
"param":"<text>", /* parameter name */
"text_mask":"<text>", /* text mask */
"type":"<text>", /* trigger: 0 — in the specified range, 1 — out of the specified range */
"upper_bound":"<text>" /* parameter value to */
}
}
Parameter control types:
Type | Description |
---|---|
0 | Value range. |
1 | Text mask. |
2 | Parameter availability. |
3 | Parameter lack. |
Sensor value
"trg":{
"t":"sensor_value", /* control type */
"p":{
"lower_bound":"<text>", /* sensor value from */
"merge":"<text>", /* similar sensors: 0 — calculate separately, 1 — sum up values */
"prev_msg_diff":"<text>", /* this flag allows forming boundaries for the current value according to the previous value(prev) in the following way: [prev+lower_bound ; prev+upper_bound]; so boundaries for the current value are always relative to the previous value; 0 — disable the option, 1 — enable the option */
"sensor_name_mask":"<text>", /* sensor name mask */
"sensor_type":"<text>", /* sensor type */
"type":"<text>", /* trigger: 0 — in the specified range, 1 — out of the specified range */
"upper_bound":"<text>" /* sensor value to */
}
}
Connection loss
"trg":{
"t":"outage", /* control type */
"p":{
"time":"<text>", /* time interval, s */
"type":"<text>", /* control type: 0 — coordinates loss, 1 — connection loss */
"include_lbs":<uint>, /* process LBS messages: 1 — yes, 0 — no */
"check_restore":<uint>, /* notify when: 0 — connection lost, 1 — connection lost and restored, 2 — connection restored */
"geozones_type":"<text>", /* control type: 0 — out of geofence, 1 — in geofence */
"geozones_list":"<text>" /* the list of geofence IDs (separated by commas) */
}
}
Off time
"trg":{
"t":"speed", /* control type */
"p":{
"lower_bound":"<text>", /* sensor value from */
"max_speed":"<text>", /* maximum speed, km/h */
"merge":"<text>", /* similar sensors: 0 — calculate separately, 1 — sum up values */
"min_idle_time":"<text>", /* minimum idle time, min */
"min_speed":"<text>", /* minimum speed, km/h */
"prev_msg_diff":"<text>", /* this flag allows forming boundaries for the current value according to the previous value(prev) in the following way: [prev+lower_bound ; prev+upper_bound]; so boundaries for the current value are always relative to the previous value; 0 — disable the option, 1 — enable the option */
"reversed":"<text>", /* trigger: 0 — in the specified range, 1 — out of the specified range */
"sensor_name_mask":"<text>", /* sensor name mask */
"sensor_type":"<text>", /* sensor type */
"upper_bound":"<text>", /* sensor value to */
"geozones_type":"<text>", /* control type: 0 — out of geofence, 1 — in geofence */
"geozones_list":"<text>" /* the list of geofence IDs (separated by commas) */
}
}
The value of the min_idle_time parameter specified in minutes must correspond to the value of the mast parameter specified in seconds. Thus, if you want the notification to be triggered after 10 minutes of off time, specify 10 for min_idle_time and 600 for mast.
SMS
"trg":{
"t":"sms", /* control type */
"p":{
"mask":"<text>" /* SMS text mask */
}
}
Interposition of units
"trg":{
"t":"interposition", /* control type */
"p":{
"sensor_name_mask":"<text>", /* sensor name mask */
"sensor_type":"<text>", /* sensor type */
"lower_bound":"<text>", /* sensor value from */
"upper_bound":"<text>" /* sensor value to */
"merge":"<text>", /* similar sensors: 0 — calculate separately, 1 — sum up values */
"max_speed":"<text>", /* maximum speed, km/h */
"min_speed":"<text>", /* minimum speed, km/h */
"reversed":"<text>", /* trigger: 0 — in the specified range, 1 — out of the specified range */
"prev_msg_diff":"<text>", /* this flag allows forming boundaries for the current value according to the previous value(prev) in the following way: [prev+lower_bound ; prev+upper_bound]; so boundaries for the current value are always relative to the previous value; 0 — disable the option, 1 — enable the option */
"radius":"<text>", /* radius, m */
"type":"<text>", /* control type: 0 — control approaching to units, 1 — control moving away from units */
"unit_guids":"<text>", /* the list of control unit IDs (separated by commas) */
"include_lbs":<uint>, /* process LBS messages: 1 — yes, 0 — no */
"lo":"<text>" /* logic operator (optional): "AND", "OR" */
}
}
Excess of messages
"trg":{
"t":"msgs_counter", /* control type */
"p":{
"flags":"<text>", /* message type: 1 — data messages, 2 — SMS messages */
"msgs_limit":"<text>", /* limit of messages */
"time_offset":"<text>" /* reset counter each (limit 24h), s */
}
}
Route progress
"trg":{
"t":"route_control", /* control type */
"p":{
"mask":"<text>", /* route name mask */
"round_mask":"<text>", /* ride name mask */
"schedule_mask":"<text>", /* schedule name mask */
"types":"<text>" /* route control types (separated by commas) */
}
}
Route control types:
Type | Description |
---|---|
1 | Ride started. |
2 | Ride finished. |
4 | Ride aborted. |
8 | Arrival at check point. |
16 | Check point skipped. |
32 | Departure from check point. |
64 | Delay. |
128 | Outrunning. |
256 | Return to schedule. |
Driver
"trg":{
"t":"driver", /* control type */
"p":{
"driver_code_mask":"<text>", /* driver code mask */
"flags":"<text>" /* control type: 1 — driver assignment, 2 — driver separation */
}
}
Trailer
"trg": {
"t": "trailer", /* control type */
"p": {
"driver_code_mask": "<text>", /* trailer code mask */
"flags": "<text>" /* control type: 1 — trailer assignment, 2 — trailer separation */
}
}
Maintenance
"trg":{
"t":"service_intervals", /* control type */
"p":{
"days":"<text>", /* days interval */
"engine_hours":"<text>", /* engine hours interval, h */
"flags":"<text>", /* maintenance control flags (see below) */
"mask":"<text>", /* wildcard based mask */
"mileage":"<text>", /* mileage interval, km */
"val":"<text>" /* notify when: 1 — service term approaches, -1 — service term is expired */
}
}
Maintenance control flags:
Flag | Description |
---|---|
0 | Control all service intervals. |
1 | Mileage interval. |
2 | Engine hours interval. |
4 | Days interval. |
Fuel filling or battery charge
"trg":{
"t":"fuel_filling", /* control type */
"p":{
"sensor_name_mask":"<text>", /* sensor name mask */
"geozones_type":<uint>, /* geofence control type: 0 — disabled or outside geofence, 1 — inside geofence */
"geozones_list":"<text>", /* the list of geofence IDs (separated by commas) in the format "resourceID_geozone ID" */
"realtime_only":<uint>, /* ignore the recalculation of historical data: 0 — disable, 1 — enable */
}
}
Fuel drain
"trg":{
"t":"fuel_theft", /* control type */
"p":{
"sensor_name_mask":"<text>", /* sensor name mask */
"geozones_type":<uint>, /* geofence control type: 0 — disabled or outside geofence, 1 — inside geofence */
"geozones_list":"<text>", /* the list of geofence IDs (separated by commas) in the format "resourceID_geozone ID" */
"realtime_only":<uint>, /* ignore the recalculation of historical data: 0 — disable, 1 — enable */
}
}
Device health check status
"trg": {
"t": "health_check", /* Control type */
"p": {
"healthy": <uint>, /* Shows if the device is healthy: 0 — no, 1 — yes */
"unhealthy": <uint>, /* Shows if the device is unhealthy: 0 — no, 1 — yes */
"needAttention": <uint>, /* Shows if the device is needs attention: 0 — no, 1 — yes */
"triggerForEachIncident": <uint> /* Trigger for each incident: 0 — disabled, 1 — enabled */
}
}
Error codes
Code | Description |
---|---|
4 | Wrong input parameters. |
7 | The user doesn't have the required access right to the resource (ADF_ACL_AVL_RES_VIEW_NF). |