@openwop/spec-artifacts 2.46.20 → 2.46.21

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.46.20",
5
- "corpusTag": "v2.46.20",
4
+ "version": "2.46.21",
5
+ "corpusTag": "v2.46.21",
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": "ac6de5303872664b78ff419c035915593e01599e02835e777a0123de1baeb398",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "14325981296aaf0ab2dcce8aa96527bd68935c1130bd9bf6103ee6b6c4df4f8e",
13
- "api/v2/asyncapi.yaml": "b5f5369bbb35a2c3c75ff6c4f6c9281e77b141dd1d21e9495fef670d72b74a5b",
14
- "api/v2/openapi.yaml": "3b17112c01e94987b0cef6a328cc9a6d3a0c0521bbafb14b1fc8abb4e10d9091",
12
+ "api/seams-v2.yaml": "804179658b0f947c68a735eb33b652dd045b93980ab58a6f266a8de17c22daad",
13
+ "api/v2/asyncapi.yaml": "b881e2ca9b6d4b1de799d1be704118cb10249dbf3b1ecdf0f25a585658cfa690",
14
+ "api/v2/openapi.yaml": "9bd1bd491b690b3b5d0a358b0ef8235d8ded11b040e1e12ce1d4cfb41c24374d",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "276fc1d51eb08e14e9127b9fd27761d7046ee33c12000f3a64a801322db8bf58",
17
17
  "schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
@@ -117,7 +117,7 @@
117
117
  "schemas/v2/artifact.schema.json": "85b9dc284d39b99d2a66fa8cbf47f2dd3d8526d3bd6cc411ad315b372de38975",
118
118
  "schemas/v2/audit-verify-result.schema.json": "14af8e9283510f0a40e48a2059c929ee44e0fc9fa3cc66a95bfbe90b17c48297",
119
119
  "schemas/v2/budget-policy.schema.json": "1de68095db0beb5c7a4be629de26e79f62ebbe748a88d46f36e768edfd1f0d68",
120
- "schemas/v2/capabilities.schema.json": "fe28a95bc36767b99cdf529fe7db47dce49c49c5635a724e552c728871c48b06",
120
+ "schemas/v2/capabilities.schema.json": "9d5b222dcd2003141b7f09e9b836744a1b63defc01bffea5d10c1da7747bc2d8",
121
121
  "schemas/v2/certification-bundle.schema.json": "5cfa7fb5247160333e33a58b60d42bcd4e5269d8391d6a112d301e14828892ed",
122
122
  "schemas/v2/channel-presence-payload.schema.json": "fc03df0c20cc12a25f7ee6a47503a4c5931d79fe3d5ff24815e8fd7c1bcb9a87",
123
123
  "schemas/v2/channel-written-payload.schema.json": "ccecff3c71a3275ad8db035ac0e04db25e6f8d23cf091ddbcd5a60d1be1cbb6b",
@@ -144,7 +144,7 @@
144
144
  "schemas/v2/envelopes/schema.request.schema.json": "be2c5f7aa881cdd252ccff47ac02193659e1393633a1541f4297383205d384a2",
145
145
  "schemas/v2/envelopes/schema.response.schema.json": "d049a081267c06c28879c331b147f3ed821b14ccfd93005c67aff64db0a8c68e",
146
146
  "schemas/v2/envelopes/ui.a2ui-surface.schema.json": "e92a2548ba65454c9e0a34f72ea6768d18f59e61fa5da7668d0b2d5baddaddc8",
147
- "schemas/v2/error-envelope.schema.json": "8ddb1d80330dfef17572a74dfe3a53e1a06411e4b0af6a6f1dd6e7e7461da987",
147
+ "schemas/v2/error-envelope.schema.json": "0b15d6a3a2baad6bf314a66a4a8da4756460574887b929b3b06cb23a6c02f0bd",
148
148
  "schemas/v2/eval-summary.schema.json": "d07f4d116c5410997a81d0bc5387545fb61933a6333c360a26ab8a71c749336b",
149
149
  "schemas/v2/export-bundle.schema.json": "bd28905a7729437ab7f2ad8bb33e13a371b2bf5605a7eb2962a0d246de312d69",
150
150
  "schemas/v2/form-content-pack-manifest.schema.json": "a1942a124e250a6e9fbdb6b811c5a125e78fbcbcaa46dfc71d0636f24710a339",
@@ -169,7 +169,11 @@
169
169
  "schemas/v2/prompt-pack-manifest.schema.json": "752407469475396ad250085437a6cc6bd56a017ac6d3e52196aecc65dda4e51a",
170
170
  "schemas/v2/prompt-ref.schema.json": "8288495bf353fbc158cef6525d16dd1dcd9373941d15ec072044f05d143355d0",
