@camunda8/orchestration-cluster-api 8.9.0-alpha.10 → 8.9.0-alpha.12

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/CHANGELOG.md CHANGED
@@ -1,9 +1,21 @@
1
- # [8.9.0-alpha.10](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.9...v8.9.0-alpha.10) (2026-03-05)
1
+ # [8.9.0-alpha.12](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.11...v8.9.0-alpha.12) (2026-03-08)
2
+
3
+
4
+ ### Features
5
+
6
+ * build from hardened contract in 8.9 ([03ef35a](https://github.com/camunda/orchestration-cluster-api-js/commit/03ef35a9cda1913bf11bd42b07ae95829d4118cc))
2
7
 
8
+ # [8.9.0-alpha.11](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.10...v8.9.0-alpha.11) (2026-03-06)
9
+
10
+ ### Features
11
+
12
+ - add per-operation retry config. New tuning for backpressure ([9dd921a](https://github.com/camunda/orchestration-cluster-api-js/commit/9dd921a0eae67d56d0e8a7d6423ac7d8a3edd3b4))
13
+
14
+ # [8.9.0-alpha.10](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.9...v8.9.0-alpha.10) (2026-03-05)
3
15
 
4
16
  ### Features
5
17
 
6
- * tune backpressure ([b64c6f1](https://github.com/camunda/orchestration-cluster-api-js/commit/b64c6f14a5b4755881cb1c79c804a5cd8403145f))
18
+ - tune backpressure ([b64c6f1](https://github.com/camunda/orchestration-cluster-api-js/commit/b64c6f14a5b4755881cb1c79c804a5cd8403145f))
7
19
 
8
20
  # [8.9.0-alpha.9](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.8...v8.9.0-alpha.9) (2026-03-05)
9
21
 
package/README.md CHANGED
@@ -14,6 +14,7 @@ Type‑safe, promise‑based client for the Camunda 8 Orchestration Cluster REST
14
14
  - Immutable, deep‑frozen configuration accessible through a factory‑created client instance
15
15
  - Automatic body-level tenantId defaulting: if a request body supports an optional tenantId and you omit it, the SDK fills it from CAMUNDA_DEFAULT_TENANT_ID (path params are never auto-filled)
16
16
  - Automatic transient HTTP retry (429, 503, network) with exponential backoff + full jitter (configurable via CAMUNDA_SDK_HTTP_RETRY\*). Non-retryable 500s fail fast. Pluggable strategy surface (default uses p-retry when available, internal fallback otherwise).
17
+ - Per-method retry override: disable or customize retry policy on any individual API call without changing global settings
17
18
 
18
19
  ## Install
19
20
 
@@ -149,15 +150,61 @@ Behavior:
149
150
  - `strict` - fail on type mismatch or missing required fields
150
151
  - `fanatical` - fail on type mismatch, missing required fields, or unknown additional fields
151
152
 
153
+ ## Per-Method Retry Override
154
+
155
+ Every API method accepts an optional trailing `options` parameter that lets you override or disable the global retry policy for that single call.
156
+
157
+ ### Disable Retry for a Single Call
158
+
159
+ ```ts
160
+ // This call will not retry on transient errors
161
+ await camunda.completeJob({ jobKey }, { retry: false });
162
+ ```
163
+
164
+ ### Override Specific Retry Settings
165
+
166
+ Pass a partial `HttpRetryPolicy` to override individual fields. Unspecified fields inherit from the global configuration.
167
+
168
+ ```ts
169
+ import type { OperationOptions } from '@camunda8/orchestration-cluster-api';
170
+
171
+ // More aggressive retry for this operation only
172
+ await camunda.createProcessInstance(
173
+ { processDefinitionId: 'payment-process' },
174
+ { retry: { maxAttempts: 8, maxDelayMs: 5000 } }
175
+ );
176
+
177
+ // Minimal retry: single retry with short backoff
178
+ await camunda.getTopology({ retry: { maxAttempts: 2, baseDelayMs: 50 } });
179
+ ```
180
+
181
+ ### How It Works
182
+
183
+ | `options.retry` value | Behavior |
184
+ | --------------------- | -------------------------------------------------------------------- |
185
+ | omitted / `undefined` | Uses global policy (`CAMUNDA_SDK_HTTP_RETRY_*` env vars) |
186
+ | `false` | Disables retry entirely (single attempt, no backoff) |
187
+ | `{ maxAttempts: 5 }` | Merges with global policy — only the specified fields are overridden |
188
+
189
+ The `HttpRetryPolicy` fields available for override:
190
+
191
+ | Field | Type | Description |
192
+ | ------------- | -------- | --------------------------------------- |
193
+ | `maxAttempts` | `number` | Total attempts (initial + retries) |
194
+ | `baseDelayMs` | `number` | Base delay for exponential backoff (ms) |
195
+ | `maxDelayMs` | `number` | Maximum delay cap (ms) |
196
+
152
197
  ## Advanced HTTP Retry: Cockatiel Adapter (Optional)
153
198
 
154
- The SDK includes built‑in transient HTTP retry (429, 503, network errors) using a p‑retry based engine plus a fallback implementation. For advanced resilience patterns (circuit breakers, timeouts, custom classification, combining policies) you can integrate [cockatiel](https://github.com/connor4312/cockatiel).
199
+ For advanced resilience patterns beyond per-method overrides circuit breakers, timeouts, custom classification, combining policies you can integrate [cockatiel](https://github.com/connor4312/cockatiel).
200
+
201
+ > **Tip:** For most use cases, per-method retry override (above) is sufficient. Reach for Cockatiel when you need circuit breaking, hedging, or bulkhead controls.
155
202
 
156
203
  ### When To Use Cockatiel
157
204
 
158
- - You need different retry policies per operation (e.g. idempotent GET vs mutating POST)
159
205
  - You want circuit breaking, hedging, timeout, or bulkhead controls
160
206
  - You want to add custom classification (e.g. retry certain 5xx only on safe verbs)
207
+ - You need to compose multiple resilience policies together
161
208
 
162
209
  ### Disable Built‑In HTTP Retries
163
210
 
@@ -292,7 +339,7 @@ const policy = retry(classify, {
292
339
  - Keep SDK retries disabled to prevent duplicate layers.
293
340
  - SDK synthesizes `Error` objects with a `status` for retry-significant HTTP responses (429, 503, 500), enabling classification.
294
341
  - You can tag errors (e.g. assign `err.__opVerb`) in a wrapper if verb-level logic is needed.
295
- - Future improvement: an official `retryStrategy` injection hook—current approach is non-invasive.
342
+ - For per-operation retry customization without external dependencies, use the built-in [per-method retry override](#per-method-retry-override) instead.
296
343
 
297
344
  > Combine cockatiel retry with a circuit breaker, timeout, or bulkhead policy for more robust behavior in partial outages.
298
345