loading x elements...

This page documents the syntax of Rules and Options.

Each entry here is either a Node, which can be represented as a JSON object / Python dictionary when defining rules and options.

Sometimes, there is a choice of several different Nodes that can be used. In these cases, you can select the one you want using the 'type' field.

Note that this page is intended as a reference sheet. You do not need to read all this.

Rule

A Rule is created by a developer and used by Elody to determine what to do next.

Elody uses the Rule's rating to determine its priority relative to other Rules.

Fields
namethis field is required

The name of the Rule.

The rule name must consist of basic letters, numbers and dashes (-) and must begin with a capital letter. It may be at most 255 characters long.

descriptionthis field is required

A description of the Rule that should be understandable by other developers.

A String with maximum length 1000000.

dependenciesthis field is required

The dependencies act as a prefilter to check Elody should load the Rule at all.

A list of Dependency objects.

thresholdcan be nulldefault value: null

The threshold is used by the dependencies. If it is null, it defaults to the number of elements in the dependencies.

A Float in the range [-1000 ; 1000]. Infinity and NaN are invalid.

triggerthis field is required

A second filter, after the dependencies, that is used to determine whether or not the Rule should be executed.

Additionally, the trigger can find arguments from the current scenario that are used as parameters later.

An object: Trigger.

actionsthis field is required

A list of actions that are executed when the dependencies reach the threshold and the trigger finds a suitable set of arguments to use.

A list of Action objects.

existing_variablesderived field, do not set!

This field is automatically generated.

It summarizes which variables have been declared in this Rule.

A mapping from string keys to content.

The string keys are:

The name of the variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The content is:

The type of the variable.

An object: Variable.

Dependency

A single Dependency used by a Rule. If it matches any of the currently active signals in a scenario, it contributes its weight to the weight of the Rule. Signals are created with the Symbol '!set_signal_weight'. A match occurs if the Symbol is the same. If comment_filter is not null, a match only occurs if the comment on the Tag also matches comment_filter.

This Node has a shortform (instead of specifying a JSON object / a dictionary, you can specify only a constant):

If only a string is given, it is used as the symbol. In this case, weight defaults to 1 and comment_filter to null.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

symbolthis field is required

The Symbol that needs to be matched.

A String representing a Symbol. The Symbol must exist.

weightdefault value: 1.0

The weight that this Dependency contributes to the Rule.

A Float in the range [-1000 ; 1000]. Infinity and NaN are invalid.

comment_filtercan be nulldefault value: null

An optional filter on the comment. If this is not null, a signal only matches this Dependency if it has the same comment as this.

A String with maximum length 255.

Trigger

Defines a rule that searches all objects in the currently running scenario for a match. If a match is found, can set variables of this Rule or Option to the found values.

The Trigger has no memory of previous attempts to find arguments for the Rule or Option, but unless allow_repetition is set to true, the Rule or Option will not fire if the found arguments have been used before.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

allow_repetitiondefault value: false

If true, this Rule or Option can be executed multiple times with the same values for the variables.

A Boolean value.

argumentsdefault value: []

A list of objects that each try to match one argument.

A list of Argument Filter (for search) objects.

Variable

A named variable used by a Rule or Option. Can capture any of the objects that are loaded or created during a scenario.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

typethis field is required

The type of the variable.

One of the following String values: 'program', 'symbol', 'rule', 'file', 'tag', 'message', 'event', 'option'

valuecan be nulldefault value: null

The initial value of the variable. This is None if the variable is declared but has not been set yet. It can be set if this is a variable of an Option, as they inherit a copy of the existing variables when they are created by a Rule or Option.

An object: Identifier.

Argument Filter (a choice of several types)

The objects of a scenario can be filtered for structures of Tags and Symbols.

These structures can be recursive, so you can filter for complex connections between Tags.

You can also assign a name to the objects that pass the filter and specify a role that determines how a found object is treated.

typenamedescription

tag

Tag filter

Scans a Tag for a match. Either confirms or rejects a given Tag as a match.

symbol

Symbol filter

Scans a Symbol for a match. Either confirms or rejects a given Symbol as a match.

rule

Rule filter

Scans a Rule for a match. Either confirms or rejects a given Rule as a match.

option

Option filter

Scans an Option for a match. Either confirms or rejects a given Option as a match.

program

Program filter

Scans a Program for a match. Either confirms or rejects a given Program as a match.

file

File filter

Scans a File for a match. Either confirms or rejects a given File as a match.

message

Message filter

Scans a Message for a match. Either confirms or rejects a given Message as a match.

event

Event filter

Scans an Event for a match. Either confirms or rejects a given Event as a match.

Tag filter (A type of Argument Filter)

Scans a Tag for a match. Either confirms or rejects a given Tag as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

symbolcan be nulldefault value: null

The Symbol of the Tag.

A String representing a Symbol. The Symbol must exist.

commentcan be nulldefault value: null

If this is not null, the comment of the Tag must be equal to this.

A String with maximum length 255.

comment_matchescan be nulldefault value: null

If this is not null, checks if the comment matches the regular expression.

A Regular Expression.

weightcan be nulldefault value: null

If this is not null, the weight of the Tag must be equal to this.

A Float value. Infinity and NaN are invalid.

min_weightcan be nulldefault value: null

If this is not null, the weight of the Tag must be at least this large.