171
171
  "schemas/v2/prompt-template.schema.json": "63825b39807e4ee85d41b9ad296ff2a0dd7bd2076d91e76a6c15a337e3e3bb84",
172
- "schemas/v2/proposal.schema.json": "a5c582ce1e854e5fe10412ebed00e537961ee827bbaca506ca374b200a685992",
172
+ "schemas/v2/proposal-apply.schema.json": "eb187cfec8cf9a799d94463c34550fa84879e29bbc201a03b5d6ab58efb398d9",
173
+ "schemas/v2/proposal-list-response.schema.json": "1b5e78fc1e4256dbe6bc866487879deb8f7b9cc18f5bc875db3fde46d79bea02",
174
+ "schemas/v2/proposal-revise.schema.json": "065e75cccd01fcc619e63c25f2a1775adcc24b0467689dca42462ace6bfa1146",
175
+ "schemas/v2/proposal-submit.schema.json": "00fb91a4a76ebcee530295f5262b8b369ed024055cd29a47aa520db03a7fc6c9",
176
+ "schemas/v2/proposal.schema.json": "52a1e54cfce966a07e2588d5e323a4fa896470ccd3a3a21d2ed19d977d2922b7",
173
177
  "schemas/v2/registry-version-manifest.schema.json": "940cfd82511690cd6f2539e5676b185e7812628d0707c283fd7ffb33b6e54afd",
174
178
  "schemas/v2/residency.schema.json": "3fd23c9732beb140504e81560fc426eb6764d547e56da5fb92c5a5c7bf04db3a",
175
179
  "schemas/v2/run-ancestry-response.schema.json": "334c17f2062dea62726ca1d07b8be3f169cdc422af843c1def5fb317039814c9",
@@ -208,14 +212,14 @@
208
212
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
209
213
  "spec/v1/alias-detectors.json": "22444c22bb88c568339ef512553f9fc38146e22b566d11ab8608f655d688d19c",
210
214
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
211
- "spec/v1/core-standard-manifest.json": "d70cc792bd36812bfcec84c6a8b0d2cd096a3fbed19967afbc8f1dd1a7d26d87",
215
+ "spec/v1/core-standard-manifest.json": "6e33742deb9559c5d995750c0a13c7f83446ab8e74c6f2f2d728b107f929e053",
212
216
  "spec/v1/deprecations.json": "e723bc11d7272c71789ad1303bb7f21809a8a024abf57594f9d5c35dc199ece9",
213
217
  "spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
214
218
  "spec/v1/end-of-support.json": "35f0bf3b70fe78b16e2a2fd81a153fc27e703f6c16376c6fe7cdf1f4f2c4e6d4",
215
219
  "spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
216
220
  "spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
217
221
  "spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
218
- "spec/v1/gaps.json": "4655f3087d9917f3b6b7612af23c86a1b338c732a9c1a72ee4a705a1b4f4f7a9",
222
+ "spec/v1/gaps.json": "9db4f2d06006cbfa55773e3a1dce2b0418a8da94ede4bf6e2992e9f18eaac4d1",
219
223
  "spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
220
224
  "spec/v1/migrations.json": "4c50760be70cb644d02427bcaf5749606700edf4513f423903cf3b1d12f5c300",
221
225
  "spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
@@ -227,11 +231,11 @@
227
231
  "spec/v2/core/conformance.md": "3ca291e63bc70a6ef829ae8759ad0ded3741ea7aa507bbbdffc57de443ab2ae2",
228
232
  "spec/v2/core/connection-packs.md": "c80f95bd6a03698f35c72cdb2b46bd973f49203bbd786c26760e35fa86e6f23d",
229
233
  "spec/v2/core/conversation.md": "8d6abedf6af408a74577753bfca24719d318e2632e10b45ff5d63bdcf31a8aaa",
230
- "spec/v2/core/errors.md": "e48838701b86bbfe0ffee77b18a8ffc4e5f04724b4318507d9771da653f8da0f",
234
+ "spec/v2/core/errors.md": "e932dd663ec7434480038ca9cdbe8fe37f6e422350ce95574522af4006b8a356",
231
235
  "spec/v2/core/events.md": "c3dcece6f1b1aa43e1e01c5ece23b2df075a505d5f6c2f37de0801aeaa486b62",
232
236
  "spec/v2/core/execution.md": "4218dbb397534940f83ca5d46561f02bf8f3fdf68d2ae7fefe7f2eb2ed771103",
233
237
  "spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
