ObjectStackObjectStack

Filter

Filter protocol schemas

Unified Query DSL Specification

Based on industry best practices from:

  • Prisma ORM

  • Strapi CMS

  • TypeORM

  • LoopBack Framework

Version: 1.0.0

Status: Draft

Objective: Define a JSON-based, database-agnostic query syntax standard

for data filtering interactions between frontend and backend APIs.

Design Principles:

  1. Declarative: Frontend describes "what data to get", not "how to query"

  2. Database Agnostic: Syntax contains no database-specific directives

  3. Type Safe: Structure can be statically inferred by TypeScript

  4. Convention over Configuration: Implicit syntax for common queries

Source: packages/spec/src/data/filter.zod.ts

TypeScript Usage

import { EqualityOperator, FieldReference, FilterCondition, QueryFilter, SetOperator, SpecialOperator, StringOperator } from '@objectstack/spec/data';
import type { EqualityOperator, FieldReference, FilterCondition, QueryFilter, SetOperator, SpecialOperator, StringOperator } from '@objectstack/spec/data';

// Validate data
const result = EqualityOperator.parse(data);

EqualityOperator

Properties

PropertyTypeRequiredDescription
$eqanyoptional
$neanyoptional

FieldReference

Properties

PropertyTypeRequiredDescription
$fieldstringField Reference/Column Name


QueryFilter

Properties

PropertyTypeRequiredDescription
where[__schema0](./__schema0)optional

SetOperator

Properties

PropertyTypeRequiredDescription
$inany[]optional
$ninany[]optional

SpecialOperator

Properties

PropertyTypeRequiredDescription
$nullbooleanoptional
$existsbooleanoptional

StringOperator

Properties

PropertyTypeRequiredDescription
$containsstringoptional
$startsWithstringoptional
$endsWithstringoptional

On this page