Browse the API reference

Evaluate Rules for an Information Block

post/extensions/roboledger/{graph_id}/operations/evaluate-rules

Part of Extensions: RoboLedger.

Runs every rule targeting the given structure (plus element- and association-scoped rules for the structure's atoms), binds $Variable references to in-scope facts via qname lookup, writes one VerificationResult row per rule, and returns the results plus a status-keyed summary. Decoding mode, 6 patterns (EqualTo, RollUp, RollForward, SumEquals, Exists, CoExists).

Idempotency: supply an Idempotency-Key header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

Authentication

Authenticate in any one of these ways — not all of them:

  • API key in the X-API-Key header.
  • Bearer token in the Authorization header.

Path parameters

NameTypeDescription
graph_idrequiredstringGraph Id

Header parameters

NameTypeDescription
Idempotency-KeyoptionalstringIdempotency-Key

Request body

Required, application/json.

FieldTypeDescription
structure_idrequiredstring

Structure to evaluate rules for. Resolves all rules scoped to this structure plus rules attached to its elements and associations.

fact_set_idoptionalstring

Optional FactSet id to stamp on each VerificationResult row. Allows results to be scoped to a specific period run once write paths populate the FactSet table on every run.

period_startoptionalstring (date)

Lower bound on the fact period window (inclusive).

period_endoptionalstring (date)

Upper bound on the fact period window (inclusive).

Example request

curl
curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/evaluate-rules" \
  -H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
  -H "Idempotency-Key: <Idempotency-Key>" \
  -H "Content-Type: application/json" \
  -d '{
  "structure_id": "str_balance_sheet"
}'

Responses

200 Successful Response

FieldTypeDescription
operationrequiredstring

Kebab-case operation name

operationIdrequiredstring

op_-prefixed ULID for audit and SSE correlation

statusrequiredstring

Operation lifecycle state

One of: completed, pending, failed

resultoptionalEvaluateRulesResponse

Command-specific result payload

EvaluateRulesResponse fields
FieldTypeDescription
structure_idrequiredstring
resultsrequiredVerificationResultLite[]

Persisted outcome of one Rule evaluation. One row per ``public.verification_results`` entry the rule engine writes. The envelope surfaces them so the block viewer's "Verification Results" tab and MCP ``list-verification-failures`` tool can render + aggregate without a second round-trip.

VerificationResultLite fields
FieldTypeDescription
idrequiredstring
rule_idrequiredstring
structure_idoptionalstring
fact_set_idoptionalstring
statusrequiredstring

'pass' | 'fail' | 'error' | 'skipped'. Enum closure enforced by the ``public.verification_results`` CHECK constraint.

messageoptionalstring
period_startoptionalstring (date)
period_endoptionalstring (date)
evaluated_atoptionalstring (date-time)
summaryoptionalobject

Status counts keyed by outcome string: ``{'pass': N, 'fail': N, 'error': N, 'skipped': N}``.

atrequiredstring

ISO-8601 UTC timestamp

createdByoptionalstring

User ID that initiated the operation (null for legacy callers)

idempotentReplayoptionalboolean

True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

Default: false

StatusMeaning
400Invalid request
401Authentication required
403Access denied
404Resource not found
409Idempotency-Key conflict — key reused with different body
422Validation error
429Rate limit exceeded
500Internal server error