@openwop/spec-artifacts 2.0.0-rc.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.
Files changed (229) hide show
  1. package/CORPUS-STAMP.json +234 -0
  2. package/LICENSE +201 -0
  3. package/README.md +7 -0
  4. package/api/.redocly.lint-ignore.yaml +22 -0
  5. package/api/asyncapi.yaml +834 -0
  6. package/api/grpc/openwop.proto +251 -0
  7. package/api/openapi.yaml +2693 -0
  8. package/api/redocly.yaml +23 -0
  9. package/api/seams-v2.yaml +680 -0
  10. package/api/v2/asyncapi.yaml +528 -0
  11. package/api/v2/openapi.yaml +3139 -0
  12. package/api/v2/redocly.yaml +16 -0
  13. package/package.json +10 -0
  14. package/schemas/README.md +144 -0
  15. package/schemas/a2a-task-state.schema.json +78 -0
  16. package/schemas/a2ui-surface-delta-frame.schema.json +48 -0
  17. package/schemas/agent-deployment-transition.schema.json +49 -0
  18. package/schemas/agent-deployment.schema.json +54 -0
  19. package/schemas/agent-eval-suite.schema.json +140 -0
  20. package/schemas/agent-inventory-response.schema.json +115 -0
  21. package/schemas/agent-manifest.schema.json +156 -0
  22. package/schemas/agent-org-chart.schema.json +82 -0
  23. package/schemas/agent-ref.schema.json +63 -0
  24. package/schemas/agent-roster-entry.schema.json +81 -0
  25. package/schemas/agent-roster-response.schema.json +21 -0
  26. package/schemas/ai-envelope.schema.json +134 -0
  27. package/schemas/annotation-create.schema.json +37 -0
  28. package/schemas/annotation.schema.json +56 -0
  29. package/schemas/artifact-type-pack-manifest.schema.json +244 -0
  30. package/schemas/audit-verify-result.schema.json +90 -0
  31. package/schemas/budget-policy.schema.json +18 -0
  32. package/schemas/capabilities.schema.json +4160 -0
  33. package/schemas/certification-bundle-v2.schema.json +118 -0
  34. package/schemas/channel-presence-payload.schema.json +41 -0
  35. package/schemas/channel-written-payload.schema.json +55 -0
  36. package/schemas/chat-card-pack-manifest.schema.json +253 -0
  37. package/schemas/compact-tool-descriptor.schema.json +51 -0
  38. package/schemas/compensation-policy.schema.json +64 -0
  39. package/schemas/conformance-certification-bundle.schema.json +86 -0
  40. package/schemas/connection-pack-manifest.schema.json +353 -0
  41. package/schemas/conversation-event.schema.json +168 -0
  42. package/schemas/conversation-turn.schema.json +117 -0
  43. package/schemas/core-conformance-mock-agent-config.schema.json +152 -0
  44. package/schemas/credential-provenance.schema.json +18 -0
  45. package/schemas/credential-reference.schema.json +21 -0
  46. package/schemas/debug-bundle.schema.json +196 -0
  47. package/schemas/dispatch-config.schema.json +112 -0
  48. package/schemas/envelopes/clarification.request.schema.json +52 -0
  49. package/schemas/envelopes/error.schema.json +30 -0
  50. package/schemas/envelopes/media.audio.schema.json +38 -0
  51. package/schemas/envelopes/media.file.schema.json +37 -0
  52. package/schemas/envelopes/media.image.schema.json +33 -0
  53. package/schemas/envelopes/schema.request.schema.json +26 -0
  54. package/schemas/envelopes/schema.response.schema.json +22 -0
  55. package/schemas/envelopes/ui.a2ui-surface.schema.json +154 -0
  56. package/schemas/error-envelope.schema.json +25 -0
  57. package/schemas/eval-summary.schema.json +92 -0
  58. package/schemas/export-bundle.schema.json +66 -0
  59. package/schemas/form-content-pack-manifest.schema.json +243 -0
  60. package/schemas/frontend-plugin-manifest.schema.json +109 -0
  61. package/schemas/goal.schema.json +104 -0
  62. package/schemas/heartbeat-evaluated.schema.json +14 -0
  63. package/schemas/heartbeat-state-changed.schema.json +14 -0
  64. package/schemas/localized-content-language-settings.schema.json +26 -0
  65. package/schemas/localized-content-page-response.schema.json +60 -0
  66. package/schemas/localized-content-page.schema.json +62 -0
  67. package/schemas/localized-content-section.schema.json +51 -0
  68. package/schemas/memory-entry.schema.json +36 -0
  69. package/schemas/memory-list-options.schema.json +37 -0
  70. package/schemas/node-pack-manifest.schema.json +654 -0
  71. package/schemas/orchestrator-decision.schema.json +90 -0
  72. package/schemas/org-chart-responsibility-view.schema.json +26 -0
  73. package/schemas/pack-lockfile.schema.json +108 -0
  74. package/schemas/prompt-kind.schema.json +8 -0
  75. package/schemas/prompt-pack-manifest.schema.json +117 -0
  76. package/schemas/prompt-ref.schema.json +40 -0
  77. package/schemas/prompt-template.schema.json +149 -0
  78. package/schemas/proposal.schema.json +84 -0
  79. package/schemas/registry-version-manifest.schema.json +208 -0
  80. package/schemas/residency.schema.json +16 -0
  81. package/schemas/run-ancestry-response.schema.json +54 -0
  82. package/schemas/run-diff-response.schema.json +64 -0
  83. package/schemas/run-event-payloads.schema.json +4452 -0
  84. package/schemas/run-event.schema.json +211 -0
  85. package/schemas/run-options.schema.json +80 -0
  86. package/schemas/run-orchestrator-decided-event.schema.json +20 -0
  87. package/schemas/run-snapshot.schema.json +148 -0
  88. package/schemas/security-advisory.schema.json +109 -0
  89. package/schemas/self-hosted-runner-dispatch-frame.schema.json +79 -0
  90. package/schemas/self-hosted-runner-registration.schema.json +53 -0
  91. package/schemas/self-hosted-runner-result-frame.schema.json +38 -0
  92. package/schemas/subject.schema.json +56 -0
  93. package/schemas/suspend-request.schema.json +207 -0
  94. package/schemas/tool-descriptor.schema.json +63 -0
  95. package/schemas/trigger-event.schema.json +222 -0
  96. package/schemas/trigger-subscription-registration.schema.json +67 -0
  97. package/schemas/trigger-subscription.schema.json +26 -0
  98. package/schemas/ui-plugin-message.schema.json +90 -0
  99. package/schemas/v2/a2a-task-state.schema.json +102 -0
  100. package/schemas/v2/a2ui-surface-delta-frame.schema.json +62 -0
  101. package/schemas/v2/agent-deployment-transition.schema.json +67 -0
  102. package/schemas/v2/agent-deployment.schema.json +68 -0
  103. package/schemas/v2/agent-eval-suite.schema.json +214 -0
  104. package/schemas/v2/agent-inventory-response.schema.json +172 -0
  105. package/schemas/v2/agent-manifest.schema.json +218 -0
  106. package/schemas/v2/agent-org-chart.schema.json +149 -0
  107. package/schemas/v2/agent-ref.schema.json +67 -0
  108. package/schemas/v2/agent-roster-entry.schema.json +104 -0
  109. package/schemas/v2/agent-roster-response.schema.json +27 -0
  110. package/schemas/v2/ai-envelope.schema.json +167 -0
  111. package/schemas/v2/annotation-create.schema.json +109 -0
  112. package/schemas/v2/annotation.schema.json +142 -0
  113. package/schemas/v2/artifact-type-pack-manifest.schema.json +245 -0
  114. package/schemas/v2/audit-verify-result.schema.json +110 -0
  115. package/schemas/v2/budget-policy.schema.json +61 -0
  116. package/schemas/v2/capabilities.schema.json +7644 -0
  117. package/schemas/v2/certification-bundle.schema.json +401 -0
  118. package/schemas/v2/channel-presence-payload.schema.json +60 -0
  119. package/schemas/v2/channel-written-payload.schema.json +64 -0
  120. package/schemas/v2/chat-card-pack-manifest.schema.json +254 -0
  121. package/schemas/v2/compact-tool-descriptor.schema.json +108 -0
  122. package/schemas/v2/compensation-policy.schema.json +91 -0
  123. package/schemas/v2/compensation-projection.schema.json +95 -0
  124. package/schemas/v2/configurable.schema.json +110 -0
  125. package/schemas/v2/connection-pack-manifest.schema.json +354 -0
  126. package/schemas/v2/conversation-event.schema.json +281 -0
  127. package/schemas/v2/conversation-turn.schema.json +165 -0
  128. package/schemas/v2/credential-provenance.schema.json +62 -0
  129. package/schemas/v2/credential-reference.schema.json +28 -0
  130. package/schemas/v2/debug-bundle.schema.json +312 -0
  131. package/schemas/v2/dispatch-config.schema.json +147 -0
  132. package/schemas/v2/effect-ledger-projection.schema.json +71 -0
  133. package/schemas/v2/effect-seam-manifest.schema.json +98 -0
  134. package/schemas/v2/envelopes/clarification.request.schema.json +59 -0
  135. package/schemas/v2/envelopes/error.schema.json +35 -0
  136. package/schemas/v2/envelopes/media.audio.schema.json +41 -0
  137. package/schemas/v2/envelopes/media.file.schema.json +40 -0
  138. package/schemas/v2/envelopes/media.image.schema.json +36 -0
  139. package/schemas/v2/envelopes/schema.request.schema.json +29 -0
  140. package/schemas/v2/envelopes/schema.response.schema.json +26 -0
  141. package/schemas/v2/envelopes/ui.a2ui-surface.schema.json +292 -0
  142. package/schemas/v2/error-envelope.schema.json +229 -0
  143. package/schemas/v2/eval-summary.schema.json +166 -0
  144. package/schemas/v2/export-bundle.schema.json +94 -0
  145. package/schemas/v2/form-content-pack-manifest.schema.json +241 -0
  146. package/schemas/v2/frontend-plugin-manifest.schema.json +152 -0
  147. package/schemas/v2/goal.schema.json +188 -0
  148. package/schemas/v2/heartbeat-evaluated.schema.json +34 -0
  149. package/schemas/v2/heartbeat-state-changed.schema.json +31 -0
  150. package/schemas/v2/ids.schema.json +31 -0
  151. package/schemas/v2/localized-content-language-settings.schema.json +34 -0
  152. package/schemas/v2/localized-content-page-response.schema.json +94 -0
  153. package/schemas/v2/localized-content-page.schema.json +87 -0
  154. package/schemas/v2/localized-content-section.schema.json +63 -0
  155. package/schemas/v2/memory-entry.schema.json +45 -0
  156. package/schemas/v2/memory-list-options.schema.json +41 -0
  157. package/schemas/v2/node-pack-manifest.schema.json +657 -0
  158. package/schemas/v2/orchestrator-decision.schema.json +120 -0
  159. package/schemas/v2/org-chart-responsibility-view.schema.json +36 -0
  160. package/schemas/v2/pack-lockfile.schema.json +139 -0
  161. package/schemas/v2/prompt-kind.schema.json +14 -0
  162. package/schemas/v2/prompt-pack-manifest.schema.json +118 -0
  163. package/schemas/v2/prompt-ref.schema.json +42 -0
  164. package/schemas/v2/prompt-template.schema.json +209 -0
  165. package/schemas/v2/proposal.schema.json +145 -0
  166. package/schemas/v2/registry-version-manifest.schema.json +292 -0
  167. package/schemas/v2/residency.schema.json +19 -0
  168. package/schemas/v2/run-ancestry-response.schema.json +68 -0
  169. package/schemas/v2/run-diff-response.schema.json +80 -0
  170. package/schemas/v2/run-event-payloads.schema.json +4588 -0
  171. package/schemas/v2/run-event.schema.json +324 -0
  172. package/schemas/v2/run-options.schema.json +90 -0
  173. package/schemas/v2/run-orchestrator-decided-event.schema.json +22 -0
  174. package/schemas/v2/run-snapshot.schema.json +207 -0
  175. package/schemas/v2/security-advisory.schema.json +138 -0
  176. package/schemas/v2/self-hosted-runner-dispatch-frame.schema.json +119 -0
  177. package/schemas/v2/self-hosted-runner-registration.schema.json +74 -0
  178. package/schemas/v2/self-hosted-runner-result-frame.schema.json +47 -0
  179. package/schemas/v2/subject-link.schema.json +69 -0
  180. package/schemas/v2/subject.schema.json +597 -0
  181. package/schemas/v2/suspend-request.schema.json +370 -0
  182. package/schemas/v2/tool-descriptor.schema.json +150 -0
  183. package/schemas/v2/trigger-event.schema.json +508 -0
  184. package/schemas/v2/trigger-subscription-registration.schema.json +99 -0
  185. package/schemas/v2/trigger-subscription.schema.json +79 -0
  186. package/schemas/v2/ui-plugin-message.schema.json +149 -0
  187. package/schemas/v2/workflow-chain-pack-manifest.schema.json +610 -0
  188. package/schemas/v2/workflow-definition.schema.json +864 -0
  189. package/schemas/v2/workload-identity.schema.json +115 -0
  190. package/schemas/v2/workspace-file-create.schema.json +23 -0
  191. package/schemas/v2/workspace-file.schema.json +45 -0
  192. package/schemas/workflow-chain-pack-manifest.schema.json +615 -0
  193. package/schemas/workflow-definition.schema.json +850 -0
  194. package/schemas/workload-identity.schema.json +79 -0
  195. package/schemas/workspace-file-create.schema.json +20 -0
  196. package/schemas/workspace-file.schema.json +39 -0
  197. package/spec/v1/alias-detectors.json +283 -0
  198. package/spec/v1/capability-declaration-classes.json +176 -0
  199. package/spec/v1/core-standard-manifest.json +423 -0
  200. package/spec/v1/deprecations.json +854 -0
  201. package/spec/v1/deprecations.schema.json +187 -0
  202. package/spec/v1/event-codemap.json +1089 -0
  203. package/spec/v1/event-codemap.schema.json +41 -0
  204. package/spec/v1/extensions.json +1273 -0
  205. package/spec/v1/gaps.json +14581 -0
  206. package/spec/v1/gaps.schema.json +55 -0
  207. package/spec/v1/migrations.json +1822 -0
  208. package/spec/v1/migrations.schema.json +44 -0
  209. package/spec/v1/operation-path-manifest.json +462 -0
  210. package/spec/v1/spec-gaps.json +4823 -0
  211. package/spec/v2/declaration.json +1862 -0
  212. package/spec/v2/declaration.schema.json +305 -0
  213. package/spec/v2/errors.json +837 -0
  214. package/spec/v2/event-codemap.json +1099 -0
  215. package/spec/v2/event-codemap.schema.json +114 -0
  216. package/spec/v2/ext/provider-idempotency/registry.json +6 -0
  217. package/spec/v2/facets/a2a.schema.json +51 -0
  218. package/spec/v2/facets/aiProviders.schema.json +56 -0
  219. package/spec/v2/facets/auth.schema.json +91 -0
  220. package/spec/v2/facets/heartbeat.schema.json +20 -0
  221. package/spec/v2/facets/interrupt.schema.json +29 -0
  222. package/spec/v2/facets/mcp.schema.json +81 -0
  223. package/spec/v2/facets/replay.schema.json +34 -0
  224. package/spec/v2/facets/sandbox.schema.json +31 -0
  225. package/spec/v2/facets/webhooks.schema.json +18 -0
  226. package/spec/v2/path-manifest.json +279 -0
  227. package/spec/v2/peer-dependency-aliases.json +165 -0
  228. package/spec/v2/profiles.json +45 -0
  229. package/spec/v2/release.json +6 -0
