@camunda8/sdk 8.9.0-alpha.5 → 8.9.0-alpha.7

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/MAINTAINER.md ADDED
@@ -0,0 +1,205 @@
1
+ <h1 align="center">Maintainer Guide – Camunda 8 JavaScript SDK</h1>
2
+
3
+ Operational documentation for maintainers of `@camunda8/sdk`. End-user documentation lives in [README.md](README.md); contributor onboarding (forking, commit conventions, running tests locally) lives in [CONTRIBUTING.md](CONTRIBUTING.md).
4
+
5
+ This document focuses on **how CI works**, **how releases happen**, and **how to operate the branch model**.
6
+
7
+ ---
8
+
9
+ ## 1. Branch Model
10
+
11
+ | Branch | Type | npm dist-tag | Trigger |
12
+ | ----------------------------------- | ------------------- | ------------------------ | -------------------- |
13
+ | `main` | alpha pre-releases | `alpha` | merge to `main` |
14
+ | `stable/<major>.<minor>` (current) | stable releases | `latest` | merge to that branch |
15
+ | `stable/<major>.<minor>` (older) | maintenance | `<major>.<minor>-stable` | merge to that branch |
16
+
17
+ The "current" stable line is selected at release time by the GitHub repo variable `CAMUNDA_SDK_CURRENT_STABLE_MINOR` (e.g. `8.8`). The branch matching that value publishes to `latest`; every other `stable/*` branch publishes to its own maintenance dist-tag.
18
+
19
+ At time of writing, `stable/8.8` is the current stable line (publishes to `latest`) and `main` carries `8.9.0-alpha.*` (publishes to `alpha`).
20
+
21
+ The branch resolution logic lives in [release.config.js](release.config.js) (`stableMinorFromBranch`, `envCurrentStableMinor`, `dedupeBranches`). The logic mirrors `orchestration-cluster-api-js` so the two SDKs stay aligned.
22
+
23
+ ### Promoting a new stable line
24
+
25
+ When a new Camunda minor (e.g. `8.9`) is ready to be promoted to `latest`:
26
+
27
+ 1. Cut the branch from `main`:
28
+ ```bash
29
+ git checkout main
30
+ git checkout -b stable/8.9
31
+ git push -u origin stable/8.9
32
+ ```
33
+ 2. Update the GitHub **repository variable** (Settings → Secrets and variables → Actions → Variables) `CAMUNDA_SDK_CURRENT_STABLE_MINOR` from `8.8` to `8.9`.
34
+ 3. The next merge to `stable/8.9` will publish to npm dist-tag `latest`. The previous current line (`stable/8.8`) automatically falls back to maintenance dist-tag `8.8-stable` on its next release.
35
+ 4. Update [.github/workflows/integration-test-matrix-trigger.yaml](.github/workflows/integration-test-matrix-trigger.yaml) to add a daily compatibility-test trigger for the new branch (uncomment / duplicate the `trigger-stable-8-9` block).
36
+ 5. Update [.github/dependabot.yml](.github/dependabot.yml) `target-branch` entries if the previous stable line should be replaced as a dependabot target.
37
+
38
+ No git tag manipulation is required — semantic-release reads existing tags and computes the next version per branch independently.
39
+
40
+ ---
41
+
42
+ ## 2. CI Workflows
43
+
44
+ All workflows live under [.github/workflows/](.github/workflows/).
45
+
46
+ | Workflow | Trigger | Purpose |
47
+ | ----------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
48
+ | `ci.yml` | push to feature branches, all PRs | Fast feedback for contributors. Unit tests + 8.8 SM integration. Heavier 8.7 jobs are PR-only and gated by environment. |
49
+ | `release.yml` | push to `main` or `stable/**`, manual dispatch | Full integration suite **plus** semantic-release publish step. |
50
+ | `commitlint.yml` | PR | Enforces conventional commits. |
51
+ | `code-scanning.yml` | scheduled / push | CodeQL. |
52
+ | `backport.yml` | PR closed, `/backport` comment | Creates backport PRs (e.g. `main` → `stable/8.8`) via `korthout/backport-action`. |
53
+ | `integration-test-matrix.yml` | scheduled (02:00 UTC), manual dispatch | Cross-version client × server compatibility matrix. Runs **on a stable branch** and tests every released SDK version against every server version ≥ current minor. |
54
+ | `integration-test-matrix-trigger.yaml` | scheduled (02:00 UTC) | Fans out the matrix run to each active stable branch (uses `gh workflow run --ref stable/<x.y>`). |
55
+
56
+ ### CI vs. Release: why feature branches and `main`/`stable/**` are separated
57
+
58
+ `ci.yml` listens on `push` for everything **except** `main` and `stable/**`, plus all `pull_request` events. `release.yml` listens on `push` to `main` and `stable/**`. This avoids running the same jobs twice on the same SHA when a PR is merged.
59
+
60
+ The release workflow re-runs the same gating jobs as `ci.yml`, then layers on:
61
+
62
+ - `local_integration` (8.7 SM, requires `selfhosted` env + `DOCKER_PASSWORD`)
63
+ - `local_multitenancy_integration` (8.7 SM-MT, same)
64
+ - `saas_integration` (8.7 SaaS, requires `integration` env)
65
+ - `saas_integration_8_8` (8.8 SaaS, requires `integration-8.8` env)
66
+
67
+ All of those are **required** before the `tag-and-publish` job runs. There is no path that publishes to npm without the full integration suite passing.
68
+
69
+ ### SaaS concurrency
70
+
71
+ SaaS test clusters are shared across branches. To prevent a `main` release and a `stable/8.8` release from interleaving requests against the same cluster, each SaaS job declares a `concurrency` group keyed to its cluster (`saas-integration-8.7`, `saas-integration-8.8`) with `cancel-in-progress: false`. Concurrent triggers queue rather than abort.
72
+
73
+ ---
74
+
75
+ ## 3. Release Pipeline
76
+
77
+ Releases are produced by [semantic-release](https://github.com/semantic-release/semantic-release) inside the `tag-and-publish` job at the end of [release.yml](.github/workflows/release.yml). The job runs in the GitHub `publish` environment (any environment-level approval gates apply here).
78
+
79
+ ### What semantic-release does
80
+
81
+ 1. Reads commits since the last release tag on the current branch.
82
+ 2. Computes the next version from commit types (see [release.config.js](release.config.js) `releaseRules`).
83
+ 3. Updates `package.json`, generates `CHANGELOG.md`, commits with `chore(release): <version> [skip ci]`, tags `v<version>`.
84
+ 4. Publishes to npm with the dist-tag derived from the branch.
85
+ 5. Creates a GitHub Release with auto-generated notes.
86
+ 6. Posts a "Released in `<tag>`" comment on PRs included in the release.
87
+
88
+ ### Commit type → version bump
89
+
90
+ | Commit type | Bump | Notes |
91
+ | --------------- | ----- | ------------------------------------------------------ |
92
+ | `feat` | patch | Mutated semver: features within a minor cycle = patch |
93
+ | `fix` | patch | |
94
+ | `perf` | patch | |
95
+ | `revert` | patch | |
96
+ | `release` | patch | |
97
+ | `BREAKING CHANGE` footer | patch | Also a patch — bumps are tied to the Camunda server line, not breaking changes in the SDK itself |
98
+ | `server` | minor | Use when bumping to a new Camunda 8 minor (e.g. 8.8 → 8.9) |
99
+ | `server-major` | major | Use when bumping to a new Camunda 8 major |
100
+ | anything else (`chore`, `docs`, `test`, `ci`, `build`, `refactor`, `style`) | none | No release |
101
+
102
+ This mutated semver is intentional: the SDK's version tracks the Camunda 8 server minor line, not its own API surface. To force a release of accumulated `chore`-only work, push a commit (or empty commit) with type `release`.
103
+
104
+ ### npm authentication: Trusted Publishing (OIDC)
105
+
106
+ Publishing uses npm **Trusted Publishing** via GitHub Actions OIDC. Consequences:
107
+
108
+ - The workflow requests `id-token: write` and **does not** read `NPM_TOKEN`. The `NODE_AUTH_TOKEN=""` in front of the `npx semantic-release` invocation is deliberate — it ensures any stale token in the environment is ignored.
109
+ - `NPM_CONFIG_PROVENANCE: true` is set, so published tarballs include npm provenance attestations.
110
+ - For publishing to succeed, `@camunda8/sdk` must be configured on npmjs.com to **trust this repository and the `release.yml` workflow**.
111
+ - If publishing fails with auth errors (`ENEEDAUTH`, `E401`), check the npm Trusted Publishing configuration **before** introducing an `NPM_TOKEN` secret. Adding a token undermines the OIDC posture and should be a last resort.
112
+
113
+ ### Stable line dist-tag derivation at publish time
114
+
115
+ The `Export stable line config` step in `tag-and-publish` writes `CAMUNDA_SDK_CURRENT_STABLE_MINOR` from the repo variable into the job env. `release.config.js` then dynamically constructs the `branches` array based on the current branch (`GITHUB_REF_NAME`) and that env var. Effects:
116
+
117
+ - On `main`: only the `main` (alpha) branch entry is active.
118
+ - On `stable/<current>`: both `main` and `stable/<current>` (channel: `latest`) are present.
119
+ - On `stable/<other>`: a maintenance entry is appended for that branch (channel: `<x.y>-stable`).
120
+
121
+ A consequence: if you push to a `stable/*` branch **without** `CAMUNDA_SDK_CURRENT_STABLE_MINOR` being set correctly, semantic-release may either refuse to publish or publish to the wrong dist-tag. Always verify the repo variable before promoting a new stable line.
122
+
123
+ ### Documentation deployment
124
+
125
+ After a successful release on `main`, the same job builds TypeDoc output (`npm run docs`) and deploys it to the `gh-pages` branch via `JamesIves/github-pages-deploy-action`. Releases on `stable/**` do not redeploy docs.
126
+
127
+ ---
128
+
129
+ ## 4. Compatibility Matrix
130
+
131
+ [integration-test-matrix.yml](.github/workflows/integration-test-matrix.yml) runs nightly on each active stable branch (driven by `integration-test-matrix-trigger.yaml`). It:
132
+
133
+ 1. Derives the current minor from the **latest stable git tag** on the branch (intentionally not from `package.json`, which may already be at a pre-release version).
134
+ 2. Enumerates SDK client versions ≥ that minor from local git tags.
135
+ 3. Enumerates Camunda server versions ≥ that minor from `camunda/camunda` git tags via `git ls-remote` (no clone).
136
+ 4. Runs the full client × server matrix, with caching to avoid retesting known-good combinations.
137
+
138
+ Manual dispatch supports pinning a `client_version`, a `server_version`, and `skip_cache` to force a full re-run.
139
+
140
+ When promoting a new stable line, **add a trigger entry** in `integration-test-matrix-trigger.yaml` so the new branch is exercised nightly. Failure to do so means the new line silently loses compatibility coverage.
141
+
142
+ ---
143
+
144
+ ## 5. Hotfix / Maintenance Workflow
145
+
146
+ To ship a fix to a stable line:
147
+
148
+ 1. Land the fix on `main` via a normal PR (so `alpha` users get it immediately).
149
+ 2. Add the appropriate `backport-stable/<x.y>` label on the merged PR (or comment `/backport stable/<x.y>`). [backport.yml](.github/workflows/backport.yml) creates the backport PR automatically; conflicts are committed as draft commits per the `experimental.conflict_resolution` setting.
150
+ 3. Merge the backport PR to `stable/<x.y>`. The Release workflow then runs the full integration suite and publishes to npm.
151
+
152
+ Always land on `main` first unless the fix is genuinely stable-only (e.g. it touches code that no longer exists on `main`). Stable-only fixes should be opened directly against the `stable/<x.y>` branch.
153
+
154
+ ---
155
+
156
+ ## 6. Required Secrets and Environments
157
+
158
+ | Name | Scope | Used by |
159
+ | -------------------------------------------- | ------------------------------ | ---------------------------------------------- |
160
+ | `DOCKER_PASSWORD` | env: `selfhosted` | 8.7 self-managed integration jobs (login to `registry.camunda.cloud`) |
161
+ | `ZEEBE_*`, `CAMUNDA_*`, `CAMUNDA_CONSOLE_*` | env: `integration` | 8.7 SaaS integration |
162
+ | `ZEEBE_*`, `CAMUNDA_*`, `CAMUNDA_CONSOLE_*` | env: `integration-8.8` | 8.8 SaaS integration |
163
+ | (none — OIDC) | env: `publish` | npm publish via Trusted Publishing |
164
+ | `BACKPORT_ACTION_PAT` | repo | `backport.yml` (PAT with write access for cross-branch pushes) |
165
+ | `CAMUNDA_SDK_CURRENT_STABLE_MINOR` (variable, not secret) | repo | `release.yml` → `release.config.js` |
166
+
167
+ Fork PRs cannot read environment secrets, so the heavier jobs (`local_integration`, `local_multitenancy_integration`, both SaaS jobs) skip on fork PRs by virtue of the environment lookup failing or, in `ci.yml`, by an explicit `if: github.event_name == 'pull_request' && github.actor != 'dependabot[bot]'` guard plus the environment scoping. Fork contributors get unit tests + the public 8.8 docker stack.
168
+
169
+ ---
170
+
171
+ ## 7. Common Operational Tasks
172
+
173
+ ### Force a release with no eligible commits
174
+
175
+ Push an empty commit with type `release`:
176
+
177
+ ```bash
178
+ git commit --allow-empty -m "release: ship pending chore work"
179
+ git push
180
+ ```
181
+
182
+ ### Re-run a failed release
183
+
184
+ Re-run the `tag-and-publish` job from the Actions UI. semantic-release is idempotent: it will skip publishing if the version was already published, or resume from the next pending version.
185
+
186
+ ### Diagnose "wrong dist-tag" issues
187
+
188
+ 1. Check `CAMUNDA_SDK_CURRENT_STABLE_MINOR` in repo variables.
189
+ 2. Inspect the workflow log for the line `Export stable line config` to confirm the value reached the job.
190
+ 3. Confirm the branch you pushed to matches the configured current stable minor (or is `main`, or is an older stable line).
191
+
192
+ ### Diagnose "publish failed: no auth"
193
+
194
+ Do **not** add an `NPM_TOKEN` secret. Verify on npmjs.com that `@camunda8/sdk` lists this repo + `release.yml` as a Trusted Publisher.
195
+
196
+ ---
197
+
198
+ ## 8. Cross-references
199
+
200
+ - [CONTRIBUTING.md](CONTRIBUTING.md) — contributor-facing version of the branching/release summary
201
+ - [release.config.js](release.config.js) — semantic-release configuration (branches, dist-tags, releaseRules)
202
+ - [.github/workflows/release.yml](.github/workflows/release.yml) — full release pipeline
203
+ - [.github/workflows/ci.yml](.github/workflows/ci.yml) — PR / feature-branch CI
204
+ - [.github/workflows/integration-test-matrix.yml](.github/workflows/integration-test-matrix.yml) — nightly compatibility matrix
205
+ - [.github/workflows/backport.yml](.github/workflows/backport.yml) — automated backports
@@ -137,4 +137,150 @@ export declare class AdminApiClient {
137
137
  *
138
138
  */
139
139
  deleteMember(email: string): Promise<null>;
140
+ /**
141
+ *
142
+ * Get the egress IP ranges for Camunda SaaS. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetMeta) for more details.
143
+ * @throws {RESTError}
144
+ */
145
+ getIpRanges(): Promise<Dto.MetaDto>;
146
+ /**
147
+ *
148
+ * Update a cluster's name, description, or stage label. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpdateCluster) for more details.
149
+ * @param clusterUuid - The cluster UUID
150
+ * @param updateRequest - The fields to update
151
+ * @throws {RESTError}
152
+ */
153
+ updateCluster(clusterUuid: string, updateRequest: Dto.UpdateClusterBody): Promise<void>;
154
+ /**
155
+ *
156
+ * Upgrade a cluster to the latest available generation. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpgradeCluster) for more details.
157
+ * @param clusterUuid - The cluster UUID
158
+ * @throws {RESTError}
159
+ */
160
+ upgradeCluster(clusterUuid: string): Promise<Dto.GenerationUpgradeForClusterDto>;
161
+ /**
162
+ *
163
+ * Resume a suspended cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/Wake) for more details.
164
+ * @param clusterUuid - The cluster UUID
165
+ * @throws {RESTError}
166
+ */
167
+ wakeCluster(clusterUuid: string): Promise<void>;
168
+ /**
169
+ *
170
+ * Update the IP allowlist for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpdateIpAllowlist) for more details.
171
+ * @param clusterUuid - The cluster UUID
172
+ * @param ipallowlist - Array of IP allowlist entries
173
+ * @throws {RESTError}
174
+ */
175
+ updateIpAllowlist(clusterUuid: string, ipallowlist: Dto.IpAllowListEntry[]): Promise<void>;
176
+ /**
177
+ *
178
+ * Update a connector secret value. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpdateSecret) for more details.
179
+ * @param clusterUuid - The cluster UUID
180
+ * @param secretName - The name of the secret to update
181
+ * @param secretValue - The new secret value
182
+ * @throws {RESTError}
183
+ */
184
+ updateSecret(clusterUuid: string, secretName: string, secretValue: string): Promise<void>;
185
+ /**
186
+ *
187
+ * Activate Secure Connectivity for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/ActivateSecureConnectivity) for more details.
188
+ * @param clusterUuid - The cluster UUID
189
+ * @param request - The allowed principals and regions
190
+ * @throws {RESTError}
191
+ */
192
+ activateSecureConnectivity(clusterUuid: string, request: Dto.ActivateSecureConnectivityBody): Promise<void>;
193
+ /**
194
+ *
195
+ * Deactivate Secure Connectivity for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeactivateSecureConnectivity) for more details.
196
+ * @param clusterUuid - The cluster UUID
197
+ * @throws {RESTError}
198
+ */
199
+ deactivateSecureConnectivity(clusterUuid: string): Promise<void>;
200
+ /**
201
+ *
202
+ * Get the Secure Connectivity status for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetSecureConnectivityStatus) for more details.
203
+ * @param clusterUuid - The cluster UUID
204
+ * @throws {RESTError}
205
+ */
206
+ getSecureConnectivityStatus(clusterUuid: string): Promise<Dto.SecureConnectivityStatusResponse>;
207
+ /**
208
+ *
209
+ * Activate External Monitoring (BYOM) for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/ActivateMonitoring) for more details.
210
+ * @param clusterUuid - The cluster UUID
211
+ * @throws {RESTError}
212
+ */
213
+ activateMonitoring(clusterUuid: string): Promise<void>;
214
+ /**
215
+ *
216
+ * Deactivate External Monitoring (BYOM) for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeactivateMonitoring) for more details.
217
+ * @param clusterUuid - The cluster UUID
218
+ * @throws {RESTError}
219
+ */
220
+ deactivateMonitoring(clusterUuid: string): Promise<void>;
221
+ /**
222
+ *
223
+ * Get all External Monitoring clients for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetMonitoringClients) for more details.
224
+ * @param clusterUuid - The cluster UUID
225
+ * @throws {RESTError}
226
+ */
227
+ getMonitoringClients(clusterUuid: string): Promise<Dto.MonitoringClientsResponse>;
228
+ /**
229
+ *
230
+ * Create a new External Monitoring client for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/CreateMonitoringClient) for more details.
231
+ * @param clusterUuid - The cluster UUID
232
+ * @param username - The username for the monitoring client
233
+ * @throws {RESTError}
234
+ */
235
+ createMonitoringClient(clusterUuid: string, username: string): Promise<Dto.CreatedMonitoringClient>;
236
+ /**
237
+ *
238
+ * Rotate the password for an External Monitoring client. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/RotateMonitoringClientPassword) for more details.
239
+ * @param clusterUuid - The cluster UUID
240
+ * @param clientUuid - The monitoring client UUID
241
+ * @throws {RESTError}
242
+ */
243
+ rotateMonitoringClientPassword(clusterUuid: string, clientUuid: string): Promise<Dto.CreatedMonitoringClient>;
244
+ /**
245
+ *
246
+ * Delete an External Monitoring client. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeleteMonitoringClient) for more details.
247
+ * @param clusterUuid - The cluster UUID
248
+ * @param clientUuid - The monitoring client UUID
249
+ * @throws {RESTError}
250
+ */
251
+ deleteMonitoringClient(clusterUuid: string, clientUuid: string): Promise<void>;
252
+ /**
253
+ *
254
+ * Get all backups for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetBackups) for more details.
255
+ * @param clusterUuid - The cluster UUID
256
+ * @throws {RESTError}
257
+ */
258
+ getBackups(clusterUuid: string): Promise<Dto.Backup[]>;
259
+ /**
260
+ *
261
+ * Create a new backup for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/CreateBackup) for more details.
262
+ * @param clusterUuid - The cluster UUID
263
+ * @throws {RESTError}
264
+ */
265
+ createBackup(clusterUuid: string): Promise<Dto.Backup>;
266
+ /**
267
+ *
268
+ * Delete a backup. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeleteBackup) for more details.
269
+ * @param clusterUuid - The cluster UUID
270
+ * @param backupId - The backup ID
271
+ * @throws {RESTError}
272
+ */
273
+ deleteBackup(clusterUuid: string, backupId: string): Promise<Dto.Backup>;
274
+ /**
275
+ *
276
+ * Fetch all activity/audit events as JSON. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetJson) for more details.
277
+ * @throws {RESTError}
278
+ */
279
+ getActivityEvents(): Promise<Dto.AuditEvent[]>;
280
+ /**
281
+ *
282
+ * Fetch all activity/audit events as CSV. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetCsv) for more details.
283
+ * @throws {RESTError}
284
+ */
285
+ getActivityEventsCsv(): Promise<string>;
140
286
  }
@@ -276,6 +276,287 @@ class AdminApiClient {
276
276
  })