A Float value. Infinity and NaN are invalid.

max_weightcan be nulldefault value: null

If this is not null, the weight of the Tag must be at most this large.

A Float value. Infinity and NaN are invalid.

nullifiedcan be nulldefault value: false

The influence of '!nullify' Tags on whether or not the Tag is considered a match.

If this value is True, the Tag is only a match if it has a !nullify Tag on it.

If this value is False, the Tag is not a match if it has a !nullify Tag on it.

If this value is null, it doesn't matter.

A Boolean value.

requirement_is_providedcan be nulldefault value: null

If this tag has a symbol starting with 'require_', checks if there is a tag targeting it at index 0 with the symbol '!provide'.

The method requirement_is_provided is used to check if the requirement is provided.

If this value is null, this filter is ignored.

If this value is True, the Tag is only a match if the task is finished.

If this value is False, the tag is only a match if the task is not finished.

If this value is not null and the Tag is not a require_ Tag at all, it is not a match.

A Boolean value.

task_is_finishedcan be nulldefault value: null

If this tag has the symbol '!task' or has 'task_' as its prefix, checks if the task is already finished.

The method task_is_finished is used to check if the task is finished.

If this value is null, this filter is ignored.

If this value is True, the Tag is only a match if the task is finished.

If this value is False, the tag is only a match if the task is not finished.

If this value is not null and the Tag is not a task at all, it is not a match.

A Boolean value.

argumentsdefault value: {}

Recursively tests the arguments of the Tag for a match.

A mapping from string keys to content.

The string keys are:

The index of the argument

An Integer value, given as a String. This is necessary because JSON does not allow non-string values as keys of mappings.

The content is:

The Tag's argument can be specified in one of two ways:

The simple variant is:

The name of a variable. It is checked if the argument matches the current value of the variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

The Argument Filter to apply to the argument of the Tag. If the 'role' of the Argument Filter is not 'optional', the argument of the Tag must at the very least exist, even if the Argument Filter doesn't have a filter.

Filters the argument of a Tag in a Tag filter. This is used for recursively filtering on the Tag's own arguments. If it matches, the argument may also be stored in a variable for later reference.

Note that recursive uses of 'role' : 'exclude' can get confusing: 'exclude' means that the level can be a match only if the current level does not have a match. Multiple uses of 'exclude' on different levels of filter hierarchy are like double-negations.

One of the Argument Filter objects.

Symbol filter (A type of Argument Filter)

Scans a Symbol for a match. Either confirms or rejects a given Symbol as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

symbolcan be nulldefault value: null

The Symbol that needs to be matched.

A String representing a Symbol. The Symbol must exist.

Rule filter (A type of Argument Filter)

Scans a Rule for a match. Either confirms or rejects a given Rule as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

is_the_current_rulecan be nulldefault value: null

If this is not null, checks if the object is the Rule that is currently being executed. True means this must be the case, false means it must not be the case. Only works while the Rule itself is executing, not while an Option created by it is executing.

A Boolean value.

rulecan be nulldefault value: null

If this is not null, compare the object to a given Rule.

Select the rule in one of several ways:

-An integer that is the ID of the Rule.

-A string that is the name of a Rule. Uses the latest version of the Rule.

-A string that is the name of a Rule with a suffix '#'. Uses the selected version of the Rule.

Either an integer or a string.

Option filter (A type of Argument Filter)

Scans an Option for a match. Either confirms or rejects a given Option as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

is_the_current_optioncan be nulldefault value: null

If this is not null, checks if the object is the Option that is currently being executed. True means this must be the case, false means it must not be the case. Only works while an Option is executing, not while a Rule is executing.

A Boolean value.

namecan be nulldefault value: null

If this is not null, compare the name of the Option.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

Program filter (A type of Argument Filter)

Scans a Program for a match. Either confirms or rejects a given Program as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

programcan be nulldefault value: null

If this is not null, compare the object to a given Program.

Select the program in one of several ways:

-An integer that is the ID of the Program.

-A string that is the name of a Program. Uses the latest version of the Program.

-A string that is the name of a Program with a suffix '#'. Uses the selected version of the Program.

Either an integer or a string.

File filter (A type of Argument Filter)

Scans a File for a match. Either confirms or rejects a given File as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

name_matchescan be nulldefault value: null

If not null, checks if the name of the file matches the regular expression.

A Regular Expression.

Message filter (A type of Argument Filter)

Scans a Message for a match. Either confirms or rejects a given Message as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

Event filter (A type of Argument Filter)

Scans an Event for a match. Either confirms or rejects a given Event as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

Argument Filter (for search) (a choice of several types)

Describes a search for an argument used by a Rule or Option.

All objects that have been created or loaded so far will be checked for a match and the field 'search_type' specifies which match is returned if several are found.

This search structure can be recursive, so you can filter for complex connections between Tags.

You can also assign a name to the objects that pass the filter and specify a role that determines how a found object is treated.

typenamedescription

tag

Tag filter (for search)

Scans a Tag for a match. Either confirms or rejects a given Tag as a match.

symbol

Symbol filter (for search)

Scans a Symbol for a match. Either confirms or rejects a given Symbol as a match.

rule

Rule filter (for search)

Scans a Rule for a match. Either confirms or rejects a given Rule as a match.

option

Option filter (for search)

Scans an Option for a match. Either confirms or rejects a given Option as a match.

