Столбец типа enum может принимать значение из списка допустимых значений, явно перечисленных в спецификации столбца в момент создания таблицы.
Пример создания поля Статус (status) в таблице Задачи (tasks) :
| Field name | Type | Is Nullable | Is Immutable | Default | 
|---|---|---|---|---|
stage | 
enum('backlog', 'new', 'in_progress', 'done') | 
false | 
false | 
'new' | 
Список значений поля можно получить из SQL запроса, используя конструкцию
SELECT value
FROM DOMAIN OF FIELD pm.tasks.status as statuses 
Результат этого запроса для примера выше
| statuses.value | 
|---|
backlog | 
new | 
in_progress | 
done | 
Перечисление значений через запятую:
SELECT string_agg(value, ', ') as lst
FROM DOMAIN OF FIELD pm.tasks.status as statuses 
| statuses.lst | 
|---|
'backlog', 'new', 'in_progress', 'done' | 
Атрибуты (field_attributes) можно присваивать каждому значению enum-а с помощью mapping. Имена атрибутов могут быть произвольными (в рамках допустимых имен)
@{
        attribute = mapping
    		WHEN 'enum_val1' THEN 'attr_value1'
        WHEN 'enum_val2' THEN 'attr_value2'
        -- ...
    END
}
Атрибуты поля tasks.status
@{
        -- Field attributes --
    caption = 'Status',
    soft_disabled = is_archived,
    text_align = 'center',
    cell_variant = CASE WHEN is_archived THEN 'light' END,
    
    -- Values attributes --
    option_variant = mapping
        WHEN 'backlog' THEN 'outline-secondary'
        WHEN 'new' THEN 'outline-info'
        WHEN 'in_progress' THEN 'outline-warning'
        WHEN 'done' THEN 'outline-success'
    END,
    icon = mapping
        WHEN 'backlog' THEN 'lightbulb'
        WHEN 'new' THEN 'flag'
        WHEN 'in_progress' THEN 'notifications'
        WHEN 'done' THEN 'done_all'
    END,
    order_number = mapping
        WHEN 'backlog' THEN 3
        WHEN 'new' THEN 1
        WHEN 'in_progress' THEN 2
        WHEN 'done' THEN 4
    END
}
textАтрибут text заменяет caption для каждого из значений enum-а - устанавливает "название", которое будет отображаться в интерфейсе у пользователей.
@{
    text = mapping
        WHEN 'backlog' THEN 'Идеи'
        WHEN 'new' THEN 'Новое'
        WHEN 'in_progress' THEN 'В работе'
        WHEN 'done' THEN 'Завершено'
    END
}
В случаях, где необходимо установить атрибуты для поля, являющегося "массивом перечислимых значений"  (array(enum('backlog', 'new', 'in_progress', 'done'))) вместо mapping используется array mapping:
{   
    $status array(enum('backlog', 'new', 'in_progress', 'done')) null @{
        caption = 'Status',
        text = array mapping
            WHEN 'backlog' THEN 'Ideas'
            WHEN 'new' THEN 'New'
            WHEN 'in_progress' THEN 'In progress'
            WHEN 'done' THEN 'Done'
        END
    }
 }:
    SELECT id
    FROM pm.tasks	
    WHERE ($status IS NULL OR status = ANY($status))
В озме поддерживаются операторы .@ и .@@, которые позволяют получить значения атрибутов поля и сущности соответственно.
SELECT @type = 'board',
       status.@text as status @{
           option_variant = status.@option_variant,
           icon = status.@icon
       },
       subject,
       due_date,
       status as s @{
           visible = false,
           board_group = true
       },
  FROM pm.tasks	
 ORDER BY status.@order_number
status.@text - возвращает 'Новое' для записей в статусе new, 'В работе' для записей в статусе in_progress и т.д.status.@icon и status.@option_variant, status.@order_number - возвращают значения атрибутов, соответствующие указанному статусу записи