234
- "spec/v2/core/headers.md": "f69fe81e4a3ad21879bb85948660c16860eb05bf152928c31aa4898f6d7d1887",
238
+ "spec/v2/core/headers.md": "dae37c2b3980099272e5b9581107c0410d6b23aac95ea6c5a0890c34f0e51c8f",
235
239
  "spec/v2/core/host-services.md": "a6b5af882cb1e5c992dddc53c4de06feb36eee01bd566614330041213b3ce657",
236
240
  "spec/v2/core/i18n.md": "882904b7d59f992ab1e5f7346167161a54cf665b8fee47e64a3862cf9133a580",
237
241
  "spec/v2/core/idempotency.md": "adbd317a6ebb57c2759c076297b31f67def9e391576bccd0bbea787b13e85872",
@@ -246,7 +250,7 @@
246
250
  "spec/v2/core/portability.md": "ab13a6ca43544b9a6a91edfb377ec680c768d14be841c84fb79125b231426891",
247
251
  "spec/v2/core/replay.md": "9e66e2029b65866187c0920428a8c5bf8ad1c2b39feefbd5c02f0e59909afc7d",
248
252
  "spec/v2/core/runs.md": "1c292c0ab4a3119aeff3a6e9b6e99cff69782df78c3872179f9f0661b6204f23",
249
- "spec/v2/core/security-defaults.md": "887d8c4bc592094e3b931c23f1c2175c18ebbd47528b074016f9d2091bc513b2",
253
+ "spec/v2/core/security-defaults.md": "d201fbcd964a624ab45a8bdb7ceca113c561df4c33e9017c2952dd8ef62919a4",
250
254
  "spec/v2/core/storage.md": "dc94b985847c1341c7a064f04a6010f0fdbe6c3ab3e555d4362878c81d764c18",
251
255
  "spec/v2/core/tool-catalog.md": "d16a9004418719c48301804aefa4d7ab6f41112a4ed83727f552aa1b92b418b0",
252
256
  "spec/v2/core/versioning.md": "348a6dc5bd3425efc0016bb6772d5d04ebf578b73eebcdfec6c2d82346a8577e",
@@ -257,7 +261,7 @@
257
261
  "spec/v2/declaration.json": "5ccdcf9865ca02022c01a551583e1f343a4b7c73fd228049f1be620858a60ad5",
258
262
  "spec/v2/declaration.schema.json": "ef951633e4070899f64828f5cf1b5f4870270a0360f81dbb49b5b4d6cd407550",
259
263
  "spec/v2/eos-override.json": "4c72d2f6a658943b01c1de1643cf294642091933af7832f38ee5495df684cb2d",
260
- "spec/v2/errors.json": "1f0e29455edbd22e28f67f221766209c3c55ac4987beb77993b5702dd7cae131",
264
+ "spec/v2/errors.json": "33f9b4e450c51dfb1046bb00b327ee88163fb53360b0b43bcd204061ec966a13",
261
265
  "spec/v2/errors.schema.json": "47404ad53e6147cf9017b813483712466573e419fb33e6c4b6c12d3e7deba1bc",
262
266
  "spec/v2/event-codemap.json": "37869a03cdfd8758b57e6f350641a6ebbd383231cebda51f5473ad85f94ab74c",
263
267
  "spec/v2/event-codemap.schema.json": "b173f2a9bcc0bf9b62a474ce3b91e1431d597e64fd1560fc58662cd8606eaf9c",
@@ -281,7 +285,7 @@
281
285
  "spec/v2/ext/sandbox-runtime-notes/README.md": "0d1290fb1e20b2e35c0b15051541ab6546e4e2a6f693b4f912cb3f7d6a65e92c",
282
286
  "spec/v2/ext/webResearch/README.md": "b675e6f6646128d781b661f754c2393eed86e5935d16c3a22df582a5ce025b9b",
283
287
  "spec/v2/facets/a2a.schema.json": "b68bf5e29e455e46c2ad7cfcccf5963730ec2310ff9db81884550d8df30fd6ef",
284
- "spec/v2/facets/agents.schema.json": "88fe144572c25e1b09b99fd83e2ad12b2611d4d7366b5d53c3a50d0310faad93",
288
+ "spec/v2/facets/agents.schema.json": "0eb1172ea140607cb46d164af8bf405b32f5b47aa54baac7844e2c4161290025",
285
289
  "spec/v2/facets/aiProviders.schema.json": "6e4327bcd48110686cc1adfd26ddd6fbbf4ff529c476dcc74eeff8c5ae9965ce",
286
290
  "spec/v2/facets/auditLogIntegrity.schema.json": "9a7f81320c8f940c6f4129bc7dd895a4063231c5458a717a08c2cbf9bb886c46",
287
291
  "spec/v2/facets/auth.schema.json": "7d98bc81a0f7d307460d039eebfebd21388091bfe1d538762583940f94c0bd2a",