program

Program filter (for search)

Scans a Program for a match. Either confirms or rejects a given Program as a match.

file

File filter (for search)

Scans a File for a match. Either confirms or rejects a given File as a match.

message

Message filter (for search)

Scans a Message for a match. Either confirms or rejects a given Message as a match.

event

Event filter (for search)

Scans an Event for a match. Either confirms or rejects a given Event as a match.

Tag filter (for search) (A type of Argument Filter (for search))

Scans a Tag for a match. Either confirms or rejects a given Tag as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

symbolcan be nulldefault value: null

The Symbol of the Tag.

A String representing a Symbol. The Symbol must exist.

commentcan be nulldefault value: null

If this is not null, the comment of the Tag must be equal to this.

A String with maximum length 255.

comment_matchescan be nulldefault value: null

If this is not null, checks if the comment matches the regular expression.

A Regular Expression.

weightcan be nulldefault value: null

If this is not null, the weight of the Tag must be equal to this.

A Float value. Infinity and NaN are invalid.

min_weightcan be nulldefault value: null

If this is not null, the weight of the Tag must be at least this large.

A Float value. Infinity and NaN are invalid.

max_weightcan be nulldefault value: null

If this is not null, the weight of the Tag must be at most this large.

A Float value. Infinity and NaN are invalid.

nullifiedcan be nulldefault value: false

The influence of '!nullify' Tags on whether or not the Tag is considered a match.

If this value is True, the Tag is only a match if it has a !nullify Tag on it.

If this value is False, the Tag is not a match if it has a !nullify Tag on it.

If this value is null, it doesn't matter.

A Boolean value.

requirement_is_providedcan be nulldefault value: null

If this tag has a symbol starting with 'require_', checks if there is a tag targeting it at index 0 with the symbol '!provide'.

The method requirement_is_provided is used to check if the requirement is provided.

If this value is null, this filter is ignored.

If this value is True, the Tag is only a match if the task is finished.

If this value is False, the tag is only a match if the task is not finished.

If this value is not null and the Tag is not a require_ Tag at all, it is not a match.

A Boolean value.

task_is_finishedcan be nulldefault value: null

If this tag has the symbol '!task' or has 'task_' as its prefix, checks if the task is already finished.

The method task_is_finished is used to check if the task is finished.

If this value is null, this filter is ignored.

If this value is True, the Tag is only a match if the task is finished.

If this value is False, the tag is only a match if the task is not finished.

If this value is not null and the Tag is not a task at all, it is not a match.

A Boolean value.

argumentsdefault value: {}

Recursively tests the arguments of the Tag for a match.

A mapping from string keys to content.

The string keys are:

The index of the argument

An Integer value, given as a String. This is necessary because JSON does not allow non-string values as keys of mappings.

The content is:

The Tag's argument can be specified in one of two ways:

The simple variant is:

The name of a variable. It is checked if the argument matches the current value of the variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

The Argument Filter to apply to the argument of the Tag. If the 'role' of the Argument Filter is not 'optional', the argument of the Tag must at the very least exist, even if the Argument Filter doesn't have a filter.

Filters the argument of a Tag in a Tag filter. This is used for recursively filtering on the Tag's own arguments. If it matches, the argument may also be stored in a variable for later reference.

Note that recursive uses of 'role' : 'exclude' can get confusing: 'exclude' means that the level can be a match only if the current level does not have a match. Multiple uses of 'exclude' on different levels of filter hierarchy are like double-negations.

One of the Argument Filter objects.

Symbol filter (for search) (A type of Argument Filter (for search))

Scans a Symbol for a match. Either confirms or rejects a given Symbol as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

symbolcan be nulldefault value: null

The Symbol that needs to be matched.

A String representing a Symbol. The Symbol must exist.

Rule filter (for search) (A type of Argument Filter (for search))

Scans a Rule for a match. Either confirms or rejects a given Rule as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

is_the_current_rulecan be nulldefault value: null

If this is not null, checks if the object is the Rule that is currently being executed. True means this must be the case, false means it must not be the case. Only works while the Rule itself is executing, not while an Option created by it is executing.

A Boolean value.

rulecan be nulldefault value: null

If this is not null, compare the object to a given Rule.

Select the rule in one of several ways:

-An integer that is the ID of the Rule.

-A string that is the name of a Rule. Uses the latest version of the Rule.

-A string that is the name of a Rule with a suffix '#'. Uses the selected version of the Rule.

Either an integer or a string.

Option filter (for search) (A type of Argument Filter (for search))

Scans an Option for a match. Either confirms or rejects a given Option as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

is_the_current_optioncan be nulldefault value: null

If this is not null, checks if the object is the Option that is currently being executed. True means this must be the case, false means it must not be the case. Only works while an Option is executing, not while a Rule is executing.

A Boolean value.

namecan be nulldefault value: null

If this is not null, compare the name of the Option.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

Program filter (for search) (A type of Argument Filter (for search))

Scans a Program for a match. Either confirms or rejects a given Program as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

programcan be nulldefault value: null

If this is not null, compare the object to a given Program.

Select the program in one of several ways:

-An integer that is the ID of the Program.

-A string that is the name of a Program. Uses the latest version of the Program.

-A string that is the name of a Program with a suffix '#'. Uses the selected version of the Program.

Either an integer or a string.

