Each field on a resource has a type. The type knows how to check a value, make a believable sample, and draw the right input in the editor. That one idea keeps the whole product consistent.
The built-in types
| Type | What it is |
|---|---|
| Text | A string value. |
| Number | A numeric value, which can be limited to whole numbers. |
| Boolean | True or false. |
| Date | A date, with or without a time. |
| Enumeration | A fixed set of allowed values, shown as a dropdown. |
| Reference | A link to another record, shown as a search-and-pick. Can be a single link or a list. |
| Derived | A read-only value looked up from a linked record, recomputed on every read so it never goes stale. |
| Object | A nested object with its own fields. |
| Array | A list whose items are themselves a typed field. |
| Generated id | An id minted fresh when a record is created. |
Built to grow
The types live in one registry that the whole engine reads. Adding a new type means registering it once. Nothing else has to change: not the form, not the checks, not the sample-data step. The set you see today is a floor, not a ceiling.