@@ -303,20 +307,20 @@
303
307
  "spec/v2/facets/uiPlugins.schema.json": "1fd3f8440cfb6e4422553a7c4b5f091eb3e10a40da0d43e8b977a18929116758",
304
308
  "spec/v2/facets/webhooks.schema.json": "54b576f1d150e28e1642693d846ce471c118e9c521bdf3924185305fbd1d0de4",
305
309
  "spec/v2/facets/workflowChainPacks.schema.json": "ea625ce818fbeb746478f00f31f96ee9613d538e4409c258c1bfb517acdeaba9",
306
- "spec/v2/generated/error-codes.md": "eafb66f1632da783c9a0347a416ae32bcf322f41b9f8783375f579791e9cdcf0",
310
+ "spec/v2/generated/error-codes.md": "e8441e944d2a8856a9112c1de8175e5bfae8bb36b8f389dce9dfa838702c21b6",
307
311
  "spec/v2/harness-trust-anchors.json": "6007b92eae16a070fbc3777424efb0abfe865fda89d096963109b96282b91205",
308
312
  "spec/v2/harness-trust-anchors.schema.json": "372b5d92337c893d3449eff3f6bfd009ac09fdac285296d8bdbe0a08fff9e34c",
309
- "spec/v2/id-field-bindings.json": "aa3e7c3590a490a77286e3ae60c1ab7407e7d627e05f981c3e08f221af4bd5dc",
313
+ "spec/v2/id-field-bindings.json": "97e96b6c35c405d0408b5a877c5859714dbbf4507853de9aab381163371ac098",
310
314
  "spec/v2/interop-map.json": "02255dafe7eb55f61ca7f9ae7c21f079d1848a6756991343088975ac9d184b8d",
311
315
  "spec/v2/interop-map.schema.json": "0017c882df34ee215e2e0729de051490e09d43aac3d2c949285698ed51832f12",
312
316
  "spec/v2/migrations.json": "651954938a1e154c0b6f1e3dd6e105889d30de3bb65789f21de7f77a12869e9e",
313
317
  "spec/v2/migrations.schema.json": "b91ade6320ad1b1185c9495b9424f3aa63438ed8e412c45171c227d82c0afd86",
314
- "spec/v2/path-manifest.json": "7b5679a4dad98c80d855361d88a98c8a4e045af15e310862a05b285b815dc9fc",
318
+ "spec/v2/path-manifest.json": "20f598f56df460ad3ed50aba3d6bc2933ea16a3c96ce125da1c5dd6989d4155c",
315
319
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
316
320
  "spec/v2/profiles.json": "b382b261c7844798575f7c1b37c934f0da19846016a2337d883d4f5ef6e05479",
317
- "spec/v2/release.json": "a8b6d20a4ed90b21b4f9feb57a9c2ec5fdb13c74a74f857e5e3aec5ee8e75e40",
321
+ "spec/v2/release.json": "a777b332ad7a5ed3c721a42be6fd72b8cc30eaba7e1673d86f1249aca26772e0",
318
322
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
319
- "spec/v2/surface-baseline.json": "c5aee6bbf8011e11351a4f9e0aafaf444d60af55116c543f04b55b88878cdf83"
323
+ "spec/v2/surface-baseline.json": "ed538138c27c16b2d16618fe3cf96737e285f00f5b19710c61a89e33364d050d"
320
324
  },
321
- "corpusCommit": "3ed6fc93890b4d00c44aafc0fe3ce75a24b8dcc7"
325
+ "corpusCommit": "d2f718e938cc2f7e68ce050376e563749a5af995"
322
326
  }
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.46.20
4
+ version: 2.46.21
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.46.20
4
+ version: 2.46.21
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.46.20
4
+ version: 2.46.21
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
@@ -58,6 +58,8 @@ tags:
58
58
  description: 'Localized authored content: public delivery and tenant-scoped admin CRUD. Gated on `capabilities.content.supported`.'
59
59
  - name: host
60
60
  description: Host-capability resources, such as the agent workspace file store (gated on `capabilities.workspace.*`).
61
+ - name: proposals
62
+ description: Reviewable-learning proposals (RFC 0096, operations RFC 0249).
61
63
  - name: connections
62
64
  description: 'Connection-pack provider registry: the definitions a host resolves against and the registrations it refused.'
63
65
  paths:
@@ -3649,6 +3651,427 @@ paths:
3649
3651
  - webhooks:manage
3650
3652
  - OpenIdConnect:
3651
3653
  - webhooks:manage