File filter (for search) (A type of Argument Filter (for search))

Scans a File for a match. Either confirms or rejects a given File as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

name_matchescan be nulldefault value: null

If not null, checks if the name of the file matches the regular expression.

A Regular Expression.

Message filter (for search) (A type of Argument Filter (for search))

Scans a Message for a match. Either confirms or rejects a given Message as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

Event filter (for search) (A type of Argument Filter (for search))

Scans an Event for a match. Either confirms or rejects a given Event as a match.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the argument is assigned to a variable with this name. While the filter is being tested, the variable is set to the object that is being tested, so that it can be referred to by nested filters inside this filter. Once the filter is evaluated, if there was no match, the variable is set to its previous value again (or null, if it was previously unset).

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

roledefault value: "required"

This determines what happens after the filter has matched an object or found that no match is possible.

If it is 'required', there must be a match.

If it is 'excluded', there must not be a match.

If it is 'optional', it's fine either way.

One of the following String values: 'required', 'excluded', 'optional'

search_typedefault value: "last"

The order in which the objects of the scenario are searched for a match.

One of the following String values: 'last', 'first'

search_postfiltercan be nulldefault value: null

An optional check on the result of this search. If the search_postfilter does not match the first object that matches the search, this Argument Filter (for search) returns no argument, even if there are objects that would match both the search and the search_postfilter. If the search_postfilter has role:excluded, the object needs to not match the search_postfilter instead.

One of the Argument Filter objects.

targeted_bydefault value: []

A list of additional Argument search filters that are run over all the Tags targeting this object. You can also just specify a variable name, to reference a Tag that has already been defined before.

A list of Argument Filter (for search) objects or a variable referencing the Tag that should be targeting this object.

equalscan be nulldefault value: null

Compare the object to a previously defined variable.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_bycan be nulldefault value: null

Check if the object has been created during the targeted Event, or during one of the events caused by executing the targeted Rule, Option or Program.

You can perform one of two comparisons:

Specify a variable: It is checked if the event or the rule/option/program behind the event are the value of this variable.

Specify an Argument Filter: It is checked if the event or the rule/option/program behind that event match the filter.

The simple variant is:

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The complex variant is:

One of the Argument Filter objects.

created_earlier_thancan be nulldefault value: null

Check if the object was created in an earlier Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_in_same_event_ascan be nulldefault value: null

Check if the object was created in the same Event as another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

created_later_thancan be nulldefault value: null

Check if the object was created in a later Event than another object.

If the other object is an Event, note that this will compare to when that event was created, not when it was executed.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

Action (a choice of several types)

These are all the different kinds of actions that can be executed by a Rule or Option.

They can make use of the variables of the Rule or Option, and can also overwrite these variables.

typenamedescription

create_tag

Create a Tag

Create a new Tag, with the specified Symbol, weight, comment and arguments.

create_message

Create a Message

Create a Message with the specified visibility and message_components.

create_option

Create an Option

Create an Option with the specified parameters.

The created Option inherits all the variables of the Rule or Option executing this action as they are set at the time of execution.

execute_program

Execute a Program

Create an Event of type Execute Option event.

It executes the specified Program using the specified objects as arguments. Any Files used as arguments are made available to the Program.

conditional

Conditionally execute actions

Check a condition, then execute other actions based on the result.

loop

Loop over objects

Loop over a list of objects and execute actions for each of them.

Note that this will only check all objects that already existed before this rule or option as executed. It does not check objects that were created just now.

Note that after this action is done, the variables will be set according to the last match that was found by the loop.

deactivate_self

Deactivate this Rule or Option

Create a '!deactivate_rule_or_option' Tag on the Rule or Option executing this action, which will deactivate it.

Create a Tag (A type of Action)

Create a new Tag, with the specified Symbol, weight, comment and arguments.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the created object will be assigned to a variable with this name.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

symbolthis field is required

The Symbol of the Tag.

A String representing a Symbol. The Symbol must exist.

commentcan be nulldefault value: null

The comment of the Tag (optional).

A String with maximum length 255.

weightcan be nulldefault value: null

The weight of the Tag.

The simple variant is:

A Float value. Infinity and NaN are invalid.

The complex variant is:

One of the Weight Getter objects.

argumentsdefault value: []

A list of arguments for the Tag.

A list of Action Argument objects.

Create a Message (A type of Action)

Create a Message with the specified visibility and message_components.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the created object will be assigned to a variable with this name.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

visibilitydefault value: "all"

Who this Message should be visible to.

One of the following String values: 'all', 'developers', 'hidden'

message_componentsthis field is required

A list of Message Component objects that this Message will be composed of.

A list of Message Component objects.

Create an Option (A type of Action)

Create an Option with the specified parameters.

The created Option inherits all the variables of the Rule or Option executing this action as they are set at the time of execution.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varthis field is required

The created Option will be assigned to a variable with this name. Must be equal to the 'name' field. If only one value is supplied, the other is inferred.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

namethis field is required

The name of the Option. Must be equal to the 'var' field. If only one value is supplied, the other is inferred.

The option name must consist of basic letters, numbers and dashes (-) and must begin with a lowercase letter. It may be at most 255 characters long.

descriptioncan be nulldefault value: null

See the documentation of Option.

A String with maximum length 5000.

confidencethis field is required

The initial confidence of the created Option.

