Skip to content

Canonical filter operators: terse tokens + isEmpty/notEmpty (long-form aliases deprecated on /v0/profiles)#114

Merged
yosriady merged 3 commits into
mainfrom
chore/canonical-filter-operators
Jul 24, 2026
Merged

Canonical filter operators: terse tokens + isEmpty/notEmpty (long-form aliases deprecated on /v0/profiles)#114
yosriady merged 3 commits into
mainfrom
chore/canonical-filter-operators

Conversation

@yosriady

@yosriady yosriady commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

The Formo API's canonical filter-operator vocabulary is now the terse set: eq, neq, in, nin, gt, gte, lt, lte, contains, startsWith, endsWith, notEmpty, isEmpty. This PR brings the docs in line:

  • api/openapi.json: synced from the backend spec — all filter op enums use terse canonical tokens; FilterCondition (POST /v0/profiles) additionally accepts the long-form spellings (equals, notEquals, greater, greaterOrEqual, less, lessOrEqual, notIn, includes) as deprecated aliases folded to canonical at the boundary — the flip is non-breaking on /v0/profiles. Other /v0 analytics filter schemas are terse-only. Adds the value-less existence ops notEmpty/isEmpty throughout.
  • api/profiles/search.mdx / cli/profiles.mdx: operator tables and all examples use canonical tokens; a deprecation note replaces the earlier "aliases return 400" wording (aliases remain accepted; retirement deferred to a future release, tracked in P-2373).
  • create-chart, analytics CLI, event-timeseries, funnel, idempotency pages: operator tables/examples updated to the terse vocabulary; funnel/flow's {operand, operator} query dialect keeps its long-form tokens per the spec.

Validated with mintlify validate; openapi.json verified semantically identical to the backend spec.

🤖 Generated with Claude Code

…s retirement)

The Formo API retired the legacy operator aliases (eq/neq/gt/gte/lt/lte/
nin/contains) on POST /v0/profiles filters — they now return 400. Bring
the docs in line with the canonical vocabulary:

- api/openapi.json: synced from the backend spec — FilterCondition (and
  the analytics/step/retention filter schemas) now use canonical tokens
  and add the value-less existence ops notEmpty / isEmpty; value optional.
- api/profiles/search.mdx: operator table rewritten to canonical
  (equals/notEquals/greater/greaterOrEqual/less/lessOrEqual/in/notIn/
  includes) + notEmpty/isEmpty rows and a compatibility note; all JSON
  examples canonicalized; social presence checks now use `notEmpty`
  instead of the old `equals ""` idiom.
- cli/profiles.mdx: canonicalized the example op tokens.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@mintlify

mintlify Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
formo 🟢 Ready View Preview Jul 24, 2026, 6:21 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@mintlify

mintlify Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
formo 🟡 Building Jul 24, 2026, 6:20 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

…profiles

The backend flipped canonical filter operators to the terse set (eq, neq, in,
nin, gt, gte, lt, lte, contains, startsWith, endsWith, notEmpty, isEmpty).
Sync openapi.json from the backend spec (semantically identical), rewrite the
profiles operator tables/examples, and correct the earlier "aliases return 400"
framing: the 8 long-form spellings remain accepted on /v0/profiles as deprecated
aliases folded at the boundary (retirement deferred to P-2373 Phase B). Also
sweeps create-chart, analytics CLI, event-timeseries, funnel, and idempotency
pages that disagreed with the terse-only analytics endpoints.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@yosriady yosriady changed the title Canonical filter operators + isEmpty/notEmpty (v0/profiles alias retirement) Canonical filter operators: terse tokens + isEmpty/notEmpty (long-form aliases deprecated on /v0/profiles) Jul 24, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@yosriady
yosriady merged commit 0404573 into main Jul 24, 2026
6 checks passed
@yosriady
yosriady deleted the chore/canonical-filter-operators branch July 24, 2026 09:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant