Using Rules¶
Rules are used to set up conditions according to which the system logs events and sends notifications to users.
When a server receives new data from a device, it checks whether the set conditions are true or false for this data. If they are true, the server generates an event in history, logs it, immediately sends an SMS, push message, or email, and saves the event in history.
Creating a Rule¶
To start working with rules, you must first create one. This involves setting up conditions under which the platform will generate events and scheduling intervals during which the rule should be active using the rule/create
API call. The user must have access to rule updates.
Required Parameters¶
Availability of some parameters depends on the rule type used:
name
: A string containing the name of the created rule.description
: A string containing the rule's description.zone_ids
: An array of integers. A list of zones where the rule will be active. Leave it empty if the rule should work everywhere.zone_ids
is not allowed for theoffline
rule and is required forroute
andinoutzone
rule types.trackers
: An array of integers. A list of tracker IDs that belong to the user for which the rule will work.type
: A string containing one of the predefined rule types. See rule types.primary_text
: A string with the primary text of the rule notification when the condition istrue
.secondary_text
: An optional string with the secondary text of the rule notification when the condition isfalse
. The availability of this parameter depends on the rule type.param
: An optional integer for common integer conditions. The availability of this parameter depends on the rule type. See rule types.alerts
: An object with destinations for notifications. Defines who and how notifications will be received. Described in the rule object.suspended
: A boolean that starts and stops the rule.true
if the rule is suspended.schedule
: An optional object that configures the time when the rule works. Described in the rule object.extended_params
: An optional object specified for a particular rule type. See rule types.
API Request¶
curl -X POST 'https://api.navixy.com/v2/tracker/rule/create' \
-H 'Content-Type: application/json' \
-d '{"hash": "a6aa75587e5c59c32d347da438505fc3", "rule": {"description": "", "type": "work_status_change", "primary_text": "status changed", "alerts": {"push_enabled": true, "emails": ["example@gmail.com"], "emergency": false, "sms_phones": ["745494878945"], "phones": []}, "suspended": false, "name": "Status changing", "trackers": [123456], "extended_params": {"emergency": false, "zone_limit_inverted": false, "status_ids": [319281,319282,319283]}, "schedule": [{"from": {"weekday": 1, "time": "00:00:00"}, "to": {"weekday": 7,"time": "23:59:59"}, "type": "weekly"}], "zone_ids": []}}'
The platform will respond with the ID of the created rule.
{
"success": true,
"id": 123
}
Binding and Unbinding Rules¶
Once a rule is created, you can bind devices to it using the rule/bind
call. For instance, if a newly registered device needs to follow an existing rule, bind it to the rule without creating a new one. Similarly, use the rule/unbind
call to remove devices from a rule when it is no longer needed for them.
Required Parameters¶
rule_id
: The ID of the rule. You can get rule IDs using therule/list
call.trackers
: An array of integers. List of tracker IDs. Trackers that do not exist, are owned by another user, or are deleted will be ignored without errors.
API Requests¶
curl -X POST 'https://api.navixy.com/v2/tracker/rule/bind' \
-H 'Content-Type: application/json' \
-d '{"hash": "a6aa75587e5c59c32d347da438505fc3", "rule_id": 123, "trackers": [265489]}'
curl -X POST 'https://api.navixy.com/v2/tracker/rule/unbind' \
-H 'Content-Type: application/json' \
-d '{"hash": "a6aa75587e5c59c32d347da438505fc3", "rule_id": 123, "trackers": [265489]}'
Updating a Rule¶
If a rule needs to be updated, such as adding another phone number for SMS notifications, use the rule/update
call. This method is more efficient than deleting an existing rule and creating a new one.
Required Parameters¶
The list of necessary parameters is the same as in the rule/create
call, plus the id
parameter.
id
: An integer with the ID of the rule to be updated. You can get rule IDs using therule/list
call.
API Request¶
curl -X POST 'https://api.navixy.com/v2/tracker/rule/update' \
-H 'Content-Type: application/json' \
-d '{"hash": "a6aa75587e5c59c32d347da438505fc3", "rule": {"id": 123, "description": "", "type": "work_status_change", "primary_text": "status changed", "alerts": {"push_enabled": true, "emails": ["example@gmail.com"], "emergency": false, "sms_phones": ["745494878945"], "phones": []}, "suspended": false, "name": "Status changing", "trackers": [123456], "extended_params": {"emergency": false, "zone_limit_inverted": false, "status_ids": [319281,319282,319283]}, "schedule": [{"from": {"weekday": 1, "time": "00:00:00"}, "to": {"weekday": 7, "time": "23:59:59"}, "type": "weekly"}], "zone_ids": []}}'
Suspending a Rule¶
To suspend a rule, use the rule/update
call and change only the suspended
parameter to true
. All other parameters should remain unchanged.
API Request¶
curl -X POST 'https://api.navixy.com/v2/tracker/rule/update' \
-H 'Content-Type: application/json' \
-d '{"hash": "a6aa75587e5c59c32d347da438505fc3", "rule": {"id": 123, "description": "", "type": "work_status_change", "primary_text": "status changed", "alerts": {"push_enabled": true, "emails": ["example@gmail.com"], "emergency": false, "sms_phones": ["745494878945"], "phones": []}, "suspended": true, "name": "Status changing", "trackers": [123456], "extended_params": {"emergency": false, "zone_limit_inverted": false, "status_ids": [319281,319282,319283]}, "schedule": [{"from": {"weekday": 1, "time": "00:00:00"}, "to": {"weekday": 7, "time": "23:59:59"}, "type": "weekly"}], "zone_ids": []}}'