If this is set, a '!set_option_confidence' Tag is created along with this Option, targeting it.

The simple variant is:

A Float value. Infinity and NaN are invalid.

The complex variant is:

One of the Weight Getter objects.

triggerthis field is required

See the documentation of Option.

An object: Trigger.

displaycan be nulldefault value: null

See the documentation of Option.

An object: Option Display.

actionsthis field is required

See the documentation of Option.

A list of Action objects.

Execute a Program (A type of Action)

Create an Event of type Execute Option event.

It executes the specified Program using the specified objects as arguments. Any Files used as arguments are made available to the Program.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the created object will be assigned to a variable with this name.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

programthis field is required

Select the program in one of several ways:

-An integer that is the ID of the Program.

-A string that is the name of a Program. Uses the latest version of the Program.

-A string that is the name of a Program with a suffix '#'. Uses the selected version of the Program.

Either an integer or a string.

argumentsdefault value: {}

A set of objects to give to the Program as arguments.

A mapping from string keys to content.

The string keys are:

The name with which the object is given to the Program.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The content is:

The object to give to the Program as an argument. If this is a File, that file will be made available to the program. If the argument is null, it is skipped.

One of the Action Argument objects.

argument_listsdefault value: {}

A set of lists of objects to give to the Program as arguments.

A mapping from string keys to content.

The string keys are:

The name with which the list of objects is given to the Program.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

The content is:

All objects matching this filter will be given to the Program in a list. For each File in this list, that file will be made available to the program.

One of the Argument Filter objects.

Conditionally execute actions (A type of Action)

Check a condition, then execute other actions based on the result.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

ifthis field is required

The condition to evaluate.

One of the Action Condition objects.

thendefault value: []

The actions that will be executed if the condition is true.

A list of Action objects.

elsedefault value: []

The actions that will be executed if the condition is false.

A list of Action objects.

Loop over objects (A type of Action)

Loop over a list of objects and execute actions for each of them.

Note that this will only check all objects that already existed before this rule or option as executed. It does not check objects that were created just now.

Note that after this action is done, the variables will be set according to the last match that was found by the loop.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

forthis field is required

The name of the variable used for iterating.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

inthis field is required

All objects that match this filter will be iterated over. Note that the 'role' of this Argument Filter will be ignored.

One of the Argument Filter objects.

dodefault value: []

The actions that will be executed on the matching objects.

A list of Action objects.

Deactivate this Rule or Option (A type of Action)

Create a '!deactivate_rule_or_option' Tag on the Rule or Option executing this action, which will deactivate it.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

varcan be nulldefault value: null

If this is not null, the created object will be assigned to a variable with this name.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

Action Argument (a choice of several types)

These are all the different kinds of ways you can select an argument for an Action.

typenamedescription

variable

Variable

Get the value of a previously defined named variable.

this_rule_or_option

This rule or option

Refers to the Rule or Option that is being executed.

symbol

Symbol

Select a Symbol as an argument.

program

Program

Select a Program as an argument.

rule

Rule

Select a Rule as an argument.

tag_argument

Argument of Tag

Select one of the arguments of a Tag.

Variable (A type of Action Argument)

Get the value of a previously defined named variable.

This Node has a shortform (instead of specifying a JSON object / a dictionary, you can specify only a constant):

If only a string is given, that string is used as the name of the variable.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

nullabledefault value: false

If true, this argument is allowed to evaluate to null. Some actions accept nullable arguments, others do not.

A Boolean value.

varthis field is required

The name of the variable who's value will be used.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

This rule or option (A type of Action Argument)

Refers to the Rule or Option that is being executed.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

nullabledefault value: false

If true, this argument is allowed to evaluate to null. Some actions accept nullable arguments, others do not.

A Boolean value.

Symbol (A type of Action Argument)

Select a Symbol as an argument.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

nullabledefault value: false

If true, this argument is allowed to evaluate to null. Some actions accept nullable arguments, others do not.

A Boolean value.

symbolthis field is required

The name of the Symbol.

A String representing a Symbol. The Symbol must exist.

Program (A type of Action Argument)

Select a Program as an argument.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

nullabledefault value: false

If true, this argument is allowed to evaluate to null. Some actions accept nullable arguments, others do not.

A Boolean value.

programthis field is required

Select the program in one of several ways:

-An integer that is the ID of the Program.

-A string that is the name of a Program. Uses the latest version of the Program.

-A string that is the name of a Program with a suffix '#'. Uses the selected version of the Program.

Either an integer or a string.

Rule (A type of Action Argument)

Select a Rule as an argument.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

nullabledefault value: false

If true, this argument is allowed to evaluate to null. Some actions accept nullable arguments, others do not.

A Boolean value.

rulethis field is required

Select the rule in one of several ways:

-An integer that is the ID of the Rule.

-A string that is the name of a Rule. Uses the latest version of the Rule.

-A string that is the name of a Rule with a suffix '#'. Uses the selected version of the Rule.

Either an integer or a string.

Argument of Tag (A type of Action Argument)

Select one of the arguments of a Tag.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

nullabledefault value: false

If true, this argument is allowed to evaluate to null. Some actions accept nullable arguments, others do not.

A Boolean value.

indexthis field is required

The index of the argument you want to select, among all the arguments of the Tag.

An Integer with minimum value 0.

ofthis field is required

The Tag who's argument should be taken.

