Search past decision evaluations
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://localhost:8080/v2/decision-instances/search")) .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"filter\": { \"decisionDefinitionId\": \"shipping_fee\", \"evaluationDate\": { \"$gte\": \"2026-09-01T00:00:00Z\", \"$lt\": \"2026-10-01T00:00:00Z\" } }, \"sort\": [ { \"field\": \"evaluationDate\", \"order\": \"DESC\" } ], \"page\": { \"limit\": 50 } }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());const url = 'http://localhost:8080/v2/decision-instances/search';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"filter":{"decisionDefinitionId":"shipping_fee","evaluationDate":{"$gte":"2026-09-01T00:00:00Z","$lt":"2026-10-01T00:00:00Z"}},"sort":[{"field":"evaluationDate","order":"DESC"}],"page":{"limit":50}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:8080/v2/decision-instances/search \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "filter": { "decisionDefinitionId": "shipping_fee", "evaluationDate": { "$gte": "2026-09-01T00:00:00Z", "$lt": "2026-10-01T00:00:00Z" } }, "sort": [ { "field": "evaluationDate", "order": "DESC" } ], "page": { "limit": 50 } }'Lists the decisions the caller’s tenant evaluated, one item per
decision of each evaluation: a business rule task’s (with its
process instance and element instance) or an evaluation through the API
(no instance). An evaluation of a decision that requires others
lists those first; decisionEvaluationInstanceKey is
<decisionEvaluationKey>-<position>, from 1. A failed evaluation
marks the decision it failed on FAILED, with evaluationFailure.
Newest first by default. Every filter takes a plain value or an
object of operators (evaluationDate takes $gt … $lte for a date
range); sort by any 8.9 sort field; page with page.after or
page.from. totalItems counts at most 10,000 matches, and
hasMoreTotalItems says when there are more. The state filter
takes EVALUATED and FAILED; UNSPECIFIED and UNKNOWN match
nothing. A caller whose grants name some decisions sees only those.
Evaluations age out with their tenant’s history retention: a task’s
with its process instance, one through the API on its own.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Header Parameters
Section titled “Header Parameters”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.
Request Body
Section titled “Request Body”object
object
Sorted by these properties in turn, then newest first; a missing value sorts last.
object
limit (at most 500, default 100) with after (the endCursor of
the previous page) or from (an offset). With a sort or a from,
every match is sorted and paged by position, and endCursor
continues that order. before is not supported.
object
The endCursor of the previous page.
Not supported. Any value is rejected with 400.
Example
{ "filter": { "decisionDefinitionId": "shipping_fee", "evaluationDate": { "$gte": "2026-09-01T00:00:00Z", "$lt": "2026-10-01T00:00:00Z" } }, "sort": [ { "field": "evaluationDate", "order": "DESC" } ], "page": { "limit": 50 }}Responses
Section titled “ Responses ”One page of decision instances.
object
object
Part of the wire shape. This release always sends null.
Positive signed 64-bit entity key, written as a decimal string.
The decision’s name; empty when the model gives none.
The decision’s version; -1 for a required decision that failed before the evaluation described it.
Positive signed 64-bit entity key, written as a decimal string.
An RFC 3339 timestamp.
Why the evaluation failed
The decision’s output as JSON text (null for a decision that failed).
Positive signed 64-bit entity key, written as a decimal string.
totalItems counts every match of the query across all pages, and hasMoreTotalItems is always false. Every page with items carries both cursors; paging with page.after = endCursor ends with an empty page.
object
Opaque, base64. Set on every page with items; null only on an empty page.
Opaque, base64. Set on every page with items; pass it as page.after for the next page, which is empty once every item was seen. null only on an empty page.
Example
{ "items": [ { "decisionDefinitionKey": "2251799813685249", "decisionDefinitionType": "DECISION_TABLE", "decisionEvaluationKey": "2251799813685249", "elementInstanceKey": "2251799813685249", "processDefinitionKey": "2251799813685249", "processInstanceKey": "2251799813685249", "rootDecisionDefinitionKey": "2251799813685249", "rootProcessInstanceKey": "2251799813685249", "state": "EVALUATED" } ]}The request is malformed, or it uses a property or filter this release does not support.
An RFC 9457 problem document. type is a stable TinyConductor URN.
object
The request path.
Present only on mode-not-supported. It names the engine’s mode.
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.
An RFC 9457 problem document. type is a stable TinyConductor URN.
object
The request path.
Present only on mode-not-supported. It names the engine’s mode.
Example
{ "type": "urn:bpm:error:unauthorized", "title": "Unauthorized", "status": 401, "detail": "A valid bearer credential is required", "instance": "/v2/decision-instances/search"}Headers
Section titled “Headers”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.
An RFC 9457 problem document. type is a stable TinyConductor URN.
object
The request path.
Present only on mode-not-supported. It names the engine’s mode.
Example
{ "type": "urn:bpm:error:forbidden", "title": "Forbidden", "status": 403, "detail": "The principal lacks the action this route requires", "instance": "/v2/decision-instances/search"}The body exceeds the configured request-size bound.
An RFC 9457 problem document. type is a stable TinyConductor URN.
object
The request path.
Present only on mode-not-supported. It names the engine’s mode.
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-instances/search"}An internal failure. The details are never exposed.
An RFC 9457 problem document. type is a stable TinyConductor URN.
object
The request path.
Present only on mode-not-supported. It names the engine’s mode.
Example
{ "type": "urn:bpm:error:internal", "title": "Internal Server Error", "status": 500, "detail": "The request could not be completed", "instance": "/v2/decision-instances/search"}The operation is not offered in the engine’s current deployment mode.
An RFC 9457 problem document. type is a stable TinyConductor URN.
object
The request path.
Present only on mode-not-supported. It names the engine’s mode.
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.
An RFC 9457 problem document. type is a stable TinyConductor URN.
object
The request path.
Present only on mode-not-supported. It names the engine’s mode.
Example
{ "type": "urn:bpm:error:unavailable", "title": "Service Unavailable", "status": 503, "detail": "The required engine service is not ready", "instance": "/v2/decision-instances/search"}