DataItem schema
Every work item in Ekso is a DataItem. When you fetch or create an item through the API, the JSON looks like this:Top-level properties
| Property | Type | Description |
|---|---|---|
id | string | Unique item identifier. |
containerId | string | The container this item belongs to. |
processId | string | The process that defines the item’s workflow and fields. |
sequence | integer | Auto-incremented number within the container. Combined with the container key to form the item key (e.g., GEM-42). |
boardId | string | The board the item is planned on, if any. |
cycleId | string | The cycle within the board, if any. |
resourceType | integer | 0 = unassigned, 1 = User, 2 = JobRole. |
resourceId | string | ID of the assigned user or job role. |
dateOpened | datetime | When the item was opened. |
dateWorking | datetime | When work began. |
dateClosed | datetime | When the item was closed. |
field | array | Field values — see the field array below. |
time | array | Time log entries. See Time tracking. |
meta | array | Key-value metadata pairs. |
created | datetime | Record creation timestamp. |
createdBy | string | User ID of the creator. |
updated | datetime | Last update timestamp. |
updatedBy | string | User ID of the last updater. |
The field array
Thefield array is where most of the item’s data lives. Each entry is a simple pair:
| Property | Type | Description |
|---|---|---|
fieldId | string | References a field definition. Can be a system field name (e.g., Name, Priority) or a custom field ID. |
data | string | The field’s value, always stored as a string regardless of the field type. |
All field values are strings. A date field stores
"2025-12-15T00:00:00Z", an integer stores "42", a toggle stores "true" or "false". Your integration must interpret the string according to the field’s type — use the screen endpoint to get the full field definition alongside each value.Field definitions
TheGET /api/field endpoint returns every field definition in your tenant. Each field definition describes the field’s type, validation rules, and configuration.
Field types
Ekso supports ten field types. Each type serializes its value as a string in thedata property:
| Type | Description | Example data value |
|---|---|---|
| Text | Plain text, multiline, or rich text. | "Fix the login timeout" |
| List | Single or multi-select from predefined values. | "list-value-id" |
| Picker | References another entity (user, container, board, etc.). | "entity-id" |
| Date | UTC date/time. | "2025-12-15T00:00:00Z" |
| Integer | Whole number within min/max bounds. | "42" |
| Decimal | Decimal number within min/max bounds. | "99.50" |
| Percent | Percentage value (0–100 by default). | "75" |
| Time | Duration (days, hours, minutes). | "02:30" |
| Toggle | Boolean on/off. | "true" |
Key field properties
Every field definition includes these properties:| Property | Type | Description |
|---|---|---|
id | string | Unique field identifier. |
name | string | Field name, used as the fieldId in item data (e.g., Name, Priority). |
prompt | string | Display label for the field. |
description | string | Admin-facing description of the field’s purpose. |
fieldType | string | One of: Text, List, Picker, Date, Integer, Decimal, Percent, Time, Toggle. |
defaultValue | string | Default value applied when creating an item. |
isCore | boolean | true for system fields, false for custom fields. |
placement | array | Where the field appears — Process (item forms) or Board (board views). |
usage | array | How the field is used — System, Input, Filter, Condition, Action. |
Picker scopes
Picker fields reference a specific entity type. Thescope property tells you what kind of entity the picker selects:
| Scope | Picks from |
|---|---|
User | Workspace members |
Container | Containers (projects, products, etc.) |
Area | Areas within a container |
Board | Planning boards |
Cycle | Cycles within a board |
Process | Process types |
Resource | Users and job roles |
UserGroup | Security groups |
CostCenter | Cost centers |
Crm | CRM / customer records |
Sku | Billable time codes |
JobRole | Job roles |
List field values
List fields (e.g., Priority, Severity, Status, Resolution) have adata array containing the valid options:
| Property | Type | Description |
|---|---|---|
id | string | The value you send in the item’s data property. |
value | string | Display text. |
image | string | Optional icon path. |
metadata | string | Additional metadata — for Status fields, this indicates the lifecycle verb (Open, Working, Closed, Blocked). |
active | boolean | false means the value is retired — it won’t appear in selection lists but existing items retain it. |
Process field configuration
A process controls which fields appear on an item and whether each field is required. TheGET /api/process endpoint returns process definitions, each with a fields array:
| Property | Type | Description |
|---|---|---|
fieldId | string | References the field definition. |
order | integer | Display order on item forms. |
required | boolean | Whether the field must have a value when creating or updating an item. |
The screen endpoint
ThePOST /api/item/screen endpoint is the primary discovery tool for API consumers. It combines field definitions, current values, required flags, and permission filtering into a single response — giving you exactly the fields the current user can work with.
Request
Send anItemScreenRequest:
| Property | Type | Required | Description |
|---|---|---|---|
containerId | string | Yes | The container the item belongs to (or will be created in). |
processId | string | Yes | The process type. |
itemId | string | No | The item ID for existing items. Leave empty when creating a new item. |
stage | integer | Yes | The screen stage — determines which permission column to evaluate. |
source | string | No | Origin of the request. Use "Api" for API integrations. |
Screen stages
Thestage parameter controls which permission column the endpoint evaluates:
| Stage | Value | Use when… |
|---|---|---|
| See | 1 | Viewing an item — returns fields the user can read. |
| Set | 2 | Creating an item — returns fields the user can set on creation. |
| Change | 3 | Updating an item — returns fields the user can modify. |
Response
The endpoint returns anItemScreenModel:
| Property | Type | Description |
|---|---|---|
item | object | The full item record (blank defaults for stage Set). |
stage | integer | The screen stage that was evaluated. |
workflow | array | Valid next statuses from the item’s current state — only populated for stages Set and Change. |
field | array | Ordered list of fields the user can access, each with its full definition, current value, and required flag. |
field array contains:
| Property | Type | Description |
|---|---|---|
definition | object | The full polymorphic field definition — includes type-specific properties like data for List fields, scope for Picker fields, or maximum for Text fields. |
data | string | The field’s current value (or default value for new items). |
required | boolean | Whether this field must be provided. |
The screen endpoint only returns fields the current user has permission to access. If a field is missing from the response, the user’s group does not have the required access level for that field at the requested stage.
Field-level permissions
Each container can configure per-field permissions for every process. Three access levels control who can interact with each field:| Access level | Stage | Controls |
|---|---|---|
| See | 1 | Which user groups can view the field value. |
| Set | 2 | Which user groups can provide a value when creating an item. |
| Change | 3 | Which user groups can modify the value after creation. |
Creating an item via the API
Discover available fields
Call the screen endpoint with stage The response
Set to find out which fields the current user can provide:field array tells you every field you can set, its type, default value, and whether it’s required.Build the field array
Using the screen response, build your Use the field definition’s
field array. Include all required fields and any optional fields you want to set:name as the fieldId. For List and Picker fields, use the list item id or entity id as the data value.Create the item
Send a The response includes the created item with its generated key (e.g.,
POST to /api/item with the container, process, and field values:GEM-42), all field values, and default values applied by the system.Updating an item via the API
Discover editable fields
Call the screen endpoint with stage The response includes each field’s current value in the
Change to find which fields the user can modify:data property. The workflow array shows the valid next statuses.Next steps
Fields
Full reference for system fields, custom field types, and default values.
Processes
How processes define workflows, field configuration, and access control.
API reference
Complete endpoint documentation with request and response schemas.