When to use these helpers
These helpers are supported in a regular form expression context. They adapt a form; they do not grant access or replace server-side authorization. Offline forms block data and permission helpers.Calling style
Call a helper ashasVerb("review"). Not every helper is available everywhere: validation, form, and document-template helpers have distinct context contracts. Editor suggestions are not proof that a helper is supported at runtime.
Complete function reference
f._in
Explicit alias for f.in that builds an inclusion filter.
Signature: f._in(field, values)
Example:
f.adj
Builds an adjacent-range filter.
Signature: f.adj(field, range)
Example:
f.and
Builds a filter that requires every nested filter. Use it only as a getRecords filter argument.
Signature: f.and(...filters)
Example:
f.cd
Builds a contained-by filter for a collection field.
Signature: f.cd(field, values)
Example:
f.cs
Builds a contains-all filter for a collection field.
Signature: f.cs(field, values)
Example:
f.eq
Builds an equality filter.
Signature: f.eq(field, value)
Example:
f.fts
Builds a full-text-search filter.
Signature: f.fts(field, query)
Example:
f.gt
Builds a greater-than filter.
Signature: f.gt(field, value)
Example:
f.gte
Builds a greater-than-or-equal filter.
Signature: f.gte(field, value)
Example:
f.ilike
Builds a case-insensitive pattern filter.
Signature: f.ilike(field, pattern)
Example:
f.imatch
Builds a case-insensitive regular-match filter.
Signature: f.imatch(field, pattern)
Example:
f.in
Builds an inclusion filter. Prefer f._in when a word-like name could be confusing in a complex expression.
Signature: f.in(field, values)
Example:
f.is
Builds a database-style null or Boolean-state filter.
Signature: f.is(field, value)
Example:
f.isdistinct
Builds a distinct-value filter.
Signature: f.isdistinct(field, value)
Example:
f.like
Builds a case-sensitive pattern filter.
Signature: f.like(field, pattern)
Example:
f.lt
Builds a less-than filter.
Signature: f.lt(field, value)
Example:
f.lte
Builds a less-than-or-equal filter.
Signature: f.lte(field, value)
Example:
f.match
Builds a case-sensitive regular-match filter.
Signature: f.match(field, pattern)
Example:
f.neq
Builds a not-equal filter.
Signature: f.neq(field, value)
Example:
f.nilike
Builds a negated case-insensitive pattern filter.
Signature: f.nilike(field, pattern)
Example:
f.nin
Builds a negated inclusion filter.
Signature: f.nin(field, values)
Example:
f.nis
Builds the negated form of f.is.
Signature: f.nis(field, value)
Example:
f.nisdistinct
Builds the negated distinct-value filter.
Signature: f.nisdistinct(field, value)
Example:
f.nlike
Builds a negated case-sensitive pattern filter.
Signature: f.nlike(field, pattern)
Example:
f.nxl
Builds a does-not-extend-left-of-range filter.
Signature: f.nxl(field, range)
Example:
f.nxr
Builds a does-not-extend-right-of-range filter.
Signature: f.nxr(field, range)
Example:
f.or
Builds a filter that accepts any nested filter. Use it only as a getRecords filter argument.
Signature: f.or(...filters)
Example:
f.ov
Builds an overlap filter for a range or value collection.
Signature: f.ov(field, values)
Example:
f.ov_array
Builds an array-overlap filter.
Signature: f.ov_array(field, values)
Example:
f.phfts
Builds a phrase full-text-search filter.
Signature: f.phfts(field, query)
Example:
f.plfts
Builds a plain full-text-search filter.
Signature: f.plfts(field, query)
Example:
f.sl
Builds a strictly-left-of-range filter.
Signature: f.sl(field, range)
Example:
f.sr
Builds a strictly-right-of-range filter.
Signature: f.sr(field, range)
Example:
f.wfts
Builds a web-style full-text-search filter.
Signature: f.wfts(field, query)
Example:
getRecord
Looks up one record for a form expression. A missing form/client or lookup timeout can resolve to an empty or null-like result; do not use it to prove access.
Signature: getRecord(qualifiedRecordId)
Example:
getRecords
Looks up records for a form expression. Keep returned data out of public output unless the service owner has reviewed the data exposure.
Signature: getRecords(entityKey, filters)
Example:
hasAnyScope
Checks whether the current form session includes any supplied scope.
Signature: hasAnyScope(scopes)
Example:
hasScope
Checks whether the current form session includes one named scope.
Signature: hasScope(scope)
Example:
hasVerb
Checks the current form-session scopes for a current member. Server evaluation returns true, so it is not a server-side authorization control.
Signature: hasVerb(verb)
Example:
hasVerbOnRecord
Checks the current form member’s assigned verb against a qualified record and its scopes. Use it only to adapt the form experience, never as authorization enforcement.
Signature: hasVerbOnRecord(verb, qualifiedRecordId)
Example:
isWeekday
Inverse of isWeekend with the same optional shift-data behavior.
Signature: isWeekday(date, entityId?)
Example:
isWeekend
Checks whether a date is non-working for an optional shift-related entity. Without available shift data it falls back to Saturday/Sunday.
Signature: isWeekend(date, entityId?)
Example:
Before you publish
- Start with a known value and confirm the expected result.
- Handle null, empty text, and empty lists deliberately.
- Do not place secrets, access tokens, or sensitive personal data in an expression.
- Read expression contexts and availability before copying an expression between features.