3654
+ /proposals:
3655
+ get:
3656
+ tags:
3657
+ - proposals
3658
+ operationId: listProposals
3659
+ summary: List the caller's proposals
3660
+ description: 'Gated on `agents.proposals`: a host that does not advertise it answers `404 not_found` (`errors.md` §Unadvertised
3661
+ operations). A proposal another tenant owns is answered exactly as an id that does not exist. Scoped to the caller''s
3662
+ tenant and workspace.'
3663
+ parameters:
3664
+ - name: state
3665
+ in: query
3666
+ required: false
3667
+ schema:
3668
+ type: string
3669
+ enum:
3670
+ - draft
3671
+ - revised
3672
+ - applied
3673
+ - rejected
3674
+ - archived
3675
+ - name: kind
3676
+ in: query
3677
+ required: false
3678
+ schema:
3679
+ type: string
3680
+ enum:
3681
+ - agent-pack
3682
+ - workflow-chain-pack
3683
+ - prompt-template
3684
+ - automation
3685
+ - name: limit
3686
+ in: query
3687
+ required: false
3688
+ schema:
3689
+ type: integer
3690
+ minimum: 1
3691
+ - name: cursor
3692
+ in: query
3693
+ required: false
3694
+ schema:
3695
+ type: string
3696
+ minLength: 1
3697
+ maxLength: 2048
3698
+ - $ref: '#/components/parameters/OpenWOPVersion'
3699
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3700
+ responses:
3701
+ '401':
3702
+ $ref: '#/components/responses/Unauthenticated'
3703
+ '403':
3704
+ $ref: '#/components/responses/Forbidden'
3705
+ '404':
3706
+ $ref: '#/components/responses/NotFound'
3707
+ '200':
3708
+ description: One page of proposals.
3709
+ content:
3710
+ application/json:
3711
+ schema:
3712
+ $ref: ../../schemas/v2/proposal-list-response.schema.json
3713
+ headers:
3714
+ OpenWOP-Version:
3715
+ $ref: '#/components/headers/OpenWOPVersion'
3716
+ '400':
3717
+ $ref: '#/components/responses/ValidationError'
3718
+ security:
3719
+ - ApiKeyAuth:
3720
+ - proposals:read
3721
+ - OAuth2:
3722
+ - proposals:read
3723
+ - OpenIdConnect:
3724
+ - proposals:read
3725
+ post:
3726
+ tags:
3727
+ - proposals
3728
+ operationId: submitProposal
3729
+ summary: Submit a client-authored draft
3730
+ description: 'Gated on `agents.proposals`: a host that does not advertise it answers `404 not_found` (`errors.md` §Unadvertised
3731
+ operations). A proposal another tenant owns is answered exactly as an id that does not exist. Served only when `agents.proposals.clientDrafts`
3732
+ is `true`; otherwise `404 not_found`. The draft is held to every RFC 0096 rule, inertness first, with `provenance.sourceRunIds:
3733
+ []`. A `kind` outside `artifactKinds` is `400 validation_error` with `details.field: kind`.'
3734
+ parameters:
3735
+ - $ref: '#/components/parameters/IdempotencyKey'
3736
+ - $ref: '#/components/parameters/OpenWOPVersion'
3737
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3738
+ requestBody:
3739
+ required: true
3740
+ content:
3741
+ application/json:
3742
+ schema:
3743
+ $ref: ../../schemas/v2/proposal-submit.schema.json
3744
+ responses:
3745
+ '401':
3746
+ $ref: '#/components/responses/Unauthenticated'
3747
+ '403':
3748
+ $ref: '#/components/responses/Forbidden'
3749
+ '404':
3750
+ $ref: '#/components/responses/NotFound'
3751
+ '201':
3752
+ description: 'The draft, in `state: draft`.'
3753
+ content:
3754
+ application/json:
3755
+ schema:
3756
+ $ref: ../../schemas/v2/proposal.schema.json
3757
+ headers:
3758
+ OpenWOP-Version:
3759
+ $ref: '#/components/headers/OpenWOPVersion'
3760
+ '400':
3761
+ $ref: '#/components/responses/ValidationError'
3762
+ security:
3763
+ - ApiKeyAuth:
3764
+ - proposals:write
3765
+ - OAuth2:
3766
+ - proposals:write
3767
+ - OpenIdConnect:
3768
+ - proposals:write
3769
+ /proposals/{proposalId}:
3770
+ get:
3771
+ tags:
3772
+ - proposals
3773
+ operationId: getProposal
3774
+ summary: Read one proposal, including its inert artifact
3775
+ description: 'Gated on `agents.proposals`: a host that does not advertise it answers `404 not_found` (`errors.md` §Unadvertised
3776
+ operations). A proposal another tenant owns is answered exactly as an id that does not exist. Carries `artifactDigest`,
3777
+ the value `applyProposal` binds to.'
3778
+ parameters:
3779
+ - name: proposalId
3780
+ in: path
3781
+ required: true
3782
+ schema:
3783
+ type: string
3784
+ minLength: 1
3785
+ maxLength: 256
3786
+ description: The proposal. A proposal another tenant owns MUST be answered exactly as an unknown id (`404`).
3787
+ - $ref: '#/components/parameters/OpenWOPVersion'
3788
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3789
+ responses:
3790
+ '401':
3791
+ $ref: '#/components/responses/Unauthenticated'
3792
+ '403':
3793
+ $ref: '#/components/responses/Forbidden'
3794
+ '404':
3795
+ $ref: '#/components/responses/NotFound'
3796
+ '200':
3797
+ description: The proposal.
3798
+ content:
3799
+ application/json:
3800
+ schema:
3801
+ $ref: ../../schemas/v2/proposal.schema.json
3802
+ headers:
3803
+ OpenWOP-Version:
3804
+ $ref: '#/components/headers/OpenWOPVersion'
3805
+ security:
3806
+ - ApiKeyAuth:
3807
+ - proposals:read
3808
+ - OAuth2:
3809
+ - proposals:read
3810
+ - OpenIdConnect:
3811
+ - proposals:read
3812
+ patch:
3813
+ tags:
3814
+ - proposals
3815
+ operationId: reviseProposal
3816
+ summary: Revise a draft
3817
+ description: 'Gated on `agents.proposals`: a host that does not advertise it answers `404 not_found` (`errors.md` §Unadvertised
3818
+ operations). A proposal another tenant owns is answered exactly as an id that does not exist. Sets `state: revised`
3819
+ and MUST NOT activate. A terminal proposal (`applied`, `rejected`, `archived`) is refused `409 proposal_state_conflict`;
3820
+ a lost concurrent update `409 proposal_stale`.'
3821
+ parameters:
3822
+ - name: proposalId
3823
+ in: path
3824
+ required: true
3825
+ schema:
3826
+ type: string
3827
+ minLength: 1
3828
+ maxLength: 256
3829
+ description: The proposal. A proposal another tenant owns MUST be answered exactly as an unknown id (`404`).
3830
+ - $ref: '#/components/parameters/OpenWOPVersion'
3831
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3832
+ requestBody:
3833
+ required: true
3834
+ content:
3835
+ application/json:
3836
+ schema:
3837
+ $ref: ../../schemas/v2/proposal-revise.schema.json
3838
+ responses:
3839
+ '401':
3840
+ $ref: '#/components/responses/Unauthenticated'
3841
+ '403':
3842
+ $ref: '#/components/responses/Forbidden'
3843
+ '404':
3844
+ $ref: '#/components/responses/NotFound'
3845
+ '200':
3846
+ description: The revised proposal.
3847
+ content:
3848
+ application/json:
3849
+ schema:
3850
+ $ref: ../../schemas/v2/proposal.schema.json
3851
+ headers:
3852
+ OpenWOP-Version:
3853
+ $ref: '#/components/headers/OpenWOPVersion'
3854
+ '400':
3855
+ $ref: '#/components/responses/ValidationError'
3856
+ '409':
3857
+ description: '`proposal_state_conflict` (terminal) or `proposal_stale` (lost update).'
3858
+ content:
3859
+ application/json:
3860
+ schema:
3861
+ $ref: ../../schemas/v2/error-envelope.schema.json
3862
+ headers:
3863
+ OpenWOP-Version:
3864
+ $ref: '#/components/headers/OpenWOPVersion'
3865
+ security:
3866
+ - ApiKeyAuth:
3867
+ - proposals:write
3868
+ - OAuth2:
3869
+ - proposals:write
3870
+ - OpenIdConnect:
3871
+ - proposals:write
3872
+ delete:
3873
+ tags:
3874
+ - proposals
3875
+ operationId: archiveProposal
3876
+ summary: Archive a proposal (soft)
3877
+ description: 'Gated on `agents.proposals`: a host that does not advertise it answers `404 not_found` (`errors.md` §Unadvertised
3878
+ operations). A proposal another tenant owns is answered exactly as an id that does not exist. Sets `state: archived`,
3879
+ from `draft`, `revised` or `rejected`. On `applied` or `archived` it is refused `409 proposal_state_conflict`: archiving
3880
+ uninstalls nothing, so an applied proposal is never relabelled; remove an installed artifact through its own store.'
3881
+ parameters:
3882
+ - name: proposalId
3883
+ in: path
3884
+ required: true
3885
+ schema:
3886
+ type: string
3887
+ minLength: 1
3888
+ maxLength: 256
3889
+ description: The proposal. A proposal another tenant owns MUST be answered exactly as an unknown id (`404`).
3890
+ - $ref: '#/components/parameters/OpenWOPVersion'
3891
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3892
+ responses:
3893
+ '401':
3894
+ $ref: '#/components/responses/Unauthenticated'
3895
+ '403':
3896
+ $ref: '#/components/responses/Forbidden'
3897
+ '404':
3898
+ $ref: '#/components/responses/NotFound'
3899
+ '200':
3900
+ description: The archived proposal.
3901
+ content:
3902
+ application/json:
3903
+ schema:
3904
+ $ref: ../../schemas/v2/proposal.schema.json
3905
+ headers:
3906
+ OpenWOP-Version:
3907
+ $ref: '#/components/headers/OpenWOPVersion'
3908
+ '409':
3909
+ description: '`proposal_state_conflict`: applied or already archived.'
3910
+ content:
3911
+ application/json:
3912
+ schema:
3913
+ $ref: ../../schemas/v2/error-envelope.schema.json
3914
+ headers:
3915
+ OpenWOP-Version:
3916
+ $ref: '#/components/headers/OpenWOPVersion'
3917
+ security:
3918
+ - ApiKeyAuth:
3919
+ - proposals:write
3920
+ - OAuth2:
3921
+ - proposals:write
3922
+ - OpenIdConnect:
3923
+ - proposals:write
3924
+ /proposals/{proposalId}:apply:
3925
+ post:
3926
+ tags:
3927
+ - proposals
3928
+ operationId: applyProposal
3929
+ summary: Activate a proposal and install its artifact
3930
+ description: 'Gated on `agents.proposals`: a host that does not advertise it answers `404 not_found` (`errors.md` §Unadvertised
3931
+ operations). A proposal another tenant owns is answered exactly as an id that does not exist. Routes through `agents.proposals.activation`.
3932
+ Under `direct-rbac` the caller MUST hold `proposals:apply`; without it the host answers `403` with `error="insufficient_scope"`,
3933
+ installs nothing and leaves `state` unchanged. Under `approval-gate` the host answers `202 {runId}` for a gate run
3934
+ that suspends on an `approval` interrupt (`data.artifactType: "proposal"`), and installs only on `accept` (`interrupt.md`
3935
+ §Approval).
3936
+
3937
+
3938
+ The optional body binds the apply to the reviewed bytes: a sent `artifactDigest` that differs from the proposal''s
3939
+ MUST be refused `409 proposal_stale`, installing nothing; a host MAY require it (`400`, `details.field: artifactDigest`).
3940
+ On success `state` is `applied` and `activation.installedArtifact` names the v2 read that serves the installed artifact
3941
+ in the applying tenant; its body minus the kind''s host-owned fields MUST be RFC 8785 (JCS) equal to the last-persisted
3942
+ `artifact`. A store that refuses the install is `409 proposal_install_conflict` (`details.reason`); a terminal proposal
3943
+ `409 proposal_state_conflict`.'
3944
+ parameters:
3945
+ - name: proposalId
3946
+ in: path
3947
+ required: true
3948
+ schema:
3949
+ type: string
3950
+ minLength: 1
3951
+ maxLength: 256
3952
+ description: The proposal. A proposal another tenant owns MUST be answered exactly as an unknown id (`404`).
3953
+ - $ref: '#/components/parameters/IdempotencyKey'
3954
+ - $ref: '#/components/parameters/OpenWOPVersion'
3955
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3956
+ requestBody:
3957
+ required: false
3958
+ content:
3959
+ application/json:
3960
+ schema:
3961
+ $ref: ../../schemas/v2/proposal-apply.schema.json
3962
+ responses:
3963
+ '401':
3964
+ $ref: '#/components/responses/Unauthenticated'
3965
+ '403':
3966
+ $ref: '#/components/responses/Forbidden'
3967
+ '404':
3968
+ $ref: '#/components/responses/NotFound'
3969
+ '200':
3970
+ description: Applied; `activation.installedArtifact` is populated.
3971
+ content:
3972
+ application/json:
3973
+ schema:
3974
+ $ref: ../../schemas/v2/proposal.schema.json
3975
+ headers:
3976
+ OpenWOP-Version:
3977
+ $ref: '#/components/headers/OpenWOPVersion'
3978
+ '202':
3979
+ description: An approval-gate run was opened.
3980
+ content:
3981
+ application/json:
3982
+ schema:
3983
+ type: object
3984
+ additionalProperties: false
3985
+ required:
3986
+ - runId
3987
+ properties:
3988
+ runId:
3989
+ $ref: ../../schemas/v2/ids.schema.json#/$defs/runId
3990
+ headers:
3991
+ OpenWOP-Version:
3992
+ $ref: '#/components/headers/OpenWOPVersion'
3993
+ '400':
3994
+ $ref: '#/components/responses/ValidationError'
3995
+ '409':
3996
+ description: '`proposal_stale`, `proposal_state_conflict` or `proposal_install_conflict`.'
3997
+ content:
3998
+ application/json:
3999
+ schema:
4000
+ $ref: ../../schemas/v2/error-envelope.schema.json
4001
+ headers:
4002
+ OpenWOP-Version:
4003
+ $ref: '#/components/headers/OpenWOPVersion'
4004
+ security:
4005
+ - ApiKeyAuth:
4006
+ - proposals:apply
4007
+ - OAuth2:
4008
+ - proposals:apply
4009
+ - OpenIdConnect:
4010
+ - proposals:apply
4011
+ /proposals/{proposalId}:reject:
4012
+ post:
4013
+ tags:
4014
+ - proposals
4015
+ operationId: rejectProposal
4016
+ summary: Reject a proposal
4017
+ description: 'Gated on `agents.proposals`: a host that does not advertise it answers `404 not_found` (`errors.md` §Unadvertised
4018
+ operations). A proposal another tenant owns is answered exactly as an id that does not exist. Sets `state: rejected`.
4019
+ A terminal proposal is refused `409 proposal_state_conflict`.'
4020
+ parameters:
4021
+ - name: proposalId
4022
+ in: path
4023
+ required: true
4024
+ schema:
4025
+ type: string
4026
+ minLength: 1
4027
+ maxLength: 256
4028
+ description: The proposal. A proposal another tenant owns MUST be answered exactly as an unknown id (`404`).
4029
+ - $ref: '#/components/parameters/OpenWOPVersion'
4030
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
4031
+ requestBody:
4032
+ required: false
4033
+ content:
4034
+ application/json:
4035
+ schema:
4036
+ type: object
4037
+ additionalProperties: false
4038
+ properties:
4039
+ reason:
4040
+ type: string
4041
+ maxLength: 2048
4042
+ description: SR-1 redaction-safe.
4043
+ responses:
4044
+ '401':
4045
+ $ref: '#/components/responses/Unauthenticated'
4046
+ '403':
4047
+ $ref: '#/components/responses/Forbidden'
4048
+ '404':
4049
+ $ref: '#/components/responses/NotFound'
4050
+ '200':
4051
+ description: The rejected proposal.
4052
+ content:
4053
+ application/json:
4054
+ schema:
4055
+ $ref: ../../schemas/v2/proposal.schema.json
4056
+ headers:
4057
+ OpenWOP-Version:
4058
+ $ref: '#/components/headers/OpenWOPVersion'
4059
+ '409':
4060
+ description: '`proposal_state_conflict`.'
4061
+ content:
4062
+ application/json:
4063
+ schema:
4064
+ $ref: ../../schemas/v2/error-envelope.schema.json
4065
+ headers:
4066
+ OpenWOP-Version:
4067
+ $ref: '#/components/headers/OpenWOPVersion'
4068
+ security:
4069
+ - ApiKeyAuth:
4070
+ - proposals:write
4071
+ - OAuth2:
4072
+ - proposals:write
4073
+ - OpenIdConnect:
4074
+ - proposals:write
3652
4075
  components:
3653
4076
  securitySchemes:
3654
4077
  ApiKeyAuth:
@@ -3687,6 +4110,9 @@ components:
3687
4110
  content:read: Read authored content pages and locale settings
3688
4111
  content:write: Create, publish and translate authored content pages
3689
4112
  deploy:*: Drive an agent deployment state transition
4113
+ proposals:read: Read proposals (RFC 0249).
4114
+ proposals:write: Submit, revise, reject and archive proposals (RFC 0249).
4115
+ proposals:apply: Activate a proposal and install its artifact (RFC 0249).
3690
4116
  authorizationCode:
3691
4117
  authorizationUrl: https://issuer.example/oauth2/authorize
3692
4118
  tokenUrl: https://issuer.example/oauth2/token
@@ -3711,6 +4137,9 @@ components:
3711
4137
  content:read: Read authored content pages and locale settings
3712
4138
  content:write: Create, publish and translate authored content pages
3713
4139
  deploy:*: Drive an agent deployment state transition
4140
+ proposals:read: Read proposals (RFC 0249).
4141
+ proposals:write: Submit, revise, reject and archive proposals (RFC 0249).
4142
+ proposals:apply: Activate a proposal and install its artifact (RFC 0249).
3714
4143
  OpenIdConnect:
3715
4144
  type: openIdConnect
3716
4145
  openIdConnectUrl: https://issuer.example/.well-known/openid-configuration
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.46.20",
3
+ "version": "2.46.21",
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": {