One of the Action Argument objects.

Action Condition (a choice of several types)

These are conditions you can test for in a Conditional Actions clause.

typenamedescription

reference_exists

Reference exists Condition

Test whether or not a variable has a value. Returns true if the variable has any value other than null.

not

NOT Condition

Inverts another Conditionally execute actions. Returns true if and only if the target returns false.

and

AND Condition

Combines several Conditional Actions. Returns true if and only if all of them return true.

or

OR Condition

Combines several Conditional Actions. Returns true if and only if at least one of them returns true.

Reference exists Condition (A type of Action Condition)

Test whether or not a variable has a value. Returns true if the variable has any value other than null.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

existsthis field is required

The name of the variable to check.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

NOT Condition (A type of Action Condition)

Inverts another Conditionally execute actions. Returns true if and only if the target returns false.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

notthis field is required

The condition to invert.

One of the Action Condition objects.

AND Condition (A type of Action Condition)

Combines several Conditional Actions. Returns true if and only if all of them return true.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

andthis field is required

The list of conditions to check.

A list of Action Condition objects.

OR Condition (A type of Action Condition)

Combines several Conditional Actions. Returns true if and only if at least one of them returns true.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

orthis field is required

The list of conditions to check.

A list of Action Condition objects.

Option Display

Describes what will be shown to the user when Elody decides to display one or more Options to choose from to the user.

This Node has a shortform (instead of specifying a JSON object / a dictionary, you can specify only a constant):

If only a string is given, returns a single Message Component that has only that string as its text.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

must_always_be_showndefault value: false

If true, the Option will be displayed instead of executed even if its confidence is above the threshold for immediate execution.

A Boolean value.

parameter_file_namecan be nulldefault value: null

If the Option contains parameters for the user to choose, a File will be created and assigned to a variable with this name if the user chooses this Option. The file will contain the selected parameters in a JSON format.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

message_componentsthis field is required

A list of Message Components to display to the user.

A list of Message Component objects.

Message Component (a choice of several types)

These are all the different types of message components that a Message can consist of.

Some of these can not be created by developers and are only listed for the sake of completeness.

typenamedescription

text

Text message component

A simple text message. This is pure, unformatted text.

html

HTML component

An arbitrary block of HTML, which can include Javascript and CSS.

This is a very general, very powerful way to display information to the user.

The HTML may contain scripts and can interact with the user through forms.

If you want, you can embed an entire website in here.

Your code will be encapsulated inside an iframe, to prevent it from accessing the rest of the Scenario directly.

Your code IS allowed to communicate with other websites. However, a Content-Security-Policy is set so that you can only access domains that have been explicitly allowed by the user. This is to prevent malicious developers from stealing user data.

Note

Since this website is still in Beta, we are not 100% sure that we have caught all security issues already.

For this reason, we offer a reward of 100$ for anyone who can point out a security vulnerability that we are not already working on.

In particular, we are interested in knowing if we missed a way in which a developer can leak user data to an external domain without explicitly getting permission from the user.

It should go without saying, but you must demonstrate the security flaw using a benign example that doesn't break the law. Additionally, if you think you have found a security flaw, please contact us directly at contact@elody.com and don't tell others about it.

Note

Javascript code inside an HTML component is currently executed in the same thread as the rest of the Scenario. This means you can freeze the entire website by running code in an infinite loop. This is not much of a security vulnerability, since it is only annoying and doesn't leak anyone's data to the outside.

Putting all javascript code in a separate Worker would take care of this, but it would also make the HTML component much less user-friendly.

If you know a way to fix this issue without inconveniencing the developers, it would be greatly appreciated.

plot

Plot

A simple graphing library, for when you don't want to write HTML code yourself.

This is a shortform that replaces itself with an HTML component using the flot library: http://www.flotcharts.org/.

error

Error

An error message. This type of Message Component is visually highlighted.

display_options

Display of an Option

A Message Component that summarizes the Option Display of one Option.

This type of Message Component can only be created by Elody, not by developers.

option_parameter_selector

Option Parameter Selector

Displays a single input for which the user can select a value.

copy_message_component

Copy of other message component

Create a copy of an existing Message Component.

This can be useful if the Message Component you are copying has a lower visibility than the current Message. This way, a complex algorithm can construct a complex invisible Message, and then simpler rules and options can decide to whether or not to actually display this message.

downloadable_file

Downloadable File

A button for downloading a File.

The file can be identified either indirectly through the 'file' field, or directly through the 'file_identifier' field.

request_for_rating

Request for rating

An interactive box that allows the user to give a rating to a Rule or Program.

Text message component (A type of Message Component)

A simple text message. This is pure, unformatted text.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

textthis field is required

The text to display.

A String.

HTML component (A type of Message Component)

An arbitrary block of HTML, which can include Javascript and CSS.

This is a very general, very powerful way to display information to the user.

The HTML may contain scripts and can interact with the user through forms.

If you want, you can embed an entire website in here.

Your code will be encapsulated inside an iframe, to prevent it from accessing the rest of the Scenario directly.

Your code IS allowed to communicate with other websites. However, a Content-Security-Policy is set so that you can only access domains that have been explicitly allowed by the user. This is to prevent malicious developers from stealing user data.

Note

Since this website is still in Beta, we are not 100% sure that we have caught all security issues already.

