Skip to content

Validate one validation-rule expression before saving metadata.

POST
/api/workspace/admin/entity-definitions/{entityDefinitionId}/validation-rules/validate-expression
curl --request POST \
--url https://example.com/api/workspace/admin/entity-definitions/example/validation-rules/validate-expression \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "Expression": "example", "IncludeAuthoring": true, "Scope": 0 }'

Returns structured errors with token positions without saving anything. Expression syntax: validation rule expressions. IncludeAuthoring returns the same schema’s language metadata. MATCHES admits only the supported .NET-compatible regex subset compiled to PostgreSQL; unsupported constructs return diagnostics.

entityDefinitionId
required
string
access_token
string

Optional access token for clients that cannot set Authorization headers. Prefer Authorization: Bearer <token> when possible.

Validate one entity validation-rule expression before saving metadata.

object
Expression
required

Boolean validation expression.

string
IncludeAuthoring

Include editor metadata from the schema used to validate this expression.

boolean
Scope
integer format: int32
Allowed values: 0 1

OK

Media typeapplication/json
object
Data

Validation-rule expression validation result.

object
Valid

Whether the expression is valid.

boolean
Errors

Validation diagnostics.

Array<object>
nullable

Validation-rule expression diagnostic.

object
Field

Request field that produced the error.

string
nullable
Message

Localized diagnostic message.

string
nullable
FieldPath

Resolved field path that failed validation when available.

string
nullable
Token

Offending token when available.

string
nullable
Code

Stable diagnostic code.

string
nullable
Start

Zero-based start offset in the submitted expression when available.

integer format: int32
nullable
End

Zero-based end offset in the submitted expression when available.

integer format: int32
nullable
Authoring

Language metadata for an already authorized editing subject. Saving still compiles the exact submitted expression against the current subject and schema.

object
DescriptorVersion
integer format: int32
DescriptorFingerprint
string
nullable
ProfileKey
string
nullable
ProfileVersion
integer format: int32
EngineVersion
string
nullable
ProfileFingerprint
string
nullable
SchemaFingerprint
string
nullable
SourceKind
string
nullable
ExpectedFamily
string
nullable
SourcePositions

Offsets count UTF-16 code units in the submitted source, including CR/LF.

object
Unit
string
nullable
Base
integer format: int32
EndExclusive
boolean
Roots
Array<object>
nullable

A named root with the scalar paths and collections admitted in this description.

object
Name
string
nullable
Paths
Array<object>
nullable

Id is opaque and stable within this collection scope until its binding changes.

object
Id
string
nullable
Path
string
nullable
ValueFamily
string
nullable
Nullable
boolean
Description
string
nullable
Operators

Operators admitted for this path in its collection scope, after owner restrictions.

Array<string>
nullable
Collections
Array<object>
nullable

A collection and the scalar paths available inside its item scope.

object
Id
string
nullable
Path
string
nullable
ItemPaths
Array<object>
nullable

Id is opaque and stable within this collection scope until its binding changes.

object
Id
string
nullable
Path
string
nullable
ValueFamily
string
nullable
Nullable
boolean
Description
string
nullable
Operators

Operators admitted for this path in its collection scope, after owner restrictions.

Array<string>
nullable
Description
string
nullable
ItemCollections
Array<object> recursive
Operators
Array<string>
nullable
OperatorForms
Array<object>
nullable

Canonical operator spelling and a template with named operand placeholders.

object
Id
string
nullable
Token
string
nullable
Form
string
nullable
Template
string
nullable
ValueFamilies
Array<object>
nullable

Operators and duration units applicable to one value family in this profile.

object
ValueFamily
string
nullable
Operators
Array<string>
nullable
ArithmeticDurationUnits
Array<string>
nullable
Variables
Array<object>
nullable

A captured context variable; Name includes its @ prefix.

object
Name
string
nullable
ValueFamily
string
nullable
Description
string
nullable
Operations
Array<object>
nullable

MIN/MAX value and aggregate forms have distinct IDs. Null SQL support is unknown.

object
Id
string
nullable
Name
string
nullable
Kind
string
nullable
MinimumArguments
integer format: int32
MaximumArguments
integer format: int32
ArgumentShape
string
nullable
Overloads
Array<object>
nullable

Ordered argument types and result type of a registered function overload.

object
ArgumentFamilies
Array<string>
nullable
ResultFamily
string
nullable
Signature
string
nullable
DescriptionKey
string
nullable
Description
string
nullable
Example
string
nullable
SqlAvailable
boolean
nullable
PreviewAvailable
boolean
TypeContract

