@camunda8/cli 3.3.0 → 3.4.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EXAMPLES.md +18 -1605
- package/README.md +32 -1711
- package/dist/commands/process-instances.d.ts.map +1 -1
- package/dist/commands/process-instances.js +38 -26
- package/dist/commands/process-instances.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +9 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +7 -0
- package/dist/commands/search.js.map +1 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +5 -3
- package/dist/core/logger.js.map +1 -1
- package/dist/default-plugins/element-template/AGENTS.md +19 -4
- package/dist/default-plugins/element-template/c8ctl-plugin.js +328 -130
- package/dist/framework/command-registry.d.ts +121 -69
- package/dist/framework/command-registry.d.ts.map +1 -1
- package/dist/framework/command-registry.js +97 -67
- package/dist/framework/command-registry.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ c8ctl (_pronounced: "cocktail"_) — a minimal-dependency CLI for Camunda 8 oper
|
|
|
17
17
|
- **Watch Mode**: Monitors a folder for file changes and auto-redeploys (configurable extensions via `--extensions`)
|
|
18
18
|
- **`.c8ignore` Support**: Filter deploy/watch file scanning with `.gitignore`-style patterns; `node_modules/`, `target/`, `.git/` ignored by default
|
|
19
19
|
- **Open Applications**: Open Camunda web applications (Operate, Tasklist, Modeler, Optimize) in the browser directly from the CLI
|
|
20
|
-
- **Search**: Powerful search across process definitions, process instances, user tasks, incidents, jobs,
|
|
20
|
+
- **Search**: Powerful search across process definitions, process instances, user tasks, incidents, jobs, and variables with filter, wildcard, and case-insensitive support
|
|
21
21
|
- **Flexible Output**: Switch between human-readable text and JSON output modes
|
|
22
22
|
- **Shell Completion**: Auto-install completions for bash, zsh, and fish with automatic refresh on upgrade
|
|
23
23
|
- **Agent Flags**: `--dry-run` to preview API requests and `--fields` to filter output columns for AI agents and scripts
|
|
@@ -45,514 +45,49 @@ After installation, the CLI is available as `c8ctl` (or its alias `c8`).
|
|
|
45
45
|
|
|
46
46
|
**Note**: The `c8` alias provides typing ergonomics for common keyboard layouts - the `c` key (left index finger) followed by `8` (right middle finger) makes for a comfortable typing experience on both QWERTY and QWERTZ keyboards.
|
|
47
47
|
|
|
48
|
-
##
|
|
48
|
+
## Documentation
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
The full documentation is maintained in this repository under [`docs/`](docs/) and is published — and kept in sync — on [docs.camunda.io](https://docs.camunda.io/docs/next/apis-tools/c8ctl/getting-started/):
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
c8ctl help get # Shows all get resources and their flags
|
|
59
|
-
c8ctl help create # Shows all create resources and their flags
|
|
60
|
-
c8ctl help complete # Shows all complete resources and their flags
|
|
61
|
-
c8ctl help await # Shows await command with all flags
|
|
62
|
-
c8ctl help search # Shows all search resources and their flags
|
|
63
|
-
c8ctl help deploy # Shows deploy command with all flags
|
|
64
|
-
c8ctl help run # Shows run command with all flags
|
|
65
|
-
c8ctl help watch # Shows watch command with all flags
|
|
66
|
-
c8ctl help open # Shows open command with all apps
|
|
67
|
-
c8ctl help cancel # Shows cancel command with all flags
|
|
68
|
-
c8ctl help resolve # Shows resolve command with all flags
|
|
69
|
-
c8ctl help fail # Shows fail command with all flags
|
|
70
|
-
c8ctl help activate # Shows activate command with all flags
|
|
71
|
-
c8ctl help publish # Shows publish command with all flags
|
|
72
|
-
c8ctl help correlate # Shows correlate command with all flags
|
|
73
|
-
c8ctl help cluster # Shows local cluster management help
|
|
74
|
-
c8ctl help profiles # Shows profile management help
|
|
75
|
-
c8ctl help plugin # Shows plugin management help
|
|
76
|
-
|
|
77
|
-
# Show version
|
|
78
|
-
c8ctl --version
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Default Extensions
|
|
82
|
-
|
|
83
|
-
When scanning directories, `deploy` and `watch` only include files with these extensions by default:
|
|
84
|
-
|
|
85
|
-
`.bpmn`, `.dmn`, `.form`
|
|
86
|
-
|
|
87
|
-
Explicitly named files bypass the extension allow-list (e.g. `c8 deploy my-doc.md`). Note that `.c8ignore` rules still apply.
|
|
88
|
-
|
|
89
|
-
Use `--extensions` to add more types during directory discovery (merged with defaults):
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
c8 deploy --extensions=.md,.txt
|
|
93
|
-
c8 watch --extensions=.md
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Use `--all-extensions` to include all server-supported types (`.md`, `.txt`, `.xml`, `.rpa`, `.json`, `.config`, `.yml`, `.yaml`):
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
c8 deploy --all-extensions
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
Skipped files are logged to stderr with an actionable hint.
|
|
103
|
-
|
|
104
|
-
### Ignoring Files (`.c8ignore`)
|
|
105
|
-
|
|
106
|
-
When scanning directories for deployment artifacts, c8ctl automatically ignores:
|
|
107
|
-
|
|
108
|
-
- `node_modules/`
|
|
109
|
-
- `target/`
|
|
110
|
-
- `.git/`
|
|
111
|
-
|
|
112
|
-
Create a `.c8ignore` file in your project root to add custom patterns (`.gitignore` syntax):
|
|
113
|
-
|
|
114
|
-
```gitignore
|
|
115
|
-
# Ignore build output
|
|
116
|
-
dist/
|
|
117
|
-
build/
|
|
118
|
-
|
|
119
|
-
# Ignore draft processes
|
|
120
|
-
**/draft-*.bpmn
|
|
121
|
-
|
|
122
|
-
# But keep this specific one
|
|
123
|
-
!draft-approved.bpmn
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
`.c8ignore` rules apply to both `deploy` (directory scan) and `watch` (file monitoring).
|
|
127
|
-
|
|
128
|
-
For comprehensive examples of all commands and their flags, see [EXAMPLES.md](EXAMPLES.md).
|
|
129
|
-
|
|
130
|
-
### Shell Completion
|
|
131
|
-
|
|
132
|
-
c8ctl supports shell completion for `bash`, `zsh`, and `fish`.
|
|
133
|
-
|
|
134
|
-
#### Quick Install (recommended)
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
# Auto-detect your shell and install completions
|
|
138
|
-
c8ctl completion install
|
|
139
|
-
|
|
140
|
-
# Or specify a shell explicitly
|
|
141
|
-
c8ctl completion install --shell zsh
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
This writes a completion script to the c8ctl data directory and wires it into your shell config (RC file for bash/zsh; completions directory for fish). Completions are **automatically refreshed** when c8ctl is upgraded — no manual re-install needed.
|
|
145
|
-
|
|
146
|
-
#### Manual setup
|
|
147
|
-
|
|
148
|
-
If you prefer to manage the completion script yourself, generate it with
|
|
149
|
-
`c8ctl completion <shell>` (where `<shell>` is `bash`, `zsh`, or `fish`),
|
|
150
|
-
then source or install it:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
# Bash
|
|
154
|
-
c8ctl completion bash > ~/.c8ctl-completion.bash
|
|
155
|
-
echo 'source ~/.c8ctl-completion.bash' >> ~/.bashrc
|
|
156
|
-
source ~/.c8ctl-completion.bash
|
|
52
|
+
- [Getting started](docs/getting-started.md) — install, spin up a local cluster, credentials, profiles, output modes, and shell completion.
|
|
53
|
+
- [Cluster inspection and process management](docs/cluster-inspection.md) — list, search, get, and manage process instances, user tasks, incidents, jobs, variables, messages, and forms.
|
|
54
|
+
- [Identity management](docs/identity-management.md) — users, roles, groups, tenants, authorizations, and mapping rules.
|
|
55
|
+
- [Development workflows](docs/development-workflows.md) — deploy, run, watch, profiles, sessions, and the MCP proxy.
|
|
56
|
+
- [Plugins](docs/plugins.md) — scaffold, install, and manage custom commands.
|
|
57
|
+
- [Command reference](docs/command-reference.md) — every command, flag, resource, and alias.
|
|
157
58
|
|
|
158
|
-
|
|
159
|
-
c8ctl completion zsh > ~/.c8ctl-completion.zsh
|
|
160
|
-
echo 'source ~/.c8ctl-completion.zsh' >> ~/.zshrc
|
|
161
|
-
source ~/.c8ctl-completion.zsh
|
|
59
|
+
The `docs/` pages are the single source of truth. When you change CLI behavior, update the relevant page here; a workflow syncs them to camunda-docs.
|
|
162
60
|
|
|
163
|
-
|
|
164
|
-
c8ctl completion fish > ~/.config/fish/completions/c8ctl.fish
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Credential Resolution
|
|
168
|
-
|
|
169
|
-
Credentials are resolved in the following order:
|
|
170
|
-
|
|
171
|
-
1. `--profile` flag (one-off override)
|
|
172
|
-
2. Active profile from session state (⚠ warns if `CAMUNDA_*` env vars are also present)
|
|
173
|
-
3. Environment variables (`CAMUNDA_*`)
|
|
174
|
-
4. Default `local` profile (`http://localhost:8080/v2`)
|
|
175
|
-
|
|
176
|
-
**Note**: Credential configuration via environment variables follows the same conventions as the `@camunda8/orchestration-cluster-api` module.
|
|
61
|
+
## Quick start
|
|
177
62
|
|
|
178
63
|
```bash
|
|
179
|
-
#
|
|
180
|
-
|
|
181
|
-
export CAMUNDA_CLIENT_ID=your-client-id
|
|
182
|
-
export CAMUNDA_CLIENT_SECRET=your-client-secret
|
|
183
|
-
c8ctl list process-instances
|
|
184
|
-
|
|
185
|
-
# Create a profile from a .env file
|
|
186
|
-
c8ctl add profile staging --from-file .env.staging
|
|
187
|
-
|
|
188
|
-
# Create a profile from current environment variables
|
|
189
|
-
source .env.prod
|
|
190
|
-
c8ctl add profile prod --from-env
|
|
191
|
-
|
|
192
|
-
# Clear the active session profile (so env vars take effect)
|
|
193
|
-
c8ctl use profile --none
|
|
194
|
-
|
|
195
|
-
# Using profile override
|
|
196
|
-
c8ctl list process-instances --profile prod
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Tenant Resolution
|
|
200
|
-
|
|
201
|
-
Tenants are resolved in the following order:
|
|
64
|
+
# Install
|
|
65
|
+
npm install @camunda8/cli -g
|
|
202
66
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
3. `CAMUNDA_DEFAULT_TENANT_ID` environment variable
|
|
206
|
-
4. `<default>` tenant
|
|
67
|
+
# Start a local Camunda 8 cluster (no Docker required)
|
|
68
|
+
c8ctl cluster start
|
|
207
69
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
c8ctl
|
|
70
|
+
# Deploy a process and start an instance
|
|
71
|
+
c8ctl deploy ./my-process.bpmn
|
|
72
|
+
c8ctl run my-process
|
|
211
73
|
|
|
212
|
-
#
|
|
74
|
+
# Inspect running instances
|
|
213
75
|
c8ctl list process-instances
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### Profile Management
|
|
217
|
-
|
|
218
|
-
c8ctl supports two types of profiles:
|
|
219
|
-
|
|
220
|
-
1. **c8ctl profiles**: Managed directly by c8ctl
|
|
221
|
-
2. **Camunda Modeler profiles**: Automatically imported from Camunda Modeler (with `modeler:` prefix)
|
|
222
|
-
|
|
223
|
-
For profile-related commands and flags, run:
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
c8ctl help profiles
|
|
227
|
-
```
|
|
228
76
|
|
|
229
|
-
|
|
230
|
-
# Add a c8ctl profile
|
|
231
|
-
c8 add profile prod --baseUrl=https://camunda.example.com --clientId=xxx --clientSecret=yyy
|
|
232
|
-
|
|
233
|
-
# List all profiles (includes both c8ctl and modeler profiles)
|
|
234
|
-
c8 list profiles
|
|
235
|
-
|
|
236
|
-
# Set active profile (works with both types)
|
|
237
|
-
c8 use profile prod
|
|
238
|
-
c8 use profile "modeler:Local Dev"
|
|
239
|
-
|
|
240
|
-
# Remove c8ctl profile (modeler profiles are read-only)
|
|
241
|
-
c8 remove profile prod
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
#### Camunda Modeler Integration
|
|
245
|
-
|
|
246
|
-
c8ctl automatically reads profiles from Camunda Modeler's `profiles.json` file. These profiles are:
|
|
247
|
-
|
|
248
|
-
- **Read-only**: Cannot be modified or deleted via c8ctl
|
|
249
|
-
- **Prefixed**: Always displayed with `modeler:` prefix (e.g., `modeler:Local Dev`)
|
|
250
|
-
- **Dynamic**: Loaded fresh on each command execution (no caching)
|
|
251
|
-
- **Platform-specific locations**:
|
|
252
|
-
- Linux: `~/.config/camunda-modeler/profiles.json`
|
|
253
|
-
- macOS: `~/Library/Application Support/camunda-modeler/profiles.json`
|
|
254
|
-
- Windows: `%APPDATA%\camunda-modeler\profiles.json`
|
|
255
|
-
|
|
256
|
-
**Using modeler profiles:**
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
# List includes modeler profiles with 'modeler:' prefix
|
|
260
|
-
c8 list profiles
|
|
261
|
-
|
|
262
|
-
# Use a modeler profile by name
|
|
263
|
-
c8 use profile modeler:Local Dev
|
|
264
|
-
|
|
265
|
-
# Use a modeler profile by cluster ID
|
|
266
|
-
c8 use profile modeler:abc123-def456
|
|
267
|
-
|
|
268
|
-
# One-off command with modeler profile
|
|
269
|
-
c8 list pi --profile=modeler:Cloud Cluster
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
**URL Construction:**
|
|
273
|
-
|
|
274
|
-
- **Self-managed** (localhost): Appends `/v2` to the URL (e.g., `http://localhost:8080/v2`)
|
|
275
|
-
- **Cloud**: Uses the cluster URL as-is (e.g., `https://abc123.region.zeebe.camunda.io`)
|
|
276
|
-
- **Any port**: Supports any port number in the URL
|
|
277
|
-
|
|
278
|
-
### Session Management
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
# Show current output mode
|
|
282
|
-
c8ctl output
|
|
283
|
-
|
|
284
|
-
# Switch to JSON output
|
|
285
|
-
c8ctl output json
|
|
286
|
-
|
|
287
|
-
# Switch back to text output
|
|
288
|
-
c8ctl output text
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
#### Per-invocation output override
|
|
292
|
-
|
|
293
|
-
The persisted output mode (set by `c8ctl output json|text`) can be overridden for a single invocation without mutating `session.json`. This is useful for scripts, agent integrations, and one-off JSON capture without flipping global state.
|
|
294
|
-
|
|
295
|
-
Precedence (highest first):
|
|
296
|
-
|
|
297
|
-
1. `--json` global flag — force JSON for this invocation only.
|
|
298
|
-
2. `C8CTL_OUTPUT_MODE` env var — accepts `json` or `text`. Other values (including unset or typos) fall through to the persisted mode without erroring.
|
|
299
|
-
3. Persisted `session.json` `outputMode`.
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
# Force JSON for one command — session.json is not touched
|
|
303
|
-
c8ctl --json list profile
|
|
304
|
-
|
|
305
|
-
# Same effect via env var (handy for scoped shells / CI steps)
|
|
306
|
-
C8CTL_OUTPUT_MODE=json c8ctl list profile
|
|
307
|
-
|
|
308
|
-
# --json wins over the env var
|
|
309
|
-
C8CTL_OUTPUT_MODE=text c8ctl --json list profile # → JSON
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### Debug Mode
|
|
313
|
-
|
|
314
|
-
Enable debug logging to see detailed information about plugin loading and other internal operations:
|
|
315
|
-
|
|
316
|
-
```bash
|
|
317
|
-
# Enable debug mode with environment variable
|
|
318
|
-
DEBUG=1 c8 <command>
|
|
319
|
-
|
|
320
|
-
# Or use C8CTL_DEBUG
|
|
321
|
-
C8CTL_DEBUG=true c8 <command>
|
|
322
|
-
|
|
323
|
-
# Example: See plugin loading details
|
|
324
|
-
DEBUG=1 c8 list plugins
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
Debug output is written to stderr with timestamps and won't interfere with normal command output.
|
|
328
|
-
|
|
329
|
-
### Plugin Management
|
|
330
|
-
|
|
331
|
-
c8ctl supports a global plugin system that allows extending the CLI with custom commands via npm packages. Plugins are installed globally to a user-specific directory and tracked in a registry file.
|
|
332
|
-
|
|
333
|
-
**Plugin Storage Locations:**
|
|
334
|
-
|
|
335
|
-
The plugin system uses OS-specific directories:
|
|
336
|
-
|
|
337
|
-
| OS | Plugins Directory | Registry File |
|
|
338
|
-
|----|-------------------|---------------|
|
|
339
|
-
| **Linux** | `~/.config/c8ctl/plugins/node_modules` | `~/.config/c8ctl/plugins.json` |
|
|
340
|
-
| **macOS** | `~/Library/Application Support/c8ctl/plugins/node_modules` | `~/Library/Application Support/c8ctl/plugins.json` |
|
|
341
|
-
| **Windows** | `%APPDATA%\c8ctl\plugins\node_modules` | `%APPDATA%\c8ctl\plugins.json` |
|
|
342
|
-
|
|
343
|
-
> **Note:** You can override the data directory with the `C8CTL_DATA_DIR` environment variable.
|
|
344
|
-
|
|
345
|
-
```bash
|
|
346
|
-
# Create a new plugin from template
|
|
347
|
-
c8ctl init plugin my-plugin
|
|
348
|
-
|
|
349
|
-
# Load a plugin from npm registry
|
|
350
|
-
c8ctl load plugin <package-name>
|
|
351
|
-
|
|
352
|
-
# Load a plugin from a URL (including file URLs)
|
|
353
|
-
c8ctl load plugin --from <url>
|
|
354
|
-
c8ctl load plugin --from file:///path/to/plugin
|
|
355
|
-
c8ctl load plugin --from https://github.com/user/repo
|
|
356
|
-
c8ctl load plugin --from git://github.com/user/repo.git
|
|
357
|
-
|
|
358
|
-
# Upgrade a plugin to latest or specific version
|
|
359
|
-
c8ctl upgrade plugin <package-name>
|
|
360
|
-
c8ctl upgrade plugin <package-name> 1.2.3
|
|
361
|
-
|
|
362
|
-
# Downgrade a plugin to a specific version
|
|
363
|
-
c8ctl downgrade plugin <package-name> 1.0.0
|
|
364
|
-
|
|
365
|
-
# Unload a plugin
|
|
366
|
-
c8ctl unload plugin <package-name>
|
|
367
|
-
|
|
368
|
-
# List installed plugins (shows version and sync status)
|
|
369
|
-
c8ctl list plugins
|
|
370
|
-
|
|
371
|
-
# Synchronize plugins from registry
|
|
372
|
-
# - First tries npm rebuild for installed plugins
|
|
373
|
-
# - Falls back to fresh npm install if rebuild fails
|
|
374
|
-
c8ctl sync plugins
|
|
375
|
-
|
|
376
|
-
# View help including plugin commands
|
|
77
|
+
# Show help for any command
|
|
377
78
|
c8ctl help
|
|
79
|
+
c8ctl help <command>
|
|
378
80
|
```
|
|
379
81
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
- Plugins are installed to a global directory (OS-specific, see table above)
|
|
383
|
-
- Plugin registry file (`plugins.json`) tracks all installed plugins
|
|
384
|
-
- No local `package.json` is required in your working directory
|
|
385
|
-
- Plugins are available globally from any directory
|
|
386
|
-
- The registry serves as the source of truth for installed plugins
|
|
387
|
-
- Default plugins are bundled with c8ctl and loaded automatically
|
|
388
|
-
- **Plugin commands cannot override built-in commands** - built-in commands always take precedence
|
|
389
|
-
- `c8ctl list plugins` shows plugin versions and sync status:
|
|
390
|
-
- `✓ Installed` - Plugin is in registry and installed
|
|
391
|
-
- `⚠ Not installed` - Plugin is in registry but not in global directory (run `sync`)
|
|
392
|
-
- `⚠ Not in registry` - Plugin is installed but not tracked in registry
|
|
393
|
-
- `c8ctl sync plugins` synchronizes plugins from the registry, rebuilding or reinstalling as needed
|
|
394
|
-
- `c8ctl upgrade plugin <name> [version]` respects the plugin source from the registry:
|
|
395
|
-
- without `version`: reinstalls the registered source as-is
|
|
396
|
-
- npm package source with `version`: installs `<name>@<version>`
|
|
397
|
-
- URL/git source with `version`: installs `<source>#<version>`
|
|
398
|
-
- file source (`file://`) with `version`: version upgrade is not supported; use `load plugin --from` with the desired local plugin checkout
|
|
399
|
-
- `c8ctl downgrade plugin <name> <version>` respects the plugin source from the registry:
|
|
400
|
-
- npm package source: installs `<name>@<version>`
|
|
401
|
-
- URL/git source: installs `<source>#<version>`
|
|
402
|
-
- file source (`file://`): version downgrade is not supported; use `load plugin --from` with the desired local plugin checkout
|
|
403
|
-
|
|
404
|
-
When plugins are loaded, their commands automatically appear in `c8ctl help` output.
|
|
405
|
-
|
|
406
|
-
For plugin development (scaffolding, runtime API, flags, TypeScript support), see [PLUGIN-HELP.md](PLUGIN-HELP.md).
|
|
407
|
-
|
|
408
|
-
---
|
|
409
|
-
|
|
410
|
-
## Agent Usage (AI / Programmatic Consumption)
|
|
411
|
-
|
|
412
|
-
c8ctl ships two flags designed specifically for AI agents and programmatic consumers.
|
|
413
|
-
They appear in their own clearly labelled section in `c8ctl help`.
|
|
414
|
-
|
|
415
|
-
> For a full machine-readable reference, see [`CONTEXT.md`](./CONTEXT.md).
|
|
416
|
-
|
|
417
|
-
### `--fields <comma-separated>`
|
|
418
|
-
|
|
419
|
-
Filters output to only the specified field names. Applies to all `list`, `search`,
|
|
420
|
-
and `get` commands. Field matching is **case-insensitive**.
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
# Only return Key and State columns — reduces context window size
|
|
424
|
-
c8ctl list pi --fields Key,State
|
|
425
|
-
c8ctl search pd --fields Key,processDefinitionId,name
|
|
426
|
-
|
|
427
|
-
# Works in both text and JSON modes
|
|
428
|
-
c8ctl output json
|
|
429
|
-
c8ctl list pi --fields Key,State,processDefinitionId | jq .
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
### `--dry-run`
|
|
433
|
-
|
|
434
|
-
Previews the API request that **would** be sent without executing it.
|
|
435
|
-
Works on **all commands**: queries (`list`, `search`, `get`) and mutations
|
|
436
|
-
(`create`, `cancel`, `deploy`, `complete`, `fail`, `activate`, `resolve`,
|
|
437
|
-
`publish`, `correlate`).
|
|
438
|
-
|
|
439
|
-
Emits a JSON object to stdout and exits 0:
|
|
440
|
-
```json
|
|
441
|
-
{
|
|
442
|
-
"dryRun": true,
|
|
443
|
-
"command": "create process-instance",
|
|
444
|
-
"method": "POST",
|
|
445
|
-
"url": "http://localhost:8080/v2/process-instances",
|
|
446
|
-
"body": { "processDefinitionId": "my-process", "tenantId": "<default>" }
|
|
447
|
-
}
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
**Recommended agent workflow for mutations:**
|
|
451
|
-
1. Run with `--dry-run` and show the user the would-be API call
|
|
452
|
-
2. Wait for user confirmation
|
|
453
|
-
3. Re-run without `--dry-run` to execute
|
|
454
|
-
|
|
455
|
-
```bash
|
|
456
|
-
# Preview before creating
|
|
457
|
-
c8ctl create pi --id=my-process --dry-run
|
|
458
|
-
|
|
459
|
-
# Preview a deployment
|
|
460
|
-
c8ctl deploy ./my-process.bpmn --dry-run
|
|
461
|
-
|
|
462
|
-
# Preview cancelling a process instance
|
|
463
|
-
c8ctl cancel pi 2251799813685249 --dry-run
|
|
464
|
-
|
|
465
|
-
# Debug a search query — see the filter body that would be sent
|
|
466
|
-
c8ctl search pi --state ACTIVE --between 2024-01-01..2024-12-31 --dry-run
|
|
467
|
-
|
|
468
|
-
# Inspect a list operation
|
|
469
|
-
c8ctl list pd --dry-run
|
|
470
|
-
|
|
471
|
-
# Preview a get request
|
|
472
|
-
c8ctl get pi 12345 --dry-run
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
### Machine-Readable Help (JSON Mode)
|
|
476
|
-
|
|
477
|
-
In JSON output mode, `c8ctl help` emits structured JSON containing the full
|
|
478
|
-
command tree, flags (with types), and agent flags:
|
|
479
|
-
|
|
480
|
-
```bash
|
|
481
|
-
c8ctl output json
|
|
482
|
-
c8ctl help # → JSON with commands[], globalFlags[], agentFlags[], resourceAliases
|
|
483
|
-
c8ctl help list # → JSON for specific command
|
|
484
|
-
```
|
|
485
|
-
|
|
486
|
-
---
|
|
487
|
-
|
|
488
|
-
### Local Cluster
|
|
489
|
-
|
|
490
|
-
c8ctl includes a built-in `cluster` command for managing a local Camunda 8 instance (powered by a default plugin). No Docker or docker-compose required — it downloads and runs Camunda directly.
|
|
491
|
-
|
|
492
|
-
```bash
|
|
493
|
-
# Start the latest stable version
|
|
494
|
-
c8ctl cluster start
|
|
495
|
-
|
|
496
|
-
# Start a specific version
|
|
497
|
-
c8ctl cluster start 8.9
|
|
498
|
-
c8ctl cluster start 8.9.0-alpha5
|
|
499
|
-
|
|
500
|
-
# Stop the running cluster
|
|
501
|
-
c8ctl cluster stop
|
|
502
|
-
|
|
503
|
-
# Check cluster status
|
|
504
|
-
c8ctl cluster status
|
|
505
|
-
|
|
506
|
-
# Stream cluster logs
|
|
507
|
-
c8ctl cluster logs
|
|
508
|
-
|
|
509
|
-
# List locally cached versions
|
|
510
|
-
c8ctl cluster list
|
|
511
|
-
|
|
512
|
-
# List available remote versions
|
|
513
|
-
c8ctl cluster list-remote
|
|
514
|
-
|
|
515
|
-
# Pre-download a version without starting it
|
|
516
|
-
c8ctl cluster install 8.9
|
|
517
|
-
|
|
518
|
-
# Remove a cached version
|
|
519
|
-
c8ctl cluster delete 8.9
|
|
520
|
-
|
|
521
|
-
# Purge history and journal data for a version (binary stays intact)
|
|
522
|
-
c8ctl cluster purge 8.9
|
|
523
|
-
|
|
524
|
-
# Stop cluster and purge its runtime data in one step
|
|
525
|
-
c8ctl cluster stop --purge
|
|
526
|
-
```
|
|
527
|
-
|
|
528
|
-
#### Version Aliases
|
|
529
|
-
|
|
530
|
-
Instead of an exact version number, you can use:
|
|
531
|
-
|
|
532
|
-
- **`stable`** — the latest GA release (highest minor version that has shipped a `.0` release)
|
|
533
|
-
- **`alpha`** — the latest alpha-train release (highest minor version overall, which may only have alpha builds)
|
|
534
|
-
- **A major.minor pattern** like `8.9` — resolves to the latest patch/alpha within that minor
|
|
535
|
-
|
|
536
|
-
`c8ctl cluster start` with no version argument defaults to `stable`.
|
|
537
|
-
|
|
538
|
-
```bash
|
|
539
|
-
c8ctl cluster start stable
|
|
540
|
-
c8ctl cluster start alpha
|
|
541
|
-
c8ctl cluster start 8.9 # latest 8.9.x
|
|
542
|
-
```
|
|
543
|
-
|
|
544
|
-
#### Online vs Offline Behaviour
|
|
82
|
+
For everything else, see the [documentation](#documentation) above.
|
|
545
83
|
|
|
546
|
-
|
|
547
|
-
- **`cluster install`** always checks the remote download server for the latest build. If a newer ETag is detected for an already-installed version, it re-downloads.
|
|
548
|
-
- **`cluster list-remote`** fetches the full list of available versions from the download server.
|
|
549
|
-
- **Offline fallback**: if the network is unavailable, alias resolution falls back to a locally cached mapping, then to a hardcoded default.
|
|
84
|
+
## AI agents and scripting
|
|
550
85
|
|
|
551
|
-
|
|
86
|
+
c8ctl ships flags built for AI agents and scripts — `--fields` (filter output columns), `--dry-run` (preview the API request without executing it), and machine-readable JSON help. They appear in their own section in `c8ctl help`.
|
|
552
87
|
|
|
553
|
-
|
|
88
|
+
See [Development workflows → AI agents and scripting](docs/development-workflows.md#ai-agents-and-scripting) for details and examples. For a full machine-readable reference intended for agents, see [CONTEXT.md](CONTEXT.md).
|
|
554
89
|
|
|
555
|
-
|
|
90
|
+
## Command Structure
|
|
556
91
|
|
|
557
92
|
```shell
|
|
558
93
|
c8ctl <verb> <resource> [arguments] [flags]
|
|
@@ -614,26 +149,11 @@ c8ctl <verb> <resource> [arguments] [flags]
|
|
|
614
149
|
- `CAMUNDA_CLIENT_SECRET`: OAuth client secret
|
|
615
150
|
- `CAMUNDA_TOKEN_AUDIENCE`: OAuth token audience
|
|
616
151
|
- `CAMUNDA_OAUTH_URL`: OAuth token endpoint
|
|
617
|
-
- `CAMUNDA_OAUTH_SCOPE`: OAuth scope (space-separated), maps to the `--scope` flag on `c8ctl add profile`. Needed for IdPs such as Microsoft Entra ID that require an explicit scope (e.g. `api://<app-id>/.default`)
|
|
618
152
|
- `CAMUNDA_DEFAULT_TENANT_ID`: Default tenant ID
|
|
619
|
-
- `C8CTL_OUTPUT_MODE`: Per-invocation output mode override (`json` or `text`); does not persist. Lower precedence than `--json`.
|
|
153
|
+
- `C8CTL_OUTPUT_MODE`: Per-invocation output mode override (`json` or `text`); does not persist. Lower precedence than `--json`.
|
|
620
154
|
- `C8CTL_DATA_DIR`: Override the OS-default data directory for plugins and session state.
|
|
621
155
|
- `C8CTL_DEBUG` / `DEBUG`: Enable debug logging to stderr.
|
|
622
156
|
|
|
623
|
-
### Running behind a proxy
|
|
624
|
-
|
|
625
|
-
c8ctl is a plain Node.js process, so outbound HTTP(S) requests (to the Camunda 8 REST API and OAuth token endpoint) follow Node's own proxy and TLS trust settings, not c8ctl-specific configuration. When running behind a corporate proxy, set these Node.js environment variables:
|
|
626
|
-
|
|
627
|
-
- `NODE_USE_ENV_PROXY=1`: Makes Node's `fetch`/`http`/`https` respect the standard `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` environment variables.
|
|
628
|
-
- `NODE_USE_SYSTEM_CA=1`: Makes Node trust the OS-provided CA certificate store, in addition to its bundled CAs. Required when the proxy performs TLS interception with an internal/corporate root CA.
|
|
629
|
-
|
|
630
|
-
```bash
|
|
631
|
-
export HTTP_PROXY=http://proxy.example.com:8080
|
|
632
|
-
export HTTPS_PROXY=http://proxy.example.com:8080
|
|
633
|
-
export NODE_USE_ENV_PROXY=1
|
|
634
|
-
export NODE_USE_SYSTEM_CA=1
|
|
635
|
-
```
|
|
636
|
-
|
|
637
157
|
## Configuration Files
|
|
638
158
|
|
|
639
159
|
### c8ctl Configuration
|
|
@@ -669,1214 +189,15 @@ Modeler profiles are:
|
|
|
669
189
|
|
|
670
190
|
## Command Reference
|
|
671
191
|
|
|
672
|
-
<!-- Auto-generated
|
|
192
|
+
<!-- Auto-generated pointer. Do not edit manually.
|
|
673
193
|
Run: node --experimental-strip-types scripts/sync-readme-commands.ts -->
|
|
674
194
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
These flags are accepted by every command.
|
|
678
|
-
|
|
679
|
-
| Flag | Type | Required | Description |
|
|
680
|
-
|------|------|----------|-------------|
|
|
681
|
-
| `--help` / `-h` | boolean | | Show help |
|
|
682
|
-
| `--version` / `-v` | string | | Show CLI version, or filter by process definition version on supported commands |
|
|
683
|
-
| `--profile` | string | | Use a specific profile |
|
|
684
|
-
| `--dry-run` | boolean | | Preview the API request without executing |
|
|
685
|
-
| `--verbose` | boolean | | Show verbose output |
|
|
686
|
-
| `--fields` | string | | Comma-separated list of fields to display |
|
|
687
|
-
| `--json` | boolean | | Force JSON output for this invocation (does not persist; overrides session state and C8CTL_OUTPUT_MODE) |
|
|
688
|
-
| `--yes` / `-y` | boolean | | Skip confirmation prompts |
|
|
689
|
-
|
|
690
|
-
### Resource Aliases
|
|
691
|
-
|
|
692
|
-
| Alias | Resource |
|
|
693
|
-
|-------|----------|
|
|
694
|
-
| `auth` | `authorization` |
|
|
695
|
-
| `inc` | `incident` |
|
|
696
|
-
| `mr` | `mapping-rule` |
|
|
697
|
-
| `msg` | `message` |
|
|
698
|
-
| `pd` | `process-definition` |
|
|
699
|
-
| `pi` | `process-instance` |
|
|
700
|
-
| `ut` | `user-task` |
|
|
701
|
-
| `vars` | `variable` |
|
|
702
|
-
| `var` | `variable` |
|
|
703
|
-
| `ws` | `wait-state` |
|
|
704
|
-
|
|
705
|
-
### Search Flags
|
|
706
|
-
|
|
707
|
-
These flags are available on `list` and `search` commands.
|
|
708
|
-
|
|
709
|
-
| Flag | Type | Required | Description |
|
|
710
|
-
|------|------|----------|-------------|
|
|
711
|
-
| `--sortBy` | string | | Sort results by field |
|
|
712
|
-
| `--asc` | boolean | | Sort ascending |
|
|
713
|
-
| `--desc` | boolean | | Sort descending |
|
|
714
|
-
| `--limit` | string | | Maximum number of results |
|
|
715
|
-
| `--between` | string | | Date range filter (e.g. 2024-01-01..2024-12-31, ..2024-12-31, 2024-01-01..) |
|
|
716
|
-
| `--dateField` | string | | Date field for --between filter |
|
|
717
|
-
|
|
718
|
-
### Commands
|
|
719
|
-
|
|
720
|
-
#### `list`
|
|
721
|
-
|
|
722
|
-
List resources
|
|
723
|
-
|
|
724
|
-
**Resources:** pi (process-instance), pd (process-definition), ut (user-task), inc (incident), jobs, profiles (profile), plugins (plugin), users (user), roles (role), groups (group), tenants (tenant), auth (authorization), mapping-rules (mapping-rule)
|
|
725
|
-
|
|
726
|
-
**Verb-level flags:**
|
|
727
|
-
|
|
728
|
-
| Flag | Type | Required | Description |
|
|
729
|
-
|------|------|----------|-------------|
|
|
730
|
-
| `--all` | boolean | | List all (disable pagination limit) |
|
|
731
|
-
|
|
732
|
-
**Resource-specific flags:**
|
|
733
|
-
|
|
734
|
-
<details>
|
|
735
|
-
<summary><code>process-definition</code> (<code>pd</code>)</summary>
|
|
736
|
-
|
|
737
|
-
| Flag | Type | Required | Description |
|
|
738
|
-
|------|------|----------|-------------|
|
|
739
|
-
| `--bpmnProcessId` | string | | Filter by BPMN process ID |
|
|
740
|
-
| `--id` | string | | Filter by BPMN process ID (alias) |
|
|
741
|
-
| `--processDefinitionId` | string | | Filter by process definition ID |
|
|
742
|
-
| `--name` | string | | Filter by name |
|
|
743
|
-
| `--key` | string | | Filter by key |
|
|
744
|
-
| `--iid` | string | | Case-insensitive filter by BPMN process ID |
|
|
745
|
-
| `--iname` | string | | Case-insensitive filter by name |
|
|
746
|
-
|
|
747
|
-
</details>
|
|
748
|
-
|
|
749
|
-
<details>
|
|
750
|
-
<summary><code>process-instance</code> (<code>pi</code>)</summary>
|
|
751
|
-
|
|
752
|
-
| Flag | Type | Required | Description |
|
|
753
|
-
|------|------|----------|-------------|
|
|
754
|
-
| `--bpmnProcessId` | string | | Filter by BPMN process ID |
|
|
755
|
-
| `--id` | string | | Filter by BPMN process ID (alias) |
|
|
756
|
-
| `--processDefinitionId` | string | | Filter by process definition ID |
|
|
757
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
758
|
-
| `--state` | string | | Filter by state (ACTIVE, COMPLETED, etc) |
|
|
759
|
-
| `--key` | string | | Filter by key |
|
|
760
|
-
| `--parentProcessInstanceKey` | string | | Filter by parent process instance key |
|
|
761
|
-
| `--iid` | string | | Case-insensitive filter by BPMN process ID |
|
|
762
|
-
|
|
763
|
-
</details>
|
|
764
|
-
|
|
765
|
-
<details>
|
|
766
|
-
<summary><code>user-task</code> (<code>ut</code>)</summary>
|
|
767
|
-
|
|
768
|
-
| Flag | Type | Required | Description |
|
|
769
|
-
|------|------|----------|-------------|
|
|
770
|
-
| `--state` | string | | Filter by state |
|
|
771
|
-
| `--assignee` | string | | Filter by assignee |
|
|
772
|
-
| `--processInstanceKey` | string | | Filter by process instance key |
|
|
773
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
774
|
-
| `--elementId` | string | | Filter by element ID |
|
|
775
|
-
| `--iassignee` | string | | Case-insensitive filter by assignee |
|
|
776
|
-
|
|
777
|
-
</details>
|
|
778
|
-
|
|
779
|
-
<details>
|
|
780
|
-
<summary><code>incident</code> (<code>inc</code>)</summary>
|
|
781
|
-
|
|
782
|
-
| Flag | Type | Required | Description |
|
|
783
|
-
|------|------|----------|-------------|
|
|
784
|
-
| `--state` | string | | Filter by state |
|
|
785
|
-
| `--processInstanceKey` | string | | Filter by process instance key |
|
|
786
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
787
|
-
| `--bpmnProcessId` | string | | Filter by BPMN process ID |
|
|
788
|
-
| `--id` | string | | Filter by BPMN process ID (alias) |
|
|
789
|
-
| `--processDefinitionId` | string | | Filter by process definition ID |
|
|
790
|
-
| `--errorType` | string | | Filter by error type |
|
|
791
|
-
| `--errorMessage` | string | | Filter by error message |
|
|
792
|
-
| `--ierrorMessage` | string | | Case-insensitive filter by error message |
|
|
793
|
-
| `--iid` | string | | Case-insensitive filter by BPMN process ID |
|
|
794
|
-
|
|
795
|
-
</details>
|
|
796
|
-
|
|
797
|
-
<details>
|
|
798
|
-
<summary><code>jobs</code></summary>
|
|
799
|
-
|
|
800
|
-
| Flag | Type | Required | Description |
|
|
801
|
-
|------|------|----------|-------------|
|
|
802
|
-
| `--state` | string | | Filter by state |
|
|
803
|
-
| `--type` | string | | Filter by job type |
|
|
804
|
-
| `--processInstanceKey` | string | | Filter by process instance key |
|
|
805
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
806
|
-
| `--itype` | string | | Case-insensitive filter by job type |
|
|
807
|
-
|
|
808
|
-
</details>
|
|
809
|
-
|
|
810
|
-
<details>
|
|
811
|
-
<summary><code>user</code></summary>
|
|
812
|
-
|
|
813
|
-
| Flag | Type | Required | Description |
|
|
814
|
-
|------|------|----------|-------------|
|
|
815
|
-
| `--username` | string | | Filter by username |
|
|
816
|
-
| `--name` | string | | Filter by name |
|
|
817
|
-
| `--email` | string | | Filter by email |
|
|
818
|
-
|
|
819
|
-
</details>
|
|
820
|
-
|
|
821
|
-
<details>
|
|
822
|
-
<summary><code>role</code></summary>
|
|
823
|
-
|
|
824
|
-
| Flag | Type | Required | Description |
|
|
825
|
-
|------|------|----------|-------------|
|
|
826
|
-
| `--roleId` | string | | Filter by role ID |
|
|
827
|
-
| `--name` | string | | Filter by name |
|
|
828
|
-
|
|
829
|
-
</details>
|
|
830
|
-
|
|
831
|
-
<details>
|
|
832
|
-
<summary><code>group</code></summary>
|
|
833
|
-
|
|
834
|
-
| Flag | Type | Required | Description |
|
|
835
|
-
|------|------|----------|-------------|
|
|
836
|
-
| `--groupId` | string | | Filter by group ID |
|
|
837
|
-
| `--name` | string | | Filter by name |
|
|
838
|
-
|
|
839
|
-
</details>
|
|
840
|
-
|
|
841
|
-
<details>
|
|
842
|
-
<summary><code>tenant</code></summary>
|
|
843
|
-
|
|
844
|
-
| Flag | Type | Required | Description |
|
|
845
|
-
|------|------|----------|-------------|
|
|
846
|
-
| `--tenantId` | string | | Filter by tenant ID |
|
|
847
|
-
| `--name` | string | | Filter by name |
|
|
848
|
-
|
|
849
|
-
</details>
|
|
850
|
-
|
|
851
|
-
<details>
|
|
852
|
-
<summary><code>authorization</code> (<code>auth</code>)</summary>
|
|
853
|
-
|
|
854
|
-
| Flag | Type | Required | Description |
|
|
855
|
-
|------|------|----------|-------------|
|
|
856
|
-
| `--ownerId` | string | | Filter by owner ID |
|
|
857
|
-
| `--ownerType` | string | | Filter by owner type |
|
|
858
|
-
| `--resourceType` | string | | Filter by resource type |
|
|
859
|
-
| `--resourceId` | string | | Filter by resource ID |
|
|
860
|
-
|
|
861
|
-
</details>
|
|
862
|
-
|
|
863
|
-
<details>
|
|
864
|
-
<summary><code>mapping-rule</code> (<code>mr</code>)</summary>
|
|
865
|
-
|
|
866
|
-
| Flag | Type | Required | Description |
|
|
867
|
-
|------|------|----------|-------------|
|
|
868
|
-
| `--mappingRuleId` | string | | Filter by mapping rule ID |
|
|
869
|
-
| `--name` | string | | Filter by name |
|
|
870
|
-
| `--claimName` | string | | Filter by claim name |
|
|
871
|
-
| `--claimValue` | string | | Filter by claim value |
|
|
872
|
-
|
|
873
|
-
</details>
|
|
874
|
-
|
|
875
|
-
**Examples:**
|
|
876
|
-
|
|
877
|
-
```bash
|
|
878
|
-
c8ctl list pi # List process instances
|
|
879
|
-
c8ctl list pd # List process definitions
|
|
880
|
-
c8ctl list users # List users
|
|
881
|
-
```
|
|
882
|
-
|
|
883
|
-
---
|
|
884
|
-
|
|
885
|
-
#### `search`
|
|
886
|
-
|
|
887
|
-
Search resources with filters (wildcards, date ranges, case-insensitive)
|
|
888
|
-
|
|
889
|
-
**Resources:** pi (process-instance), pd (process-definition), ut (user-task), inc (incident), jobs, vars (variable), users (user), roles (role), groups (group), tenants (tenant), auth (authorization), mapping-rules (mapping-rule), wait-state
|
|
890
|
-
|
|
891
|
-
**Resource-specific flags:**
|
|
892
|
-
|
|
893
|
-
<details>
|
|
894
|
-
<summary><code>process-definition</code> (<code>pd</code>)</summary>
|
|
895
|
-
|
|
896
|
-
| Flag | Type | Required | Description |
|
|
897
|
-
|------|------|----------|-------------|
|
|
898
|
-
| `--bpmnProcessId` | string | | Filter by BPMN process ID |
|
|
899
|
-
| `--id` | string | | Filter by BPMN process ID (alias) |
|
|
900
|
-
| `--processDefinitionId` | string | | Filter by process definition ID |
|
|
901
|
-
| `--name` | string | | Filter by name |
|
|
902
|
-
| `--key` | string | | Filter by key |
|
|
903
|
-
| `--iid` | string | | Case-insensitive filter by BPMN process ID |
|
|
904
|
-
| `--iname` | string | | Case-insensitive filter by name |
|
|
905
|
-
|
|
906
|
-
</details>
|
|
907
|
-
|
|
908
|
-
<details>
|
|
909
|
-
<summary><code>process-instance</code> (<code>pi</code>)</summary>
|
|
910
|
-
|
|
911
|
-
| Flag | Type | Required | Description |
|
|
912
|
-
|------|------|----------|-------------|
|
|
913
|
-
| `--bpmnProcessId` | string | | Filter by BPMN process ID |
|
|
914
|
-
| `--id` | string | | Filter by BPMN process ID (alias) |
|
|
915
|
-
| `--processDefinitionId` | string | | Filter by process definition ID |
|
|
916
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
917
|
-
| `--state` | string | | Filter by state (ACTIVE, COMPLETED, etc) |
|
|
918
|
-
| `--key` | string | | Filter by key |
|
|
919
|
-
| `--parentProcessInstanceKey` | string | | Filter by parent process instance key |
|
|
920
|
-
| `--iid` | string | | Case-insensitive filter by BPMN process ID |
|
|
921
|
-
|
|
922
|
-
</details>
|
|
923
|
-
|
|
924
|
-
<details>
|
|
925
|
-
<summary><code>user-task</code> (<code>ut</code>)</summary>
|
|
926
|
-
|
|
927
|
-
| Flag | Type | Required | Description |
|
|
928
|
-
|------|------|----------|-------------|
|
|
929
|
-
| `--state` | string | | Filter by state |
|
|
930
|
-
| `--assignee` | string | | Filter by assignee |
|
|
931
|
-
| `--processInstanceKey` | string | | Filter by process instance key |
|
|
932
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
933
|
-
| `--elementId` | string | | Filter by element ID |
|
|
934
|
-
| `--iassignee` | string | | Case-insensitive filter by assignee |
|
|
935
|
-
|
|
936
|
-
</details>
|
|
937
|
-
|
|
938
|
-
<details>
|
|
939
|
-
<summary><code>incident</code> (<code>inc</code>)</summary>
|
|
940
|
-
|
|
941
|
-
| Flag | Type | Required | Description |
|
|
942
|
-
|------|------|----------|-------------|
|
|
943
|
-
| `--state` | string | | Filter by state |
|
|
944
|
-
| `--processInstanceKey` | string | | Filter by process instance key |
|
|
945
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
946
|
-
| `--bpmnProcessId` | string | | Filter by BPMN process ID |
|
|
947
|
-
| `--id` | string | | Filter by BPMN process ID (alias) |
|
|
948
|
-
| `--processDefinitionId` | string | | Filter by process definition ID |
|
|
949
|
-
| `--errorType` | string | | Filter by error type |
|
|
950
|
-
| `--errorMessage` | string | | Filter by error message |
|
|
951
|
-
| `--ierrorMessage` | string | | Case-insensitive filter by error message |
|
|
952
|
-
| `--iid` | string | | Case-insensitive filter by BPMN process ID |
|
|
953
|
-
|
|
954
|
-
</details>
|
|
955
|
-
|
|
956
|
-
<details>
|
|
957
|
-
<summary><code>jobs</code></summary>
|
|
958
|
-
|
|
959
|
-
| Flag | Type | Required | Description |
|
|
960
|
-
|------|------|----------|-------------|
|
|
961
|
-
| `--state` | string | | Filter by state |
|
|
962
|
-
| `--type` | string | | Filter by job type |
|
|
963
|
-
| `--processInstanceKey` | string | | Filter by process instance key |
|
|
964
|
-
| `--processDefinitionKey` | string | | Filter by process definition key |
|
|
965
|
-
| `--itype` | string | | Case-insensitive filter by job type |
|
|
966
|
-
|
|
967
|
-
</details>
|
|
968
|
-
|
|
969
|
-
<details>
|
|
970
|
-
<summary><code>variable</code> (<code>var</code>, <code>vars</code>)</summary>
|
|
971
|
-
|
|
972
|
-
| Flag | Type | Required | Description |
|
|
973
|
-
|------|------|----------|-------------|
|
|
974
|
-
| `--name` | string | | Filter by variable name |
|
|
975
|
-
| `--value` | string | | Filter by value |
|
|
976
|
-
| `--processInstanceKey` | string | | Filter by process instance key |
|
|
977
|
-
| `--scopeKey` | string | | Filter by scope key |
|
|
978
|
-
| `--fullValue` | boolean | | Return full variable values (not truncated) |
|
|
979
|
-
| `--iname` | string | | Case-insensitive filter by name |
|
|
980
|
-
| `--ivalue` | string | | Case-insensitive filter by value |
|
|
195
|
+
A compact list of every verb and resource is in [Command Structure](#command-structure) above.
|
|
981
196
|
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
<details>
|
|
985
|
-
<summary><code>user</code></summary>
|
|
986
|
-
|
|
987
|
-
| Flag | Type | Required | Description |
|
|
988
|
-
|------|------|----------|-------------|
|
|
989
|
-
| `--username` | string | | Filter by username |
|
|
990
|
-
| `--name` | string | | Filter by name |
|
|
991
|
-
| `--email` | string | | Filter by email |
|
|
992
|
-
|
|
993
|
-
</details>
|
|
994
|
-
|
|
995
|
-
<details>
|
|
996
|
-
<summary><code>role</code></summary>
|
|
997
|
-
|
|
998
|
-
| Flag | Type | Required | Description |
|
|
999
|
-
|------|------|----------|-------------|
|
|
1000
|
-
| `--roleId` | string | | Filter by role ID |
|
|
1001
|
-
| `--name` | string | | Filter by name |
|
|
1002
|
-
|
|
1003
|
-
</details>
|
|
1004
|
-
|
|
1005
|
-
<details>
|
|
1006
|
-
<summary><code>group</code></summary>
|
|
1007
|
-
|
|
1008
|
-
| Flag | Type | Required | Description |
|
|
1009
|
-
|------|------|----------|-------------|
|
|
1010
|
-
| `--groupId` | string | | Filter by group ID |
|
|
1011
|
-
| `--name` | string | | Filter by name |
|
|
1012
|
-
|
|
1013
|
-
</details>
|
|
1014
|
-
|
|
1015
|
-
<details>
|
|
1016
|
-
<summary><code>tenant</code></summary>
|
|
1017
|
-
|
|
1018
|
-
| Flag | Type | Required | Description |
|
|
1019
|
-
|------|------|----------|-------------|
|
|
1020
|
-
| `--tenantId` | string | | Filter by tenant ID |
|
|
1021
|
-
| `--name` | string | | Filter by name |
|
|
1022
|
-
|
|
1023
|
-
</details>
|
|
1024
|
-
|
|
1025
|
-
<details>
|
|
1026
|
-
<summary><code>authorization</code> (<code>auth</code>)</summary>
|
|
1027
|
-
|
|
1028
|
-
| Flag | Type | Required | Description |
|
|
1029
|
-
|------|------|----------|-------------|
|
|
1030
|
-
| `--ownerId` | string | | Filter by owner ID |
|
|
1031
|
-
| `--ownerType` | string | | Filter by owner type |
|
|
1032
|
-
| `--resourceType` | string | | Filter by resource type |
|
|
1033
|
-
| `--resourceId` | string | | Filter by resource ID |
|
|
1034
|
-
|
|
1035
|
-
</details>
|
|
1036
|
-
|
|
1037
|
-
<details>
|
|
1038
|
-
<summary><code>mapping-rule</code> (<code>mr</code>)</summary>
|
|
1039
|
-
|
|
1040
|
-
| Flag | Type | Required | Description |
|
|
1041
|
-
|------|------|----------|-------------|
|
|
1042
|
-
| `--mappingRuleId` | string | | Filter by mapping rule ID |
|
|
1043
|
-
| `--name` | string | | Filter by name |
|
|
1044
|
-
| `--claimName` | string | | Filter by claim name |
|
|
1045
|
-
| `--claimValue` | string | | Filter by claim value |
|
|
1046
|
-
|
|
1047
|
-
</details>
|
|
1048
|
-
|
|
1049
|
-
<details>
|
|
1050
|
-
<summary><code>wait-state</code> (<code>ws</code>)</summary>
|
|
1051
|
-
|
|
1052
|
-
| Flag | Type | Required | Description |
|
|
1053
|
-
|------|------|----------|-------------|
|
|
1054
|
-
| `--processInstanceKey` / `-k` | string | | Filter by process instance key |
|
|
1055
|
-
| `--rootProcessInstanceKey` / `-r` | string | | Filter by root process instance key |
|
|
1056
|
-
| `--elementInstanceKey` / `-e` | string | | Filter by element instance key |
|
|
1057
|
-
| `--elementId` | string | | Filter by element ID (supports wildcards, e.g. `*Task*`) |
|
|
1058
|
-
| `--elementType` | string | | Filter by BPMN element type (e.g. SERVICE_TASK, USER_TASK, CALL_ACTIVITY) |
|
|
1059
|
-
| `--waitStateType` | string | | Filter by wait state type (JOB, MESSAGE, TIMER, CONDITION, USER_TASK, SIGNAL) |
|
|
1060
|
-
|
|
1061
|
-
</details>
|
|
1062
|
-
|
|
1063
|
-
**Examples:**
|
|
1064
|
-
|
|
1065
|
-
```bash
|
|
1066
|
-
c8ctl search pi --state=ACTIVE # Search for active process instances
|
|
1067
|
-
c8ctl search pd --bpmnProcessId=myProcess # Search process definitions by ID
|
|
1068
|
-
c8ctl search pd --name='*main*' # Search process definitions with wildcard
|
|
1069
|
-
c8ctl search ut --assignee=john # Search user tasks assigned to john
|
|
1070
|
-
c8ctl search inc --state=ACTIVE # Search for active incidents
|
|
1071
|
-
c8ctl search jobs --type=myJobType # Search jobs by type
|
|
1072
|
-
c8ctl search jobs --type='*service*' # Search jobs with type containing "service"
|
|
1073
|
-
c8ctl search variables --name=myVar # Search for variables by name
|
|
1074
|
-
c8ctl search variables --value=foo # Search for variables by value
|
|
1075
|
-
c8ctl search variables --processInstanceKey=123 --fullValue # Search variables with full values
|
|
1076
|
-
c8ctl search pd --iname='*order*' # Case-insensitive search by name
|
|
1077
|
-
c8ctl search ut --iassignee=John # Case-insensitive search by assignee
|
|
1078
|
-
c8ctl search ws --waitStateType=JOB # Search wait states of type JOB
|
|
1079
|
-
c8ctl search ws --elementType=SERVICE_TASK # Search wait states on service tasks
|
|
1080
|
-
```
|
|
1081
|
-
|
|
1082
|
-
---
|
|
1083
|
-
|
|
1084
|
-
#### `get`
|
|
1085
|
-
|
|
1086
|
-
Get a resource by key
|
|
1087
|
-
|
|
1088
|
-
**Resources:** pi (process-instance), pd (process-definition), inc (incident), topology, form, user, role, group, tenant, auth (authorization), mapping-rule
|
|
1089
|
-
|
|
1090
|
-
**Positional arguments:**
|
|
1091
|
-
|
|
1092
|
-
- **process-definition:** `<key>` (required)
|
|
1093
|
-
- **process-instance:** `<key>` (required)
|
|
1094
|
-
- **incident:** `<key>` (required)
|
|
1095
|
-
- **user:** `<username>` (required)
|
|
1096
|
-
- **role:** `<roleId>` (required)
|
|
1097
|
-
- **group:** `<groupId>` (required)
|
|
1098
|
-
- **tenant:** `<tenantId>` (required)
|
|
1099
|
-
- **authorization:** `<authorizationKey>` (required)
|
|
1100
|
-
- **mapping-rule:** `<mappingRuleId>` (required)
|
|
1101
|
-
- **form:** `<key>` (required)
|
|
1102
|
-
|
|
1103
|
-
**Resource-specific flags:**
|
|
1104
|
-
|
|
1105
|
-
<details>
|
|
1106
|
-
<summary><code>process-definition</code> (<code>pd</code>)</summary>
|
|
1107
|
-
|
|
1108
|
-
| Flag | Type | Required | Description |
|
|
1109
|
-
|------|------|----------|-------------|
|
|
1110
|
-
| `--xml` | boolean | | Get BPMN XML (process definitions) |
|
|
1111
|
-
|
|
1112
|
-
</details>
|
|
1113
|
-
|
|
1114
|
-
<details>
|
|
1115
|
-
<summary><code>form</code></summary>
|
|
1116
|
-
|
|
1117
|
-
| Flag | Type | Required | Description |
|
|
1118
|
-
|------|------|----------|-------------|
|
|
1119
|
-
| `--userTask` | boolean | | Get form for user task |
|
|
1120
|
-
| `--ut` | boolean | | Alias for --userTask |
|
|
1121
|
-
| `--processDefinition` | boolean | | Get form for process definition |
|
|
1122
|
-
| `--pd` | boolean | | Alias for --processDefinition |
|
|
1123
|
-
|
|
1124
|
-
</details>
|
|
1125
|
-
|
|
1126
|
-
<details>
|
|
1127
|
-
<summary><code>process-instance</code> (<code>pi</code>)</summary>
|
|
1128
|
-
|
|
1129
|
-
| Flag | Type | Required | Description |
|
|
1130
|
-
|------|------|----------|-------------|
|
|
1131
|
-
| `--variables` | boolean | | Include variables in output |
|
|
1132
|
-
|
|
1133
|
-
</details>
|
|
1134
|
-
|
|
1135
|
-
**Examples:**
|
|
1136
|
-
|
|
1137
|
-
```bash
|
|
1138
|
-
c8ctl get pi 123456 # Get process instance by key
|
|
1139
|
-
c8ctl get pi 123456 --variables # Get process instance with variables
|
|
1140
|
-
c8ctl get pd 123456 # Get process definition by key
|
|
1141
|
-
c8ctl get pd 123456 --xml # Get process definition XML
|
|
1142
|
-
c8ctl get form 123456 # Get form (searches both user task and process definition)
|
|
1143
|
-
c8ctl get form 123456 --ut # Get form for user task only
|
|
1144
|
-
c8ctl get form 123456 --pd # Get start form for process definition only
|
|
1145
|
-
c8ctl get user john # Get user by username
|
|
1146
|
-
```
|
|
1147
|
-
|
|
1148
|
-
---
|
|
1149
|
-
|
|
1150
|
-
#### `create`
|
|
1151
|
-
|
|
1152
|
-
Create a resource (process instance, identity)
|
|
1153
|
-
|
|
1154
|
-
**Resources:** pi (process-instance), user, role, group, tenant, auth (authorization), mapping-rule
|
|
1155
|
-
|
|
1156
|
-
**Verb-level flags:**
|
|
1157
|
-
|
|
1158
|
-
| Flag | Type | Required | Description |
|
|
1159
|
-
|------|------|----------|-------------|
|
|
1160
|
-
| `--processDefinitionId` | string | | Process definition ID (BPMN process ID) |
|
|
1161
|
-
| `--id` | string | | Process definition ID (alias for --processDefinitionId) |
|
|
1162
|
-
| `--bpmnProcessId` | string | | BPMN process ID (alias for --processDefinitionId) |
|
|
1163
|
-
| `--variables` | string | | JSON variables |
|
|
1164
|
-
| `--awaitCompletion` | boolean | | Wait for process to complete |
|
|
1165
|
-
| `--fetchVariables` | boolean | | Fetch result variables on completion |
|
|
1166
|
-
| `--requestTimeout` | string | | Await timeout in milliseconds |
|
|
1167
|
-
| `--username` | string | | Username |
|
|
1168
|
-
| `--name` | string | | Display name |
|
|
1169
|
-
| `--email` | string | | Email address |
|
|
1170
|
-
| `--password` | string | | Password |
|
|
1171
|
-
| `--roleId` | string | | Role ID |
|
|
1172
|
-
| `--groupId` | string | | Group ID |
|
|
1173
|
-
| `--tenantId` | string | | Tenant ID |
|
|
1174
|
-
| `--mappingRuleId` | string | | Mapping rule ID |
|
|
1175
|
-
| `--claimName` | string | | Claim name |
|
|
1176
|
-
| `--claimValue` | string | | Claim value |
|
|
1177
|
-
|
|
1178
|
-
**Resource-specific flags:**
|
|
1179
|
-
|
|
1180
|
-
<details>
|
|
1181
|
-
<summary><code>authorization</code> (<code>auth</code>)</summary>
|
|
1182
|
-
|
|
1183
|
-
| Flag | Type | Required | Description |
|
|
1184
|
-
|------|------|----------|-------------|
|
|
1185
|
-
| `--ownerId` | string | Yes | Authorization owner ID |
|
|
1186
|
-
| `--ownerType` | string | Yes | Authorization owner type |
|
|
1187
|
-
| `--resourceType` | string | Yes | Authorization resource type |
|
|
1188
|
-
| `--resourceId` | string | Yes | Authorization resource ID |
|
|
1189
|
-
| `--permissions` | string | Yes | Comma-separated permissions |
|
|
1190
|
-
|
|
1191
|
-
</details>
|
|
1192
|
-
|
|
1193
|
-
**Examples:**
|
|
1194
|
-
|
|
1195
|
-
```bash
|
|
1196
|
-
c8ctl create pi --id=myProcess # Create a process instance
|
|
1197
|
-
c8ctl create pi --id=myProcess --awaitCompletion # Create and await completion
|
|
1198
|
-
c8ctl create user --username=john --name='John Doe' --email=john@example.com --password=secret # Create a user
|
|
1199
|
-
```
|
|
1200
|
-
|
|
1201
|
-
---
|
|
1202
|
-
|
|
1203
|
-
#### `delete`
|
|
1204
|
-
|
|
1205
|
-
Delete a resource by key
|
|
1206
|
-
|
|
1207
|
-
**Usage:** `c8ctl delete <resource> <key>`
|
|
1208
|
-
|
|
1209
|
-
**Resources:** user, role, group, tenant, auth (authorization), mapping-rule
|
|
1210
|
-
|
|
1211
|
-
**Positional arguments:**
|
|
1212
|
-
|
|
1213
|
-
- **user:** `<username>` (required)
|
|
1214
|
-
- **role:** `<roleId>` (required)
|
|
1215
|
-
- **group:** `<groupId>` (required)
|
|
1216
|
-
- **tenant:** `<tenantId>` (required)
|
|
1217
|
-
- **authorization:** `<authorizationKey>` (required)
|
|
1218
|
-
- **mapping-rule:** `<mappingRuleId>` (required)
|
|
1219
|
-
|
|
1220
|
-
**Examples:**
|
|
1221
|
-
|
|
1222
|
-
```bash
|
|
1223
|
-
c8ctl delete user john # Delete user
|
|
1224
|
-
```
|
|
1225
|
-
|
|
1226
|
-
---
|
|
1227
|
-
|
|
1228
|
-
#### `cancel`
|
|
1229
|
-
|
|
1230
|
-
Cancel a process instance
|
|
1231
|
-
|
|
1232
|
-
**Usage:** `c8ctl cancel <resource> <key>`
|
|
1233
|
-
|
|
1234
|
-
**Resources:** pi (process-instance)
|
|
1235
|
-
|
|
1236
|
-
**Positional arguments:**
|
|
1237
|
-
|
|
1238
|
-
- **process-instance:** `<key>` (required)
|
|
1239
|
-
|
|
1240
|
-
---
|
|
1241
|
-
|
|
1242
|
-
#### `await`
|
|
1243
|
-
|
|
1244
|
-
Create and await process instance completion (server-side waiting)
|
|
1245
|
-
|
|
1246
|
-
**Usage:** `c8ctl await <resource>`
|
|
1247
|
-
|
|
1248
|
-
**Resources:** pi (process-instance)
|
|
1249
|
-
|
|
1250
|
-
**Flags:**
|
|
1251
|
-
|
|
1252
|
-
| Flag | Type | Required | Description |
|
|
1253
|
-
|------|------|----------|-------------|
|
|
1254
|
-
| `--processDefinitionId` | string | | Process definition ID (BPMN process ID) |
|
|
1255
|
-
| `--id` | string | | Process definition ID (alias for --processDefinitionId) |
|
|
1256
|
-
| `--bpmnProcessId` | string | | BPMN process ID (alias for --processDefinitionId) |
|
|
1257
|
-
| `--variables` | string | | JSON variables |
|
|
1258
|
-
| `--fetchVariables` | boolean | | Fetch result variables on completion |
|
|
1259
|
-
| `--requestTimeout` | string | | Await timeout in milliseconds |
|
|
1260
|
-
|
|
1261
|
-
**Examples:**
|
|
1262
|
-
|
|
1263
|
-
```bash
|
|
1264
|
-
c8ctl await pi --id=myProcess # Create and wait for completion
|
|
1265
|
-
```
|
|
1266
|
-
|
|
1267
|
-
---
|
|
1268
|
-
|
|
1269
|
-
#### `complete`
|
|
1270
|
-
|
|
1271
|
-
Complete a user task or job
|
|
1272
|
-
|
|
1273
|
-
**Usage:** `c8ctl complete <resource> <key>`
|
|
1274
|
-
|
|
1275
|
-
**Resources:** ut (user-task), job
|
|
1276
|
-
|
|
1277
|
-
**Positional arguments:**
|
|
1278
|
-
|
|
1279
|
-
- **user-task:** `<key>` (required)
|
|
1280
|
-
- **job:** `<key>` (required)
|
|
1281
|
-
|
|
1282
|
-
**Flags:**
|
|
1283
|
-
|
|
1284
|
-
| Flag | Type | Required | Description |
|
|
1285
|
-
|------|------|----------|-------------|
|
|
1286
|
-
| `--variables` | string | | JSON variables |
|
|
1287
|
-
|
|
1288
|
-
---
|
|
1289
|
-
|
|
1290
|
-
#### `fail`
|
|
1291
|
-
|
|
1292
|
-
Mark a job as failed with optional error message and retry count
|
|
1293
|
-
|
|
1294
|
-
**Resources:** job
|
|
1295
|
-
|
|
1296
|
-
**Positional arguments:**
|
|
1297
|
-
|
|
1298
|
-
- **job:** `<key>` (required)
|
|
1299
|
-
|
|
1300
|
-
**Flags:**
|
|
1301
|
-
|
|
1302
|
-
| Flag | Type | Required | Description |
|
|
1303
|
-
|------|------|----------|-------------|
|
|
1304
|
-
| `--retries` | string | | Remaining retries |
|
|
1305
|
-
| `--errorMessage` | string | | Error message |
|
|
1306
|
-
|
|
1307
|
-
---
|
|
1308
|
-
|
|
1309
|
-
#### `update`
|
|
1310
|
-
|
|
1311
|
-
Update the retries or timeout of a job. At least one of --retries or --timeout must be provided.
|
|
1312
|
-
|
|
1313
|
-
**Resources:** job
|
|
1314
|
-
|
|
1315
|
-
**Positional arguments:**
|
|
1316
|
-
|
|
1317
|
-
- **job:** `<key>` (required)
|
|
1318
|
-
|
|
1319
|
-
**Flags:**
|
|
1320
|
-
|
|
1321
|
-
| Flag | Type | Required | Description |
|
|
1322
|
-
|------|------|----------|-------------|
|
|
1323
|
-
| `--retries` | string | | New number of retries for the job |
|
|
1324
|
-
| `--timeout` | string | | New job timeout in milliseconds |
|
|
1325
|
-
| `--operationReference` | string | | Optional operation reference (long integer) |
|
|
1326
|
-
|
|
1327
|
-
**Examples:**
|
|
1328
|
-
|
|
1329
|
-
```bash
|
|
1330
|
-
c8ctl update job 12345 --retries 3 # Set the retry count for a job
|
|
1331
|
-
c8ctl update job 12345 --timeout 60000 # Set the job timeout to 60 seconds
|
|
1332
|
-
```
|
|
1333
|
-
|
|
1334
|
-
---
|
|
1335
|
-
|
|
1336
|
-
#### `activate`
|
|
1337
|
-
|
|
1338
|
-
Activate jobs of a specific type for processing
|
|
1339
|
-
|
|
1340
|
-
**Resources:** jobs
|
|
1341
|
-
|
|
1342
|
-
**Positional arguments:**
|
|
1343
|
-
|
|
1344
|
-
- **jobs:** `<type>` (required)
|
|
1345
|
-
|
|
1346
|
-
**Flags:**
|
|
1347
|
-
|
|
1348
|
-
| Flag | Type | Required | Description |
|
|
1349
|
-
|------|------|----------|-------------|
|
|
1350
|
-
| `--maxJobsToActivate` | string | | Maximum number of jobs to activate |
|
|
1351
|
-
| `--timeout` | string | | Job timeout in milliseconds |
|
|
1352
|
-
| `--worker` | string | | Worker name |
|
|
1353
|
-
| `--customHeaders` | boolean | | Include custom headers in output |
|
|
1354
|
-
| `--fetchVariable` | string | | Comma-separated variable names to fetch from the server and include in output |
|
|
1355
|
-
|
|
1356
|
-
---
|
|
1357
|
-
|
|
1358
|
-
#### `resolve`
|
|
1359
|
-
|
|
1360
|
-
Resolve an incident (marks resolved, allows process to continue)
|
|
1361
|
-
|
|
1362
|
-
**Resources:** inc (incident)
|
|
1363
|
-
|
|
1364
|
-
**Positional arguments:**
|
|
1365
|
-
|
|
1366
|
-
- **incident:** `<key>` (required)
|
|
1367
|
-
|
|
1368
|
-
---
|
|
1369
|
-
|
|
1370
|
-
#### `publish`
|
|
1371
|
-
|
|
1372
|
-
Publish a message for message correlation
|
|
1373
|
-
|
|
1374
|
-
**Resources:** msg (message)
|
|
1375
|
-
|
|
1376
|
-
**Positional arguments:**
|
|
1377
|
-
|
|
1378
|
-
- **message:** `<name>` (required)
|
|
1379
|
-
|
|
1380
|
-
**Flags:**
|
|
1381
|
-
|
|
1382
|
-
| Flag | Type | Required | Description |
|
|
1383
|
-
|------|------|----------|-------------|
|
|
1384
|
-
| `--correlationKey` | string | | Correlation key |
|
|
1385
|
-
| `--variables` | string | | JSON variables |
|
|
1386
|
-
| `--timeToLive` | string | | Time to live in milliseconds |
|
|
1387
|
-
|
|
1388
|
-
---
|
|
1389
|
-
|
|
1390
|
-
#### `correlate`
|
|
1391
|
-
|
|
1392
|
-
Correlate a message to a specific process instance
|
|
1393
|
-
|
|
1394
|
-
**Resources:** msg (message)
|
|
1395
|
-
|
|
1396
|
-
**Positional arguments:**
|
|
1397
|
-
|
|
1398
|
-
- **message:** `<name>` (required)
|
|
1399
|
-
|
|
1400
|
-
**Flags:**
|
|
1401
|
-
|
|
1402
|
-
| Flag | Type | Required | Description |
|
|
1403
|
-
|------|------|----------|-------------|
|
|
1404
|
-
| `--correlationKey` | string | Yes | Correlation key |
|
|
1405
|
-
| `--variables` | string | | JSON variables |
|
|
1406
|
-
| `--timeToLive` | string | | Time to live in milliseconds |
|
|
1407
|
-
|
|
1408
|
-
---
|
|
1409
|
-
|
|
1410
|
-
#### `set`
|
|
1411
|
-
|
|
1412
|
-
Set variables on an element instance (process instance or flow element scope). Variables are propagated to the outermost scope by default; use --local to restrict to the specified scope.
|
|
1413
|
-
|
|
1414
|
-
**Usage:** `c8ctl set variable <key>`
|
|
1415
|
-
|
|
1416
|
-
**Resources:** variable
|
|
1417
|
-
|
|
1418
|
-
**Positional arguments:**
|
|
1419
|
-
|
|
1420
|
-
- **variable:** `<key>` (required)
|
|
1421
|
-
|
|
1422
|
-
**Flags:**
|
|
1423
|
-
|
|
1424
|
-
| Flag | Type | Required | Description |
|
|
1425
|
-
|------|------|----------|-------------|
|
|
1426
|
-
| `--variables` | string | Yes | JSON object of variables to set (required) |
|
|
1427
|
-
| `--local` | boolean | | Set variables in local scope only (default: propagate to outermost scope) |
|
|
1428
|
-
|
|
1429
|
-
**Examples:**
|
|
1430
|
-
|
|
1431
|
-
```bash
|
|
1432
|
-
c8ctl set variable 2251799813685249 --variables='{"status":"approved"}' # Set variables on a process instance
|
|
1433
|
-
c8ctl set variable 2251799813685249 --variables='{"x":1}' --local # Set variables in local scope only
|
|
1434
|
-
```
|
|
1435
|
-
|
|
1436
|
-
---
|
|
1437
|
-
|
|
1438
|
-
#### `deploy`
|
|
1439
|
-
|
|
1440
|
-
Deploy files to Camunda (auto-discovers deployable files in directories). When deploying a directory that is inside a process application (a parent directory contains a .process-application marker), the entire application root is deployed. Explicit file paths are not expanded.
|
|
1441
|
-
|
|
1442
|
-
**Usage:** `c8ctl deploy [path...]`
|
|
1443
|
-
|
|
1444
|
-
**Flags:**
|
|
1445
|
-
|
|
1446
|
-
| Flag | Type | Required | Description |
|
|
1447
|
-
|------|------|----------|-------------|
|
|
1448
|
-
| `--force` | boolean | | Deploy any file type, ignoring the default extension allow-list |
|
|
1449
|
-
| `--extensions` | string | | Comma-separated list of additional file extensions to include when scanning directories (e.g. .md,.txt). Explicit file paths bypass the extension allow-list. |
|
|
1450
|
-
| `--all-extensions` | boolean | | Include all server-supported file extensions during directory discovery |
|
|
1451
|
-
|
|
1452
|
-
**Examples:**
|
|
1453
|
-
|
|
1454
|
-
```bash
|
|
1455
|
-
c8ctl deploy ./my-process.bpmn # Deploy a BPMN file
|
|
1456
|
-
c8ctl deploy # Deploy from current directory (detects process application root)
|
|
1457
|
-
```
|
|
1458
|
-
|
|
1459
|
-
---
|
|
1460
|
-
|
|
1461
|
-
#### `run`
|
|
1462
|
-
|
|
1463
|
-
Deploy and start a process instance from a BPMN file
|
|
1464
|
-
|
|
1465
|
-
**Usage:** `c8ctl run <path>`
|
|
1466
|
-
|
|
1467
|
-
**Flags:**
|
|
1468
|
-
|
|
1469
|
-
| Flag | Type | Required | Description |
|
|
1470
|
-
|------|------|----------|-------------|
|
|
1471
|
-
| `--variables` | string | | JSON variables |
|
|
1472
|
-
| `--force` | boolean | | Deploy any file type, ignoring the default extension allow-list |
|
|
1473
|
-
|
|
1474
|
-
**Examples:**
|
|
1475
|
-
|
|
1476
|
-
```bash
|
|
1477
|
-
c8ctl run ./my-process.bpmn # Deploy and start process
|
|
1478
|
-
```
|
|
1479
|
-
|
|
1480
|
-
---
|
|
1481
|
-
|
|
1482
|
-
#### `assign`
|
|
1483
|
-
|
|
1484
|
-
Assign a resource to a target (--to-user, --to-group, etc.)
|
|
1485
|
-
|
|
1486
|
-
**Usage:** `c8ctl assign <resource> <id>`
|
|
1487
|
-
|
|
1488
|
-
**Resources:** role, user, group, mapping-rule
|
|
1489
|
-
|
|
1490
|
-
**Positional arguments:**
|
|
1491
|
-
|
|
1492
|
-
- **role:** `<roleId>` (required)
|
|
1493
|
-
- **user:** `<username>` (required)
|
|
1494
|
-
- **group:** `<groupId>` (required)
|
|
1495
|
-
- **mapping-rule:** `<mappingRuleId>` (required)
|
|
1496
|
-
|
|
1497
|
-
**Flags:**
|
|
1498
|
-
|
|
1499
|
-
| Flag | Type | Required | Description |
|
|
1500
|
-
|------|------|----------|-------------|
|
|
1501
|
-
| `--to-user` | string | | Target user ID |
|
|
1502
|
-
| `--to-group` | string | | Target group ID |
|
|
1503
|
-
| `--to-tenant` | string | | Target tenant ID |
|
|
1504
|
-
| `--to-mapping-rule` | string | | Target mapping rule ID |
|
|
1505
|
-
|
|
1506
|
-
**Examples:**
|
|
1507
|
-
|
|
1508
|
-
```bash
|
|
1509
|
-
c8ctl assign role admin --to-user=john # Assign role to user
|
|
1510
|
-
```
|
|
1511
|
-
|
|
1512
|
-
---
|
|
1513
|
-
|
|
1514
|
-
#### `unassign`
|
|
1515
|
-
|
|
1516
|
-
Unassign a resource from a target (--from-user, --from-group, etc.)
|
|
1517
|
-
|
|
1518
|
-
**Usage:** `c8ctl unassign <resource> <id>`
|
|
1519
|
-
|
|
1520
|
-
**Resources:** role, user, group, mapping-rule
|
|
1521
|
-
|
|
1522
|
-
**Positional arguments:**
|
|
1523
|
-
|
|
1524
|
-
- **role:** `<roleId>` (required)
|
|
1525
|
-
- **user:** `<username>` (required)
|
|
1526
|
-
- **group:** `<groupId>` (required)
|
|
1527
|
-
- **mapping-rule:** `<mappingRuleId>` (required)
|
|
1528
|
-
|
|
1529
|
-
**Flags:**
|
|
1530
|
-
|
|
1531
|
-
| Flag | Type | Required | Description |
|
|
1532
|
-
|------|------|----------|-------------|
|
|
1533
|
-
| `--from-user` | string | | Source user ID |
|
|
1534
|
-
| `--from-group` | string | | Source group ID |
|
|
1535
|
-
| `--from-tenant` | string | | Source tenant ID |
|
|
1536
|
-
| `--from-mapping-rule` | string | | Source mapping rule ID |
|
|
1537
|
-
|
|
1538
|
-
**Examples:**
|
|
1539
|
-
|
|
1540
|
-
```bash
|
|
1541
|
-
c8ctl unassign role admin --from-user=john # Unassign role from user
|
|
1542
|
-
```
|
|
1543
|
-
|
|
1544
|
-
---
|
|
1545
|
-
|
|
1546
|
-
#### `watch`
|
|
1547
|
-
|
|
1548
|
-
Watch files for changes and auto-deploy
|
|
1549
|
-
|
|
1550
|
-
**Usage:** `c8ctl watch [path...]`
|
|
1551
|
-
|
|
1552
|
-
**Aliases:** `w`
|
|
1553
|
-
|
|
1554
|
-
**Flags:**
|
|
1555
|
-
|
|
1556
|
-
| Flag | Type | Required | Description |
|
|
1557
|
-
|------|------|----------|-------------|
|
|
1558
|
-
| `--force` | boolean | | Continue watching after all deployment errors |
|
|
1559
|
-
| `--extensions` | string | | Comma-separated list of additional file extensions to watch (merged with defaults, e.g. .md,.txt) |
|
|
1560
|
-
| `--all-extensions` | boolean | | Watch all server-supported file extensions |
|
|
1561
|
-
| `--process-application` | boolean | | Watch and deploy the entire process application (requires .process-application marker) |
|
|
1562
|
-
| `--pa` | boolean | | Alias for --process-application |
|
|
1563
|
-
|
|
1564
|
-
**Examples:**
|
|
1565
|
-
|
|
1566
|
-
```bash
|
|
1567
|
-
c8ctl watch ./src # Watch directory for changes
|
|
1568
|
-
```
|
|
1569
|
-
|
|
1570
|
-
---
|
|
1571
|
-
|
|
1572
|
-
#### `open`
|
|
1573
|
-
|
|
1574
|
-
Open Camunda web app in browser
|
|
1575
|
-
|
|
1576
|
-
**Usage:** `c8ctl open <app>`
|
|
1577
|
-
|
|
1578
|
-
**Resources:** operate, tasklist, modeler, optimize
|
|
1579
|
-
|
|
1580
|
-
**Examples:**
|
|
1581
|
-
|
|
1582
|
-
```bash
|
|
1583
|
-
c8ctl open operate # Open Camunda Operate in browser
|
|
1584
|
-
c8ctl open tasklist # Open Camunda Tasklist in browser
|
|
1585
|
-
c8ctl open operate --profile=prod # Open Operate using a specific profile
|
|
1586
|
-
```
|
|
1587
|
-
|
|
1588
|
-
---
|
|
1589
|
-
|
|
1590
|
-
#### `add`
|
|
1591
|
-
|
|
1592
|
-
Add a profile
|
|
1593
|
-
|
|
1594
|
-
**Resources:** profile
|
|
1595
|
-
|
|
1596
|
-
**Positional arguments:**
|
|
1597
|
-
|
|
1598
|
-
- **profile:** `<name>` (required)
|
|
1599
|
-
|
|
1600
|
-
**Flags:**
|
|
1601
|
-
|
|
1602
|
-
| Flag | Type | Required | Description |
|
|
1603
|
-
|------|------|----------|-------------|
|
|
1604
|
-
| `--baseUrl` | string | | Cluster base URL |
|
|
1605
|
-
| `--clientId` | string | | OAuth client ID |
|
|
1606
|
-
| `--clientSecret` | string | | OAuth client secret |
|
|
1607
|
-
| `--audience` | string | | OAuth audience |
|
|
1608
|
-
| `--oAuthUrl` | string | | OAuth token URL |
|
|
1609
|
-
| `--scope` | string | | OAuth scope (space-separated) |
|
|
1610
|
-
| `--defaultTenantId` | string | | Default tenant ID |
|
|
1611
|
-
| `--username` | string | | Basic auth username |
|
|
1612
|
-
| `--password` | string | | Basic auth password |
|
|
1613
|
-
| `--from-file` | string | | Import from .env file |
|
|
1614
|
-
| `--from-env` | boolean | | Import from environment variables |
|
|
1615
|
-
|
|
1616
|
-
---
|
|
1617
|
-
|
|
1618
|
-
#### `remove`
|
|
1619
|
-
|
|
1620
|
-
Remove a profile (alias: rm)
|
|
1621
|
-
|
|
1622
|
-
**Usage:** `c8ctl remove profile <name>`
|
|
1623
|
-
|
|
1624
|
-
**Aliases:** `rm`
|
|
1625
|
-
|
|
1626
|
-
**Resources:** profile
|
|
1627
|
-
|
|
1628
|
-
**Positional arguments:**
|
|
1629
|
-
|
|
1630
|
-
- **profile:** `<name>` (optional)
|
|
1631
|
-
|
|
1632
|
-
**Flags:**
|
|
1633
|
-
|
|
1634
|
-
| Flag | Type | Required | Description |
|
|
1635
|
-
|------|------|----------|-------------|
|
|
1636
|
-
| `--none` | boolean | | Clear active profile |
|
|
1637
|
-
|
|
1638
|
-
---
|
|
1639
|
-
|
|
1640
|
-
#### `load`
|
|
1641
|
-
|
|
1642
|
-
Load a c8ctl plugin (npm registry or URL)
|
|
1643
|
-
|
|
1644
|
-
**Usage:** `c8ctl load plugin [name|--from url]`
|
|
1645
|
-
|
|
1646
|
-
**Resources:** plugin
|
|
1647
|
-
|
|
1648
|
-
**Positional arguments:**
|
|
1649
|
-
|
|
1650
|
-
- **plugin:** `<package>` (optional)
|
|
1651
|
-
|
|
1652
|
-
**Flags:**
|
|
1653
|
-
|
|
1654
|
-
| Flag | Type | Required | Description |
|
|
1655
|
-
|------|------|----------|-------------|
|
|
1656
|
-
| `--from` | string | | Load plugin from URL |
|
|
1657
|
-
|
|
1658
|
-
**Examples:**
|
|
1659
|
-
|
|
1660
|
-
```bash
|
|
1661
|
-
c8ctl load plugin my-plugin # Load plugin from npm registry
|
|
1662
|
-
c8ctl load plugin --from https://github.com/org/plugin # Load plugin from URL
|
|
1663
|
-
```
|
|
1664
|
-
|
|
1665
|
-
---
|
|
1666
|
-
|
|
1667
|
-
#### `unload`
|
|
1668
|
-
|
|
1669
|
-
Unload a c8ctl plugin (npm uninstall wrapper)
|
|
1670
|
-
|
|
1671
|
-
**Usage:** `c8ctl unload plugin <name>`
|
|
1672
|
-
|
|
1673
|
-
**Aliases:** `rm`
|
|
1674
|
-
|
|
1675
|
-
**Resources:** plugin
|
|
1676
|
-
|
|
1677
|
-
**Positional arguments:**
|
|
1678
|
-
|
|
1679
|
-
- **plugin:** `<package>` (required)
|
|
1680
|
-
|
|
1681
|
-
**Flags:**
|
|
1682
|
-
|
|
1683
|
-
| Flag | Type | Required | Description |
|
|
1684
|
-
|------|------|----------|-------------|
|
|
1685
|
-
| `--force` | boolean | | Force unload without confirmation |
|
|
1686
|
-
|
|
1687
|
-
---
|
|
1688
|
-
|
|
1689
|
-
#### `upgrade`
|
|
1690
|
-
|
|
1691
|
-
Upgrade a plugin (respects source type)
|
|
1692
|
-
|
|
1693
|
-
**Usage:** `c8ctl upgrade plugin <name> [version]`
|
|
1694
|
-
|
|
1695
|
-
**Resources:** plugin
|
|
1696
|
-
|
|
1697
|
-
**Positional arguments:**
|
|
1698
|
-
|
|
1699
|
-
- **plugin:** `<package>` (required), `<version>` (optional)
|
|
1700
|
-
|
|
1701
|
-
**Examples:**
|
|
1702
|
-
|
|
1703
|
-
```bash
|
|
1704
|
-
c8ctl upgrade plugin my-plugin # Upgrade plugin to latest version
|
|
1705
|
-
c8ctl upgrade plugin my-plugin 1.2.3 # Upgrade plugin to a specific version (source-aware)
|
|
1706
|
-
```
|
|
1707
|
-
|
|
1708
|
-
---
|
|
1709
|
-
|
|
1710
|
-
#### `downgrade`
|
|
1711
|
-
|
|
1712
|
-
Downgrade a plugin to a specific version
|
|
1713
|
-
|
|
1714
|
-
**Usage:** `c8ctl downgrade plugin <name> <version>`
|
|
1715
|
-
|
|
1716
|
-
**Resources:** plugin
|
|
1717
|
-
|
|
1718
|
-
**Positional arguments:**
|
|
1719
|
-
|
|
1720
|
-
- **plugin:** `<package>` (required), `<version>` (required)
|
|
1721
|
-
|
|
1722
|
-
---
|
|
1723
|
-
|
|
1724
|
-
#### `sync`
|
|
1725
|
-
|
|
1726
|
-
Synchronize plugins from registry (rebuild/reinstall)
|
|
1727
|
-
|
|
1728
|
-
**Resources:** plugin
|
|
1729
|
-
|
|
1730
|
-
**Examples:**
|
|
1731
|
-
|
|
1732
|
-
```bash
|
|
1733
|
-
c8ctl sync plugin # Synchronize plugins
|
|
1734
|
-
```
|
|
1735
|
-
|
|
1736
|
-
---
|
|
1737
|
-
|
|
1738
|
-
#### `init`
|
|
1739
|
-
|
|
1740
|
-
Create a new plugin from TypeScript template
|
|
1741
|
-
|
|
1742
|
-
**Resources:** plugin
|
|
1743
|
-
|
|
1744
|
-
**Positional arguments:**
|
|
1745
|
-
|
|
1746
|
-
- **plugin:** `<name>` (optional)
|
|
1747
|
-
|
|
1748
|
-
**Examples:**
|
|
1749
|
-
|
|
1750
|
-
```bash
|
|
1751
|
-
c8ctl init plugin my-plugin # Create new plugin from template (c8ctl-plugin-my-plugin)
|
|
1752
|
-
```
|
|
1753
|
-
|
|
1754
|
-
---
|
|
1755
|
-
|
|
1756
|
-
#### `doctor`
|
|
1757
|
-
|
|
1758
|
-
Surface plugin-loading collisions detected at startup (#363). Reports loaded plugins with their command names, and any first-registration-wins drops (plugin-name or command-name).
|
|
1759
|
-
|
|
1760
|
-
**Resources:** plugin
|
|
1761
|
-
|
|
1762
|
-
**Examples:**
|
|
1763
|
-
|
|
1764
|
-
```bash
|
|
1765
|
-
c8ctl doctor plugin # List loaded plugins and any load-time collisions
|
|
1766
|
-
c8ctl doctor plugin --json # Machine-readable doctor output
|
|
1767
|
-
```
|
|
1768
|
-
|
|
1769
|
-
---
|
|
1770
|
-
|
|
1771
|
-
#### `use`
|
|
1772
|
-
|
|
1773
|
-
Set active profile or tenant
|
|
1774
|
-
|
|
1775
|
-
**Usage:** `c8ctl use profile|tenant`
|
|
1776
|
-
|
|
1777
|
-
**Resources:** profile, tenant
|
|
1778
|
-
|
|
1779
|
-
**Positional arguments:**
|
|
1780
|
-
|
|
1781
|
-
- **profile:** `<name>` (optional)
|
|
1782
|
-
- **tenant:** `<tenantId>` (required)
|
|
1783
|
-
|
|
1784
|
-
**Flags:**
|
|
1785
|
-
|
|
1786
|
-
| Flag | Type | Required | Description |
|
|
1787
|
-
|------|------|----------|-------------|
|
|
1788
|
-
| `--none` | boolean | | Clear active profile/tenant |
|
|
1789
|
-
|
|
1790
|
-
**Examples:**
|
|
1791
|
-
|
|
1792
|
-
```bash
|
|
1793
|
-
c8ctl use profile prod # Set active profile
|
|
1794
|
-
```
|
|
1795
|
-
|
|
1796
|
-
---
|
|
1797
|
-
|
|
1798
|
-
#### `output`
|
|
1799
|
-
|
|
1800
|
-
Show or set output format
|
|
1801
|
-
|
|
1802
|
-
**Usage:** `c8ctl output [json|text]`
|
|
1803
|
-
|
|
1804
|
-
**Resources:** json, text
|
|
1805
|
-
|
|
1806
|
-
**Examples:**
|
|
1807
|
-
|
|
1808
|
-
```bash
|
|
1809
|
-
c8ctl output json # Switch to JSON output
|
|
1810
|
-
```
|
|
1811
|
-
|
|
1812
|
-
---
|
|
1813
|
-
|
|
1814
|
-
#### `completion`
|
|
1815
|
-
|
|
1816
|
-
Generate shell completion script
|
|
1817
|
-
|
|
1818
|
-
**Usage:** `c8ctl completion bash|zsh|fish|install`
|
|
1819
|
-
|
|
1820
|
-
**Resources:** bash, zsh, fish, install
|
|
1821
|
-
|
|
1822
|
-
**Resource-specific flags:**
|
|
1823
|
-
|
|
1824
|
-
<details>
|
|
1825
|
-
<summary><code>install</code></summary>
|
|
1826
|
-
|
|
1827
|
-
| Flag | Type | Required | Description |
|
|
1828
|
-
|------|------|----------|-------------|
|
|
1829
|
-
| `--shell` | string | | Shell to install completions for (bash, zsh, fish) |
|
|
1830
|
-
|
|
1831
|
-
</details>
|
|
1832
|
-
|
|
1833
|
-
**Examples:**
|
|
1834
|
-
|
|
1835
|
-
```bash
|
|
1836
|
-
c8ctl completion bash # Generate bash completion script
|
|
1837
|
-
c8ctl completion install # Auto-detect shell and install completions (auto-refreshes on upgrade)
|
|
1838
|
-
c8ctl completion install --shell zsh # Install completions for a specific shell
|
|
1839
|
-
```
|
|
1840
|
-
|
|
1841
|
-
---
|
|
1842
|
-
|
|
1843
|
-
#### `mcp-proxy`
|
|
1844
|
-
|
|
1845
|
-
Start a STDIO MCP proxy (bridges local MCP clients to remote Camunda 8)
|
|
1846
|
-
|
|
1847
|
-
**Usage:** `c8ctl mcp-proxy [mcp-path]`
|
|
1848
|
-
|
|
1849
|
-
---
|
|
1850
|
-
|
|
1851
|
-
#### `feedback`
|
|
1852
|
-
|
|
1853
|
-
Open the feedback page to report issues or request features
|
|
1854
|
-
|
|
1855
|
-
---
|
|
1856
|
-
|
|
1857
|
-
#### `help`
|
|
1858
|
-
|
|
1859
|
-
Show help (run 'c8ctl help \<command>' for details)
|
|
1860
|
-
|
|
1861
|
-
**Usage:** `c8ctl help [command]`
|
|
1862
|
-
|
|
1863
|
-
**Aliases:** `menu`
|
|
1864
|
-
|
|
1865
|
-
---
|
|
1866
|
-
|
|
1867
|
-
#### `which`
|
|
1868
|
-
|
|
1869
|
-
Show active profile or output mode
|
|
1870
|
-
|
|
1871
|
-
**Resources:** profile, output
|
|
1872
|
-
|
|
1873
|
-
**Examples:**
|
|
1874
|
-
|
|
1875
|
-
```bash
|
|
1876
|
-
c8ctl which profile # Show currently active profile
|
|
1877
|
-
c8ctl which output # Show current output mode
|
|
1878
|
-
```
|
|
197
|
+
For the complete reference of every command, flag, resource, and alias, see:
|
|
1879
198
|
|
|
199
|
+
- [`docs/command-reference.md`](docs/command-reference.md) in this repository, or
|
|
200
|
+
- the [c8ctl command reference](https://docs.camunda.io/docs/next/apis-tools/c8ctl/command-reference/) on docs.camunda.io.
|
|
1880
201
|
|
|
1881
202
|
<!-- command-reference:end -->
|
|
1882
203
|
|