@openwop/spec-artifacts 2.44.9 → 2.45.0

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/CORPUS-STAMP.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "_comment": "Provenance of @openwop/spec-artifacts (RFC 0168 §D.2). files: SHA-256 per file; the conformance suite compares the installed peer against dist/spec-artifacts.lock.json at start.",
3
3
  "package": "@openwop/spec-artifacts",
4
- "version": "2.44.9",
5
- "corpusTag": "v2.44.9",
4
+ "version": "2.45.0",
5
+ "corpusTag": "v2.45.0",
6
6
  "files": {
7
7
  "api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
8
8
  "api/asyncapi.yaml": "d5ecb9ee6114582be3b1f662c84bfac9ae96dae7bacb853e461168f70a8e1c7d",
9
9
  "api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
10
10
  "api/openapi.yaml": "69464bc0e1e71ef3b543a73d4fa4f67202343d2603c80af8033f6c3619ef1b30",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "57cf1d472f2bf9bf61bcd2239b9fd43277072d02a367d7a85725aea0e01300db",
13
- "api/v2/asyncapi.yaml": "40cb3ee66657a736b92c6f79241169e3669486058a65e143d99509d41d691d67",
14
- "api/v2/openapi.yaml": "08581315aa90da54f9a1c56f8b972a801eec99bda752d92c3ea2b16113b33a92",
12
+ "api/seams-v2.yaml": "92744ab58f83798c63b96700475bd55c201e7af14c3fd230c31ab0bbd86f6a60",
13
+ "api/v2/asyncapi.yaml": "4f00d2847c3ffb526af9c294f9e318b762f197e86cfd607934e677f12a1fc8bc",
14
+ "api/v2/openapi.yaml": "396fe10fc350cbae59190c4bd0e4cd24e18b16b4aac9db2f6c78e54344db4709",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
17
17
  "schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
@@ -204,13 +204,13 @@
204
204
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
205
205
  "spec/v1/alias-detectors.json": "0b2f28808ffe0b9d98a187775038c3406bb70919747a788a6e4f866e293ae6d3",
206
206
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
207
- "spec/v1/core-standard-manifest.json": "cdc802f553a24b2ea8288370a54a9cf9a88d65bb80ec33c258c8fe2d2737edd1",
207
+ "spec/v1/core-standard-manifest.json": "684dff535d3536673129ef594b97717cbc30fd066a6ea4d2c52d9fbbde69836d",
208
208
  "spec/v1/deprecations.json": "a3293072ea951857395d05f0437264e88965f1e9019ff61c55bacfa9c1aaa17c",
209
209
  "spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
210
210
  "spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
211
211
  "spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
212
212
  "spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
213
- "spec/v1/gaps.json": "7ba482a850d94e185f12b69929e35054d24b72131a997d0ef70d59c10b83f7eb",
213
+ "spec/v1/gaps.json": "5be0fd0a8055f5cac76346fc2a98c44553f73d3f28a39ce12dcf1979d55d1409",
214
214
  "spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
215
215
  "spec/v1/migrations.json": "4c50760be70cb644d02427bcaf5749606700edf4513f423903cf3b1d12f5c300",
216
216
  "spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
@@ -226,7 +226,7 @@
226
226
  "spec/v2/core/events.md": "c1a20e3aa6736119ea07aa2cf66faa808a1874d2cde4933033b65506d1742883",
227
227
  "spec/v2/core/execution.md": "8a0c9db1bbfb97c008ab9328b7333c1cc3318196e78bfbefb49e781bdf4f9d44",
228
228
  "spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
229
- "spec/v2/core/headers.md": "5cb1624fa63acc81992b6a6d842ec392cf7271aaf2f65d1f83c8c4fa286e6730",
229
+ "spec/v2/core/headers.md": "21d6c8220c3ac75b10e31c4cf6179abb539e2558af5006e40228d8c383ed5c92",
230
230
  "spec/v2/core/host-services.md": "18389b55286875922c26e13fbcd6c787fca2568f68b7e6f65176f1938404a218",
231
231
  "spec/v2/core/i18n.md": "882904b7d59f992ab1e5f7346167161a54cf665b8fee47e64a3862cf9133a580",
232
232
  "spec/v2/core/idempotency.md": "adbd317a6ebb57c2759c076297b31f67def9e391576bccd0bbea787b13e85872",
@@ -300,12 +300,12 @@
300
300
  "spec/v2/interop-map.schema.json": "0017c882df34ee215e2e0729de051490e09d43aac3d2c949285698ed51832f12",
301
301
  "spec/v2/migrations.json": "651954938a1e154c0b6f1e3dd6e105889d30de3bb65789f21de7f77a12869e9e",
302
302
  "spec/v2/migrations.schema.json": "b91ade6320ad1b1185c9495b9424f3aa63438ed8e412c45171c227d82c0afd86",
303
- "spec/v2/path-manifest.json": "17298a245c5da9a70aa7ab0b7f2db4277e06209d6fcdd7187a8b4cea179c08f3",
303
+ "spec/v2/path-manifest.json": "27c2307b84376b2f22bea4e2213fc7e33ef3bf8fd1d18039f7955edb00dc9c9a",
304
304
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
305
305
  "spec/v2/profiles.json": "180beb9ef2d161766fa23b2987e7e829851e3d316273147cf6a4a3f324befd6b",
306
- "spec/v2/release.json": "0219a1874302b4f3f2e8494d3c972cb649483838f53076e612c04bdf298c56dd",
306
+ "spec/v2/release.json": "89c093ee04d4aaceef641782e53fbc368e21123e244246f1727fa8ac3b151101",
307
307
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
308
- "spec/v2/surface-baseline.json": "88e9e211ec1c8d532c413b7407a15f15a3001099b9cda77f2bcc694028a72544"
308
+ "spec/v2/surface-baseline.json": "85c44cc57bfc9f8242e77dc27d7b28a1b239c694ef761cce4748ab15d6a3290f"
309
309
  },