CommonArguments finds one family from ResultArgumentIndex onward, ignores NULL and widens Integer/Decimal mixtures to Decimal. Argument retains the selected argument family; AverageArgument additionally widens Integer to Decimal. Fixed uses FixedResultFamily. RequireConcreteResult refuses an all-NULL result family. Function arity applies separately.

object
Parameters
Array<object>
nullable

Form is Value, Collection, CollectionItem, SourceLiteral or BoundLiteral. Collection carries a collection path; CollectionItem binds in its item scope. SourceLiteral requires source literal syntax, whereas BoundLiteral permits a compile-time bound literal. A repeated final parameter covers remaining arguments. Numeric limits are inclusive; RegexPattern uses the shared supported regular-expression subset. These constraints do not replace compilation.

object
Name
string
nullable
Form
string
nullable
ValueFamilies
Array<string>
nullable
Repeated
boolean
WholeNumber
boolean
Minimum
integer format: int32
nullable
Maximum
integer format: int32
nullable
RegexPattern
boolean
ResultRule
string
nullable
FixedResultFamily
string
nullable
ResultArgumentIndex
integer format: int32
RequireConcreteResult
boolean
ComplexityLimits

Compilation limits; source size counts UTF-8 bytes and positions count UTF-16 units.

object
MaxNodes
integer format: int32
MaxDepth
integer format: int32
MaxPathSegments
integer format: int32
MaxCollectionItems
integer format: int32
MaxFunctionArguments
integer format: int32
MaxExpressionUtf8Bytes
integer format: int32
MaxTokens
integer format: int32
LiteralExamples
Array<string>
nullable
DiagnosticCodes
Array<string>
nullable
Examples
Array<string>
nullable
Template

Literal text with placeholders. Limits apply separately to placeholder contents, without braces; there is no template-wide size/placeholder count limit here. Value arguments are evaluated eagerly, including extra arguments and unused coalesce alternatives. Rendering uses invariant culture.

object
PlaceholderOpen
string
nullable
PlaceholderClose
string
nullable
MaxPlaceholderUtf8Bytes
integer format: int32
MaxPlaceholderTokens
integer format: int32
MaxPlaceholderNestingDepth
integer format: int32
ArgumentsEvaluatedEagerly
boolean
CollapsesRenderedWhitespace
boolean
Functions
Array<object>
nullable

OperationId refers to Operations. Values accepts expressions of mixed families; Path requires one bare path from AllowedPathIds. PlaceholderTokenBudget has no separate arity limit: MaximumArguments is the largest simple call within the token budget. FirstArgumentToText uses the first value (missing becomes empty text); FirstNonEmptyArgument retains the first nonempty value, including zero/false. OptionLabelText resolves configured labels, falls back to keys and joins multiple labels with comma-space.

object
OperationId
string
nullable
ArgumentMode
string
nullable
ArityKind
string
nullable
ResultRule
string
nullable
AllowedPathIds
Array<string>
nullable
SyntaxForms

Host syntax lowered before normal function binding; empty for profiles without extensions.

Array<object>
nullable

Signatures describe source syntax, not value overloads. Choices are complete calls with correlated arguments; they must not be split into independent argument lists. Member selectors still need a declared member. Host forms may be unavailable within collection predicates.

object
Id
string
nullable
Name
string
nullable
Signatures
Array<object>
nullable

One admitted source argument shape; catalog selection further constrains the complete call.

object
Parameters
Array<object>
nullable

Identifier denotes source identifier syntax; StringLiteral never accepts a value expression.

object
Name
string
nullable
Form
string
nullable
NonEmpty
boolean
ResultFamily
string
nullable
RequiresMemberAccess
boolean
SqlAvailable
boolean
PreviewAvailable
boolean
AllowedInCollectionPredicate
boolean
Choices
Array<string>
nullable
MemberShorthand

A prefix such as target maps to this binding, including an inactive first target. BindingId is opaque. Selector is null when no unique explicit selector represents the binding; the prefix remains valid.

object
Prefix
string
nullable
Selector
string
nullable
BindingId
string
nullable
PredicateAdmission

Admission after host lowering and binding. MaxCollectionPredicates counts bound EXISTS and COUNT nodes; MaxRelationalJoins includes host intrinsic joins. Boolean operands are required recursively when enabled. MaxSelectedTargets counts distinct target definitions per expression. Nested aggregate admission also follows the common compiler’s collection scope rules.

object
ActorIndependent
boolean
RequiresBooleanOperands
boolean
AllowsNestedExists
boolean
AllowsAnyKeyword
boolean
MaxCollectionPredicates
integer format: int32
MaxRelationalJoins
integer format: int32
MaxSelectedTargets
integer format: int32
ValueAdmission

