Filter

Служит для дополнительной фильтрации выборок по основным(список полей определяется для каждой сущности отдельно) и по дополнительным полям, созданным для сущности.

Название Тип данных Обязательность Описание
field string Обязательное Имя поля сущности (например first_name, region_id, date_of_birth).
operator Enum Обязательное Оператор фильтрации.
value string Обязательное Значение фильтра в текстовом представлении. Для Exists/NotExists не обязательно.

Допустимые значения поля Value

Название Описание
Equal Равенство (=).
NotEqual Не равно (!=).
Greater Больше (>).
Less Меньше (<).
GreaterOrEqual Больше или равно (>=).
LessOrEqual Меньше или равно (<=).
Like Частичное совпадение (только для строковых полей).
Exists Проверка наличия значения.
NotExists Проверка отсутствия значения.

Для операторов Exists/NotExists поле Value не требуется и игнорируется.

Правила валидации и применимости операторов по типам полей

  • value должен соответствовать типу данных поля (data_type):

    • string — любое строковое значение.
    • int — строка, представляющая целое число (должна парситься в int).
    • decimal — строка, представляющая десятичное число (должна парситься в decimal).
    • bool — строка "true" или "false" (регистронезависимо).
  • Ограничения по операторам:

    • Like — применимо только к полям с data_type = "string". Для других типов возвращается ошибка валидации.
    • Для data_type = "bool" допустимы только операторы: Equal, NotEqual, Exists, NotExists.
    • Для data_type = "int" и data_type = "decimal" допустимы все операторы, за исключением Like.
  • Если оператор требует Value (например Equal, Greater, LessOrEqual и т. п.), а Value отсутствует или не может быть корректно сконвертирован в соответствующий тип — возвращается ошибка валидации.

  • Для пользовательских дополнительных полей (is_custom = true) дополнительно проверяется, что поле существует в метаданных и принадлежит указанной сущности.

**Пример JSON-фильтра

{ "field": "region_id", "operator": "Equal", "value": "5" }