Skip to content

Evaluate a decision

POST
/v2/decision-definitions/evaluation
curl --request POST \
--url http://localhost:8080/v2/decision-definitions/evaluation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "decisionDefinitionId": "order-discount", "variables": { "customerTier": "gold", "amount": 129.5 } }'
Available inEmbeddedBundledCluster
AuthAuthenticated Bearer token or console session with X-CSRF-Token · requires decision:evaluate

Evaluates a deployed decision, chosen by decisionDefinitionId (the latest version) or by decisionDefinitionKey, with the given variables. A decision that fails to evaluate still answers 200 with failedDecisionDefinitionId and failureMessage set. evaluatedDecisions lists every decision evaluated, required decisions first, each with its type, evaluated inputs and matched rules.

x-tenant-id
string
>= 1 characters

Tenant selection. A principal bound to one tenant may omit it; if sent, it must equal that tenant (403 otherwise). A principal that may act in several tenants must send it on every request: without it the request is refused with 400, and a tenant it may not act in is refused with 403.

Idempotency-Key
string
>= 1 characters <= 200 characters

Makes a retried command safe. A repeat with the same key and the same body replays the first answer. A repeat with the same key and a different body is refused with 409.

Media typeapplication/json

Exactly one of decisionDefinitionId or decisionDefinitionKey.

object
decisionDefinitionId
string
>= 1 characters
decisionDefinitionKey

Positive signed 64-bit entity key, written as a decimal string.

string
/^[1-9][0-9]*$/
variables
object
key
additional properties
any
tenantId
string
Example
{
"decisionDefinitionId": "order-discount",
"variables": {
"customerTier": "gold",
"amount": 129.5
}
}

The decision was evaluated.

Media typeapplication/json
object
decisionDefinitionId
required
string
decisionDefinitionKey
required

Positive signed 64-bit entity key, written as a decimal string.

string
/^[1-9][0-9]*$/
decisionDefinitionName
required
string
decisionDefinitionVersion
required
integer format: int32
decisionEvaluationKey
required

Positive signed 64-bit entity key, written as a decimal string.

string
/^[1-9][0-9]*$/
decisionInstanceKey
required

Same as decisionEvaluationKey.

string
/^[1-9][0-9]*$/
decisionRequirementsId
required
string
decisionRequirementsKey
required

Decimal key; -1 when no requirements graph was recorded.

string
evaluatedDecisions
required
Array<object>
object
decisionDefinitionId
required
string
decisionDefinitionName
required
string
decisionDefinitionVersion
required
integer format: int32
decisionDefinitionType
required
string
Allowed values: DECISION_TABLE LITERAL_EXPRESSION
output
required

The decision output as JSON text.

string
tenantId
required
string
matchedRules
required

Rules that produced the result, in rule order (decision tables only).

Array<object>
object
ruleId
required

The rule id; a rule without one gets ZB_SYNTH_RULE_ID_<decisionId>_v<version>_r<ruleIndex>.

string
ruleIndex
required

One-based position of the rule in the table.

integer format: int32
evaluatedOutputs
required
Array<object>
object
outputId
required
string
outputName
required
string
outputValue
required

The output value as JSON text.

string
ruleId
required

The matched rule’s id

string
ruleIndex
required

The matched rule’s one-based position

integer format: int32
evaluatedInputs
required

Evaluated input values (decision tables only).

Array<object>
object
inputId
required
string
inputName
required

The input label

string
inputValue
required

The evaluated value as JSON text.

string
decisionDefinitionKey
required

Positive signed 64-bit entity key, written as a decimal string.

string
/^[1-9][0-9]*$/
decisionEvaluationInstanceKey
required
string
failedDecisionDefinitionId
required
string | null
failureMessage
required
string | null
output
required

The decision output as JSON text (null on failure).

string
tenantId
required
string
Example
{
"decisionDefinitionKey": "2251799813685249",
"decisionEvaluationKey": "2251799813685249",
"decisionInstanceKey": "2251799813685249",
"evaluatedDecisions": [
{
"decisionDefinitionType": "DECISION_TABLE",
"decisionDefinitionKey": "2251799813685249"
}
]
}

The request is malformed, or it uses a property or filter this release does not support.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:invalid-argument",
"title": "Bad Request",
"status": 400,
"detail": "entity key must be a positive int64 string",
"instance": "/v2/process-instances/0"
}

No valid credential was presented.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "A valid bearer credential is required",
"instance": "/v2/decision-definitions/evaluation"
}
WWW-Authenticate
string
Allowed value: Bearer

The caller lacks the required permission, a tenant named in the request is not the caller’s tenant, or a cookie write has no valid CSRF token.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:forbidden",
"title": "Forbidden",
"status": 403,
"detail": "The principal lacks the action this route requires",
"instance": "/v2/decision-definitions/evaluation"
}

The entity does not exist in the caller’s tenant.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:not-found",
"title": "Not Found",
"status": 404,
"detail": "The requested resource does not exist",
"instance": "/v2/decision-definitions/evaluation"
}

An idempotency-key conflict, or a command the target’s current state does not allow.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:conflict",
"title": "Conflict",
"status": 409,
"detail": "The idempotency key is already associated with another request",
"instance": "/v2/decision-definitions/evaluation"
}

The body exceeds the configured request-size bound.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:payload-too-large",
"title": "Payload Too Large",
"status": 413,
"detail": "The request exceeds the configured size limit",
"instance": "/v2/decision-definitions/evaluation"
}

An internal failure. The details are never exposed.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:internal",
"title": "Internal Server Error",
"status": 500,
"detail": "The request could not be completed",
"instance": "/v2/decision-definitions/evaluation"
}

The operation is not offered in the engine’s current deployment mode.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:mode-not-supported",
"title": "Mode Not Supported",
"status": 501,
"detail": "/v2/clock is not supported in bundled mode: the deterministic virtual clock and the storage-free reset exist only for the Embedded engine; Bundled and Cluster run on the system clock over durable history, which cannot be pinned, rewound or discarded",
"instance": "/v2/clock",
"mode": "bundled"
}

Backpressure, or a dependency is not ready. Retry with the same idempotency key.

Media typeapplication/problem+json

An RFC 9457 problem document. type is a stable TinyConductor URN.

object
type
required
string
/^urn:bpm:error:/
title
required
string
status
required
integer
>= 400 <= 599
detail
required
string
instance
required

The request path.

string
mode

Present only on mode-not-supported. It names the engine’s mode.

string
Example
{
"type": "urn:bpm:error:unavailable",
"title": "Service Unavailable",
"status": 503,
"detail": "The required engine service is not ready",
"instance": "/v2/decision-definitions/evaluation"
}