TargetBindingId identifies the edited field. TargetPathId links it to an admitted operand, or is null when its key cannot be used as a DSL path. AggregateMustBeRoot requires exactly one aggregate as the whole expression. Path reads an item field; PresenceCount permits SUM(collection, IF(path IS NULL, 0, 1)). AllowsNullResult describes the bound result family, not whether evaluation can produce a missing value.

object
TargetBindingId
string
nullable
TargetPathId
string
nullable
AllowsNullResult
boolean
AggregateMustBeRoot
boolean
AggregateItemForms
Array<string>
nullable
ComparisonAdmission

BETWEEN accepts literals and paths under BetweenBoundPathRoots. Path-to-path binary comparisons require matching GroupId when enabled. NULL and membership constraints apply to operands, not missing runtime values. Owner node counting treats signed numbers and admitted local-day bounds as one operand; MaxBooleanDepth counts AND/OR/NOT, and MaxSourceNestingDepth bounds parentheses and consecutive NOT. These rules supplement the common grammar; field storage and operand compatibility still require compilation.

object
AllowsNullLiterals
boolean
MembershipItemsMustBeLiterals
boolean
BetweenBoundPathRoots
Array<string>
nullable
ComparedPathsMustShareGroup
boolean
Paths
Array<object>
nullable

Opaque path identity and comparison group; groups reveal no storage or source-definition identifiers.

object
PathId
string
nullable
GroupId
string
nullable
MaxNodes
integer format: int32
MaxBooleanDepth
integer format: int32
MaxSourceNestingDepth
integer format: int32
MaxMembershipItems
integer format: int32
Roots
Array<object>
nullable

MaxUsedMembers counts distinct first members under Name; RequiresValues concerns every path read under it.

object
Name
string
nullable
MaxUsedMembers
integer format: int32
RequiresValues
boolean
OperandAdmission

NullComparisonForbiddenOperators reject NULL on either side; AllowsNullMembershipItems concerns list items only. These restrictions supplement individual path operators and full compilation.

object
NullComparisonForbiddenOperators
Array<string>
nullable
AllowsNullMembershipItems
boolean
VariableComparisons
Array<object>
nullable

Name includes @. For these operators, every counterpart of the variable must be one of these paths in its declared collection scope. Membership checks each left/item pair independently. Other membership items may have different forms admitted by the compiler.

object
Name
string
nullable
Operators
Array<string>
nullable
CounterpartPathIds
Array<string>
nullable
FamilyComparisons
Array<object>
nullable

When a listed operator uses this family, every operand must have the same family and group. Paths carry opaque group IDs. Other operands must be literals bound by a listed operation and resolved to that group by the server. NULL is not such a literal. Function arguments and catalog access still require server validation; group IDs expose no storage or catalog identifiers.

object
ValueFamily
string
nullable
Operators
Array<string>
nullable
Paths
Array<object>
nullable

Opaque path identity and comparison group; groups reveal no storage or source-definition identifiers.

object
PathId
string
nullable
GroupId
string
nullable
LiteralOperationIds
Array<string>
nullable
Errors
Array<object>
nullable
object
Code
required
string
nullable
Message
required
string
nullable
Target
string
nullable
Field
string
nullable
Metadata
object
key
additional properties
string
nullable
Type
integer format: int32
Allowed values: 0 1 2
Severity
integer format: int32
Allowed values: 0 1 2
Warnings
Array<object>
nullable
object
Code
required
string
nullable
Message
required
string
nullable
Target
string
nullable
Field
string
nullable
Metadata
object
key
additional properties
string
nullable
Type
integer format: int32
Allowed values: 0 1 2
Severity
integer format: int32
Allowed values: 0 1 2
Success
boolean
Example
{
"Errors": [
{
"Type": 0,
"Severity": 0
}
],
"Warnings": [
{
"Type": 0,
"Severity": 0
}
]
}

Bad Request

Media typeapplication/json
object
Data

Validation-rule expression validation result.

object
Valid

Whether the expression is valid.

boolean
Errors

Validation diagnostics.

Array<object>
nullable

Validation-rule expression diagnostic.

object
Field

Request field that produced the error.

string
nullable
Message

Localized diagnostic message.

string
nullable
FieldPath

Resolved field path that failed validation when available.

string
nullable
Token

Offending token when available.

string
nullable
Code

Stable diagnostic code.

string
nullable
Start

Zero-based start offset in the submitted expression when available.

integer format: int32
nullable
End

Zero-based end offset in the submitted expression when available.

integer format: int32
nullable
Authoring

Language metadata for an already authorized editing subject. Saving still compiles the exact submitted expression against the current subject and schema.

