Models, enums and properties
Models describe your API’s data. A model carries typed properties, and those properties can reference other models or enums.

An enum is a closed set of values (for example a
draft / published / archived status). A design handles them two ways:
- Named enums — reusable, first-class. From the Enums section, use Add an enum, give it a name and a description, then Add a value for each entry. A property (or a route parameter) then references it by type.
- Inline enums — an anonymous set declared directly on one property. On a
string/integer/numberproperty, an Enum values chip editor lets you list the allowed values right there, without creating a named type.
When an inline enum deserves to be shared, Extract to a named enum promotes it: it creates the named enum (reusing an existing one with the same values, to avoid duplicates) and rewrites the property to reference it. Route parameters carry inline enums and the same Extract action too — see Routes & CRUD.
A model’s properties
Section titled “A model’s properties”In the Models section, select a model: its properties appear in a table (Property, Type, Flags, Example). Use Add a property to create one.
A property can be of type:
- a primitive:
string,integer,number,boolean; - an array (
array<…>) or a map (map<…>) of another type; - a reference to another model;
- a reference to an enum.
For a string, you can specify a format: email, uuid, date,
date-time, uri, hostname, ipv4, password or byte.
Beyond the type, a property accepts many fields: Description, Example, Default value, Minimum / Maximum, Min length / Max length, Pattern (regex), Deprecation message, and — for references — an On delete behaviour.
Flags qualify the property and appear as badges: required, nullable, unique, immutable, searchable (see Routes & CRUD), deprecated, read-only, write-only, and PII (personal data).
Identity and inheritance
Section titled “Identity and inheritance”Each model has its own settings:
- Identity — the identifying property and its generation strategy
(
uuid,autoIncrementorulid). It’s this identifier that is wired to the{{id}}parameters of the generated routes. - Inheritance — a model can inherit from a parent; the child displays the parent’s properties as read-only, in addition to its own.
- Storage & lifecycle — expected volume, timestamps
(
created/updated) and soft delete.
It’s also from these settings that you launch Generate CRUD and Generate search routes — described on the next page.