310
- "corpusCommit": "16a175bf4ad0485d8c1eefe97a83bfbc8d1057bc"
310
+ "corpusCommit": "1ac68fd60069d0b9729312976de4946171281f87"
311
311
  }
package/api/seams-v2.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP conformance seams profile (openwop-conformance-seams-v2)
4
- version: 2.44.9
4
+ version: 2.45.0
5
5
  description: 'The OpenWOP conformance seams profile (`openwop-conformance-seams-v2`): test-only operations in their own
6
6
  path space, `/conformance/seams/…`. The profile is versioned and validated against the canonical v2 schemas with no tolerance
7
7
  path. It is not a capability: a host advertises the profile, never a `testSeams` flag.
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.44.9
4
+ version: 2.45.0
5
5
  description: 'OpenWOP v2 event streams over SSE. The run-events channel''s address is the OpenAPI path key, and the server
6
6
  pathname is empty (bare origin). `streamMode` is a stream mode from the closed set, or a comma-separated combination of
7
7
  them; `values` never combines. `hostEvents` has a default address, `/host/events`; a host MAY declare another under `heartbeat.deliveryChannel`.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 API
4
- version: 2.44.9
4
+ version: 2.45.0
5
5
  summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
6
6
  description: 'The OpenWOP v2 REST API. Paths are unversioned and served at the bare origin; a client selects a version with
7
7
  the `OpenWOP-Version` header from the host''s `protocolVersions[]`. Conformance seams and test-mode operations are not
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.44.9",
3
+ "version": "2.45.0",
4
4
  "description": "The OpenWOP machine-readable contract: api/ (OpenAPI, AsyncAPI, the seams profile), schemas/ (v1 and v2 JSON Schemas), the spec/v1 and spec/v2 registries (errors, event codemap, declaration, deprecations, migrations, gaps) and CORPUS-STAMP.json — published from the openwop/openwop corpus tag; the peer dependency @openwop/openwop-conformance digest-checks at start (RFC 0168 §D.2).",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -4,7 +4,7 @@
4
4
  "provenance": {
5
5
  "suite": {
6
6
  "package": "@openwop/openwop-conformance",
7
- "version": "2.44.9"
7
+ "version": "2.45.0"
8
8
  },
9
9
  "note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
10
10
  },
@@ -421,5 +421,5 @@
421
421
  "$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
422
422
  }
423
423
  ],
424
- "digest": "1e96109ecd6b08d7d78b71ac89d708894152acdb554c948d7f6c21babd84c444"
424
+ "digest": "acda1bad7ed1e81a7e8c09b495792c3304f13ac938b72576449bfc82abe9ab4a"
425
425
  }
package/spec/v1/gaps.json CHANGED
@@ -13127,8 +13127,8 @@
13127
13127
  "surface": "A browser preflights the new request header. A host whose `Access-Control-Allow-Headers` is an explicit list, and which serves browsers cross-origin, fails every request from a client that sends it. Found at the SDK 2.5.0 release: openwop-app's list omitted it (as it once omitted `OpenWOP-Version`), and so did MyndHyve's public pack reads (fixed in myndhyve#549). v2 says nothing about CORS.",