object
DescriptorVersion
integer format: int32
DescriptorFingerprint
string
nullable
ProfileKey
string
nullable
ProfileVersion
integer format: int32
EngineVersion
string
nullable
ProfileFingerprint
string
nullable
SchemaFingerprint
string
nullable
SourceKind
string
nullable
ExpectedFamily
string
nullable
SourcePositions

Offsets count UTF-16 code units in the submitted source, including CR/LF.

object
Unit
string
nullable
Base
integer format: int32
EndExclusive
boolean
Roots
Array<object>
nullable

A named root with the scalar paths and collections admitted in this description.

object
Name
string
nullable
Paths
Array<object>
nullable

Id is opaque and stable within this collection scope until its binding changes.

object
Id
string
nullable
Path
string
nullable
ValueFamily
string
nullable
Nullable
boolean
Description
string
nullable
Operators

Operators admitted for this path in its collection scope, after owner restrictions.

Array<string>
nullable
Collections
Array<object>
nullable

A collection and the scalar paths available inside its item scope.

object
Id
string
nullable
Path
string
nullable
ItemPaths
Array<object>
nullable

Id is opaque and stable within this collection scope until its binding changes.

object
Id
string
nullable
Path
string
nullable
ValueFamily
string
nullable
Nullable
boolean
Description
string
nullable
Operators

Operators admitted for this path in its collection scope, after owner restrictions.

Array<string>
nullable
Description
string
nullable
ItemCollections
Array<object> recursive
Operators
Array<string>
nullable
OperatorForms
Array<object>
nullable

Canonical operator spelling and a template with named operand placeholders.

object
Id
string
nullable
Token
string
nullable
Form
string
nullable
Template
string
nullable
ValueFamilies
Array<object>
nullable

Operators and duration units applicable to one value family in this profile.

object
ValueFamily
string
nullable
Operators
Array<string>
nullable
ArithmeticDurationUnits
Array<string>
nullable
Variables
Array<object>
nullable

A captured context variable; Name includes its @ prefix.

object
Name
string
nullable
ValueFamily
string
nullable
Description
string
nullable
Operations
Array<object>
nullable

MIN/MAX value and aggregate forms have distinct IDs. Null SQL support is unknown.

object
Id
string
nullable
Name
string
nullable
Kind
string
nullable
MinimumArguments
integer format: int32
MaximumArguments
integer format: int32
ArgumentShape
string
nullable
Overloads
Array<object>
nullable

Ordered argument types and result type of a registered function overload.

object
ArgumentFamilies
Array<string>
nullable
ResultFamily
string
nullable
Signature
string
nullable
DescriptionKey
string
nullable
Description
string
nullable
Example
string
nullable
SqlAvailable
boolean
nullable
PreviewAvailable
boolean
TypeContract

CommonArguments finds one family from ResultArgumentIndex onward, ignores NULL and widens Integer/Decimal mixtures to Decimal. Argument retains the selected argument family; AverageArgument additionally widens Integer to Decimal. Fixed uses FixedResultFamily. RequireConcreteResult refuses an all-NULL result family. Function arity applies separately.

object
Parameters
Array<object>
nullable

Form is Value, Collection, CollectionItem, SourceLiteral or BoundLiteral. Collection carries a collection path; CollectionItem binds in its item scope. SourceLiteral requires source literal syntax, whereas BoundLiteral permits a compile-time bound literal. A repeated final parameter covers remaining arguments. Numeric limits are inclusive; RegexPattern uses the shared supported regular-expression subset. These constraints do not replace compilation.

object
Name
string
nullable
Form
string
nullable
ValueFamilies
Array<string>
nullable
Repeated
boolean
WholeNumber
boolean
Minimum
integer format: int32
nullable
Maximum
integer format: int32
nullable
RegexPattern
boolean
ResultRule
string
nullable
FixedResultFamily
string
nullable
ResultArgumentIndex
integer format: int32
RequireConcreteResult
boolean
ComplexityLimits

Compilation limits; source size counts UTF-8 bytes and positions count UTF-16 units.

object
MaxNodes
integer format: int32
MaxDepth
integer format: int32
MaxPathSegments
integer format: int32
MaxCollectionItems
integer format: int32
MaxFunctionArguments
integer format: int32
MaxExpressionUtf8Bytes
integer format: int32
MaxTokens
integer format: int32
LiteralExamples
Array<string>
nullable
DiagnosticCodes
Array<string>
nullable
Examples
Array<string>
nullable
Template

Literal text with placeholders. Limits apply separately to placeholder contents, without braces; there is no template-wide size/placeholder count limit here. Value arguments are evaluated eagerly, including extra arguments and unused coalesce alternatives. Rendering uses invariant culture.

