Status: Stable · v2.1.7 (2026-09-13) · RFC 0171 §C.1, RFC 0172 §A.3–§A.4. GENERATED by
scripts/derive-v2-api.pyfromapi/v2/openapi.yaml; do not edit.
Why this exists
RFC 0171 §C.1: every non-standard header is OpenWOP-<Name> and every header is declared in OpenAPI, so this table — generated from the same declaration — enumerates all of them. A header that is not in this table is not part of the protocol. Standard headers keep their standard names (Idempotency-Key, ETag, If-None-Match, Last-Event-ID, Retry-After, Authorization).
Request headers
| Header | Operations | Meaning |
|---|---|---|
Accept-Language | 1 | BCP-47 preference list; authoritative for locale selection (i18n.md). A malformed value MUST NOT 400. |
Idempotency-Key | 14 | Per-mutation idempotency token (see idempotency.md Layer 1). |
If-None-Match | 2 | RFC 0165 §C.2; runs.md §Snapshot. Standard conditional request against any resource that carries an ETag — the discovery document (capabilities.md §1) and the run snapshot (runs.md §Snapshot): a matching value MUST yield 304 Not Modified with no body, and the 304 carries OpenWOP-Version like every response (versioning.md §1.4). |
Last-Event-ID | 1 | Resume from sequence after this ID. |
OpenWOP-Dedup | 1 | When set, server cross-host claim system rejects duplicate (tenantId, scopeId) pairs with 409 Conflict. |
OpenWOP-Force-Engine-Version | 1 | Test-keys-only. When set, the server emits events for this run AS IF it |
OpenWOP-Version | 52 | RFC 0172 §A.3 — selects a listed major.minor; absent ⇒ the host's preferredVersion; unlisted ⇒ 406 protocol_version_unsupported. |
Response headers
| Header | Operations | Meaning |
|---|---|---|
Cache-Control | 2 | |
Content-Encoding | 1 | RFC 0115. Present only when the host negotiated compression |
Content-Language | 1 | The BCP-47 locale actually used (equals the response locale). |
ETag | 3 | Optional probe handle for mid-session capability change detection. Deprecated toward v2 (RFC 0165 §C.2). |
Location | 1 | Canonical URI of the new template. |
OpenWOP-Idempotent-Replay | 1 | Set when the response was served from the idempotency cache. |
OpenWOP-Version | 52 | RFC 0172 §A.4 — the contract that produced this response; MUST equal the one used. |
Retry-After | 1 | Seconds until the active claim is stale-eligible. |
Webhook delivery headers
Declared in webhooks.md, not in OpenAPI (the host is the client): OpenWOP-Webhook-Id, OpenWOP-Event-Type, OpenWOP-Timestamp, OpenWOP-Signature, OpenWOP-Signature-Algorithm (RFC 0165 §C.1). The X-openwop-* family is emitted beside them through the overlap and removed at v1 end-of-support (spec/v1/deprecations.json webhook-x-header-family).
Removed in v2
Capabilities-Etag (the standard ETag/If-None-Match pair applies to the discovery document), X-Dedup, X-Force-Engine-Version, X-Pack-Sha256, X-Pack-Signing-Method (renamed under the one scheme), X-openwop-* (webhooks), openwop-Webhook-Signature (SDK-only). Each has a spec/v1/deprecations.json row with a removal trigger.