Rule language reference - Amazon Fraud Detector

Rule language reference

The following section outlines the expression (that is, rule writing) capabilities in Amazon Fraud Detector.

Using variables

You can use any variable defined in the evaluated event type as part of your expression. Use the dollar sign to indicate a variable:

$example_variable < 100

Using lists

You can use any list that is associated with a variable type and is populated with entries as part of your rule expression. Use the dollar sign to indicate a list entry value:

$example_list_variable in @list_name

Comparison, membership, and identity operators

Amazon Fraud Detector includes the following comparison operators: >, >=, <, <=,!=, ==, in, not in

The following are examples:

Example: <

$variable < 100

Example: in, not in

$variable in [5, 10, 25, 100]

Example: !=

$variable != "US"

Example: ==

$variable == 1000

Operator Tables

Operator Amazon Fraud Detector Operator
Equal to ==
Not equal to !=
Greater than >
Less than <
Great than or equal to >=
Less than or equal to <=
In in
And and
Or or
Not !

Basic math

You can use basic math operators in your expression (for example, +, -, * ,/). A typical use case is when you need to combine variables during your evaluation.

In the rule below, we are adding the variable $variable_1 with $variable_2, and checking whether the total is less than 10.

$variable_1 + $variable_2 < 10

Basic Math Table Data

Operator Amazon Fraud Detector Operator
Plus +
Minus -
Multiply *
Divide /
Modulo %

Regular Expression (regex)

You can use regex to search for specific patterns as part of your expression. This is particularly useful if you are looking to match a specific string or numerical value for one of your variables. Amazon Fraud Detector only supports match when working with regular expressions (for example, it returns True/False depending on whether the provided string is matched by the regular expression). Amazon Fraud Detector’s regular expression support is based on .matches() in java (using the RE2J Regular Expression library). There are several helpful websites on the internet that are useful for testing different regular expression patterns.

In the first example below, we first transform the variable email to lowercase. We then check whether the pattern @gmail.com is in the email variable. Notice the second period is escaped so that we can explicitly check for the string .com.

regex_match(".*@gmail\.com", lowercase($email))

In the second example, we check whether the variable phone_number contains the country code +1 to determine if the phone number is from the US. The plus symbol is escaped so that we can explicitly check for the string +1.

regex_match(".*\+1", $phone_number)

Regex Table

Operator Amazon Fraud Detector Example
Match any string that starts with regex_match("^mystring", $variable)
Match entire string exactly regex_match("mystring", $variable)
Match any character except new line regex_match(".", $variable)
Match any number of characters except new line prior ‘mystring’ regex_match(".*mystring", $variable)
Escape special characters \

Checking for missing values

Sometimes it is beneficial to check whether the value is missing. In Amazon Fraud Detector this is represented by null. You can do this by using the following syntax:

$variable != null

Similarly, if you wanted to check whether a value is not present, you could do the following:

$variable == null

Multiple conditions

You can combine multiple expressions together using and and or. Amazon Fraud Detector stops in an OR expression when a single true value is found, and it stops in an AND when a single false value is found.

In the example below, we are checking for two conditions using the and condition. In the first statement, we are checking whether variable 1 is less than 100. In the second we check whether variable 2 is not the US.

Given the rule uses an and, both must be TRUE for the entire condition to evaluate to TRUE.

$variable_1 < 100 and $variable_2 != "US"

You can use parenthesis to group Boolean operations, as shown following:

$variable_1 < 100 and $variable_2 != "US" or ($variable_1 * 100.0 > $variable_3)

Other expression types

DateTime functions

Function Description Example
getcurrentdatetime() Gives the current time of the rule execution in ISO8601 UTC format. You can use getepochmilliseconds(getcurrentdatetime()) to perform additional operations getcurrentdatetime() == "2023-03-28T18:34:02Z"
isbefore(DateTime1, DateTime2) Returns a boolean(True/False) if the caller DateTime1 is before DateTime2

isbefore(getcurrentdatetime(), "2019-11-30T01:01:01Z") == "False"

isbefore(getcurrentdatetime(), "2050-11-30T01:05:01Z") == "True"

isafter(DateTime1,DateTime2) Returns a boolean(True/False) if the caller DateTime1 is after DateTime2

isafter(getcurrentdatetime(), "2019-11-30T01:01:01Z") == "True"

isafter(getcurrentdatetime(), "2050-11-30T01:05:01Z") == "False"

getepochmilliseconds(DateTime) Takes a DateTime and returns that DateTime in epoch milliseconds. Useful for performing mathematical operations on the date getepochmilliseconds("2019-11-30T01:01:01Z") == 1575032461

String Operators

Operator Example
Transform string to uppercase uppercase($variable)
Transform string to lowercase lowercase($variable)

Other

Operator Comment

Add a comment

# my comment