Skip to content

Field Types

oikapi supports a broad set of field types covering all common enterprise data needs, plus computed types and semantic validation types.

TypeUse Case
textGeneral text, names, descriptions
richtextFormatted long-form content (headings, lists, links)
jsonStructured data, flexible schemas
enumFixed value sets (status, priority)
multiselectMultiple values from a set
uuidUnique identifiers
TypeUse Case
numberFloating-point calculations
integerWhole numbers, counts
decimalMoney, precise arithmetic (configurable precision)
booleanTrue/false flags
TypeUse Case
dateDates without time
datetimeFull timestamps with timezone
timeTime of day
durationTime spans, durations

These types store text but apply built-in validation:

TypeValidationUse Case
emailEmail formatContact emails
phonePhone formatPhone numbers
urlURL formatWeb links
colorColor format (hex, rgb, or hsl)Color values
TypeUse Case
referenceLink to a record in another table
reference_arrayMany-to-many relationships
fileSingle file attachment
file_arrayMultiple file attachments

See References & Relations for details on foreign keys, facades, and on-delete behavior.

TypeUse Case
arrayGeneric arrays (any element type, stored as JSONB)
text_arrayExplicit text arrays
integer_arrayLists of integers
decimal_arrayLists of decimal values
uuid_arrayLists of UUIDs
TypeDescription
formulaCalculate from same-record fields
lookupPull value from related record
rollupAggregate from child records
graph_rollupAggregate over a relationship graph (e.g. impact count, dependency depth)
counterAuto-incrementing with prefix

See Computed Fields and Counter Fields for details.

TypeUse Case
recurrenceA recurring schedule rule (RFC 5545) that generates occurrences

A recurrence field stores a repeat rule rather than a list of dates – the platform materializes individual occurrences from it.

PropertyDescription
requiredField must have a value
uniqueValues must be unique
read_onlySet on create, immutable after
hiddenExcluded from UI, accessible via API
transientAccepted via API but not stored (for rule processing)
searchableIncluded in global search
conditionsDynamic visibility and requirement rules (in config)

Fields can have dynamic visibility and requirement rules via the conditions config. When a condition with action hide triggers, the field is hidden and never required. When a condition with action require triggers, the field becomes required regardless of its base required setting. See Fields API for the full list of supported operators and actions.

Some type conversions are supported when modifying existing fields. Conversions are categorized as:

  • Safe – No data loss (e.g., integer → decimal)
  • Conditional – May fail depending on data (e.g., text → integer)
  • Blocked – Not supported (e.g., richtext → text)