Fundamental types

value

Any representable value.

bool

A boolean.

Base: value

number

A number with in the range indicated by the "min" and "max" parameters. The value is represented as either a "int32", "uint32", "int64", "uint64", or "double".

min (number): Lower bound

max (number): Upper bound

Base: value

integer

A integer, represented as any of the numeric types. If the value is a "double", it is rounded to an integer, but not necessarily to the nearest. The "min" and "max" parameters, when given, constrain the range of the integer.

min (number): Lower bound

max (number): Upper bound

Base: number

string

A string.

Base: value

list

A list with elements of the given type and minimum and maximum length given by the "min" and "max" parameters, respectively.
When the "type" parameter is omitted, it defaults to "value".

min (integer): Minimum length

max (integer): Maximum length

type (type): Element type

Base: value

map

A map. The parameters specify the allowed keys in the map.
Each parameter is a association tree that describes one possible key. The name of the tree is the key itself, and the second level of the tree can have "doc" and "type" attributes for that key.
When the special key name "allow-other-keys" is present, all keys are allowed; otherwise, only the specified keys have any meaning and additional keys are an error.
When no parameters are given, all keys are allowed.

rest: The allowed keys

Base: value

Generic types

association-tree

A tree made from nested lists, used to associate (hierarchical) keys with values.
For example, the association tree
[ "foo", [ "bar", 12 ], [ "baz", 42 ] ]
associates "foo", "bar" with 12 and "foo", "baz" with 42.
Association trees are often used as a simple "Nano DOM" for XML documents.
Formally, a association tree is a list whose first element is a string, and whose rest elements are either association trees, or a single value.
The "name" of a association tree is the first element of its top-level list.
As a special case, a association tree with just a name and no other elements can be abbreviated by just stating the name as a string. E.g., the following two values are equivalent when considered as a association tree:
"foo" [ "foo" ]

Base: value

association-list

A list of association trees.

Base: List of association-trees

string-enum

This is the base type for enumerations of fixed strings. The parameters describe the possible values.
Each parameter is a association tree that describes one of the choices. The name of the association tree is the string for the choice itself and the second level of the tree can have a "doc" attribute for that choice.

rest: The possible values

Base: string

int-enum

This is the base type for enumerations of fixed integers. The parameters describe the possible values.
Each parameter is a association tree that describes one of the choices. The name of the association tree is a symbolic name for the choice itself and the second level of the tree must have a "value" attribute that gives the numerical value of the choice in decimal. A choice can also have a "doc" attribute, of course.

rest: The possible values

Base: integer

Specific types

type

A reference to a type, consisting of a name and optional parameters.
Type references are just association trees: the name of the tree names the referenced type, and the associations of the association tree are the parameters.

temperature

A temperature in Kelvin.

Base: number

Type parameters:

min

0

energy

An amount of energy, in Joule.

Base: number

power

A power, in Watt.

Base: number

time

A point in time, represented as the number of nano-seconds since 00:00 January 1, 1970, UTC.

Base: integer

distance

A physical length between two points, in meters.

Base: integer

duration

A time duration, in nano-seconds.

Base: integer

percentage

A percentage.

Base: integer

Type parameters:

min

0

max

100

location-source

Describes a source of location information. Possible values are "satellite", "wlan", "cellular", and "timezone".

Base: Enumeration of strings

Possible enumeration values:

satellite
wlan
cellular
timezone

tracker-uri

A URI that names a object in the Tracker object store.

Base: string