Value Types
Value types are the fields of a class. Each value type defines a named field with a data type and optional constraints.
Definition
{
"name": "lastName",
"dataType": "TEXT",
"required": true
}
| Property | Type | Default | Description |
|---|---|---|---|
name | string | — | Field name (camelCase). Must be unique within the class. |
dataType | ValueDataType | TEXT | The type of value this field stores. |
required | boolean | false | If true, the field must have a value. |
multiple | boolean | false | If true, the field stores a list of values. |
enabled | boolean | true | If false, the field exists in the model but is hidden from the UI. |
hidden | boolean | false | If true, the field is stored but never shown in the UI. |
unique | boolean | false | If true, no two objects of this class can have the same value for this field. |
list | TypeFQN | — | For LIST data type: reference to a StandardList definition. See Lists. |
Naming constraints
Field names must be unique within the effective class (including all inherited value types). The following names are reserved and cannot be used:
name(used bycommons.itemas the display name field)creationDate,modificationDate(system fields)- Any name starting with
_
The name field
commons.item defines a required field called name. This is the display name of every object. All classes inherit this field. It is typically overridden by a formula that computes it from other fields.
For example, commons.person computes name as:
{
"valueType": "name",
"template": "{{firstName}} {{lastName}}"
}
Data types
See Value Data Types for the full reference.
Examples
A minimal text field:
{ "name": "jobTitle" }
A required text field:
{ "name": "lastName", "required": true }
An optional date field, disabled by default:
{ "name": "birthdate", "dataType": "DATE", "enabled": false }
An email field:
{ "name": "emailAddress", "dataType": "EMAIL" }
A field that stores a list of values:
{ "name": "tags", "multiple": true }
A field backed by a predefined list:
{ "name": "status", "dataType": "LIST", "list": "my-project.contractStatus" }