13128
13128
  "witness": "unclassified",
13129
13129
  "requirementId": null,
13130
- "disposition": "transferred",
13131
- "target": "openwop#1763",
13130
+ "disposition": "closed",
13131
+ "target": null,
13132
13132
  "sources": [
13133
13133
  {
13134
13134
  "file": "RFCS/registers/0219-client-version-header.gaps.md",
@@ -21,6 +21,10 @@ Standard headers keep their standard names: `Idempotency-Key`, `ETag`, `If-None-
21
21
  | `OpenWOP-Force-Engine-Version` | 1 | Test keys only. The server emits this run's events as if it ran the given engine version, which must be within `Capabilities.testing.forceEngineVersionRange`. Servers MUST reject it on production API keys with `403 force_engine_version_forbidden`. |
22
22
  | `OpenWOP-Version` | 55 | Selects one of the host's listed major.minor versions. Absent, `/.well-known/openwop` uses `preferredVersion` and every other unversioned path is v2; an unlisted value is 406 protocol_version_unsupported. |
23
23
 
24
+ ## Cross-origin preflight
25
+
26
+ A host that answers a CORS preflight for an operation by granting the requesting origin (`Access-Control-Allow-Origin`) MUST admit the operation's method in `Access-Control-Allow-Methods` and, in `Access-Control-Allow-Headers`, every request header `api/v2/openapi.yaml` declares for it, `Authorization` when it is authenticated and `Content-Type` when it takes a body, by listing them or by reflecting `Access-Control-Request-Headers`. A `*` does not admit `Authorization`. Which origins a host grants, and whether with credentials, is host policy. Admitting this table's union on every operation conforms.
27
+
24
28
  ## Response headers
25
29
 
26
30
  | Header | Operations | Meaning |
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "GENERATED by scripts/derive-v2-api.py (RFC 0172 §C.2 / RFC 0168 §C.2): the canonical v2 operations and channels; no seam or test-mode operation; every path unversioned. check-path-parity.mjs compares this to both API documents.",
2
+ "$comment": "GENERATED by scripts/derive-v2-api.py (RFC 0172 §C.2 / RFC 0168 §C.2): the canonical v2 operations and channels; no seam or test-mode operation; every path unversioned. check-path-parity.mjs compares this to both API documents. Per operation, requestHeaders / authenticated / requestBody are the facts headers.md §Cross-origin preflight derives the admitted set from.",
3
3
  "generatedFrom": [
4
4
  "api/v2/openapi.yaml",
5
5
  "api/v2/asyncapi.yaml"
@@ -9,277 +9,628 @@
9
9
  {
10
10
  "method": "GET",
11
11
  "path": "/.well-known/openwop",
12
- "operationId": "getCapabilities"
12
+ "operationId": "getCapabilities",
13
+ "requestHeaders": [
14
+ "If-None-Match",
15
+ "OpenWOP-Client-Version",
16
+ "OpenWOP-Version"
17
+ ],
18
+ "authenticated": false,
19
+ "requestBody": false
13
20
  },
14
21
  {
15
22
  "method": "GET",
16
23
  "path": "/agents",
17
- "operationId": "listAgents"
24
+ "operationId": "listAgents",
25
+ "requestHeaders": [
26
+ "OpenWOP-Client-Version",
27
+ "OpenWOP-Version"
28
+ ],
29
+ "authenticated": true,
30
+ "requestBody": false
18
31
  },
19
32
  {
20
33
  "method": "GET",
21
34
  "path": "/agents/org-chart",
22
- "operationId": "getAgentOrgChart"
35
+ "operationId": "getAgentOrgChart",
36
+ "requestHeaders": [
37
+ "OpenWOP-Client-Version",
38
+ "OpenWOP-Version"
39
+ ],
40
+ "authenticated": true,
41
+ "requestBody": false
23
42
  },
24
43
  {
25
44
  "method": "GET",
26
45
  "path": "/agents/org-chart/{departmentId}",
27
- "operationId": "getAgentOrgChartDepartment"
46
+ "operationId": "getAgentOrgChartDepartment",
47
+ "requestHeaders": [
48
+ "OpenWOP-Client-Version",
49
+ "OpenWOP-Version"
50
+ ],
51
+ "authenticated": true,
52
+ "requestBody": false
28
53
  },
29
54
  {
30
55
  "method": "GET",
31
56
  "path": "/agents/roster",
32
- "operationId": "listAgentRoster"
57
+ "operationId": "listAgentRoster",
58
+ "requestHeaders": [
59
+ "OpenWOP-Client-Version",
60
+ "OpenWOP-Version"
61
+ ],
62
+ "authenticated": true,
63
+ "requestBody": false
33
64
  },
34
65
  {
35
66
  "method": "GET",
36
67
  "path": "/agents/roster/{rosterId}",
37
- "operationId": "getAgentRosterEntry"
68
+ "operationId": "getAgentRosterEntry",
69
+ "requestHeaders": [
70
+ "OpenWOP-Client-Version",
71
+ "OpenWOP-Version"
72
+ ],
73
+ "authenticated": true,
74
+ "requestBody": false
38
75
  },
39
76
  {
40
77
  "method": "GET",
41
78
  "path": "/agents/{agentId}",
42
- "operationId": "getAgent"
79
+ "operationId": "getAgent",
80
+ "requestHeaders": [
81
+ "OpenWOP-Client-Version",
82
+ "OpenWOP-Version"
83
+ ],
84
+ "authenticated": true,
85
+ "requestBody": false
43
86
  },
44
87
  {
45
88
  "method": "GET",
46
89
  "path": "/agents/{agentId}/deployments",
47
- "operationId": "listAgentDeployments"
90
+ "operationId": "listAgentDeployments",
91
+ "requestHeaders": [
92
+ "OpenWOP-Client-Version",
93
+ "OpenWOP-Version"
94
+ ],
95
+ "authenticated": true,
96
+ "requestBody": false
48
97
  },
49
98
  {
50
99
  "method": "POST",
51
100
  "path": "/agents/{agentId}/deployments",
52
- "operationId": "transitionAgentDeployment"
101
+ "operationId": "transitionAgentDeployment",
102
+ "requestHeaders": [
103
+ "Idempotency-Key",
104
+ "OpenWOP-Client-Version",
105
+ "OpenWOP-Version"
106
+ ],
107
+ "authenticated": true,
108
+ "requestBody": true
53
109
  },
54
110
  {
55
111
  "method": "GET",
56
112
  "path": "/audit/verify",
57
- "operationId": "verifyAuditLog"
113
+ "operationId": "verifyAuditLog",
114
+ "requestHeaders": [
115
+ "OpenWOP-Client-Version",
116
+ "OpenWOP-Version"
117
+ ],
118
+ "authenticated": true,
119
+ "requestBody": false
58
120
  },
59
121
  {
60
122
  "method": "GET",
61
123
  "path": "/content/pages",
62
- "operationId": "listContentPages"
124
+ "operationId": "listContentPages",
125
+ "requestHeaders": [
126
+ "OpenWOP-Client-Version",
127
+ "OpenWOP-Version"
128
+ ],
129
+ "authenticated": true,
130
+ "requestBody": false
63
131
  },
64
132
  {
65
133
  "method": "POST",
66
134
  "path": "/content/pages",
67
- "operationId": "createContentPage"
135
+ "operationId": "createContentPage",
136
+ "requestHeaders": [
137
+ "OpenWOP-Client-Version",
138
+ "OpenWOP-Version"
139
+ ],
140
+ "authenticated": true,
141
+ "requestBody": true
68
142
  },
69
143
  {
70
144
  "method": "PUT",
71
145
  "path": "/content/pages/{pageId}/sections/{sectionId}",
72
- "operationId": "putContentSection"
146
+ "operationId": "putContentSection",
147
+ "requestHeaders": [
148
+ "OpenWOP-Client-Version",
149
+ "OpenWOP-Version"
150
+ ],
151
+ "authenticated": true,
152
+ "requestBody": true
73
153
  },
74
154
  {
75
155
  "method": "DELETE",
76
156
  "path": "/content/pages/{slug}",
77
- "operationId": "deleteContentPage"
157
+ "operationId": "deleteContentPage",
158
+ "requestHeaders": [
159
+ "OpenWOP-Client-Version",
160
+ "OpenWOP-Version"
161
+ ],
162
+ "authenticated": true,
163
+ "requestBody": false
78
164
  },
79
165
  {
80
166
  "method": "GET",
81
167
  "path": "/content/pages/{slug}",
82
- "operationId": "getContentPage"
168
+ "operationId": "getContentPage",
169
+ "requestHeaders": [
170
+ "Accept-Language",
171
+ "OpenWOP-Client-Version",
172
+ "OpenWOP-Version"
173
+ ],
174
+ "authenticated": false,
175
+ "requestBody": false
83
176
  },
84
177
  {
85
178
  "method": "GET",
86
179
  "path": "/content/settings",
87
- "operationId": "getContentSettings"
180
+ "operationId": "getContentSettings",
181
+ "requestHeaders": [
182
+ "OpenWOP-Client-Version",
183
+ "OpenWOP-Version"
184
+ ],
185
+ "authenticated": true,
186
+ "requestBody": false
88
187
  },
89
188
  {
90
189
  "method": "PUT",
91
190
  "path": "/content/settings",
92
- "operationId": "putContentSettings"
191
+ "operationId": "putContentSettings",
192
+ "requestHeaders": [
193
+ "OpenWOP-Client-Version",
194
+ "OpenWOP-Version"
195
+ ],
196
+ "authenticated": true,
197
+ "requestBody": true
93
198
  },
94
199
  {
95
200
  "method": "GET",
96
201
  "path": "/host/effect-seams",
97
- "operationId": "getEffectSeamManifest"
202
+ "operationId": "getEffectSeamManifest",
203
+ "requestHeaders": [
204
+ "OpenWOP-Client-Version",
205
+ "OpenWOP-Version"
206
+ ],
207
+ "authenticated": true,
208
+ "requestBody": false
98
209
  },
99
210
  {
100
211
  "method": "GET",
101
212
  "path": "/host/events",
102
- "operationId": "streamHostEvents"
213
+ "operationId": "streamHostEvents",
214
+ "requestHeaders": [
215
+ "OpenWOP-Client-Version",
216
+ "OpenWOP-Version"
217
+ ],
218
+ "authenticated": true,
219
+ "requestBody": false
103
220
  },
104
221
  {
105
222
  "method": "GET",
106
223
  "path": "/interrupts/{token}",
107
- "operationId": "inspectInterruptByToken"
224
+ "operationId": "inspectInterruptByToken",
225
+ "requestHeaders": [
226
+ "OpenWOP-Client-Version",
227
+ "OpenWOP-Version"
228
+ ],
229
+ "authenticated": false,
230
+ "requestBody": false
108
231
  },
109
232
  {
110
233
  "method": "POST",
111
234
  "path": "/interrupts/{token}",
112
- "operationId": "resolveInterruptByToken"
235
+ "operationId": "resolveInterruptByToken",
236
+ "requestHeaders": [
237
+ "Idempotency-Key",
238
+ "OpenWOP-Client-Version",
239
+ "OpenWOP-Version"
240
+ ],
241
+ "authenticated": false,
242
+ "requestBody": true
113
243
  },
114
244
  {
115
245
  "method": "GET",
116
246
  "path": "/openapi.json",
117
- "operationId": "getOpenApiSpec"
247
+ "operationId": "getOpenApiSpec",
248
+ "requestHeaders": [
249
+ "OpenWOP-Client-Version",
250
+ "OpenWOP-Version"
251
+ ],
252
+ "authenticated": false,
253
+ "requestBody": false
118
254
  },
119
255
  {
120
256
  "method": "GET",
121
257
  "path": "/prompts",
122
- "operationId": "listPromptTemplates"
258
+ "operationId": "listPromptTemplates",
259
+ "requestHeaders": [
260
+ "OpenWOP-Client-Version",
261
+ "OpenWOP-Version"
262
+ ],
263
+ "authenticated": true,
264
+ "requestBody": false
123
265
  },
124
266
  {
125
267
  "method": "POST",
126
268
  "path": "/prompts",
127
- "operationId": "createPromptTemplate"
269
+ "operationId": "createPromptTemplate",
270
+ "requestHeaders": [
271
+ "Idempotency-Key",
272
+ "OpenWOP-Client-Version",
273
+ "OpenWOP-Version"
274
+ ],
275
+ "authenticated": true,
276
+ "requestBody": true
128
277
  },
129
278
  {
130
279
  "method": "DELETE",
131
280
  "path": "/prompts/{templateId}",
132
- "operationId": "deletePromptTemplate"
281
+ "operationId": "deletePromptTemplate",
282
+ "requestHeaders": [
283
+ "OpenWOP-Client-Version",
284
+ "OpenWOP-Version"
285
+ ],
286
+ "authenticated": true,
287
+ "requestBody": false
133
288
  },
134
289
  {
135
290
  "method": "GET",
136
291
  "path": "/prompts/{templateId}",
137
- "operationId": "getPromptTemplate"
292
+ "operationId": "getPromptTemplate",
293
+ "requestHeaders": [
294
+ "OpenWOP-Client-Version",
295
+ "OpenWOP-Version"
296
+ ],
297
+ "authenticated": true,
298
+ "requestBody": false
138
299
  },
139
300
  {
140
301
  "method": "PUT",
141
302
  "path": "/prompts/{templateId}",
142
- "operationId": "updatePromptTemplate"
303
+ "operationId": "updatePromptTemplate",
304
+ "requestHeaders": [
305
+ "Idempotency-Key",
306
+ "OpenWOP-Client-Version",
307
+ "OpenWOP-Version"
308
+ ],
309
+ "authenticated": true,
310
+ "requestBody": true
143
311
  },
144
312
  {
145
313
  "method": "POST",
146
314
  "path": "/prompts:render",
147
- "operationId": "renderPromptTemplate"
315
+ "operationId": "renderPromptTemplate",
316
+ "requestHeaders": [
317
+ "OpenWOP-Client-Version",
318
+ "OpenWOP-Version"
319
+ ],
320
+ "authenticated": true,
321
+ "requestBody": true
148
322
  },
149
323
  {
150
324
  "method": "GET",
151
325
  "path": "/runs",
152
- "operationId": "listRuns"
326
+ "operationId": "listRuns",
327
+ "requestHeaders": [
328
+ "OpenWOP-Client-Version",
329
+ "OpenWOP-Version"
330
+ ],
331
+ "authenticated": true,
332
+ "requestBody": false
153
333
  },
154
334
  {
155
335
  "method": "POST",
156
336
  "path": "/runs",
157
- "operationId": "createRun"
337
+ "operationId": "createRun",
338
+ "requestHeaders": [
339
+ "Idempotency-Key",
340
+ "OpenWOP-Client-Version",
341
+ "OpenWOP-Dedup",
342
+ "OpenWOP-Force-Engine-Version",
343
+ "OpenWOP-Version"
344
+ ],
345
+ "authenticated": true,
346
+ "requestBody": true
158
347
  },
159
348
  {
160
349
  "method": "GET",
161
350
  "path": "/runs/{runId}",
162
- "operationId": "getRun"
351
+ "operationId": "getRun",
352
+ "requestHeaders": [
353
+ "If-None-Match",
354
+ "OpenWOP-Client-Version",
355
+ "OpenWOP-Version"
356
+ ],
357
+ "authenticated": true,
358
+ "requestBody": false
163
359
  },
164
360
  {
165
361
  "method": "GET",
166
362
  "path": "/runs/{runId}/ancestry",
167
- "operationId": "getRunAncestry"
363
+ "operationId": "getRunAncestry",
364
+ "requestHeaders": [
365
+ "OpenWOP-Client-Version",
366
+ "OpenWOP-Version"
367
+ ],
368
+ "authenticated": true,
369
+ "requestBody": false
168
370
  },
169
371
  {
170
372
  "method": "GET",
171
373
  "path": "/runs/{runId}/annotations",
172
- "operationId": "listAnnotations"
374
+ "operationId": "listAnnotations",
375
+ "requestHeaders": [
376
+ "OpenWOP-Client-Version",
377
+ "OpenWOP-Version"
378
+ ],
379
+ "authenticated": true,
380
+ "requestBody": false
173
381
  },
174
382
  {
175
383
  "method": "POST",
176
384
  "path": "/runs/{runId}/annotations",
177
- "operationId": "createAnnotation"
385
+ "operationId": "createAnnotation",
386
+ "requestHeaders": [
387
+ "Idempotency-Key",
388
+ "OpenWOP-Client-Version",
389
+ "OpenWOP-Version"
390
+ ],
391
+ "authenticated": true,
392
+ "requestBody": true
178
393
  },
179
394
  {
180
395
  "method": "GET",
181
396
  "path": "/runs/{runId}/artifacts/{artifactId}",
182
- "operationId": "getArtifact"
397
+ "operationId": "getArtifact",
398
+ "requestHeaders": [
399
+ "OpenWOP-Client-Version",
400
+ "OpenWOP-Version"
401
+ ],
402
+ "authenticated": true,
403
+ "requestBody": false
183
404
  },
184
405
  {
185
406
  "method": "POST",
186
407
  "path": "/runs/{runId}/cancel",
187
- "operationId": "cancelRun"
408
+ "operationId": "cancelRun",
409
+ "requestHeaders": [
410
+ "Idempotency-Key",
411
+ "OpenWOP-Client-Version",
412
+ "OpenWOP-Version"
413
+ ],
414
+ "authenticated": true,
415
+ "requestBody": true
188
416
  },
189
417
  {
190
418
  "method": "GET",
191
419
  "path": "/runs/{runId}/compensation",
192
- "operationId": "getRunCompensation"
420
+ "operationId": "getRunCompensation",
421
+ "requestHeaders": [
422
+ "OpenWOP-Client-Version",
423
+ "OpenWOP-Version"
424
+ ],
425
+ "authenticated": true,
426
+ "requestBody": false
193
427
  },
194
428
  {
195
429
  "method": "GET",
196
430
  "path": "/runs/{runId}/effects",
197
- "operationId": "getRunEffects"
431
+ "operationId": "getRunEffects",
432
+ "requestHeaders": [
433
+ "OpenWOP-Client-Version",
434
+ "OpenWOP-Version"
435
+ ],
436
+ "authenticated": true,
437
+ "requestBody": false
198
438
  },
199
439
  {
200
440
  "method": "GET",
201
441
  "path": "/runs/{runId}/eval-summary",
202
- "operationId": "getEvalSummary"
442
+ "operationId": "getEvalSummary",
443
+ "requestHeaders": [
444
+ "OpenWOP-Client-Version",
445
+ "OpenWOP-Version"
446
+ ],
447
+ "authenticated": true,
448
+ "requestBody": false
203
449
  },
204
450
  {
205
451
  "method": "GET",
206
452
  "path": "/runs/{runId}/events",
207
- "operationId": "streamRunEvents"
453
+ "operationId": "streamRunEvents",
454
+ "requestHeaders": [
455
+ "Last-Event-ID",
456
+ "OpenWOP-Client-Version",
457
+ "OpenWOP-Version"
458
+ ],
459
+ "authenticated": true,
460
+ "requestBody": false
208
461
  },
209
462
  {
210
463
  "method": "GET",
211
464
  "path": "/runs/{runId}/events/poll",
212
- "operationId": "pollRunEvents"
465
+ "operationId": "pollRunEvents",
466
+ "requestHeaders": [
467
+ "OpenWOP-Client-Version",
468
+ "OpenWOP-Version"
469
+ ],
470
+ "authenticated": true,
471
+ "requestBody": false
213
472
  },
214
473
  {
215
474
  "method": "POST",
216
475
  "path": "/runs/{runId}/interrupts/{nodeId}",
217
- "operationId": "resolveInterruptByRun"
476
+ "operationId": "resolveInterruptByRun",
477
+ "requestHeaders": [
478
+ "Idempotency-Key",
479
+ "OpenWOP-Client-Version",
480
+ "OpenWOP-Version"
481
+ ],
482
+ "authenticated": true,
483
+ "requestBody": true
218
484
  },
219
485
  {
220
486
  "method": "GET",
221
487
  "path": "/runs/{runId}:diff",
222
- "operationId": "diffRun"
488
+ "operationId": "diffRun",
489
+ "requestHeaders": [
490
+ "OpenWOP-Client-Version",
491
+ "OpenWOP-Version"
492
+ ],
493
+ "authenticated": true,
494
+ "requestBody": false
223
495
  },
224
496
  {
225
497
  "method": "POST",
226
498
  "path": "/runs/{runId}:fork",
227
- "operationId": "forkRun"
499
+ "operationId": "forkRun",
500
+ "requestHeaders": [
501
+ "Idempotency-Key",
502
+ "OpenWOP-Client-Version",
503
+ "OpenWOP-Version"
504
+ ],
505
+ "authenticated": true,
506
+ "requestBody": true
228
507
  },
229
508
  {
230
509
  "method": "POST",
231
510
  "path": "/runs/{runId}:pause",
232
- "operationId": "pauseRun"
511
+ "operationId": "pauseRun",
512
+ "requestHeaders": [
513
+ "Idempotency-Key",
514
+ "OpenWOP-Client-Version",
515
+ "OpenWOP-Version"
516
+ ],
517
+ "authenticated": true,
518
+ "requestBody": true
233
519
  },
234
520
  {
235
521
  "method": "POST",
236
522
  "path": "/runs/{runId}:resume",
237
- "operationId": "resumeRun"
523
+ "operationId": "resumeRun",
524
+ "requestHeaders": [
525
+ "Idempotency-Key",
526
+ "OpenWOP-Client-Version",
527
+ "OpenWOP-Version"
528
+ ],
529
+ "authenticated": true,
530
+ "requestBody": true
238
531
  },
239
532
  {
240
533
  "method": "POST",
241
534
  "path": "/runs:bulk-cancel",
242
- "operationId": "bulkCancelRuns"
535
+ "operationId": "bulkCancelRuns",
536
+ "requestHeaders": [
537
+ "Idempotency-Key",
538
+ "OpenWOP-Client-Version",
539
+ "OpenWOP-Version"
540
+ ],
541
+ "authenticated": true,
542
+ "requestBody": true
243
543
  },
244
544
  {
245
545
  "method": "GET",
246
546
  "path": "/tools",
247
- "operationId": "listTools"
547
+ "operationId": "listTools",
548
+ "requestHeaders": [
549
+ "OpenWOP-Client-Version",
550
+ "OpenWOP-Version"
551
+ ],
552
+ "authenticated": true,
553
+ "requestBody": false
248
554
  },
249
555
  {
250
556
  "method": "GET",
251
557
  "path": "/tools/{toolId}",
252
- "operationId": "getTool"
558
+ "operationId": "getTool",
559
+ "requestHeaders": [
560
+ "OpenWOP-Client-Version",
561
+ "OpenWOP-Version"
562
+ ],
563
+ "authenticated": true,
564
+ "requestBody": false
253
565
  },
254
566
  {
255
567
  "method": "POST",
256
568
  "path": "/trigger-subscriptions",
257
- "operationId": "createTriggerSubscription"
569
+ "operationId": "createTriggerSubscription",
570
+ "requestHeaders": [
571
+ "Idempotency-Key",
572
+ "OpenWOP-Client-Version",
573
+ "OpenWOP-Version"
574
+ ],
575
+ "authenticated": true,
576
+ "requestBody": true
258
577
  },
259
578
  {
260
579
  "method": "POST",
261
580
  "path": "/webhooks",
262
- "operationId": "registerWebhook"
581
+ "operationId": "registerWebhook",
582
+ "requestHeaders": [
583
+ "Idempotency-Key",
584
+ "OpenWOP-Client-Version",
585
+ "OpenWOP-Version"
586
+ ],
587
+ "authenticated": true,
588
+ "requestBody": true
263
589
  },
264
590
  {
265
591
  "method": "DELETE",
266
592
  "path": "/webhooks/{webhookId}",
267
- "operationId": "unregisterWebhook"
593
+ "operationId": "unregisterWebhook",
594
+ "requestHeaders": [
595
+ "OpenWOP-Client-Version",
596
+ "OpenWOP-Version"
597
+ ],
598
+ "authenticated": true,
599
+ "requestBody": false
268
600
  },
269
601
  {
270
602
  "method": "GET",
271
603
  "path": "/webhooks/{webhookId}/dead-letters",
272
- "operationId": "listWebhookDeadLetters"
604
+ "operationId": "listWebhookDeadLetters",
605
+ "requestHeaders": [
606
+ "OpenWOP-Client-Version",
607
+ "OpenWOP-Version"
608
+ ],
609
+ "authenticated": true,
610
+ "requestBody": false
273
611
  },
274
612
  {
275
613
  "method": "POST",
276
614
  "path": "/webhooks/{webhookId}/rotate-secret",
277
- "operationId": "rotateWebhookSecret"
615
+ "operationId": "rotateWebhookSecret",
616
+ "requestHeaders": [
617
+ "Idempotency-Key",
618
+ "OpenWOP-Client-Version",
619
+ "OpenWOP-Version"
620
+ ],
621
+ "authenticated": true,
622
+ "requestBody": true
278
623
  },
279
624
  {
280
625
  "method": "GET",
281
626
  "path": "/workflows/{workflowId}",
282
- "operationId": "getWorkflow"
627
+ "operationId": "getWorkflow",
628
+ "requestHeaders": [
629
+ "OpenWOP-Client-Version",
630
+ "OpenWOP-Version"
631
+ ],
632
+ "authenticated": true,
633
+ "requestBody": false
283
634
  }
284
635
  ],
285
636
  "channels": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$comment": "RFC 0172 §D.1 — the one release identity the v2 artifacts derive from. `version` is the next corpus tag `v<version>` (the publish workflow's coordinated-release tag pattern `v*`; RFC 0172's `openwop/v2.<minor>.<patch>` spelling is amended to this at its flip). api/v2/*.yaml info.version, the suite's 2.x version and @openwop/spec-artifacts read it. Bumped by the release PR that cuts the tag, never by hand elsewhere.",
3
- "version": "2.44.9",
4
- "corpusTag": "v2.44.9",
3
+ "version": "2.45.0",
4
+ "corpusTag": "v2.45.0",
5
5
  "updated": "2026-09-29"
6
6
  }
@@ -4,7 +4,7 @@
4
4
  "schemas/v2/**/*.json",
5
5
  "spec/v2/path-manifest.json"
6
6
  ],
7
- "release": "2.44.9",
7
+ "release": "2.45.0",
8
8
  "kinds": {
9
9
  "union": [
10
10
  "channel",