Skip to main content

Openapi

full width

ZenBPM OpenAPI (0.1.0)

Download OpenAPI specification:Download

API Support: info@pbinitiative.org License: AGPL

REST API for ZenBPM

process-definition

Deploy a new process definition

Request Body schema: application/xml
required
string <xml>

Responses

Request samples

Content type
application/xml
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions>
  <bpmn:process id="loan-application" name="Loan Application Process" isExecutable="true">
    ...
  </bpmn:process>
</bpmn:definitions>

Response samples

Content type
application/json
{
  • "processDefinitionKey": "4503599627370498"
}

Get list of process definitions

Responses

Request samples

curl -X GET http://localhost:8080/v1/process-definitions

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offset": 0,
  • "size": 10,
  • "count": 3
}

Get process definition

path Parameters
processDefinitionKey
required
string^\d{15,20}$
Example: 4503599627370498

Responses

Request samples

curl -X GET http://localhost:8080/v1/process-definitions/123456789

Response samples

Content type
application/json
{
  • "key": "4503599627370498",
  • "version": 1,
  • "bpmnProcessId": "loan-application",
  • "bpmnData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn:definitions>\n <bpmn:process id=\"loan-application\" name=\"Loan Application Process\" isExecutable=\"true\">\n ...\n </bpmn:process>\n</bpmn:definitions>\n"
}

process-instance

Create a new process instance

Request Body schema: application/json
required
processDefinitionKey
required
string^\d{15,20}$
variables
object

Responses

Request samples

Content type
application/json
{
  • "processDefinitionKey": "4503599627370498",
  • "variables": {
    }
}

Response samples

Content type
application/json
{
  • "key": "4503599627370501",
  • "processDefinitionKey": "4503599627370498",
  • "createdAt": "2025-08-22T14:30:25Z",
  • "state": "active",
  • "variables": {
    }
}

Get list of running process instances

query Parameters
processDefinitionKey
required
string^\d{15,20}$
Example: processDefinitionKey=4503599627370498

Key of the process definition

page
integer <int32> >= 1
Default: 1
Example: page=1

Page number (1-based indexing)

size
integer <int32> >= 1
Default: 10
Example: size=10

Number of items per page

Responses

Request samples

curl -X GET "http://localhost:8080/v1/process-instances?processDefinitionKey=123456789&page=1&size=10"

Response samples

Content type
application/json
{
  • "partitions": [
    ],
  • "page": 1,
  • "size": 10,
  • "count": 3
}

Get state of a process instance selected by processInstanceKey

path Parameters
processInstanceKey
required
string^\d{15,20}$
Example: 4503599627370501

Responses

Request samples

curl -X GET http://localhost:8080/v1/process-instances/123456789

Response samples

Content type
application/json
{
  • "key": "4503599627370501",
  • "processDefinitionKey": "4503599627370498",
  • "createdAt": "2025-08-22T14:30:25Z",
  • "state": "active",
  • "variables": {
    }
}

Get list of jobs for a process instance

path Parameters
processInstanceKey
required
string^\d{15,20}$
Example: 4503599627370501

Responses

Request samples

curl -X GET http://localhost:8080/v1/process-instances/123456789/jobs

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offset": 0,
  • "size": 10,
  • "count": 2
}

Get list of activities for a process instance

path Parameters
processInstanceKey
required
string^\d{15,20}$
Example: 4503599627370501

Responses

Request samples

curl -X GET http://localhost:8080/v1/process-instances/123456789/activities

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offset": 0,
  • "size": 10,
  • "count": 2
}

Get list of visited flow elements for a process instance

path Parameters
processInstanceKey
required
string^\d{15,20}$
Example: 4503599627370501

Responses

Request samples

curl -X GET http://localhost:8080/v1/process-instances/123456789/history

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offset": 0,
  • "size": 10,
  • "count": 3
}

Get list of incidents for a process instance

path Parameters
processInstanceKey
required
string^\d{15,20}$
Example: 4503599627370501

Responses

Request samples