277
277
  .json();
278
278
  }
279
+ /**
280
+ *
281
+ * Get the egress IP ranges for Camunda SaaS. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetMeta) for more details.
282
+ * @throws {RESTError}
283
+ */
284
+ async getIpRanges() {
285
+ const headers = await this.getHeaders();
286
+ const rest = await this.rest;
287
+ return rest('meta/ip-ranges', {
288
+ headers,
289
+ }).json();
290
+ }
291
+ /**
292
+ *
293
+ * Update a cluster's name, description, or stage label. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpdateCluster) for more details.
294
+ * @param clusterUuid - The cluster UUID
295
+ * @param updateRequest - The fields to update
296
+ * @throws {RESTError}
297
+ */
298
+ async updateCluster(clusterUuid, updateRequest) {
299
+ const headers = await this.getHeaders();
300
+ const rest = await this.rest;
301
+ await rest.patch(`clusters/${clusterUuid}`, {
302
+ body: JSON.stringify(updateRequest),
303
+ headers,
304
+ });
305
+ }
306
+ /**
307
+ *
308
+ * Upgrade a cluster to the latest available generation. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpgradeCluster) for more details.
309
+ * @param clusterUuid - The cluster UUID
310
+ * @throws {RESTError}
311
+ */
312
+ async upgradeCluster(clusterUuid) {
313
+ const headers = await this.getHeaders();
314
+ const rest = await this.rest;
315
+ return rest
316
+ .put(`clusters/${clusterUuid}/upgrade`, {
317
+ headers,
318
+ })
319
+ .json();
320
+ }
321
+ /**
322
+ *
323
+ * Resume a suspended cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/Wake) for more details.
324
+ * @param clusterUuid - The cluster UUID
325
+ * @throws {RESTError}
326
+ */
327
+ async wakeCluster(clusterUuid) {
328
+ const headers = await this.getHeaders();
329
+ const rest = await this.rest;
330
+ await rest.put(`clusters/${clusterUuid}/wake`, {
331
+ headers,
332
+ });
333
+ }
334
+ /**
335
+ *
336
+ * Update the IP allowlist for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpdateIpAllowlist) for more details.
337
+ * @param clusterUuid - The cluster UUID
338
+ * @param ipallowlist - Array of IP allowlist entries
339
+ * @throws {RESTError}
340
+ */
341
+ async updateIpAllowlist(clusterUuid, ipallowlist) {
342
+ const headers = await this.getHeaders();
343
+ const rest = await this.rest;
344
+ await rest.put(`clusters/${clusterUuid}/ipallowlist`, {
345
+ body: JSON.stringify({ ipallowlist }),
346
+ headers,
347
+ });
348
+ }
349
+ /**
350
+ *
351
+ * Update a connector secret value. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/UpdateSecret) for more details.
352
+ * @param clusterUuid - The cluster UUID
353
+ * @param secretName - The name of the secret to update
354
+ * @param secretValue - The new secret value
355
+ * @throws {RESTError}
356
+ */
357
+ async updateSecret(clusterUuid, secretName, secretValue) {
358
+ const headers = await this.getHeaders();
359
+ const rest = await this.rest;
360
+ await rest.put(`clusters/${clusterUuid}/secrets/${secretName}`, {
361
+ body: JSON.stringify({ secretValue }),
362
+ headers,
363
+ });
364
+ }
365
+ /**
366
+ *
367
+ * Activate Secure Connectivity for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/ActivateSecureConnectivity) for more details.
368
+ * @param clusterUuid - The cluster UUID
369
+ * @param request - The allowed principals and regions
370
+ * @throws {RESTError}
371
+ */
372
+ async activateSecureConnectivity(clusterUuid, request) {
373
+ const headers = await this.getHeaders();
374
+ const rest = await this.rest;
375
+ await rest.post(`clusters/${clusterUuid}/secure-connectivity`, {
376
+ body: JSON.stringify(request),
377
+ headers,
378
+ });
379
+ }
380
+ /**
381
+ *
382
+ * Deactivate Secure Connectivity for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeactivateSecureConnectivity) for more details.
383
+ * @param clusterUuid - The cluster UUID
384
+ * @throws {RESTError}
385
+ */
386
+ async deactivateSecureConnectivity(clusterUuid) {
387
+ const headers = await this.getHeaders();
388
+ const rest = await this.rest;
389
+ await rest.delete(`clusters/${clusterUuid}/secure-connectivity`, {
390
+ headers,
391
+ });
392
+ }
393
+ /**
394
+ *
395
+ * Get the Secure Connectivity status for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetSecureConnectivityStatus) for more details.
396
+ * @param clusterUuid - The cluster UUID
397
+ * @throws {RESTError}
398
+ */
399
+ async getSecureConnectivityStatus(clusterUuid) {
400
+ const headers = await this.getHeaders();
401
+ const rest = await this.rest;
402
+ return rest(`clusters/${clusterUuid}/secure-connectivity`, {
403
+ headers,
404
+ }).json();
405
+ }
406
+ /**
407
+ *
408
+ * Activate External Monitoring (BYOM) for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/ActivateMonitoring) for more details.
409
+ * @param clusterUuid - The cluster UUID
410
+ * @throws {RESTError}
411
+ */
412
+ async activateMonitoring(clusterUuid) {
413
+ const headers = await this.getHeaders();
414
+ const rest = await this.rest;
415
+ await rest.post(`clusters/${clusterUuid}/monitoring`, {
416
+ headers,
417
+ });
418
+ }
419
+ /**
420
+ *
421
+ * Deactivate External Monitoring (BYOM) for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeactivateMonitoring) for more details.
422
+ * @param clusterUuid - The cluster UUID
423
+ * @throws {RESTError}
424
+ */
425
+ async deactivateMonitoring(clusterUuid) {
426
+ const headers = await this.getHeaders();
427
+ const rest = await this.rest;
428
+ await rest.delete(`clusters/${clusterUuid}/monitoring`, {
429
+ headers,
430
+ });
431
+ }
432
+ /**
433
+ *
434
+ * Get all External Monitoring clients for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetMonitoringClients) for more details.
435
+ * @param clusterUuid - The cluster UUID
436
+ * @throws {RESTError}
437
+ */
438
+ async getMonitoringClients(clusterUuid) {
439
+ const headers = await this.getHeaders();
440
+ const rest = await this.rest;
441
+ return rest(`clusters/${clusterUuid}/monitoring/clients`, {
442
+ headers,
443
+ }).json();
444
+ }
445
+ /**
446
+ *
447
+ * Create a new External Monitoring client for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/CreateMonitoringClient) for more details.
448
+ * @param clusterUuid - The cluster UUID
449
+ * @param username - The username for the monitoring client
450
+ * @throws {RESTError}
451
+ */
452
+ async createMonitoringClient(clusterUuid, username) {
453
+ const headers = await this.getHeaders();
454
+ const rest = await this.rest;
455
+ return rest
456
+ .post(`clusters/${clusterUuid}/monitoring/clients`, {
457
+ body: JSON.stringify({ username }),
458
+ headers,
459
+ })
460
+ .json();
461
+ }
462
+ /**
463
+ *
464
+ * Rotate the password for an External Monitoring client. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/RotateMonitoringClientPassword) for more details.
465
+ * @param clusterUuid - The cluster UUID
466
+ * @param clientUuid - The monitoring client UUID
467
+ * @throws {RESTError}
468
+ */
469
+ async rotateMonitoringClientPassword(clusterUuid, clientUuid) {
470
+ const headers = await this.getHeaders();
471
+ const rest = await this.rest;
472
+ return rest
473
+ .post(`clusters/${clusterUuid}/monitoring/clients/${clientUuid}/rotate`, {
474
+ headers,
475
+ })
476
+ .json();
477
+ }
478
+ /**
479
+ *
480
+ * Delete an External Monitoring client. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeleteMonitoringClient) for more details.
481
+ * @param clusterUuid - The cluster UUID
482
+ * @param clientUuid - The monitoring client UUID
483
+ * @throws {RESTError}
484
+ */
485
+ async deleteMonitoringClient(clusterUuid, clientUuid) {
486
+ const headers = await this.getHeaders();
487
+ const rest = await this.rest;
488
+ await rest.delete(`clusters/${clusterUuid}/monitoring/clients/${clientUuid}`, {
489
+ headers,
490
+ });
491
+ }
492
+ /**
493
+ *
494
+ * Get all backups for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetBackups) for more details.
495
+ * @param clusterUuid - The cluster UUID
496
+ * @throws {RESTError}
497
+ */
498
+ async getBackups(clusterUuid) {
499
+ const headers = await this.getHeaders();
500
+ const rest = await this.rest;
501
+ return rest(`clusters/${clusterUuid}/backups`, {
502
+ headers,
503
+ }).json();
504
+ }
505
+ /**
506
+ *
507
+ * Create a new backup for a cluster. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/CreateBackup) for more details.
508
+ * @param clusterUuid - The cluster UUID
509
+ * @throws {RESTError}
510
+ */
511
+ async createBackup(clusterUuid) {
512
+ const headers = await this.getHeaders();
513
+ const rest = await this.rest;
514
+ return rest
515
+ .post(`clusters/${clusterUuid}/backups`, {
516
+ headers,
517
+ })
518
+ .json();
519
+ }
520
+ /**
521
+ *
522
+ * Delete a backup. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/DeleteBackup) for more details.
523
+ * @param clusterUuid - The cluster UUID
524
+ * @param backupId - The backup ID
525
+ * @throws {RESTError}
526
+ */
527
+ async deleteBackup(clusterUuid, backupId) {
528
+ const headers = await this.getHeaders();
529
+ const rest = await this.rest;
530
+ return rest
531
+ .delete(`clusters/${clusterUuid}/backups/${backupId}`, {
532
+ headers,
533
+ })
534
+ .json();
535
+ }
536
+ /**
537
+ *
538
+ * Fetch all activity/audit events as JSON. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetJson) for more details.
539
+ * @throws {RESTError}
540
+ */
541
+ async getActivityEvents() {
542
+ const headers = await this.getHeaders();
543
+ const rest = await this.rest;
544
+ return rest('activity/json', {
545
+ headers,
546
+ }).json();
547
+ }
548
+ /**
549
+ *
550
+ * Fetch all activity/audit events as CSV. See [the API Documentation](https://console.cloud.camunda.io/customer-api/openapi/docs/#/default/GetCsv) for more details.
551
+ * @throws {RESTError}
552
+ */
553
+ async getActivityEventsCsv() {
554
+ const headers = await this.getHeaders();
555
+ const rest = await this.rest;
556
+ return rest('activity/csv', {
557
+ headers,
558
+ }).text();
559
+ }
279
560
  }
280
561
  exports.AdminApiClient = AdminApiClient;
281
562
  //# sourceMappingURL=AdminApiClient.js.map