object
PlaceholderOpen
string
nullable
PlaceholderClose
string
nullable
MaxPlaceholderUtf8Bytes
integer format: int32
MaxPlaceholderTokens
integer format: int32
MaxPlaceholderNestingDepth
integer format: int32
ArgumentsEvaluatedEagerly
boolean
CollapsesRenderedWhitespace
boolean
Functions
Array<object>
nullable

OperationId refers to Operations. Values accepts expressions of mixed families; Path requires one bare path from AllowedPathIds. PlaceholderTokenBudget has no separate arity limit: MaximumArguments is the largest simple call within the token budget. FirstArgumentToText uses the first value (missing becomes empty text); FirstNonEmptyArgument retains the first nonempty value, including zero/false. OptionLabelText resolves configured labels, falls back to keys and joins multiple labels with comma-space.

object
OperationId
string
nullable
ArgumentMode
string
nullable
ArityKind
string
nullable
ResultRule
string
nullable
AllowedPathIds
Array<string>
nullable
SyntaxForms

Host syntax lowered before normal function binding; empty for profiles without extensions.

Array<object>
nullable

Signatures describe source syntax, not value overloads. Choices are complete calls with correlated arguments; they must not be split into independent argument lists. Member selectors still need a declared member. Host forms may be unavailable within collection predicates.

object
Id
string
nullable
Name
string
nullable
Signatures
Array<object>
nullable

One admitted source argument shape; catalog selection further constrains the complete call.

object
Parameters
Array<object>
nullable

Identifier denotes source identifier syntax; StringLiteral never accepts a value expression.

object
Name
string
nullable
Form
string
nullable
NonEmpty
boolean
ResultFamily
string
nullable
RequiresMemberAccess
boolean
SqlAvailable
boolean
PreviewAvailable
boolean
AllowedInCollectionPredicate
boolean
Choices
Array<string>
nullable
MemberShorthand

A prefix such as target maps to this binding, including an inactive first target. BindingId is opaque. Selector is null when no unique explicit selector represents the binding; the prefix remains valid.

object
Prefix
string
nullable
Selector
string
nullable
BindingId
string
nullable
PredicateAdmission

Admission after host lowering and binding. MaxCollectionPredicates counts bound EXISTS and COUNT nodes; MaxRelationalJoins includes host intrinsic joins. Boolean operands are required recursively when enabled. MaxSelectedTargets counts distinct target definitions per expression. Nested aggregate admission also follows the common compiler’s collection scope rules.

object
ActorIndependent
boolean
RequiresBooleanOperands
boolean
AllowsNestedExists
boolean
AllowsAnyKeyword
boolean
MaxCollectionPredicates
integer format: int32
MaxRelationalJoins
integer format: int32
MaxSelectedTargets
integer format: int32
ValueAdmission

TargetBindingId identifies the edited field. TargetPathId links it to an admitted operand, or is null when its key cannot be used as a DSL path. AggregateMustBeRoot requires exactly one aggregate as the whole expression. Path reads an item field; PresenceCount permits SUM(collection, IF(path IS NULL, 0, 1)). AllowsNullResult describes the bound result family, not whether evaluation can produce a missing value.

object
TargetBindingId
string
nullable
TargetPathId
string
nullable
AllowsNullResult
boolean
AggregateMustBeRoot
boolean
AggregateItemForms
Array<string>
nullable
ComparisonAdmission

BETWEEN accepts literals and paths under BetweenBoundPathRoots. Path-to-path binary comparisons require matching GroupId when enabled. NULL and membership constraints apply to operands, not missing runtime values. Owner node counting treats signed numbers and admitted local-day bounds as one operand; MaxBooleanDepth counts AND/OR/NOT, and MaxSourceNestingDepth bounds parentheses and consecutive NOT. These rules supplement the common grammar; field storage and operand compatibility still require compilation.

object
AllowsNullLiterals
boolean
MembershipItemsMustBeLiterals
boolean
BetweenBoundPathRoots
Array<string>
nullable
ComparedPathsMustShareGroup
boolean
Paths
Array<object>
nullable

Opaque path identity and comparison group; groups reveal no storage or source-definition identifiers.

object
PathId
string
nullable
GroupId
string
nullable
MaxNodes
integer format: int32
MaxBooleanDepth
integer format: int32
MaxSourceNestingDepth
integer format: int32
MaxMembershipItems
integer format: int32
Roots
Array<object>
nullable

MaxUsedMembers counts distinct first members under Name; RequiresValues concerns every path read under it.

object
Name
string
nullable
MaxUsedMembers
integer format: int32
RequiresValues
boolean
OperandAdmission

NullComparisonForbiddenOperators reject NULL on either side; AllowsNullMembershipItems concerns list items only. These restrictions supplement individual path operators and full compilation.