@@ -0,0 +1,597 @@
1
+ {
2
+ "type": "object",
3
+ "additionalProperties": false,
4
+ "required": [
5
+ "issuer",
6
+ "subjectId",
7
+ "tenant",
8
+ "lane",
9
+ "kind"
10
+ ],
11
+ "properties": {
12
+ "issuer": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "maxLength": 1024,
16
+ "pattern": "^\\S+$",
17
+ "description": "Trust root (RFC 0170 §B.2); urn:openwop:legacy for a run that predates subject emission (§A.3)."
18
+ },
19
+ "subjectId": {
20
+ "$ref": "ids.schema.json#/$defs/subjectId"
21
+ },
22
+ "tenant": {
23
+ "$ref": "ids.schema.json#/$defs/tenantId"
24
+ },
25
+ "lane": {
26
+ "type": "string",
27
+ "enum": [
28
+ "api-key",
29
+ "oauth2",
30
+ "oidc",
31
+ "mtls",
32
+ "saml",
33
+ "scim",
34
+ "ldap",
35
+ "workload",
36
+ "session",
37
+ "anonymous"
38
+ ]
39
+ },
40
+ "kind": {
41
+ "type": "string",
42
+ "enum": [
43
+ "user",
44
+ "agent",
45
+ "anonymous",
46
+ "workload"
47
+ ]
48
+ },
49
+ "keyClass": {
50
+ "type": "string",
51
+ "enum": [
52
+ "opaque-idp",
53
+ "configured-immutable"
54
+ ]
55
+ },
56
+ "actor": {
57
+ "$ref": "#/$defs/actor1",
58
+ "description": "Who acts on this subject's behalf; depth bounded at four by the $defs chain (RFC 0170 §A.2)."
59
+ }
60
+ },
61
+ "allOf": [
62
+ {
63
+ "if": {
64
+ "properties": {
65
+ "kind": {
66
+ "const": "anonymous"
67
+ }
68
+ }
69
+ },
70
+ "then": {
71
+ "properties": {
72
+ "lane": {
73
+ "const": "anonymous"
74
+ }
75
+ }
76
+ }
77
+ },
78
+ {
79
+ "if": {
80
+ "properties": {
81
+ "lane": {
82
+ "const": "anonymous"
83
+ }
84
+ }
85
+ },
86
+ "then": {
87
+ "properties": {
88
+ "kind": {
89
+ "const": "anonymous"
90
+ }
91
+ }
92
+ }
93
+ },
94
+ {
95
+ "if": {
96
+ "properties": {
97
+ "lane": {
98
+ "enum": [
99
+ "saml",
100
+ "scim"
101
+ ]
102
+ }
103
+ }
104
+ },
105
+ "then": {
106
+ "required": [
107
+ "keyClass"
108
+ ]
109
+ },
110
+ "else": {
111
+ "not": {
112
+ "required": [
113
+ "keyClass"
114
+ ]
115
+ }
116
+ }
117
+ }
118
+ ],
119
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
120
+ "$id": "https://openwop.dev/spec/v2/subject.schema.json",
121
+ "title": "OpenWOP v2 Subject (RFC 0170)",
122
+ "description": "The owner of a run. Required on RunSnapshot.owner and the run.started echo. Legacy subjects (issuer urn:openwop:legacy) MUST NOT participate in a link, an actor chain, or a delegation decision (§A.3).",
123
+ "$defs": {
124
+ "actor1": {
125
+ "type": "object",
126
+ "additionalProperties": false,
127
+ "required": [
128
+ "issuer",
129
+ "subjectId",
130
+ "tenant",
131
+ "lane",
132
+ "kind"
133
+ ],
134
+ "properties": {
135
+ "issuer": {
136
+ "type": "string",
137
+ "minLength": 1,
138
+ "maxLength": 1024,
139
+ "pattern": "^\\S+$",
140
+ "description": "Trust root (RFC 0170 §B.2); urn:openwop:legacy for a run that predates subject emission (§A.3)."
141
+ },
142
+ "subjectId": {
143
+ "$ref": "ids.schema.json#/$defs/subjectId"
144
+ },
145
+ "tenant": {
146
+ "$ref": "ids.schema.json#/$defs/tenantId"
147
+ },
148
+ "lane": {
149
+ "type": "string",
150
+ "enum": [
151
+ "api-key",
152
+ "oauth2",
153
+ "oidc",
154
+ "mtls",
155
+ "saml",
156
+ "scim",
157
+ "ldap",
158
+ "workload",
159
+ "session",
160
+ "anonymous"
161
+ ]
162
+ },
163
+ "kind": {
164
+ "type": "string",
165
+ "enum": [
166
+ "user",
167
+ "agent",
168
+ "anonymous",
169
+ "workload"
170
+ ]
171
+ },
172
+ "keyClass": {
173
+ "type": "string",
174
+ "enum": [
175
+ "opaque-idp",
176
+ "configured-immutable"
177
+ ]
178
+ },
179
+ "actor": {
180
+ "$ref": "#/$defs/actor2",
181
+ "description": "Who acts on this subject's behalf; depth bounded at four by the $defs chain (RFC 0170 §A.2)."
182
+ }
183
+ },
184
+ "allOf": [
185
+ {
186
+ "if": {
187
+ "properties": {
188
+ "kind": {
189
+ "const": "anonymous"
190
+ }
191
+ }
192
+ },
193
+ "then": {
194
+ "properties": {
195
+ "lane": {
196
+ "const": "anonymous"
197
+ }
198
+ }
199
+ }
200
+ },
201
+ {
202
+ "if": {
203
+ "properties": {
204
+ "lane": {
205
+ "const": "anonymous"
206
+ }
207
+ }
208
+ },
209
+ "then": {
210
+ "properties": {
211
+ "kind": {
212
+ "const": "anonymous"
213
+ }
214
+ }
215
+ }
216
+ },
217
+ {
218
+ "if": {
219
+ "properties": {
220
+ "lane": {
221
+ "enum": [
222
+ "saml",
223
+ "scim"
224
+ ]
225
+ }
226
+ }
227
+ },
228
+ "then": {
229
+ "required": [
230
+ "keyClass"
231
+ ]
232
+ },
233
+ "else": {
234
+ "not": {
235
+ "required": [
236
+ "keyClass"
237
+ ]
238
+ }
239
+ }
240
+ }
241
+ ]
242
+ },
243
+ "actor2": {
244
+ "type": "object",
245
+ "additionalProperties": false,
246
+ "required": [
247
+ "issuer",
248
+ "subjectId",
249
+ "tenant",
250
+ "lane",
251
+ "kind"
252
+ ],
253
+ "properties": {
254
+ "issuer": {
255
+ "type": "string",
256
+ "minLength": 1,
257
+ "maxLength": 1024,
258
+ "pattern": "^\\S+$",
259
+ "description": "Trust root (RFC 0170 §B.2); urn:openwop:legacy for a run that predates subject emission (§A.3)."
260
+ },
261
+ "subjectId": {
262
+ "$ref": "ids.schema.json#/$defs/subjectId"
263
+ },
264
+ "tenant": {
265
+ "$ref": "ids.schema.json#/$defs/tenantId"
266
+ },
267
+ "lane": {
268
+ "type": "string",
269
+ "enum": [
270
+ "api-key",
271
+ "oauth2",
272
+ "oidc",
273
+ "mtls",
274
+ "saml",
275
+ "scim",
276
+ "ldap",
277
+ "workload",
278
+ "session",
279
+ "anonymous"
280
+ ]
281
+ },
282
+ "kind": {
283
+ "type": "string",
284
+ "enum": [
285
+ "user",
286
+ "agent",
287
+ "anonymous",
288
+ "workload"
289
+ ]
290
+ },
291
+ "keyClass": {
292
+ "type": "string",
293
+ "enum": [
294
+ "opaque-idp",
295
+ "configured-immutable"
296
+ ]
297
+ },
298
+ "actor": {
299
+ "$ref": "#/$defs/actor3",
300
+ "description": "Who acts on this subject's behalf; depth bounded at four by the $defs chain (RFC 0170 §A.2)."
301
+ }
302
+ },
303
+ "allOf": [
304
+ {
305
+ "if": {
306
+ "properties": {
307
+ "kind": {
308
+ "const": "anonymous"
309
+ }
310
+ }
311
+ },
312
+ "then": {
313
+ "properties": {
314
+ "lane": {
315
+ "const": "anonymous"
316
+ }
317
+ }
318
+ }
319
+ },
320
+ {
321
+ "if": {
322
+ "properties": {
323
+ "lane": {
324
+ "const": "anonymous"
325
+ }
326
+ }
327
+ },
328
+ "then": {
329
+ "properties": {
330
+ "kind": {
331
+ "const": "anonymous"
332
+ }
333
+ }
334
+ }
335
+ },
336
+ {
337
+ "if": {
338
+ "properties": {
339
+ "lane": {
340
+ "enum": [
341
+ "saml",
342
+ "scim"
343
+ ]
344
+ }
345
+ }
346
+ },
347
+ "then": {
348
+ "required": [
349
+ "keyClass"
350
+ ]
351
+ },
352
+ "else": {
353
+ "not": {
354
+ "required": [
355
+ "keyClass"
356
+ ]
357
+ }
358
+ }
359
+ }
360
+ ]
361
+ },
362
+ "actor3": {
363
+ "type": "object",
364
+ "additionalProperties": false,
365
+ "required": [
366
+ "issuer",
367
+ "subjectId",
368
+ "tenant",
369
+ "lane",
370
+ "kind"
371
+ ],
372
+ "properties": {
373
+ "issuer": {
374
+ "type": "string",
375
+ "minLength": 1,
376
+ "maxLength": 1024,
377
+ "pattern": "^\\S+$",
378
+ "description": "Trust root (RFC 0170 §B.2); urn:openwop:legacy for a run that predates subject emission (§A.3)."
379
+ },
380
+ "subjectId": {
381
+ "$ref": "ids.schema.json#/$defs/subjectId"
382
+ },
383
+ "tenant": {
384
+ "$ref": "ids.schema.json#/$defs/tenantId"
385
+ },
386
+ "lane": {
387
+ "type": "string",
388
+ "enum": [
389
+ "api-key",
390
+ "oauth2",
391
+ "oidc",
392
+ "mtls",
393
+ "saml",
394
+ "scim",
395
+ "ldap",
396
+ "workload",
397
+ "session",
398
+ "anonymous"
399
+ ]
400
+ },
401
+ "kind": {
402
+ "type": "string",
403
+ "enum": [
404
+ "user",
405
+ "agent",
406
+ "anonymous",
407
+ "workload"
408
+ ]
409
+ },
410
+ "keyClass": {
411
+ "type": "string",
412
+ "enum": [
413
+ "opaque-idp",
414
+ "configured-immutable"
415
+ ]
416
+ },
417
+ "actor": {
418
+ "$ref": "#/$defs/actor4",
419
+ "description": "Who acts on this subject's behalf; depth bounded at four by the $defs chain (RFC 0170 §A.2)."
420
+ }
421
+ },
422
+ "allOf": [
423
+ {
424
+ "if": {
425
+ "properties": {
426
+ "kind": {
427
+ "const": "anonymous"
428
+ }
429
+ }
430
+ },
431
+ "then": {
432
+ "properties": {
433
+ "lane": {
434
+ "const": "anonymous"
435
+ }
436
+ }
437
+ }
438
+ },
439
+ {
440
+ "if": {
441
+ "properties": {
442
+ "lane": {
443
+ "const": "anonymous"
444
+ }
445
+ }
446
+ },
447
+ "then": {
448
+ "properties": {
449
+ "kind": {
450
+ "const": "anonymous"
451
+ }
452
+ }
453
+ }
454
+ },
455
+ {
456
+ "if": {
457
+ "properties": {
458
+ "lane": {
459
+ "enum": [
460
+ "saml",
461
+ "scim"
462
+ ]
463
+ }
464
+ }
465
+ },
466
+ "then": {
467
+ "required": [
468
+ "keyClass"
469
+ ]
470
+ },
471
+ "else": {
472
+ "not": {
473
+ "required": [
474
+ "keyClass"
475
+ ]
476
+ }
477
+ }
478
+ }
479
+ ]
480
+ },
481
+ "actor4": {
482
+ "type": "object",
483
+ "additionalProperties": false,
484
+ "required": [
485
+ "issuer",
486
+ "subjectId",
487
+ "tenant",
488
+ "lane",
489
+ "kind"
490
+ ],
491
+ "properties": {
492
+ "issuer": {
493
+ "type": "string",
494
+ "minLength": 1,
495
+ "maxLength": 1024,
496
+ "pattern": "^\\S+$",
497
+ "description": "Trust root (RFC 0170 §B.2); urn:openwop:legacy for a run that predates subject emission (§A.3)."
498
+ },
499
+ "subjectId": {
500
+ "$ref": "ids.schema.json#/$defs/subjectId"
501
+ },
502
+ "tenant": {
503
+ "$ref": "ids.schema.json#/$defs/tenantId"
504
+ },
505
+ "lane": {
506
+ "type": "string",
507
+ "enum": [
508
+ "api-key",
509
+ "oauth2",
510
+ "oidc",
511
+ "mtls",
512
+ "saml",
513
+ "scim",
514
+ "ldap",
515
+ "workload",
516
+ "session",
517
+ "anonymous"
518
+ ]
519
+ },
520
+ "kind": {
521
+ "type": "string",
522
+ "enum": [
523
+ "user",
524
+ "agent",
525
+ "anonymous",
526
+ "workload"
527
+ ]
528
+ },
529
+ "keyClass": {
530
+ "type": "string",
531
+ "enum": [
532
+ "opaque-idp",
533
+ "configured-immutable"
534
+ ]
535
+ }
536
+ },
537
+ "allOf": [
538
+ {
539
+ "if": {
540
+ "properties": {
541
+ "kind": {
542
+ "const": "anonymous"
543
+ }
544
+ }
545
+ },
546
+ "then": {
547
+ "properties": {
548
+ "lane": {
549
+ "const": "anonymous"
550
+ }
551
+ }
552
+ }
553
+ },
554
+ {
555
+ "if": {
556
+ "properties": {
557
+ "lane": {
558
+ "const": "anonymous"
559
+ }
560
+ }
561
+ },
562
+ "then": {
563
+ "properties": {
564
+ "kind": {
565
+ "const": "anonymous"
566
+ }
567
+ }
568
+ }
569
+ },
570
+ {
571
+ "if": {
572
+ "properties": {
573
+ "lane": {
574
+ "enum": [
575
+ "saml",
576
+ "scim"
577
+ ]
578
+ }
579
+ }
580
+ },
581
+ "then": {
582
+ "required": [
583
+ "keyClass"
584
+ ]
585
+ },
586
+ "else": {
587
+ "not": {
588
+ "required": [
589
+ "keyClass"
590
+ ]
591
+ }
592
+ }
593
+ }
594
+ ]
595
+ }
596
+ }
597
+ }