For this reason, we offer a reward of 100$ for anyone who can point out a security vulnerability that we are not already working on.

In particular, we are interested in knowing if we missed a way in which a developer can leak user data to an external domain without explicitly getting permission from the user.

It should go without saying, but you must demonstrate the security flaw using a benign example that doesn't break the law. Additionally, if you think you have found a security flaw, please contact us directly at contact@elody.com and don't tell others about it.

Note

Javascript code inside an HTML component is currently executed in the same thread as the rest of the Scenario. This means you can freeze the entire website by running code in an infinite loop. This is not much of a security vulnerability, since it is only annoying and doesn't leak anyone's data to the outside.

Putting all javascript code in a separate Worker would take care of this, but it would also make the HTML component much less user-friendly.

If you know a way to fix this issue without inconveniencing the developers, it would be greatly appreciated.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

htmlthis field is required

Any HTML code.

A String.

external_domainsdefault value: []

A list of external domains that this html or the code in it may need access to.

Before an HTML component is rendered, Elody will check if the user trusts these domains and otherwise will ask for permission. Your code can't access any domains that are not listed here.

To ensure that you don't have to ask for permission to use very common libraries, we have copied some commonly used libraries to our server. They can be found here. Note that these libraries are copied from other websites for more convenient access and we are not responsible for their content. If you are missing any libraries, tell us on the forum so we can add them.

A list of external domains that can be used in a Content-Security-Policy. These should be domains like "google.com" or "maps.google.com", or a wildcard like "*.google.com", which matches any subdomain.

Plot (A type of Message Component)

A simple graphing library, for when you don't want to write HTML code yourself.

This is a shortform that replaces itself with an HTML component using the flot library: http://www.flotcharts.org/.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

datacan be nulldefault value: null

The data used by the graphing library http://www.flotcharts.org/.

An arbitrary JSON-like object.

optionscan be nulldefault value: null

The options used by the graphing library http://www.flotcharts.org/.

An arbitrary JSON-like object.

Error (A type of Message Component)

An error message. This type of Message Component is visually highlighted.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

errorthis field is required

An error message.

A String.

Display of an Option (A type of Message Component)

A Message Component that summarizes the Option Display of one Option.

This type of Message Component can only be created by Elody, not by developers.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

Option Parameter Selector (A type of Message Component)

Displays a single input for which the user can select a value.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

namethis field is required

The name with which the selected value can later be referenced.

The name of a Rule or Option's variable must be at most 128 characters long and must consist only of a-z, A-Z, 0-9, underscores ('_') and hyphens ('-').

titlecan be nulldefault value: null

The title that is displayed for the input element.

A String.

descriptioncan be nulldefault value: null

A more detailed description elaborating on the title.

A String.

optionaldefault value: false

Whether or not the user is required to enter a valid value to be able to click the submit button of the Option Display.

A Boolean value.

valuethis field is required

Describes what sort of value the user is able to choose.

Option Parameter Selector Value (a choice of several types)

These are the different kinds of values that can be used in an Option Parameter Selector.

typenamedescription

bool

Boolean Parameter

An Option Parameter Selector Value for a boolean value.

int

Integer Parameter

An Option Parameter Selector Value for an integer value.

float

Float Parameter

An Option Parameter Selector Value for a float value.

string

String Parameter

An Option Parameter Selector Value for a string value.

selection

Selection Parameter

An Option Parameter Selector Value for a selector.

The value chosen by the user will be presented as an array of two elements: The first is the index of the selected value, the second is its String representation.

Boolean Parameter (A type of Option Parameter Selector Value)

An Option Parameter Selector Value for a boolean value.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

defaultdefault value: false

The default value to use for this input.

A Boolean value.

Integer Parameter (A type of Option Parameter Selector Value)

An Option Parameter Selector Value for an integer value.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

defaultcan be nulldefault value: null

The default value to use for this input. If this is null, the input is initially unset.

An Integer value.

mincan be nulldefault value: null

The minimum allowed value. If this is null, there is no minimum.

An Integer value.

maxcan be nulldefault value: null

The maximum allowed value. If this is null, there is no maximum.

An Integer value.

Float Parameter (A type of Option Parameter Selector Value)

An Option Parameter Selector Value for a float value.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

defaultcan be nulldefault value: null

The default value to use for this input. If this is null, the input is initially unset.

A Float value. Infinity and NaN are invalid.

mincan be nulldefault value: null

The minimum allowed value. If this is null, there is no minimum.

A Float value. Infinity and NaN are invalid.

maxcan be nulldefault value: null

The maximum allowed value. If this is null, there is no maximum.

A Float value. Infinity and NaN are invalid.

String Parameter (A type of Option Parameter Selector Value)

An Option Parameter Selector Value for a string value.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

defaultcan be nulldefault value: null

The default value to use for this input. If this is null, the input is initially unset.

A String.

multilinedefault value: false

If true, the text is displayed in multiple lines.

A Boolean value.

Selection Parameter (A type of Option Parameter Selector Value)

An Option Parameter Selector Value for a selector.

The value chosen by the user will be presented as an array of two elements: The first is the index of the selected value, the second is its String representation.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

defaultthis field is required

The default value to use for this input.

A String.

choicesthis field is required

A list of strings from which the user should choose one.

A list of arbitrary strings.

Copy of other message component (A type of Message Component)

Create a copy of an existing Message Component.