object
NullComparisonForbiddenOperators
Array<string>
nullable
AllowsNullMembershipItems
boolean
VariableComparisons
Array<object>
nullable

Name includes @. For these operators, every counterpart of the variable must be one of these paths in its declared collection scope. Membership checks each left/item pair independently. Other membership items may have different forms admitted by the compiler.

object
Name
string
nullable
Operators
Array<string>
nullable
CounterpartPathIds
Array<string>
nullable
FamilyComparisons
Array<object>
nullable

When a listed operator uses this family, every operand must have the same family and group. Paths carry opaque group IDs. Other operands must be literals bound by a listed operation and resolved to that group by the server. NULL is not such a literal. Function arguments and catalog access still require server validation; group IDs expose no storage or catalog identifiers.

object
ValueFamily
string
nullable
Operators
Array<string>
nullable
Paths
Array<object>
nullable

Opaque path identity and comparison group; groups reveal no storage or source-definition identifiers.

object
PathId
string
nullable
GroupId
string
nullable
LiteralOperationIds
Array<string>
nullable
Errors
Array<object>
nullable
object
Code
required
string
nullable
Message
required
string
nullable
Target
string
nullable
Field
string
nullable
Metadata
object
key
additional properties
string
nullable
Type
integer format: int32
Allowed values: 0 1 2
Severity
integer format: int32
Allowed values: 0 1 2
Warnings
Array<object>
nullable
object
Code
required
string
nullable
Message
required
string
nullable
Target
string
nullable
Field
string
nullable
Metadata
object
key
additional properties
string
nullable
Type
integer format: int32
Allowed values: 0 1 2
Severity
integer format: int32
Allowed values: 0 1 2
Success
boolean
Example
{
"Errors": [
{
"Type": 0,
"Severity": 0
}
],
"Warnings": [
{
"Type": 0,
"Severity": 0
}
]
}

Forbidden

Media typeapplication/json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
key
additional properties
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Not Found

Media typeapplication/json
object
Data

Validation-rule expression validation result.

object
Valid

Whether the expression is valid.

boolean
Errors

Validation diagnostics.

Array<object>
nullable

Validation-rule expression diagnostic.

object
Field

Request field that produced the error.

string
nullable
Message

Localized diagnostic message.

string
nullable
FieldPath

Resolved field path that failed validation when available.

string
nullable
Token

Offending token when available.

string
nullable
Code

Stable diagnostic code.

string
nullable
Start

Zero-based start offset in the submitted expression when available.

integer format: int32
nullable
End

Zero-based end offset in the submitted expression when available.

integer format: int32
nullable
Authoring

Language metadata for an already authorized editing subject. Saving still compiles the exact submitted expression against the current subject and schema.

object
DescriptorVersion
integer format: int32
DescriptorFingerprint
string
nullable
ProfileKey
string
nullable
ProfileVersion
integer format: int32
EngineVersion
string
nullable
ProfileFingerprint
string
nullable
SchemaFingerprint
string
nullable
SourceKind
string
nullable
ExpectedFamily
string
nullable
SourcePositions

Offsets count UTF-16 code units in the submitted source, including CR/LF.

object
Unit
string
nullable
Base
integer format: int32
EndExclusive
boolean
Roots
Array<object>
nullable

A named root with the scalar paths and collections admitted in this description.

object
Name
string
nullable
Paths
Array<object>
nullable

Id is opaque and stable within this collection scope until its binding changes.

object
Id
string
nullable
Path
string
nullable
ValueFamily
string
nullable
Nullable
boolean
Description
string
nullable
Operators

Operators admitted for this path in its collection scope, after owner restrictions.

Array<string>
nullable
Collections
Array<object>
nullable

A collection and the scalar paths available inside its item scope.

object
Id
string
nullable
Path
string
nullable
ItemPaths
Array<object>
nullable

Id is opaque and stable within this collection scope until its binding changes.

object
Id
string
nullable
Path
string
nullable
ValueFamily
string
nullable
Nullable
boolean
Description
string
nullable
Operators

Operators admitted for this path in its collection scope, after owner restrictions.

Array<string>
nullable
Description
string
nullable
ItemCollections
Array<object> recursive
Operators
Array<string>
nullable
OperatorForms
Array<object>
nullable

Canonical operator spelling and a template with named operand placeholders.

object
Id
string
nullable
Token
string
nullable
Form
string
nullable
Template
string
nullable
ValueFamilies
Array<object>
nullable

Operators and duration units applicable to one value family in this profile.

object
ValueFamily
string
nullable
Operators
Array<string>
nullable
ArithmeticDurationUnits
Array<string>
nullable
Variables
Array<object>
nullable