curl -X GET http://localhost:8080/v1/process-instances/123456789/incidents

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offset": 0,
  • "size": 10,
  • "count": 2
}

decision-definition

Deploy a new decision definition

Request Body schema: application/xml
required
string <xml>

Responses

Request samples

Content type
application/xml
<?xml version="1.0" encoding="UTF-8"?>
<definitions>
  <decision id="loan-approval" name="Loan Approval">
    ...
  </decision>
</definitions>

Response samples

Content type
application/json
{
  • "decisionDefinitionKey": "4503599627370495"
}

Get list of decision definitions

Responses

Request samples

curl -X GET http://localhost:8080/v1/decision-definitions

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "offset": 0,
  • "size": 10,
  • "count": 3
}

Get decision definition

path Parameters
decisionDefinitionKey
required
string^\d{15,20}$
Example: 4503599627370495

Responses

Request samples

curl -X GET http://localhost:8080/v1/decision-definitions/123456789

Response samples

Content type
application/json
{
  • "key": "4503599627370495",
  • "version": 1,
  • "decisionDefinitionId": "loan-approval",
  • "dmnData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions>\n <decision id=\"loan-approval\" name=\"Loan Approval\">\n ...\n </decision>\n</definitions>\n"
}

decision

Evaluate latest version of decision directly in engine

path Parameters
decisionId
required
string
Example: loan-approval
Request Body schema: application/json
required
bindingType
required
string
Enum: "latest" "deployment" "versionTag"
decisionDefinitionId
string

Can be used in combination with bindingType latest

versionTag
string

Is used in combination with bindingType versionTag

variables
object

Responses

Request samples

Content type
application/json
{
  • "bindingType": "latest",
  • "variables": {
    }
}

Response samples

Content type
application/json
{
  • "evaluatedDecisions": [
    ],
  • "decisionOutput": {
    }
}

job

Get list of jobs on partitions

query Parameters
jobType
string
Example: jobType=service-task
state
string (JobState)
Enum: "active" "completed" "terminated" "failed"
Example: state=active
page
integer <int32>
Default: 1
Example: page=1
size
integer <int32>
Default: 10
Example: size=10

Responses

Request samples

curl -X GET "http://localhost:8080/v1/jobs?jobType=service-task&state=active&page=1&size=10"

Response samples

Content type
application/json
{
  • "partitions": [
    ],
  • "page": 1,
  • "size": 10,
  • "count": 2
}

Complete a job

Request Body schema: application/json
required
jobKey
required
string^\d{15,20}$
variables
object

Responses

Request samples

Content type
application/json
{
  • "jobKey": "4503599627370540",
  • "variables": {
    }
}

Response samples

Content type
application/json
{
  • "code": "NOT_FOUND",
  • "message": "Process instance with key 4503599627370501 not found"
}

message

Publish a message

Request Body schema: application/json
required
correlationKey
required
string^\d{15,20}$
messageName
required
string
variables
object

Responses

Request samples

Content type
application/json
{
  • "processInstanceKey": "4503599627370501",
  • "messageName": "payment-received",
  • "variables": {
    }
}

Response samples

Content type
application/json
{
  • "code": "NOT_FOUND",
  • "message": "Process instance with key 4503599627370501 not found"
}

incident

Resolve an incident

path Parameters
incidentKey
required
string^\d{15,20}$
Example: 4503599627370530

Responses

Request samples

curl -X POST http://localhost:8080/v1/incidents/123456789/resolve

Response samples

Content type
application/json
{
  • "code": "NOT_FOUND",
  • "message": "Process instance with key 4503599627370501 not found"
}

test

start a cpu profiler

path Parameters
nodeId
required
string^[a-zA-Z0-9-_]+$

ID of the node to profile

Responses

Response samples

Content type
application/json
{
  • "code": "NOT_FOUND",
  • "message": "Process instance with key 4503599627370501 not found"
}

stop a cpu profiler

path Parameters
nodeId
required
string^[a-zA-Z0-9-_]+$

ID of the node to stop profiling

Responses

Response samples

Content type
application/json
{
  • "pprof": "string"
}