openapi: 3.0.0
info:
title: ZenBPM OpenAPI
description: REST API for ZenBPM
version: 1.8.0
contact:
name: API Support
email: info@pbinitiative.org
license:
name: AGPL
url: https://www.gnu.org/licenses/agpl-3.0.en.html
servers:
- url: http://localhost:8080/v1
- url: http://localhost:8081/v1
- url: http://localhost:8082/v1
- url: http://zenbpm.local/v1
tags:
- name: process-definition
- name: process-instance
- name: dmn-resource-definition
- name: decision-definition
- name: decision-instance
- name: job
- name: message
- name: incident
- name: test
paths:
/dmn-resource-definitions:
post:
operationId: createDmnResourceDefinition
summary: Deploy a new dmn resource definition
tags:
- dmn-resource-definition
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
description: DMN resource definition file (.dmn format)
responses:
201:
description: Dmn resource definition deployed
content:
application/json:
schema:
type: object
required:
- dmnResourceDefinitionKey
properties:
dmnResourceDefinitionKey:
type: integer
format: int64
example:
dmnResourceDefinitionKey: 4503599627370495
200:
description: >
The latest DMN resource definition with the same dmnResourceDefinitionId has identical
content after XML formatting normalization. No new version is created; returns the existing key.
A new ID or a content change creates a new version and returns 201.
content:
application/json:
schema:
type: object
required:
- dmnResourceDefinitionKey
properties:
dmnResourceDefinitionKey:
type: integer
format: int64
example:
dmnResourceDefinitionKey: 4503599627370495
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
get:
operationId: getDmnResourceDefinitions
summary: Get list of dmn resource definitions
tags:
- dmn-resource-definition
parameters:
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page (max 100)
example: 10
- name: onlyLatest
in: query
schema:
type: boolean
default: false
description: If true, returns only the latest version of each DMN resource definition grouped by dmnResourceDefinitionId
- name: sortBy
in: query
schema:
type: string
enum: [dmnDefinitionName, dmnResourceDefinitionId, version, key]
description: Sort field
- $ref: "#/components/parameters/sortOrder"
- name: dmnResourceDefinitionId
in: query
schema:
type: string
description: Filter by DMN resource definition ID to get all versions
- name: dmnDefinitionName
in: query
schema:
type: string
description: Filter by name (partial match)
- name: search
in: query
schema:
type: string
description: Search by DMN resource definition ID or DMN definition name
responses:
200:
description: List of dmn resource definitions
content:
application/json:
schema:
$ref: "#/components/schemas/DmnResourceDefinitionsPage"
example:
items:
- key: 4503599627370496
version: 2
dmnResourceDefinitionId: "loan-approval"
dmnDefinitionName: "Loan Approval Decision"
- key: 4503599627370497
version: 1
dmnResourceDefinitionId: "credit-score-check"
dmnDefinitionName: "Credit Score Check"
page: 1
size: 10
count: 2
totalCount: 2
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/dmn-resource-definitions/{dmnResourceDefinitionKey}:
get:
operationId: getDmnResourceDefinition
summary: Get dmn resource definition
tags:
- dmn-resource-definition
parameters:
- name: dmnResourceDefinitionKey
required: true
in: path
schema:
type: integer
format: int64
example: 4503599627370495
responses:
200:
description: Dmn resource definition
content:
application/json:
schema:
$ref: "#/components/schemas/DmnResourceDefinitionDetail"
example:
key: 4503599627370495
version: 2
dmnResourceDefinitionId: "loan-approval"
dmnDefinitionName: "Loan Approval Decision"
dmnData: |
...
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/decision-definitions/{decisionId}/evaluate:
post:
operationId: evaluateDecision
summary: Evaluate latest version of decision definition directly in engine
tags:
- decision-definition
parameters:
- name: decisionId
required: true
in: path
schema:
type: string
example: "loan-approval"
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- bindingType
properties:
bindingType:
type: string
enum:
- latest
- deployment #TODO: unsupported
- versionTag
dmnResourceDefinitionId:
description: Can be used in combination with bindingType latest
type: string
versionTag:
description: Is used in combination with bindingType versionTag
type: string
variables:
type: object
nullable: true
example:
bindingType: "latest"
variables:
age: 25
income: 50000
responses:
200:
description: Decision Evaluated
content:
application/json:
schema:
$ref: "#/components/schemas/EvaluatedDRDResult"
example:
evaluatedDecisions:
- decisionId: "loan-approval"
decisionName: "Loan Approval"
decisionType: "DECISION_TABLE"
decisionDefinitionVersion: 1
dmnResourceDefinitionKey: 4503599627370495
dmnResourceDefinitionId: "loan-approval"
matchedRules:
- ruleId: "rule1"
ruleIndex: 0
evaluatedOutputs:
- outputId: "output1"
outputName: "approved"
outputValue: { "approved": true }
decisionOutput: { "approved": true }
evaluatedInputs:
- inputId: "input1"
inputName: "Age"
inputExpression: "age"
inputValue: { "age": 25 }
- inputId: "input2"
inputName: "Income"
inputExpression: "income"
inputValue: { "income": 50000 }
decisionOutput: { "approved": true }
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The request parameters are invalid"
404:
description: Not Found (e.g. decision definition was not found)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "NOT_FOUND"
message: "No decision definition found for the given decisionId"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while evaluating the decision"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_GATEWAY"
message: "Failed to redirect request to responsible node"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/decision-instances:
get:
operationId: getDecisionInstances
summary: Get list of decision instances
tags:
- decision-instance
parameters:
- name: dmnResourceDefinitionKey
in: query
schema:
type: integer
format: int64
description: Filter by DMN resource definition key
- name: dmnResourceDefinitionId
in: query
schema:
type: string
description: Filter by DMN resource definition ID
- name: processInstanceKey
in: query
schema:
type: integer
format: int64
description: Filter by process instance
- name: evaluatedFrom
in: query
schema:
type: string
format: date-time
description: Filter - evaluated after this date
- name: evaluatedTo
in: query
schema:
type: string
format: date-time
description: Filter - evaluated before this date
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page (max 100)
- name: sortBy
in: query
schema:
type: string
enum: [evaluatedAt, key]
description: Sort field
- $ref: "#/components/parameters/sortOrder"
responses:
200:
description: List of decision instances
content:
application/json:
schema:
$ref: "#/components/schemas/DecisionInstancePartitionPage"
example:
partitions:
- partition: 1
totalCount: 156
items:
- key: 4503599627370600
dmnResourceDefinitionKey: 4503599627370495
dmnResourceDefinitionId: "loan-approval"
processInstanceKey: 4503599627370501
flowElementInstanceKey: 4503599627370550
evaluatedAt: "2025-08-22T14:30:25Z"
inputCount: 3
outputCount: 2
- partition: 2
totalCount: 98
items:
- key: 9007199254740995
dmnResourceDefinitionKey: 4503599627370495
dmnResourceDefinitionId: "loan-approval"
processInstanceKey: 9007199254740992
flowElementInstanceKey: 9007199254740980
evaluatedAt: "2025-08-22T15:45:33Z"
inputCount: 3
outputCount: 2
page: 1
size: 10
count: 2
totalCount: 254
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The request parameters are invalid"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while retrieving decision instances"
502:
description: Failed to collect data from responsible nodes
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_GATEWAY"
message: "Failed to collect data from responsible nodes"
405:
$ref: "#/components/responses/MethodNotAllowed"
/decision-instances/{decisionInstanceKey}:
get:
operationId: getDecisionInstance
summary: Get decision instance details
tags:
- decision-instance
parameters:
- name: decisionInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370600
responses:
200:
description: Decision instance details
content:
application/json:
schema:
$ref: "#/components/schemas/DecisionInstanceDetail"
example:
key: 4503599627370600
dmnResourceDefinitionKey: 4503599627370495
dmnResourceDefinitionId: "loan-approval"
dmnResourceDefinitionVersion: 1
processInstanceKey: 4503599627370501
flowElementInstanceKey: 4503599627370550
evaluatedAt: "2025-08-22T14:30:25Z"
decisionRequirementsKey: 4503599627370490
decisionRequirementsId: "loan-drd"
evaluatedDecisions:
- decisionId: "loan-approval"
decisionName: "Loan Approval"
decisionType: "DECISION_TABLE"
evaluationOrder: 1
inputs:
- inputId: "input_amount"
inputName: "Loan Amount"
inputExpression: "loanAmount"
inputValue: 50000
outputs:
- outputId: "output_approved"
outputName: "Approved"
outputValue: true
matchedRules:
- ruleId: "rule_1"
ruleIndex: 0
evaluatedOutputs:
- outputId: "output_approved"
outputName: "Approved"
outputValue: true
decisionOutput:
approved: true
404:
description: Decision instance not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "NOT_FOUND"
message: "No decision instance found for the given key"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while retrieving decision instance"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_GATEWAY"
message: "Failed to collect data from responsible node"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-definitions:
post:
operationId: createProcessDefinition
summary: Deploy a new process definition
tags:
- process-definition
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
description: BPMN process definition file (.bpmn format only, size limited by httpServer.maxRequestBodyBytes, 10 MiB by default)
responses:
201:
description: Process definition deployed
content:
application/json:
schema:
type: object
required:
- processDefinitionKey
properties:
processDefinitionKey:
type: integer
format: int64
example:
processDefinitionKey: 4503599627370498
200:
description: >
The latest process definition with the same BPMN process ID has identical content after
XML formatting normalization. No new version is created; returns the existing key.
A new ID or a content change creates a new version and returns 201.
content:
application/json:
schema:
type: object
required:
- processDefinitionKey
properties:
processDefinitionKey:
type: integer
format: int64
example:
processDefinitionKey: 4503599627370498
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The provided BPMN file is invalid: missing required 'process' element"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while processing the BPMN file"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_GATEWAY"
message: "Failed to redirect request to responsible node"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
get:
operationId: getProcessDefinitions
summary: Get list of process definitions
tags:
- process-definition
parameters:
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page (max 100)
example: 10
- name: onlyLatest
in: query
schema:
type: boolean
default: false
description: If true, returns only the latest version of each process definition grouped by bpmnProcessId
- name: sortBy
in: query
schema:
type: string
enum: [name, bpmnProcessId, bpmnProcessName, version, key]
description: Sort field
- $ref: "#/components/parameters/sortOrder"
- name: bpmnProcessId
in: query
schema:
type: string
description: Filter by BPMN process ID to get all versions of a specific process
- name: search
in: query
schema:
type: string
description: Filter by BPMN process ID or BPMN process name (partial match)
responses:
200:
description: List of process definitions
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessDefinitionsPage"
example:
items:
- key: 4503599627370498
version: 1
bpmnProcessId: "loan-application"
- key: 4503599627370499
version: 2
bpmnProcessId: "loan-application"
- key: 4503599627370500
version: 1
bpmnProcessId: "credit-check"
page: 1
size: 10
count: 2
totalCount: 2
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The request parameters are invalid"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while retrieving process definitions"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-definitions/{processDefinitionKey}:
get:
operationId: getProcessDefinition
summary: Get process definition
tags:
- process-definition
parameters:
- name: processDefinitionKey
required: true
in: path
schema:
type: integer
format: int64
example: 4503599627370498
responses:
200:
description: Process definition
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessDefinitionDetail"
example:
key: 4503599627370498
version: 1
bpmnProcessId: "loan-application"
bpmnData: |
...
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The provided processDefinitionKey is invalid"
404:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "NOT_FOUND"
message: "No process definition found for the given key"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while retrieving the process definition"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-definitions/{processDefinitionKey}/statistics:
get:
operationId: getProcessDefinitionElementStatistics
summary: Get running and incident counts per BPMN element
tags:
- process-definition
parameters:
- name: processDefinitionKey
required: true
in: path
schema:
type: integer
format: int64
example: 4503599627370498
responses:
200:
description: Element statistics as a map of elementId to counts
content:
application/json:
schema:
$ref: "#/components/schemas/ElementStatisticsPartitions"
example:
partitions:
- partition: 1
items:
Task_CheckApplication:
activeCount: 5
incidentCount: 2
Task_CreditCheck:
activeCount: 3
incidentCount: 1
- partition: 2
items:
Task_CheckApplication:
activeCount: 4
incidentCount: 0
Task_CreditCheck:
activeCount: 6
incidentCount: 3
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The provided processDefinitionKey is invalid"
404:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "NOT_FOUND"
message: "No process definition found for the given key"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while retrieving process definition statistics"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_GATEWAY"
message: "Failed to redirect request to responsible node"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-definitions/statistics:
get:
operationId: getProcessDefinitionStatistics
summary: Get process definition statistics
tags:
- process-definition
parameters:
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page (max 100)
- name: onlyLatest
in: query
schema:
type: boolean
default: false
description: If true, returns only the latest version of each process definition
- name: bpmnProcessIdIn
in: query
schema:
type: array
items:
type: string
description: Filter by BPMN process ID
- name: bpmnProcessDefinitionKeyIn
in: query
schema:
type: array
items:
type: integer
format: int64
description: Filter by process definition key
- name: search
in: query
schema:
type: string
description: Search by BPMN process ID or BPMN process name (partial match)
- name: sortBy
in: query
schema:
type: string
enum: [name, bpmnProcessId, version, instanceCount, incidentCount]
description: Sort field
- name: sortOrder
in: query
schema:
type: string
enum: [asc, desc]
description: Sort direction
responses:
200:
description: Process definition statistics
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessDefinitionStatisticsPage"
example:
partitions:
- partition: 1
totalCount: 2
items:
- key: 4503599627370498
version: 3
bpmnProcessId: "loan-application"
name: "Loan Application Process"
bpmnResourceName: "loan-application.bpmn"
instanceCounts:
total: 1250
active: 45
completed: 1180
terminated: 20
failed: 5
withIncident: 0
- key: 4503599627370510
version: 1
bpmnProcessId: "order-fulfillment"
name: "Order Fulfillment"
bpmnResourceName: "order-fulfillment.bpmn"
instanceCounts:
total: 890
active: 120
completed: 750
terminated: 15
failed: 5
withIncident: 2
page: 1
size: 10
count: 2
totalCount: 2
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The request parameters are invalid"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "INTERNAL_SERVER_ERROR"
message: "An unexpected error occurred while retrieving process definition statistics"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_GATEWAY"
message: "Failed to redirect request to responsible node"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances:
post:
operationId: createProcessInstance
summary: Create a new process instance
tags:
- process-instance
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
processDefinitionKey:
type: integer
format: int64
description: Start the process instance using bpmn process definition identified by processDefinitionKey. ( Takes priority )
bpmnProcessId:
type: string
description: Start the process instance using latest bpmn process definition identified by bpmnProcessId.
variables:
type: object
nullable: true
historyTimeToLive:
type: string
description: Duration for which process instance data are kept in storage after the process instance ends. If omitted the default will be picked up from engine configuration. (1d8h, 1M5d8h)
example: 30d
businessKey:
type: string
description: Business key of the process instance used mainly for correlating process instance to the business entity.
example:
processDefinitionKey: 4503599627370498
variables:
customerId: "customer-456"
amount: 1000
applicationDate: "2025-08-22"
responses:
201:
description: Process instance created
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessInstance"
example:
key: 4503599627370501
processDefinitionKey: 4503599627370498
createdAt: "2025-08-22T14:30:25Z"
state: "active"
version: 1
versionTag: "initial-release"
variables:
customerId: "customer-456"
amount: 1000
applicationDate: "2025-08-22"
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found (e.g. process definition was not found)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
get:
summary: Get list of running process instances
operationId: getProcessInstances
tags:
- process-instance
parameters:
- name: processDefinitionKey
in: query
schema:
type: integer
format: int64
description: Key of the process definition
example: 4503599627370498
- name: parentProcessInstanceKey
in: query
schema:
type: integer
format: int64
description: Key of the parent process instance
example: 1603294627315478
- name: businessKey
in: query
schema:
type: string
description: Business key of the process instance used mainly for correlating process instance to the business entity.
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page
example: 10
- name: bpmnProcessId
in: query
schema:
type: string
description: Filter by BPMN process ID (returns instances across all versions)
- name: sortBy
in: query
schema:
type: string
enum: [createdAt, key, state, businessKey, bpmnProcessId]
description: Sort field (applies globally across partitions)
- $ref: "#/components/parameters/sortOrder"
- name: createdFrom
in: query
schema:
type: string
format: date-time
description: Filter - created after this date
- name: createdTo
in: query
schema:
type: string
format: date-time
description: Filter - created before this date
- name: state
in: query
schema:
type: string
enum: [active, completed, terminated, failed]
description: Filter by state
- name: activityId
in: query
schema:
type: string
description: Filter by current activity element ID
- name: includeChildProcesses
in: query
schema:
type: boolean
responses:
200:
description: List of running process instances
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessInstancePage"
example:
partitions:
- partition: 1
totalCount: 24
items:
- key: 4503599627370501
processDefinitionKey: 4503599627370498
bpmnProcessId: "loan-application"
version: 1
versionTag: "initial-release"
createdAt: "2025-08-22T14:30:25Z"
state: "active"
incidentCount: 1
variables:
customerId: "customer-456"
amount: 1000
applicationDate: "2025-08-22"
- key: 4503599627370505
processDefinitionKey: 4503599627370498
bpmnProcessId: "loan-application"
version: 1
versionTag: "initial-release"
createdAt: "2025-08-22T15:10:12Z"
state: "active"
incidentCount: 0
variables:
customerId: "customer-789"
amount: 5000
applicationDate: "2025-08-22"
- partition: 2
totalCount: 18
items:
- key: 9007199254740992
processDefinitionKey: 4503599627370498
bpmnProcessId: "loan-application"
version: 1
versionTag: "initial-release"
createdAt: "2025-08-22T15:45:33Z"
state: "active"
incidentCount: 2
variables:
customerId: "customer-101"
amount: 7500
applicationDate: "2025-08-22"
page: 1
size: 10
count: 3
totalCount: 42
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible nodes
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}:
get:
operationId: getProcessInstance
tags:
- process-instance
summary: Get state of a process instance selected by processInstanceKey
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
responses:
200:
description: State of a process instance
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessInstance"
example:
key: 4503599627370501
processDefinitionKey: 4503599627370498
version: 1
versionTag: "initial-release"
createdAt: "2025-08-22T14:30:25Z"
state: "active"
variables:
customerId: "customer-456"
amount: 1000
applicationDate: "2025-08-22"
taskAssignee: "john.doe"
currentStatus: "Application review"
404:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/variables:
patch:
operationId: updateProcessInstanceVariables
summary: Update process instance variables
tags:
- process-instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- variables
properties:
variables:
type: object
example:
variables:
orderAmount: 150.00
approved: true
reviewedBy: "john.doe"
reviewComment: "Approved after verification"
responses:
204:
description: Variables updated
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found (e.g process instance is not found)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: Conflict (e.g process instance is not in correct state for this operation)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/process-instances/{processInstanceKey}/variables/{variableName}:
delete:
operationId: deleteProcessInstanceVariable
summary: Delete a process instance variable
tags:
- process-instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
- name: variableName
in: path
required: true
schema:
type: string
example: "temporaryFlag"
responses:
204:
description: Variable deleted
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found (e.g. process instance or variable not found)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: Conflict (e.g process instance is not in correct state for this operation)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/child-processes:
get:
summary: Get list of running child process instances
operationId: getChildProcessInstances
tags:
- process-instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page
example: 10
- name: sortBy
in: query
schema:
type: string
enum: [key, state]
description: Sort field (applies globally across partitions)
- $ref: "#/components/parameters/sortOrder"
- name: state
in: query
schema:
type: string
enum: [active, completed, terminated, failed]
description: Filter by state
responses:
200:
description: List of child process instances
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessInstancePage"
example:
partitions:
- partition: 1
totalCount: 2
items:
- key: 4503599627370501
processDefinitionKey: 4503599627370498
version: 1
versionTag: "initial-release"
createdAt: "2025-08-22T14:30:25Z"
state: "active"
incidentCount: 1
variables:
customerId: "customer-456"
amount: 1000
applicationDate: "2025-08-22"
- key: 4503599627370505
processDefinitionKey: 4503599627370498
version: 1
versionTag: "initial-release"
createdAt: "2025-08-22T15:10:12Z"
state: "active"
incidentCount: 0
variables:
customerId: "customer-789"
amount: 5000
applicationDate: "2025-08-22"
- partition: 2
totalCount: 1
items:
- key: 9007199254740992
processDefinitionKey: 4503599627370498
version: 1
versionTag: "initial-release"
createdAt: "2025-08-22T15:45:33Z"
state: "active"
incidentCount: 2
variables:
customerId: "customer-101"
amount: 7500
applicationDate: "2025-08-22"
page: 1
size: 10
count: 3
totalCount: 3
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible nodes
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/cancel:
post:
operationId: cancelProcessInstance
summary: Cancels a process instance
tags:
- process-instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
responses:
204:
description: Process instance cancelled
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found (e.g. process instance is not found)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: Conflict (e.g process instance is not in cancellable state)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/jobs:
get:
operationId: getProcessInstanceJobs
tags:
- process-instance
summary: Get list of jobs for a process instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page (max 100)
example: 10
responses:
200:
description: List of jobs
content:
application/json:
schema:
$ref: "#/components/schemas/JobPage"
example:
items:
- key: 4503599627370510
elementId: "Task_CheckApplication"
type: "user-task"
processInstanceKey: 4503599627370500
elementInstanceKey: 4503599627370900
state: "active"
createdAt: "2025-08-22T14:30:26Z"
inputVariables:
formKey: "loan-application-form"
assignee: "john.doe"
- key: 4503599627370511
elementId: "Task_CreditCheck"
type: "service-task"
processInstanceKey: 4503599627370501
elementInstanceKey: 4503599627370901
state: "completed"
createdAt: "2025-08-22T14:32:15Z"
inputVariables:
applicantId: "APP-12345"
creditScoreThreshold: 80
outputVariables:
result: "approved"
score: 85
page: 1
size: 10
count: 2
totalCount: 2
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/history:
get:
operationId: getHistory
tags:
- process-instance
summary: Get list of visited flow elements for a process instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 1000
default: 10
description: Number of items per page (max 1000)
example: 10
- name: sortBy
in: query
schema:
type: string
enum: [createdAt]
- name: sortOrder
in: query
schema:
type: string
enum: [asc, desc]
description: Sort direction
responses:
200:
description: List of activities
content:
application/json:
schema:
$ref: "#/components/schemas/FlowElementHistoryPage"
example:
items:
- key: 4503599627370525
elementId: "StartEvent_1"
elementType: "START_EVENT"
processInstanceKey: 4503599627370501
createdAt: "2025-08-22T14:30:26Z"
- key: 4503599627370526
elementId: "Flow_1"
elementType: "SEQUENCE_FLOW"
processInstanceKey: 4503599627370501
createdAt: "2025-08-22T14:30:26Z"
- key: 4503599627370527
elementId: "Task_CheckApplication"
elementType: "SERVICE_TASK"
processInstanceKey: 4503599627370501
createdAt: "2025-08-22T14:30:27Z"
page: 1
size: 10
count: 3
totalCount: 3
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/incidents:
get:
operationId: getIncidents
tags:
- process-instance
summary: Get list of incidents for a process instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370501
- name: state
in: query
schema:
type: string
enum: [resolved, unresolved]
description: Filter by incident state (omit to get all incidents)
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page (max 100)
example: 10
responses:
200:
description: List of incidents
content:
application/json:
schema:
$ref: "#/components/schemas/IncidentPage"
example:
items:
- key: 4503599627370530
elementInstanceKey: 4503599627370521
elementId: "Task_CheckApplication"
processInstanceKey: 4503599627370501
message: "Failed to assign task: User not found"
createdAt: "2025-08-22T14:35:10Z"
executionToken: 123456
bpmnProcessId: "loan-application"
state: "unresolved"
- key: 4503599627370531
elementInstanceKey: 4503599627370522
elementId: "Task_CreditCheck"
processInstanceKey: 4503599627370501
message: "External service unavailable"
createdAt: "2025-08-22T14:36:22Z"
resolvedAt: "2025-08-22T14:45:18Z"
executionToken: 123457
bpmnProcessId: "loan-application"
state: "resolved"
page: 1
size: 10
count: 2
totalCount: 2
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/event-subscriptions/messages:
get:
operationId: getProcessInstanceMessageSubscriptions
tags:
- process-instance
summary: Get message event subscriptions for a process instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
- name: state
in: query
schema:
$ref: "#/components/schemas/EventSubscriptionState"
description: Filter by state (omit to list subscriptions in every state)
responses:
200:
description: List of message subscriptions
content:
application/json:
schema:
$ref: "#/components/schemas/MessageSubscriptionPage"
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Cluster error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/event-subscriptions/timers:
get:
operationId: getProcessInstanceTimerSubscriptions
tags:
- process-instance
summary: Get timer event subscriptions for a process instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
- name: state
in: query
schema:
$ref: "#/components/schemas/EventSubscriptionState"
description: Filter by state (omit to list subscriptions in every state)
responses:
200:
description: List of timer subscriptions
content:
application/json:
schema:
$ref: "#/components/schemas/TimerSubscriptionPage"
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Cluster error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/event-subscriptions/errors:
get:
operationId: getProcessInstanceErrorSubscriptions
tags:
- process-instance
summary: Get error event subscriptions for a process instance
parameters:
- name: processInstanceKey
in: path
required: true
schema:
type: integer
format: int64
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
- name: state
in: query
schema:
$ref: "#/components/schemas/EventSubscriptionState"
description: Filter by state (omit to list subscriptions in every state)
responses:
200:
description: List of error subscriptions
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorSubscriptionPage"
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Cluster error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/process-instances/{processInstanceKey}/statistics:
get:
operationId: getProcessInstanceElementStatistics
summary: Get running and incident counts per BPMN element for a process instance
tags:
- process-instance
parameters:
- name: processInstanceKey
required: true
in: path
schema:
type: integer
format: int64
example: 4503599627370501
responses:
200:
description: Element statistics as a map of elementId to counts
content:
application/json:
schema:
$ref: "#/components/schemas/ElementStatisticsPartitions"
example:
partitions:
- partition: 1
items:
Task_CheckApplication:
activeCount: 1
incidentCount: 0
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "The provided processInstanceKey is invalid"
404:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "NOT_FOUND"
message: "No process instance found for the given key"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/jobs:
get:
operationId: getJobs
tags:
- job
summary: Get list of jobs on partitions
parameters:
- name: processInstanceKey
in: query
schema:
type: integer
format: int64
description: Filter by process instance
- name: jobType
in: query
required: false
schema:
type: string
description: Filter by job type
example: "service-task"
- name: assignee
in: query
schema:
type: string
description: Filter by assignee
- name: state
in: query
required: false
schema:
$ref: "#/components/schemas/JobState"
description: Filter by job state
example: "active"
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
description: Number of items per page (max 100)
example: 10
- name: sortBy
in: query
schema:
type: string
enum: [createdAt, key, type, state]
description: Sort field
- name: sortOrder
in: query
schema:
type: string
enum: [asc, desc]
description: Sort direction
responses:
200:
description: List of jobs on partitions
content:
application/json:
schema:
$ref: "#/components/schemas/JobPartitionPage"
example:
partitions:
- partition: 1
totalCount: 1
items:
- key: 4503599627370540
elementId: "Task_ReviewApplication"
type: "user-task"
processInstanceKey: 4503599627370501
state: "active"
createdAt: "2025-08-22T15:10:26Z"
assignee: "john.doe"
retries: 3
inputVariables:
formKey: "loan-review-form"
- partition: 2
totalCount: 1
items:
- key: 9007199254740995
elementId: "Task_SendNotification"
type: "service-task"
processInstanceKey: 9007199254740992
state: "active"
createdAt: "2025-08-22T15:46:33Z"
retries: 3
inputVariables:
notificationType: "email"
recipient: "customer@example.com"
page: 1
size: 10
count: 2
totalCount: 2
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/jobs/{jobKey}:
get:
operationId: getJob
summary: Get job details
tags:
- job
parameters:
- name: jobKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370540
responses:
200:
description: Job details
content:
application/json:
schema:
$ref: "#/components/schemas/Job"
example:
key: 4503599627370540
elementId: "Task_ReviewApplication"
type: "zenbpm:userTask"
processInstanceKey: 4503599627370501
state: "active"
createdAt: "2025-08-22T15:10:26Z"
assignee: "john.doe"
retries: 3
inputVariables:
formKey: "loan-review-form"
applicationId: "APP-12345"
customerName: "Alice Johnson"
404:
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/jobs/{jobKey}/assign:
post:
operationId: assignJob
summary: Assign a job to a user
tags:
- job
parameters:
- name: jobKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370540
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- assignee
properties:
assignee:
type: string
example:
assignee: "john.doe"
responses:
204:
description: Job assigned
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Job not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/jobs/{jobKey}/complete:
post:
operationId: completeJob
tags:
- job
summary: Complete a job
description: |
Completes the job with the given output variables and moves its token on.
The request is idempotent: a job which is already completed is answered with `201` again,
and its process instance is moved on if an earlier completion left it behind. A job which
was terminated (its instance cancelled, an interrupting boundary event) or failed with an
incident no longer waits for a worker and is answered with `409`; nothing is changed.
parameters:
- name: jobKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370540
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
variables:
type: object
nullable: true
example:
variables:
result: "success"
transactionId: "tx-789-xyz"
processedAt: "2025-08-22T15:15:30Z"
responses:
201:
description: Job completed, or already completed before
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: The job no longer waits for a worker (terminated or failed)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/jobs/{jobKey}/extend-lock:
post:
operationId: extendJobLock
tags:
- job
summary: Extend the lock of a job delivered over the gRPC job stream
description: |
Moves the lock deadline of a job to now plus `lockDuration` (absent: the lock duration of the
subscription the job was delivered under, capped by `jobManager.maxLockDurationMs`) and answers
the new deadline. `clientId` is the client id of the job stream the job was delivered to; a job
which is not locked at the moment (the lock lapsed, the job was completed or failed) or which is
locked for a different client answers 409, and the job itself is left untouched. With
`deliveryToken` only the lock of that delivery is extended: a lock the job holds for another
delivery, as after this delivery's lock lapsed and the job came back to the same client, answers
409 too. It exists for workers which receive jobs over the stream but send their commands over
REST. Jobs fetched through `GET /jobs` hold no lock and cannot extend one.
parameters:
- name: jobKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370540
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- clientId
properties:
clientId:
type: string
description: The client id of the job stream the job was delivered to.
deliveryToken:
type: integer
format: int64
minimum: 1
description: The `delivery_token` of the delivery whose lock to extend. Absent, the lock the client holds on the job is extended, whichever delivery it belongs to.
lockDuration:
type: string
description: ISO-8601 duration to lock the job for, counted from now. Absent means the subscription's lock duration.
example: PT5M
example:
clientId: "order-worker-1"
lockDuration: "PT5M"
responses:
200:
description: Lock extended
content:
application/json:
schema:
type: object
required:
- lockUntil
properties:
lockUntil:
type: string
format: date-time
description: When the extended lock lapses, on the clock of the partition leader.
example:
lockUntil: "2025-08-22T15:20:30Z"
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Job not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: The lock is not held or is held by another client
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/jobs/{jobKey}/fail:
post:
operationId: failJob
tags:
- job
summary: Fail a job
description: |
Reports that a worker could not finish the job.
With an `errorCode` the failure is a BPMN error: a matching error boundary event or error
event sub-process takes over, otherwise the job fails with an incident. Retries are neither
consulted nor spent, and the `variables` are handed to the catching event.
Without an `errorCode` one attempt of the job is spent. While retries remain, the job stays
`active`, no incident is created, and the job is handed out again once `retryBackoff` has
passed (see `retryAt` on the job); the `variables` of such a failure are dropped. When none
remain, the job fails, keeps the `variables` as its output variables, and an incident naming
the attempts is created.
`retries` and `retryBackoff` are validated in every request, and a request with an invalid
value is refused with `400` even when it carries an `errorCode`, which then ignores them.
A request naming the `deliveryToken` it belongs to is recorded once: repeated after a
timeout, or arriving after the job was handed out again, it changes nothing and is answered
with `204` like the first, whatever it carries. One exception: a failure with an `errorCode`
which raised an incident leaves no entry in the failure history, so once that incident was
resolved and the failure of a later delivery was recorded, its repeat is refused with `409`.
A request for a delivery which another delivery superseded before its failure was recorded -
its lock lapsed or the leader changed, and the job was handed out again - changes nothing
and is refused with `409`: the newer delivery decides. A token which was never handed out is refused with `400`. Without
`deliveryToken` the request is not idempotent: every failure without an `errorCode` the engine
receives spends an attempt, also one for a job waiting out its backoff; a client which repeats
a request after a timeout may spend two, and one repeated after the first exhausted the
retries is answered with `409`, like a failure of a job which was completed or terminated.
A job delivered over the gRPC job stream stays locked for the stream's client until that
client reports it or the lock lapses. A worker which receives jobs over the stream but sends
its commands over REST names its stream's `clientId`, as on `extendJobLock`, so that its
failure releases the lock and `retryBackoff` is honoured; without `clientId` the lock stands,
and the job is handed out again only once the lock has lapsed, whatever `retryBackoff` says.
parameters:
- name: jobKey
in: path
required: true
description: The key of the job to fail.
schema:
type: integer
format: int64
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
clientId:
type: string
description: The client id of the job stream the job was delivered to, whose lock the failure releases. Absent, a lock held on the job stands until it lapses.
deliveryToken:
type: integer
format: int64
minimum: 1
description: The delivery the failure belongs to - the `delivery_token` of the delivery over the job stream, taken from that delivery. A repeat of a recorded failure changes nothing, a failure of a superseded delivery is refused with `409`, and a token never handed out with `400`. Absent, every failure counts; a worker which never received the job over the stream sends none.
errorCode:
type: string
description: The error code against which an error catch event is matched. Absent or empty, the failure spends one of the job's retries.
message:
type: string
description: Why the job failed. Kept as `lastFailureMessage` on the job and, once the retries are exhausted, part of the incident message.
retries:
type: integer
format: int32
minimum: 0
description: Retries remaining after this failure. Absent means one less than now; a value above `jobs.maxRetries` is capped. Validated but otherwise ignored with an `errorCode`.
retryBackoff:
type: string
description: ISO-8601 duration (for example `PT10S`) the job waits before it is handed out again. Absent means the `retryBackoff` of the task definition, else `jobs.defaultRetryBackoff`; `PT0S` means at once. Capped by `jobs.maxRetryBackoff`. Validated but otherwise ignored with an `errorCode`.
example: PT10S
variables:
type: object
nullable: true
examples:
bpmnError:
summary: A BPMN error caught by an error event
value:
errorCode: "123-456-789"
variables:
transactionId: "tx-789-xyz"
retry:
summary: A technical failure to retry in ten seconds
value:
message: "java.net.ConnectException: payment service unavailable"
retryBackoff: "PT10S"
retryOfAStreamDeliveredJob:
summary: The same for a job delivered over the gRPC job stream
value:
clientId: "order-worker-1"
message: "java.net.ConnectException: payment service unavailable"
retryBackoff: "PT10S"
responses:
204:
description: The job is failed, or left active for another attempt.
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: The job no longer waits for a worker (completed, terminated or already failed), or no longer for the delivery `deliveryToken` names, because it was handed out again after it
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/jobs/{jobKey}/retries:
post:
operationId: updateJobRetries
tags:
- job
summary: Set the remaining retries of a job
description: |
Sets the remaining retries of an `active` or `failed` job and when it is handed out next. An
absent `retryAt` makes a job waiting out a backoff deliverable at once. The incident of a
`failed` job stays open: resolving it then keeps the retries set here instead of restoring
the retries of the task definition, and a `retryAt` still ahead keeps the job from its
workers until then. To set the retries of a failed job and resolve its incident in one
request, give them to `POST /v1/incidents/{incidentKey}/resolve` instead.
parameters:
- name: jobKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370540
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- retries
properties:
retries:
type: integer
format: int32
minimum: 1
description: Retries the job has from now on, at most `jobs.maxRetries`.
retryAt:
type: string
format: date-time
description: When the job is handed out next. Absent, or in the past, means at once; later than now plus `jobs.maxRetryBackoff` is refused.
example:
retries: 3
responses:
204:
description: Retries updated
400:
description: Retries below 1 or above jobs.maxRetries, or a retryAt later than now plus jobs.maxRetryBackoff
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Job not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: The job no longer waits for a worker or an operator (completed or terminated)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/jobs/{jobKey}/failures:
get:
operationId: getJobFailures
tags:
- job
summary: List the failures of a job
description: |
Lists the failures without an error code a worker reported for the job, newest first: the
attempt, when it failed, why, and when the job was handed out again. The failure which
exhausted the retries carries the key of the incident it created. Failures with an error
code are BPMN errors and are not listed.
parameters:
- name: jobKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370540
- name: page
in: query
schema:
type: integer
format: int32
minimum: 1
default: 1
description: Page number (1-based indexing)
example: 1
- name: size
in: query
schema:
type: integer
format: int32
minimum: 1
maximum: 1000
default: 10
description: Number of items per page (max 1000)
example: 10
responses:
200:
description: Failures of the job, newest first
content:
application/json:
schema:
$ref: "#/components/schemas/JobFailurePage"
example:
items:
- key: 4503599627370560
jobKey: 4503599627370540
processInstanceKey: 4503599627370501
attempt: 2
failedAt: "2025-08-22T15:11:40Z"
retryAt: "2025-08-22T15:12:40Z"
message: "payment service unavailable"
- key: 4503599627370555
jobKey: 4503599627370540
processInstanceKey: 4503599627370501
attempt: 1
failedAt: "2025-08-22T15:11:20Z"
retryAt: "2025-08-22T15:11:30Z"
message: "payment service unavailable"
page: 1
size: 10
count: 2
totalCount: 2
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Job not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to collect data from responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/messages:
post:
operationId: publishMessage
tags:
- message
summary: Publish a message
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- messageName
properties:
correlationKey:
type: string
messageName:
type: string
variables:
type: object
nullable: true
example:
correlationKey: "011-235-813"
messageName: "payment-received"
variables:
paymentId: "pay-123-abc"
amount: 1000
currency: "USD"
receivedAt: "2025-08-22T16:25:10Z"
responses:
201:
description: Message sent
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "BAD_REQUEST"
message: "Invalid request payload"
404:
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "NOT_FOUND"
message: "The requested resource was not found"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "TECHNICAL_ERROR"
message: "An unexpected error occurred while processing the request"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "CLUSTER_ERROR"
message: "Failed to redirect request to responsible node"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/incidents/{incidentKey}/resolve:
post:
operationId: resolveIncident
tags:
- incident
summary: Resolve an incident
description: |
Resolves an incident and continues the execution it stopped. The job the incident leaves
waiting, if any, starts a fresh series of attempts with the retries of its task definition,
evaluated again, and is handed out at once. Retries set for the job since its last series
ended, with `POST /v1/jobs/{jobKey}/retries`, are kept instead, together with their `retryAt`.
The body is optional. With `retries` the job gets these retries, and with `retryAt` it is
not handed out before then, in the same transaction that resolves the incident: either both
happen or neither does. The retries of the task definition are not evaluated then, so this is
also the way out when they no longer evaluate (`409`). `retries` and `retryAt` are checked as
`POST /v1/jobs/{jobKey}/retries` checks them. Retries given for an incident which leaves no
job waiting, such as one of an expression, are refused with `400`; a job whose incident it
did not raise itself, such as one of a boundary event, keeps them as that endpoint would set
them.
parameters:
- name: incidentKey
in: path
required: true
schema:
type: integer
format: int64
example: 4503599627370530
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
retries:
type: integer
format: int32
minimum: 1
description: Retries the job the incident leaves waiting has from now on, at most `jobs.maxRetries`. Absent, the resolution restores them from the task definition, unless retries were set for the job since its last series ended.
retryAt:
type: string
format: date-time
description: When that job is handed out next; only together with `retries`. Absent, or in the past, means at once; later than now plus `jobs.maxRetryBackoff` is refused.
example:
retries: 3
responses:
201:
description: Incident resolved
400:
description: >-
Bad request: `retryAt` without `retries`, retries below 1 or above `jobs.maxRetries`, a
`retryAt` later than now plus `jobs.maxRetryBackoff`, or retries for an incident which
leaves no job waiting. Nothing is changed.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
409:
description: >-
Nothing is changed, because the resolution conflicts with the state of the incident or
its job. The incident is resolved already, by another request or by an earlier attempt of
this one whose answer was lost; retries in the body are not applied then. Or `retries`
were given for a job which no longer waits (completed or terminated). Or the `retries`
expression of the job the incident leaves waiting no longer evaluates; the message names
the error and the way out: correct the variables the expression reads and repeat the
resolution, or repeat it with the job's `retries` in the body.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/modify/start-process-instance:
post:
operationId: StartProcessInstanceOnElements
summary: Start a new process instance starting at chosen elements
tags:
- migration
- process-instance
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- processDefinitionKey
- startingElementIds
properties:
processDefinitionKey:
type: integer
format: int64
variables:
type: object
nullable: true
startingElementIds:
type: array
description: Allows for a start at chosen element id
items:
type: string
example:
processDefinitionKey: 4503599627370498
variables:
customerId: "customer-456"
amount: 1000
applicationDate: "2025-08-22"
startingElementIds: ["flowNode-1", "flowNode-2"]
responses:
201:
description: Process instance created
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessInstance"
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found (e.g. process definition with processDefinitionKey not found)
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/modify/process-instance:
post:
operationId: ModifyProcessInstance
summary: Modify process instance
tags:
- migration
- process-instance
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- processInstanceKey
properties:
processInstanceKey:
type: integer
format: int64
variables:
type: object
nullable: true
description: Sets process instance variables.
elementInstancesToStart:
type: array
items:
$ref: "#/components/schemas/StartElementInstanceData"
description: Starts execution token.
elementInstancesToTerminate:
type: array
items:
$ref: "#/components/schemas/TerminateElementInstanceData"
description: Terminates execution token.
responses:
201:
description: Process instance modified
content:
application/json:
schema:
type: object
properties:
processInstance:
$ref: "#/components/schemas/ProcessInstance"
activeElementInstances:
type: array
items:
$ref: "#/components/schemas/ElementInstance"
400:
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
404:
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
502:
description: Failed to redirect request to responsible node
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
413:
$ref: "#/components/responses/PayloadTooLarge"
415:
$ref: "#/components/responses/UnsupportedMediaType"
/tests/{nodeId}/start-pprof-server:
post:
operationId: testStartPprofServer
summary: start pprof server
tags:
- test
parameters:
- name: nodeId
in: path
required: true
schema:
type: string
pattern: "^[a-zA-Z0-9-_]+$"
description: ID of the node to start pprof server on
responses:
200:
description: Pprof server started
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
/tests/{nodeId}/stop-pprof-server:
post:
operationId: testStopPprofServer
summary: stop pprof server
tags:
- test
parameters:
- name: nodeId
in: path
required: true
schema:
type: string
pattern: "^[a-zA-Z0-9-_]+$"
description: ID of the node to stop pprof server on
responses:
200:
description: Pprof server stopped
500:
description: Internal server error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
405:
$ref: "#/components/responses/MethodNotAllowed"
components:
responses:
MethodNotAllowed:
description: The HTTP method is not allowed for the requested path.
headers:
Allow:
description: Allowed HTTP methods for the requested path.
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "METHOD_NOT_ALLOWED"
message: "method not allowed"
PayloadTooLarge:
description: The request body exceeds the configured size limit (httpServer.maxRequestBodyBytes, 10 MiB by default).
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "PAYLOAD_TOO_LARGE"
message: "http: request body too large"
UnsupportedMediaType:
description: The request body content type is not supported by the operation.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
example:
code: "UNSUPPORTED_MEDIA_TYPE"
message: "unsupported content type"
schemas:
DecisionInstancePartitionPage:
type: object
allOf:
- type: object
required:
- partitions
properties:
partitions:
type: array
items:
$ref: "#/components/schemas/PartitionDecisionInstances"
- $ref: "#/components/schemas/PartitionedPageMetadata"
PartitionDecisionInstances:
type: object
required:
- partition
- items
- totalCount
properties:
partition:
type: integer
totalCount:
type: integer
description: Total number of items available in this partition
items:
type: array
items:
$ref: "#/components/schemas/DecisionInstanceSummary"
DecisionInstanceSummary:
type: object
required:
- key
- dmnResourceDefinitionKey
- evaluatedAt
properties:
key:
type: integer
format: int64
dmnResourceDefinitionKey:
type: integer
format: int64
processInstanceKey:
type: integer
format: int64
flowElementInstanceKey:
type: integer
format: int64
description: Key of the flow element instance that triggered this decision
evaluatedAt:
type: string
format: date-time
DecisionInstanceDetail:
type: object
required:
- key
- dmnResourceDefinitionKey
- evaluatedAt
- evaluatedDecisions
properties:
key:
type: integer
format: int64
dmnResourceDefinitionKey:
type: integer
format: int64
processInstanceKey:
type: integer
format: int64
flowElementInstanceKey:
type: integer
format: int64
description: Key of the flow element instance that triggered this decision
evaluatedAt:
type: string
format: date-time
evaluatedDecisions:
type: array
items:
$ref: "#/components/schemas/EvaluatedDecision"
decisionOutput:
type: string
format: json
x-go-type: json.RawMessage
description: Final output of the requested decision
EvaluatedDecision:
type: object
properties:
decisionId:
type: string
decisionName:
type: string
decisionType:
type: string
enum: [DECISION_TABLE, LITERAL_EXPRESSION]
evaluationOrder:
type: integer
description: Order in which this decision was evaluated
inputs:
type: array
items:
$ref: "#/components/schemas/EvaluatedInput"
outputs:
type: array
items:
$ref: "#/components/schemas/EvaluatedOutput"
matchedRules:
type: array
items:
$ref: "#/components/schemas/MatchedRule"
description: For DECISION_TABLE type only
EvaluatedInput:
type: object
properties:
inputId:
type: string
inputName:
type: string
inputExpression:
type: string
inputValue:
description: The evaluated input value (any type)
EvaluatedOutput:
type: object
properties:
outputId:
type: string
outputName:
type: string
outputValue:
description: The output value (any type)
MatchedRule:
type: object
properties:
ruleId:
type: string
ruleIndex:
type: integer
evaluatedOutputs:
type: array
items:
$ref: "#/components/schemas/EvaluatedOutput"
PartitionedPageMetadata:
type: object
required:
- page
- size
- count
- totalCount
properties:
page:
type: integer
description: Current page number (1-based indexing)
size:
type: integer
description: Number of items per page
count:
type: integer
description: Number of items returned in the current page
totalCount:
type: integer
description: Total number of items available
PageMetadata:
type: object
required:
- page
- size
- count
- totalCount
properties:
page:
type: integer
description: Current page number (1-based indexing)
size:
type: integer
description: Number of items per page
count:
type: integer
description: Number of items returned in the current page
totalCount:
type: integer
description: Total number of items available
PartitionProcessInstances:
type: object
required:
- partition
- items
- totalCount
properties:
partition:
type: integer
totalCount:
type: integer
description: Total number of items available in this partition
items:
type: array
items:
$ref: "#/components/schemas/ProcessInstancesSimple"
DmnResourceDefinitionsPage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/DmnResourceDefinitionSimple"
- $ref: "#/components/schemas/PageMetadata"
DmnResourceDefinitionSimple:
type: object
required:
- key
- version
- dmnResourceDefinitionId
- dmnDefinitionName
properties:
key:
type: integer
format: int64
version:
type: integer
dmnResourceDefinitionId:
type: string
dmnDefinitionName:
type: string
DmnResourceDefinitionDetail:
type: object
required:
- dmnData
allOf:
- $ref: "#/components/schemas/DmnResourceDefinitionSimple"
- type: object
properties:
dmnData:
type: string
EvaluatedDRDResult:
type: object
required:
- decisionInstanceKey
- evaluatedDecisions
- decisionOutput
properties:
decisionInstanceKey:
type: integer
format: int64
evaluatedDecisions:
type: array
items:
$ref: "#/components/schemas/EvaluatedDecisionResult"
decisionOutput: {}
EvaluatedDecisionResult:
type: object
required:
- decisionId
- decisionName
- decisionType
- decisionDefinitionVersion
- dmnResourceDefinitionKey
- dmnResourceDefinitionId
- matchedRules
- decisionOutput
- evaluatedInputs
properties:
decisionId:
type: string
decisionName:
type: string
decisionType:
type: string
decisionDefinitionVersion:
type: integer
dmnResourceDefinitionKey:
type: integer
format: int64
dmnResourceDefinitionId:
type: string
matchedRules:
type: array
items:
$ref: "#/components/schemas/EvaluatedDecisionRule"
decisionOutput:
type: object
evaluatedInputs:
type: array
items:
$ref: "#/components/schemas/EvaluatedDecisionInput"
EvaluatedDecisionRule:
type: object
required:
- ruleId
- ruleIndex
- evaluatedOutputs
properties:
ruleId:
type: string
ruleIndex:
type: integer
evaluatedOutputs:
type: array
items:
$ref: "#/components/schemas/EvaluatedDecisionOutput"
EvaluatedDecisionInput:
type: object
required:
- inputId
- inputName
- inputExpression
- inputValue
properties:
inputId:
type: string
inputName:
type: string
inputExpression:
type: string
inputValue: {}
EvaluatedDecisionOutput:
type: object
required:
- outputId
- outputName
- outputValue
properties:
outputId:
type: string
outputName:
type: string
outputValue:
type: object
ProcessDefinitionsPage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/ProcessDefinitionSimple"
- $ref: "#/components/schemas/PageMetadata"
ProcessDefinitionSimple:
type: object
required:
- key
- version
- bpmnProcessId
properties:
key:
type: integer
format: int64
version:
type: integer
bpmnProcessId:
type: string
bpmnProcessName:
type: string
description: Process name from BPMN
versionTag:
type: string
description: Optional process version tag from `zenbpm:versionTag`
ProcessDefinitionDetail:
type: object
required:
- bpmnData
allOf:
- $ref: "#/components/schemas/ProcessDefinitionSimple"
- type: object
properties:
bpmnData:
type: string
ElementStatisticCounts:
type: object
description: Active and incident counts for a single BPMN element
required:
- activeCount
- incidentCount
properties:
activeCount:
type: integer
description: Number of active element instances
incidentCount:
type: integer
description: Number of incidents on this element
completedCount:
type: integer
description: Number of completed element instances
terminatedCount:
type: integer
description: Number of terminated (canceled) element instances
ElementStatistic:
type: object
description: Map of elementId to active/incident counts
additionalProperties:
$ref: "#/components/schemas/ElementStatisticCounts"
PartitionElementStatistics:
type: object
required:
- partition
- items
properties:
partition:
type: integer
items:
$ref: "#/components/schemas/ElementStatistic"
ElementStatisticsPartitions:
type: object
required:
- partitions
properties:
partitions:
type: array
items:
$ref: "#/components/schemas/PartitionElementStatistics"
ProcessDefinitionStatisticsPage:
type: object
required:
- partitions
- page
- size
- count
- totalCount
properties:
partitions:
type: array
items:
$ref: "#/components/schemas/PartitionProcessDefinitionStatistics"
page:
type: integer
size:
type: integer
count:
type: integer
description: Number of items in current page
totalCount:
type: integer
description: Total number of items across all pages
PartitionProcessDefinitionStatistics:
type: object
required:
- partition
- items
- totalCount
properties:
partition:
type: integer
totalCount:
type: integer
description: Total number of items available in this partition
items:
type: array
items:
$ref: "#/components/schemas/ProcessDefinitionStatistics"
ProcessDefinitionStatistics:
type: object
required:
- key
- version
- bpmnProcessId
- instanceCounts
properties:
key:
type: integer
format: int64
version:
type: integer
bpmnProcessId:
type: string
name:
type: string
description: Process name from BPMN
instanceCounts:
$ref: "#/components/schemas/InstanceCounts"
InstanceCounts:
type: object
required:
- total
- active
- completed
- terminated
- failed
- withIncident
properties:
total:
type: integer
description: Total number of process instances
active:
type: integer
description: Number of active instances
completed:
type: integer
description: Number of completed instances
terminated:
type: integer
description: Number of terminated instances
failed:
type: integer
description: Number of failed instances
withIncident:
type: integer
description: >
Number of process instances that currently have at least one
directly associated unresolved incident. Each process instance is
counted once, regardless of how many incidents it has, and
regardless of its state (i.e. active, completed, terminated or
failed). Incidents associated with nested subprocess or
multi-instance scopes are not rolled up to their parent instance.
ProcessInstancePage:
type: object
allOf:
- type: object
required:
- partitions
properties:
partitions:
type: array
items:
$ref: "#/components/schemas/PartitionProcessInstances"
- $ref: "#/components/schemas/PartitionedPageMetadata"
ProcessInstance:
allOf:
- $ref: "#/components/schemas/ProcessInstancesSimple"
- type: object
required:
- activeElementInstances
properties:
activeElementInstances:
type: array
items:
$ref: "#/components/schemas/ElementInstance"
ProcessInstancesSimple:
type: object
required:
- key
- processDefinitionKey
- version
- createdAt
- state
- variables
- processType
properties:
key:
type: integer
format: int64
processDefinitionKey:
type: integer
format: int64
bpmnProcessId:
type: string
version:
type: integer
versionTag:
type: string
businessKey:
type: string
createdAt:
type: string
format: date-time
state:
$ref: "#/components/schemas/ProcessInstanceState"
parentProcessInstanceKey:
type: integer
format: int64
processType:
$ref: "#/components/schemas/ProcessInstanceProcessType"
variables:
type: object
incidentCount:
type: integer
description: >
Number of currently unresolved incidents directly associated with
this process instance. Present on process-instance list responses
and omitted from responses where the count is not calculated.
Zero when the listed instance has no open incidents.
ProcessInstanceProcessType:
type: string
enum:
- default
- multiInstance
- subprocess
- callActivity
ProcessInstanceState:
type: string
enum:
- active
- completed
- terminated
- failed
EventSubscriptionState:
type: string
enum:
- active
- compensated
- compensating
- completed
- completing
- failed
- failing
- ready
- terminated
- terminating
- withdrawn
MessageSubscription:
type: object
required:
- key
- elementId
- processDefinitionKey
- processInstanceKey
- messageName
- state
- createdAt
properties:
key:
type: integer
format: int64
elementInstanceKey:
type: integer
format: int64
nullable: true
elementId:
type: string
processDefinitionKey:
type: integer
format: int64
processInstanceKey:
type: integer
format: int64
messageName:
type: string
correlationKey:
type: string
nullable: true
state:
$ref: "#/components/schemas/EventSubscriptionState"
createdAt:
type: string
format: date-time
TimerSubscription:
type: object
required:
- key
- elementId
- processDefinitionKey
- processInstanceKey
- state
- createdAt
properties:
key:
type: integer
format: int64
elementInstanceKey:
type: integer
format: int64
nullable: true
elementId:
type: string
processDefinitionKey:
type: integer
format: int64
processInstanceKey:
type: integer
format: int64
state:
$ref: "#/components/schemas/EventSubscriptionState"
createdAt:
type: string
format: date-time
dueDate:
type: string
format: date-time
ErrorSubscription:
type: object
required:
- key
- elementInstanceKey
- elementId
- processDefinitionKey
- processInstanceKey
- state
- createdAt
properties:
key:
type: integer
format: int64
elementInstanceKey:
type: integer
format: int64
elementId:
type: string
processDefinitionKey:
type: integer
format: int64
processInstanceKey:
type: integer
format: int64
errorCode:
type: string
nullable: true
state:
$ref: "#/components/schemas/EventSubscriptionState"
createdAt:
type: string
format: date-time
MessageSubscriptionPage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/MessageSubscription"
- $ref: "#/components/schemas/PageMetadata"
TimerSubscriptionPage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/TimerSubscription"
- $ref: "#/components/schemas/PageMetadata"
ErrorSubscriptionPage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/ErrorSubscription"
- $ref: "#/components/schemas/PageMetadata"
JobPage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/Job"
- $ref: "#/components/schemas/PageMetadata"
JobPartitionPage:
type: object
allOf:
- type: object
required:
- partitions
properties:
partitions:
type: array
items:
$ref: "#/components/schemas/PartitionJobs"
- $ref: "#/components/schemas/PartitionedPageMetadata"
PartitionJobs:
type: object
required:
- partition
- items
- totalCount
properties:
partition:
type: integer
totalCount:
type: integer
description: Total number of items available in this partition
items:
type: array
items:
$ref: "#/components/schemas/Job"
Job:
type: object
required:
- key
- elementId
- type
- elementType
- processInstanceKey
- elementInstanceKey
- state
- createdAt
- inputVariables
properties:
key:
type: integer
format: int64
elementId:
type: string
type:
type: string
description: Configurable worker-routing type
elementType:
type: string
description: BPMN element type that created the job
processInstanceKey:
type: integer
format: int64
elementInstanceKey:
type: integer
format: int64
state:
$ref: "#/components/schemas/JobState"
createdAt:
type: string
format: date-time
inputVariables:
type: object
description: Variables provided to the job at creation/activation time (from BPMN input mappings)
taskHeaders:
type: object
additionalProperties:
type: string
description: Static key/value task headers configured on the BPMN element (zenbpm:taskHeaders)
outputVariables:
type: object
description: Output variables set on job completion or failure (full output before mapping)
assignee:
type: string
description: Assignee (user assigned to this job)
retries:
type: integer
format: int32
description: "Attempts left: failures without an error code the job may still report; the one which leaves none creates an incident."
attempts:
type: integer
format: int32
description: Failures without an error code since the job was created or its last incident was resolved.
retryAt:
type: string
format: date-time
nullable: true
description: Before this moment an `active` job is not handed out, because it waits out a retry backoff. A job which ended during its backoff keeps the value.
lastFailureMessage:
type: string
nullable: true
description: Message of the latest failure without an error code.
retryBackoff:
type: string
nullable: true
description: Backoff policy of the task definition, fixed when the job was created (`PT10S,PT1M`); absent means `jobs.defaultRetryBackoff` applies.
deliveryToken:
type: integer
format: int64
description: Token of the latest delivery of the job over the job stream, raised with every delivery; `0` while it was never handed out. For inspection, the read may lag behind; a worker takes the token of its failure from its delivery.
JobFailurePage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/JobFailure"
- $ref: "#/components/schemas/PageMetadata"
JobFailure:
type: object
required:
- key
- jobKey
- processInstanceKey
- attempt
- failedAt
- message
properties:
key:
type: integer
format: int64
jobKey:
type: integer
format: int64
processInstanceKey:
type: integer
format: int64
attempt:
type: integer
format: int32
description: 1-based number of the failure within the job's series of attempts.
failedAt:
type: string
format: date-time
retryAt:
type: string
format: date-time
description: When the job was handed out again; absent when that was at once or this failure exhausted the retries.
message:
type: string
incidentKey:
type: integer
format: int64
description: The incident this failure created because it exhausted the retries.
JobState:
type: string
enum:
- active
- completed
- terminated
- failed
ElementInstance:
type: object
required:
- elementInstanceKey
- createdAt
- state
- elementId
properties:
elementInstanceKey:
type: integer
format: int64
createdAt:
type: string
format: date-time
state:
type: string
elementId:
type: string
FlowElementHistoryPage:
type: object
allOf:
- type: object
properties:
items:
type: array
items:
$ref: "#/components/schemas/FlowElementHistory"
- $ref: "#/components/schemas/PageMetadata"
TerminateElementInstanceData:
type: object
required:
- elementInstanceKey
properties:
elementInstanceKey:
type: integer
format: int64
example:
elementId: "flow-node-1"
StartElementInstanceData:
type: object
required:
- elementId
properties:
elementId:
type: string
description: Element instance is created at this element.
example:
elementId: "flow-node-1"
FlowElementHistory:
type: object
required:
- key
- processInstanceKey
- createdAt
- elementId
- elementType
- inputVariables
properties:
key:
type: integer
format: int64
processInstanceKey:
type: integer
format: int64
createdAt:
type: string
format: date-time
completedAt:
type: string
format: date-time
elementId:
type: string
elementType:
type: string
inputVariables:
type: object
description: Variables provided to the flow element at creation time (from BPMN input mappings)
outputVariables:
type: object
description: Output variables produced by the flow element on completion (after BPMN output mapping)
IncidentPage:
type: object
allOf:
- type: object
required:
- items
properties:
items:
type: array
items:
$ref: "#/components/schemas/Incident"
- $ref: "#/components/schemas/PageMetadata"
Incident:
type: object
required:
- key
- elementInstanceKey
- elementId
- processInstanceKey
- message
- createdAt
- executionToken
properties:
key:
type: integer
format: int64
elementInstanceKey:
type: integer
format: int64
elementId:
type: string
processInstanceKey:
type: integer
format: int64
message:
type: string
createdAt:
type: string
format: date-time
resolvedAt:
type: string
format: date-time
executionToken:
type: integer
format: int64
jobKey:
type: integer
format: int64
description: The job the incident was created for; absent for incidents without a job.
Error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
example:
code: "NOT_FOUND"
message: "Process instance with key 4503599627370501 not found"
parameters:
sortOrder:
name: sortOrder
in: query
schema:
type: string
enum: [asc, desc]
description: Sort direction