This can be useful if the Message Component you are copying has a lower visibility than the current Message. This way, a complex algorithm can construct a complex invisible Message, and then simpler rules and options can decide to whether or not to actually display this message.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

messagethis field is required

The Message who's Message Component you want to copy.

One of the Action Argument objects.

componentthis field is required

The index of the Message Component you want to copy in the list of components of the targeted Message.

An Integer with minimum value 0.

Downloadable File (A type of Message Component)

A button for downloading a File.

The file can be identified either indirectly through the 'file' field, or directly through the 'file_identifier' field.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

textthis field is required

The text on the button.

A String with maximum length 1000.

filecan be nulldefault value: null

A rule to get the File to download.

Either this or 'file_identifier' must be set.

One of the Action Argument objects.

file_identifiercan be nulldefault value: null

The Identifier of the File to download.

Either this or 'file' must be set.

An object: Identifier.

Request for rating (A type of Message Component)

An interactive box that allows the user to give a rating to a Rule or Program.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

feedback_requestthis field is required

Designates the object you want to request a rating for.

One of the Feedback Request objects.

Feedback Request (a choice of several types)

These are different ways to specify what object you want to request feedback for.

typenamedescription

getter

Feedback Request target (getter)

Identify the target of the feedback through Action Arguments.

identifier

Feedback Request target (identifier)

Identify the target of the feedback through identifiers.

finalized

Feedback Request target (processed)

This is a system-internal object that is derived from the other kinds of Feedback Request. It is created automatically and is enriched with additional information.

Feedback Request target (getter) (A type of Feedback Request)

Identify the target of the feedback through Action Arguments.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

feedback_typedefault value: "rating"

Ignore this. It has only one valid value and is only added for completeness and possible future changes.

One of the following String values: 'rating'

targetthis field is required

The Rule or Program this rating is for.

One of the Action Argument objects.

eventcan be nulldefault value: null

An optional Event to specify the reason for the feedback.

One of the Action Argument objects.

Feedback Request target (identifier) (A type of Feedback Request)

Identify the target of the feedback through identifiers.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

feedback_typedefault value: "rating"

Ignore this. It has only one valid value and is only added for completeness and possible future changes.

One of the following String values: 'rating'

target_identifierthis field is required

The Rule or Program this rating is for.

An object: Identifier.

event_identifiercan be nulldefault value: null

An optional Event to specify the reason for the feedback.

An object: Identifier.

Feedback Request target (processed) (A type of Feedback Request)

This is a system-internal object that is derived from the other kinds of Feedback Request. It is created automatically and is enriched with additional information.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

idthis field is required

A value set by the server. This is an ID uniquely identifying this Feedback Request and matching any other Feedback Requests with the same target_identifier and event_identifier.

An Integer value.

creation_triggerthis field is required

A value set by the server.

One of the following String values: 'out_of_queued_events', 'chosen_by_priority', 'system_generated_tag', 'user_input', 'created_by_program', 'created_by_rule', 'created_by_option', 'displaying_list_of_options', 'mention_uncertainty', 'error_during_iteration', 'global_feedback_request'

feedback_typedefault value: "rating"

Ignore this. It has only one valid value and is only added for completeness and possible future changes.

One of the following String values: 'rating'

target_identifierthis field is required

The Rule or Program this rating is for.

An object: Identifier.

event_identifiercan be nulldefault value: null

An optional Event to specify the reason for the feedback.

An object: Identifier.

execution_environment_idthis field is required

The ID of the Scenario in which this FeedbackRequest was made.

An Integer value.

Identifier

Uniquely identifies an object used in a scenario.

All objects have an identifier.

Until the server has created a database model for the object, the Identifier is preliminary and has a fake ID.

(preliminary identifiers can be used for comparisons like any other Identifier).

Until an Identifier has been processed by the server, it can not be properly compared to another Identifier: One of them could have been specified by the name and one by the ID. The comparison will only work once the server has processed the Identifier and filled in the missing fields.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

idcan be nulldefault value: null

The ID of the object.

An Integer with minimum value 0.

typethis field is required

The type of the object.

One of the following String values: 'program', 'symbol', 'rule', 'file', 'tag', 'message', 'event', 'option'

preliminarycan be nulldefault value: null

(If you use the provided libraries for your Programs and Rules, you do not need to know this.)

A value used to designate the origin of a newly created object. Until an object has been processed by the server, it uses a fake ID in combination with this marker to enable comparisons.

A String with minimum length 1.

namecan be nulldefault value: null

An optional feature of some types of objects.

Identifiers generated by the server will have this field set if the Identifier refers to an object with a name.

Some objects can actually be uniquely identified by their name. In those cases, if both an ID and a name are given, the ID takes precedence.

A String.

Weight Getter (a choice of several types)

These are different ways to get a weight from other objects defined so far.

typenamedescription

weight_from_tag

Get the weight of a Tag

Get the weight of a Tag. The returned weight can be null if the Tag's weight is null.

Get the weight of a Tag (A type of Weight Getter)

Get the weight of a Tag. The returned weight can be null if the Tag's weight is null.

Fields
_commentcan be nulldefault value: null

An optional textual comment. This does not do anything, but can be used to provide additional documentation.

A String with maximum length 10000.

weight_ofthis field is required

The tag you want to get the weight from.

One of the Action Argument objects.