Skip to main content
Every list endpoint in the BlooBank API supports filtering via the filter query parameter. The syntax is SFS-1 (Soluts Filter Syntax v1) — a lightweight, predictable expression language designed for both API integrators and ad-hoc tooling. This page is the complete normative reference. For an overview of when and how to use filters, see Filtering concepts.

Restrictions in v1

SFS-1 intentionally supports only AND logic. The following are explicitly rejected with INVALID_FILTER (HTTP 400):
  • OR operator
  • NOT operator and negation with -
  • Parentheses for grouping
  • Functions (call(arg...))
  • Wildcards * with special semantics
  • Loose literals without a field (e.g., Victor Hugo)
  • Collection-specific operators (has, contains, any)
Future versions of SFS may add OR, NOT, and parentheses without breaking v1 semantics.

Request parameter

APIs adopting SFS expose exactly one filter field:
Decoded:

Syntax

A filter is a list of comparisons joined by AND, and, or ;. Comparison format:
Examples:
  • status=ACTIVE;name=production-main
  • status = SUCCESS AND createdAt >= 2026-01-01
  • createdAt >= "2026-01-15T00:00:00Z" and direction = OUT

Field names

Field names are explicitly allowlisted per endpoint. Referencing a field not in the allowlist returns INVALID_FILTER. The allowlist is documented in each endpoint’s reference page. Supported field types:

Literals

String escaping. Inside a quoted string, \ escapes the next character:
  • "a\"b" resolves to a"b
  • 'a\'b' resolves to a'b
Timestamp validation. A timestamp literal must parse as RFC 3339. Failures return INVALID_FILTER.

Operators

string, boolean, and enum types accept only = and !=. Using < / <= / > / >= on these types returns UNSUPPORTED_FILTER_OPERATION.

Validation

Filters are fully schema-validated before execution.
  • Only fields listed in the endpoint’s allowlist are accepted.
  • Each literal must be coercible to the declared field type.
  • Enum fields only accept values from their allowed set.
  • Operators must be compatible with the field type.
  • Servers enforce limits on filter length, comparison count, and token count.
Any violation returns INVALID_FILTER or UNSUPPORTED_FILTER_OPERATION with HTTP 400.

Examples

Basic equality

Multiple clauses (AND)

Decoded: status=ACTIVE AND createdAt>=2026-01-01

Numeric range

Decoded: amount>=10000;amount<100000

Timestamp range

Decoded: createdAt>="2026-01-01T00:00:00Z"

Enum + direction

Decoded: direction=IN AND status=SUCCESS

Formal grammar (EBNF)

Errors

Both return HTTP 400. See Errors for the full envelope contract.

Versioning

SFS-1 guarantees only AND semantics and the six comparison operators. Future versions may add OR, NOT, and parentheses — those will be released as SFS-2 (or higher), additively, without changing v1 behavior.

Next

Filtering concepts

When to filter, how to choose fields, performance considerations.

Pagination

filter combines with order_by, page_size, page_token.