A captured context variable; Name includes its @ prefix.

object
Name
string
nullable
ValueFamily
string
nullable
Description
string
nullable
Operations
Array<object>
nullable

MIN/MAX value and aggregate forms have distinct IDs. Null SQL support is unknown.

object
Id
string
nullable
Name
string
nullable
Kind
string
nullable
MinimumArguments
integer format: int32
MaximumArguments
integer format: int32
ArgumentShape
string
nullable
Overloads
Array<object>
nullable

Ordered argument types and result type of a registered function overload.

object
ArgumentFamilies
Array<string>
nullable
ResultFamily
string
nullable
Signature
string
nullable
DescriptionKey
string
nullable
Description
string
nullable
Example
string
nullable
SqlAvailable
boolean
nullable
PreviewAvailable
boolean
TypeContract

CommonArguments finds one family from ResultArgumentIndex onward, ignores NULL and widens Integer/Decimal mixtures to Decimal. Argument retains the selected argument family; AverageArgument additionally widens Integer to Decimal. Fixed uses FixedResultFamily. RequireConcreteResult refuses an all-NULL result family. Function arity applies separately.

object
Parameters
Array<object>
nullable

Form is Value, Collection, CollectionItem, SourceLiteral or BoundLiteral. Collection carries a collection path; CollectionItem binds in its item scope. SourceLiteral requires source literal syntax, whereas BoundLiteral permits a compile-time bound literal. A repeated final parameter covers remaining arguments. Numeric limits are inclusive; RegexPattern uses the shared supported regular-expression subset. These constraints do not replace compilation.

object
Name
string
nullable
Form
string
nullable
ValueFamilies
Array<string>
nullable
Repeated
boolean
WholeNumber
boolean
Minimum
integer format: int32
nullable
Maximum
integer format: int32
nullable
RegexPattern
boolean
ResultRule
string
nullable
FixedResultFamily
string
nullable
ResultArgumentIndex
integer format: int32
RequireConcreteResult
boolean
ComplexityLimits

Compilation limits; source size counts UTF-8 bytes and positions count UTF-16 units.

object
MaxNodes
integer format: int32
MaxDepth
integer format: int32
MaxPathSegments
integer format: int32
MaxCollectionItems
integer format: int32
MaxFunctionArguments
integer format: int32
MaxExpressionUtf8Bytes
integer format: int32
MaxTokens
integer format: int32
LiteralExamples
Array<string>
nullable
DiagnosticCodes
Array<string>
nullable
Examples
Array<string>
nullable
Template

Literal text with placeholders. Limits apply separately to placeholder contents, without braces; there is no template-wide size/placeholder count limit here. Value arguments are evaluated eagerly, including extra arguments and unused coalesce alternatives. Rendering uses invariant culture.

object
PlaceholderOpen
string
nullable
PlaceholderClose
string
nullable
MaxPlaceholderUtf8Bytes
integer format: int32
MaxPlaceholderTokens
integer format: int32
MaxPlaceholderNestingDepth
integer format: int32
ArgumentsEvaluatedEagerly
boolean
CollapsesRenderedWhitespace
boolean
Functions
Array<object>
nullable

OperationId refers to Operations. Values accepts expressions of mixed families; Path requires one bare path from AllowedPathIds. PlaceholderTokenBudget has no separate arity limit: MaximumArguments is the largest simple call within the token budget. FirstArgumentToText uses the first value (missing becomes empty text); FirstNonEmptyArgument retains the first nonempty value, including zero/false. OptionLabelText resolves configured labels, falls back to keys and joins multiple labels with comma-space.

object
OperationId
string
nullable
ArgumentMode
string
nullable
ArityKind
string
nullable
ResultRule
string
nullable
AllowedPathIds
Array<string>
nullable
SyntaxForms

Host syntax lowered before normal function binding; empty for profiles without extensions.

Array<object>
nullable

Signatures describe source syntax, not value overloads. Choices are complete calls with correlated arguments; they must not be split into independent argument lists. Member selectors still need a declared member. Host forms may be unavailable within collection predicates.

object
Id
string
nullable
Name
string
nullable
Signatures
Array<object>
nullable

One admitted source argument shape; catalog selection further constrains the complete call.

object
Parameters
Array<object>
nullable

Identifier denotes source identifier syntax; StringLiteral never accepts a value expression.

object
Name
string
nullable
Form
string
nullable
NonEmpty
boolean
ResultFamily
string
nullable
RequiresMemberAccess
boolean
SqlAvailable
boolean
PreviewAvailable
boolean
AllowedInCollectionPredicate
boolean
Choices
Array<string>
nullable
MemberShorthand

