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