Skip to main content

Overview

The QuantumBPM SDKs cover the full platform — DMN evaluation, BPMN process orchestration, and external job workers — through one library per language.

LanguagePackageWorker concurrency primitive
Gogithub.com/QuantumBPM/quantum-go-sdkgoroutine pool per task type
TypeScript / JavaScript@quantumbpm/sdkasync with concurrency limit
Pythonquantumbpm-sdkasyncio task group
Javacom.quantumbpm:quantum-client, quantum-springvirtual threads (Java 21+)

Every SDK exposes the same shape: a top-level QuantumBPM client with .dmn / .bpmn sub-clients and a newWorker(...) factory for external job handlers. APIs are async-first where the language ecosystem expects it (Python, TS) and idiomatic-sync where it doesn't (Go, Java).

Authentication

All SDKs use Zitadel for authentication. To authenticate your service, create a Service User in your Zitadel organization and generate a JSON key file.

Generating a JSON Key File

  1. Log in to the Zitadel Console.
  2. Navigate to your Organization.
  3. Go to Service Users and create a new user (or select an existing one).
  4. Navigate to the Keys tab.
  5. Click Add and select JSON as the key type.
  6. Download the generated .json file. This file contains the credentials required by the SDK to authenticate.
warning

Ensure the Access Token Type for your Service User is set to JWT. The SDKs need this to sign the assertion for the JWT-bearer authorization flow.

The SDKs ship with a ZitadelTokenProvider that consumes the JSON key directly. They also ship a StaticTokenProvider for Enterprise deployments with long-lived API keys, and a TokenProvider extension point for any other OIDC source.

What's in each SDK

Every SDK exposes:

  • DMN evaluation — stored definitions (by definitions ID or platform UUID), ad-hoc XML, and batch evaluations.
  • BPMN runtime — resource lifecycle (create / deploy / list), instance lifecycle (start / get / cancel / variables / children / incidents), messaging and signals, and user tasks (list / complete / throw error).
  • External job workers — a long-poll runtime that owns lock heartbeats, dispatch, and outcome mapping. Handlers register per task type and run with per-task-type concurrency limits.
  • Vars — a small wrapper around the language's native map type with typed accessors. The same type carries DMN evaluation contexts, BPMN process variables, and worker job payloads.

For endpoints not yet wrapped (instance migration, modification, ad-hoc triggers, batch job complete/error), every SDK exposes the raw generated client via a client.raw() / client.raw escape hatch.