A prefix such as target maps to this binding, including an inactive first target. BindingId is opaque. Selector is null when no unique explicit selector represents the binding; the prefix remains valid.

object
Prefix
string
nullable
Selector
string
nullable
BindingId
string
nullable
PredicateAdmission

Admission after host lowering and binding. MaxCollectionPredicates counts bound EXISTS and COUNT nodes; MaxRelationalJoins includes host intrinsic joins. Boolean operands are required recursively when enabled. MaxSelectedTargets counts distinct target definitions per expression. Nested aggregate admission also follows the common compiler’s collection scope rules.

object
ActorIndependent
boolean
RequiresBooleanOperands
boolean
AllowsNestedExists
boolean
AllowsAnyKeyword
boolean
MaxCollectionPredicates
integer format: int32
MaxRelationalJoins
integer format: int32
MaxSelectedTargets
integer format: int32
ValueAdmission

TargetBindingId identifies the edited field. TargetPathId links it to an admitted operand, or is null when its key cannot be used as a DSL path. AggregateMustBeRoot requires exactly one aggregate as the whole expression. Path reads an item field; PresenceCount permits SUM(collection, IF(path IS NULL, 0, 1)). AllowsNullResult describes the bound result family, not whether evaluation can produce a missing value.

object
TargetBindingId
string
nullable
TargetPathId
string
nullable
AllowsNullResult
boolean
AggregateMustBeRoot
boolean
AggregateItemForms
Array<string>
nullable
ComparisonAdmission

BETWEEN accepts literals and paths under BetweenBoundPathRoots. Path-to-path binary comparisons require matching GroupId when enabled. NULL and membership constraints apply to operands, not missing runtime values. Owner node counting treats signed numbers and admitted local-day bounds as one operand; MaxBooleanDepth counts AND/OR/NOT, and MaxSourceNestingDepth bounds parentheses and consecutive NOT. These rules supplement the common grammar; field storage and operand compatibility still require compilation.

object
AllowsNullLiterals
boolean
MembershipItemsMustBeLiterals
boolean
BetweenBoundPathRoots
Array<string>
nullable
ComparedPathsMustShareGroup
boolean
Paths
Array<object>
nullable

Opaque path identity and comparison group; groups reveal no storage or source-definition identifiers.

object
PathId
string
nullable
GroupId
string
nullable
MaxNodes
integer format: int32
MaxBooleanDepth
integer format: int32
MaxSourceNestingDepth
integer format: int32
MaxMembershipItems
integer format: int32
Roots
Array<object>
nullable

MaxUsedMembers counts distinct first members under Name; RequiresValues concerns every path read under it.

object
Name
string
nullable
MaxUsedMembers
integer format: int32
RequiresValues
boolean
OperandAdmission

NullComparisonForbiddenOperators reject NULL on either side; AllowsNullMembershipItems concerns list items only. These restrictions supplement individual path operators and full compilation.

object
NullComparisonForbiddenOperators
Array<string>
nullable
AllowsNullMembershipItems
boolean
VariableComparisons
Array<object>
nullable

Name includes @. For these operators, every counterpart of the variable must be one of these paths in its declared collection scope. Membership checks each left/item pair independently. Other membership items may have different forms admitted by the compiler.

object
Name
string
nullable
Operators
Array<string>
nullable
CounterpartPathIds
Array<string>
nullable
FamilyComparisons
Array<object>
nullable

When a listed operator uses this family, every operand must have the same family and group. Paths carry opaque group IDs. Other operands must be literals bound by a listed operation and resolved to that group by the server. NULL is not such a literal. Function arguments and catalog access still require server validation; group IDs expose no storage or catalog identifiers.

object
ValueFamily
string
nullable
Operators
Array<string>
nullable
Paths
Array<object>
nullable

Opaque path identity and comparison group; groups reveal no storage or source-definition identifiers.

object
PathId
string
nullable
GroupId
string
nullable
LiteralOperationIds
Array<string>
nullable
Errors
Array<object>
nullable
object
Code
required
string
nullable
Message
required
string
nullable
Target
string
nullable
Field
string
nullable
Metadata
object
key
additional properties
string
nullable
Type
integer format: int32
Allowed values: 0 1 2
Severity
integer format: int32
Allowed values: 0 1 2
Warnings
Array<object>
nullable
object
Code
required
string
nullable
Message
required
string
nullable
Target
string
nullable
Field
string
nullable
Metadata
object
key
additional properties
string
nullable
Type
integer format: int32
Allowed values: 0 1 2
Severity
integer format: int32
Allowed values: 0 1 2
Success
boolean
Example
{
"Errors": [
{
"Type": 0,
"Severity": 0
}
],
"Warnings": [
{
"Type": 0,
"Severity": 0
}
]
}