Field Types

WorkApps entities support 12 field types. Each field has a key (slug), name (display label), type, and optional validation rules.

Summary

Type Stored As Use For
text string Short labels, names (max 255 chars)
textarea string Long descriptions, notes (max 5000 chars)
number number Quantities, prices, scores
boolean boolean Yes/no toggles
select string Status, priority (single choice from options)
multi_select string[] Tags, categories (multiple choices)
date YYYY-MM-DD Calendar dates
datetime ISO 8601 Timestamps with time
email string Email addresses (validated format)
url string Web URLs (validated format)
file string (fileId) File attachments
relation string (ULID) Cross-entity reference (record ID)

select and multi_select must define an options array.


text

Single-line plain text.

1{ "key": "title", "name": "Title", "type": "text", "required": true }

textarea

Multi-line plain text.

1{ "key": "description", "name": "Description", "type": "textarea", "required": false }

number

Numeric value — integer or decimal.

1{ "key": "quantity", "name": "Quantity", "type": "number", "required": true }

boolean

True/false toggle.

1{ "key": "is_complete", "name": "Completed", "type": "boolean", "required": false }

select

Single choice from a predefined list. The stored value must exactly match one of the defined options.

1{2  "key": "priority",3  "name": "Priority",4  "type": "select",5  "required": true,6  "options": ["low", "medium", "high", "critical"]7}

multi_select

Multiple choices from a predefined list. Stored as an array of strings.

1{2  "key": "tags",3  "name": "Tags",4  "type": "multi_select",5  "required": false,6  "options": ["frontend", "backend", "design", "devops"]7}

date

Calendar date without time.

1{ "key": "due_date", "name": "Due Date", "type": "date", "required": false }

datetime

Date and time with timezone.

1{ "key": "scheduled_at", "name": "Scheduled At", "type": "datetime", "required": false }

email

Email address. Validated as a properly-formatted email.

1{ "key": "contact_email", "name": "Contact Email", "type": "email", "required": true }

url

Web URL. Validated as a properly-formatted URL.

1{ "key": "website", "name": "Website", "type": "url", "required": false }

file

File attachment. The value stored in the record is a fileId ULID returned from the file upload flow.

1{ "key": "attachment", "name": "Attachment", "type": "file", "required": false }

relation

A reference to a record in another entity within the same app. The value stored in the field is the ULID of the target record.

1{2  "key": "project_id",3  "name": "Project",4  "type": "relation",5  "required": false,6  "related_entity": "projects",7  "display_field": "name"8}

When you read a record that has a relation field, the value is the target record's id string. To load the referenced record's data, call sdk.getRecord(relatedEntityKey, value).


System Fields

Every record automatically includes these read-only fields — never include them in create/update payloads:

Field Type Description
id string (ULID) Unique record ID
created_by string (ULID) User who created the record
updated_by string (ULID) User who last updated the record
created_at datetime Creation timestamp
updated_at datetime Last update timestamp

Naming Conventions