A rule consists of a JSON objects with these properties:
type- Type of ruledata- The data to operate onoperator- The operator to useoperand- The argument for the operator
This table describes the different rule types, data and operators:
| Rule type | Rule data | Rule operator | 
|---|---|---|
| data | ^\d+$ | startswith | 
| data | ^\d+$ | endswith | 
| data | ^\d+$ | greaterequals | 
| data | ^\d+$ | greater | 
| data | ^\d+$ | less | 
| data | ^\d+$ | lessequals | 
| data | ^\d+$ | contains | 
| data | ^\d+$ | equals | 
| data | ^\d+$ | notequals | 
| data | ^\d+$ | notstartswith | 
| data | ^\d+$ | notendswith | 
| data | ^\d+$ | notcontains | 
| data | ^\d+$ | empty | 
| data | ^\d+$ | notempty | 
| data | ^\d+$ | intlessequals | 
| data | ^\d+$ | intgreaterequals | 
| data | ^\d+$ | intgreater | 
| data | ^\d+$ | intless | 
| data | ^\d+$ | intequals | 
| data | ^\d+$ | intnotequals | 
| subscriber | ^email$ | startswith | 
| subscriber | ^email$ | endswith | 
| subscriber | ^email$ | greaterequals | 
| subscriber | ^email$ | greater | 
| subscriber | ^email$ | less | 
| subscriber | ^email$ | lessequals | 
| subscriber | ^email$ | contains | 
| subscriber | ^email$ | equals | 
| subscriber | ^email$ | notequals | 
| subscriber | ^email$ | notstartswith | 
| subscriber | ^email$ | notendswith | 
| subscriber | ^email$ | notcontains | 
| subscriber | ^subscriptions$ | has_active_subscription_on | 
| subscriber | ^subscriptions$ | has_no_active_subscription_on | 
| subscription | ^activated$ | after | 
| subscription | ^activated$ | before | 
| subscription | ^deliveries$ | received | 
| subscription | ^deliveries$ | not_clicked | 
| subscription | ^deliveries$ | clicked | 
| subscription | ^deliveries$ | read_online | 
| subscription | ^deliveries$ | read | 
| subscription | ^deliveries$ | not_received | 
| subscription | ^deliveries$ | not_read | 
| subscription | ^deliveries$ | not_read_online | 
| subscription | ^(views|clicks)$ | inactivity_after | 
| subscription | ^(views|clicks)$ | activity_after | 
| subscription | ^(views|clicks)$ | activity_before | 
| subscription | ^(views|clicks)$ | inactivity_before | 
Putting it together as a ruleset
The ruleset is a list of JSON objects (the rules) and a logical operation and or or:
{"mode": "and", rules:[...]}
And with or:
{"mode": "or", rules:[...]}
A finished ruleset might look like this:
{"mode": "and", rules:[{
  "type": "subscription", 
  "data": "views", 
  "operator": "inactivity_after", 
  "operand": "2013-01-01 00:00:00"
}, {
  "type": "subscriber", 
  "data": "email", 
  "operator": "endswith", 
  "operand": "@hotmail.com"
}]}
    