Search user tasks
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://localhost:8080/v2/user-tasks/search")) .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"filter\": { \"state\": \"CREATED\", \"candidateGroup\": \"approvers\", \"priority\": { \"$gte\": 60 } }, \"sort\": [ { \"field\": \"priority\", \"order\": \"DESC\" } ], \"page\": { \"limit\": 20 } }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());const url = 'http://localhost:8080/v2/user-tasks/search';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"filter":{"state":"CREATED","candidateGroup":"approvers","priority":{"$gte":60}},"sort":[{"field":"priority","order":"DESC"}],"page":{"limit":20}}'};
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/user-tasks/search \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "filter": { "state": "CREATED", "candidateGroup": "approvers", "priority": { "$gte": 60 } }, "sort": [ { "field": "priority", "order": "DESC" } ], "page": { "limit": 20 } }'The task list of the caller. The answer holds only the tasks the
principal may see (docs/task-authorization.md): the tasks assigned
to them, the tasks naming them or one of their groups as candidates,
the unassigned tasks without any candidates, and the tasks or
processes a stored task:read or task:admin grant names. A
tenant-wide task:admin sees every task of the tenant.
Each filter property takes a plain value (an exact match) or an
object of operators: $eq, $neq, $exists, $in, $notIn,
$like (text: * any run, ? one character, \ escapes), and
$gt, $gte, $lt, $lte for priority and the dates.
localVariables and processInstanceVariables match variables of
the task’s own scope and of its process instance; their value is
compared with the variable’s JSON text. $or takes a list of filter
objects, one of which must match. tags and businessId are
refused with 400, since tasks carry neither.
Sort fields are creationDate, completionDate, followUpDate,
dueDate, priority and name; absent values sort last, and ties
are broken by userTaskKey. Page with from (an offset), after
(the endCursor of the previous page) or before (the
startCursor of the next one). totalItems counts every match. A
search that would consider more than 10000 tasks after the exact
filters is refused with 400; narrow the filter.
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
Refused with 400; tasks carry no tags.
Refused with 400; tasks carry no business id.
One of these filter objects must match (they may not nest $or).
object
object
Use at most one of from, after and before.
object
An offset into the sorted matches.
The endCursor of the previous page.
The startCursor of the following page.
Example
{ "filter": { "state": "CREATED", "candidateGroup": "approvers", "priority": { "$gte": 60 } }, "sort": [ { "field": "priority", "order": "DESC" } ], "page": { "limit": 20 }}Responses
Section titled “ Responses ”One page of user tasks.
object
object
The name of the task’s BPMN element.
An RFC 3339 timestamp.
The form reference an application resolves itself.
The task headers of the model, as text.
object
0 to 100, higher is more important. The model sets it with the
priorityDefinition extension element (a literal or an
expression); 50 when the model sets none. An update or a task
listener correction may change it.
Positive signed 64-bit entity key, written as a decimal string.
Positive signed 64-bit entity key, written as a decimal string.
Part of the wire shape. This release always sends null.
Positive signed 64-bit entity key, written as a decimal string.
Positive signed 64-bit entity key, written as a decimal string.
Part of the wire shape. This release always sends null.
Part of the wire shape. This release always sends an empty array.
totalItems counts every match; hasMoreTotalItems is always false. startCursor and endCursor locate the first and last item of this page (null for 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": [ { "state": "CREATED", "userTaskKey": "2251799813685249", "elementInstanceKey": "2251799813685249", "processDefinitionKey": "2251799813685249", "processInstanceKey": "2251799813685249", "rootProcessInstanceKey": "2251799813685249", "formKey": "2251799813685249" } ]}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/user-tasks/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/user-tasks/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/user-tasks/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/user-tasks/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/user-tasks/search"}