@whooshbang/contracts 2.0.0-rc.8 → 2.1.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 (94) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +4 -5
  3. package/contract-manifest.json +32 -32
  4. package/dist/generated/artifact-index.d.ts +33 -33
  5. package/dist/generated/artifact-index.js +32 -32
  6. package/dist/generated/artifact-index.js.map +1 -1
  7. package/dist/generated/validators-standalone.d.ts +577 -447
  8. package/dist/generated/validators-standalone.js +7127 -1096
  9. package/dist/generated/validators-standalone.js.map +1 -1
  10. package/dist/generated/validators.d.ts +11 -1
  11. package/dist/generated/validators.js +11 -1
  12. package/dist/generated/validators.js.map +1 -1
  13. package/dist/generated/whooshbang-v1.d.ts +135 -1
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/fixtures/core-v1/fixture-index.json +1 -1
  18. package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
  19. package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
  20. package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
  21. package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
  22. package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
  23. package/fixtures/core-v1/scenarios/cross-organization-project.json +1 -1
  24. package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
  25. package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
  26. package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
  27. package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
  28. package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
  29. package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
  30. package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
  31. package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +1 -1
  32. package/fixtures/core-v1/scenarios/project-slug-conflict.json +1 -1
  33. package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
  34. package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
  35. package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
  36. package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
  37. package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
  38. package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
  39. package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
  40. package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
  41. package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
  42. package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
  43. package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
  44. package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
  45. package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
  46. package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
  47. package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
  48. package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
  49. package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
  50. package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
  51. package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
  52. package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
  53. package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
  54. package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
  55. package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
  56. package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
  57. package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
  58. package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
  59. package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
  60. package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
  61. package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
  62. package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
  63. package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
  64. package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
  65. package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
  66. package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
  67. package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
  68. package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
  69. package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
  70. package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
  71. package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
  72. package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +1 -1
  73. package/openapi/generated/whooshbang-v1.bundle.json +1353 -771
  74. package/openapi/whooshbang-v1.yaml +291 -2
  75. package/package.json +2 -3
  76. package/schemas/core-scenario.schema.json +1 -1
  77. package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
  78. package/schemas/events/interaction-expired-v1.schema.json +1 -1
  79. package/schemas/events/interaction-received-v1.schema.json +1 -1
  80. package/schemas/events/message-delivered-v1.schema.json +1 -1
  81. package/schemas/events/message-expired-v1.schema.json +1 -1
  82. package/schemas/events/message-failed-v1.schema.json +1 -1
  83. package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
  84. package/schemas/events/subscription-activated-v1.schema.json +1 -1
  85. package/schemas/events/subscription-revoked-v1.schema.json +1 -1
  86. package/schemas/events/whooshbang-event-v1.schema.json +1 -1
  87. package/schemas/fixture-index.schema.json +1 -1
  88. package/schemas/interaction-machine-scenario.schema.json +1 -1
  89. package/schemas/interaction-v1.schema.json +1 -1
  90. package/schemas/machine-v1.schema.json +1 -1
  91. package/schemas/provider-capabilities-v1.schema.json +1 -1
  92. package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
  93. package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
  94. package/schemas/whooshbang-v1.schema.json +385 -1
@@ -1,10 +1,10 @@
1
1
  openapi: 3.1.1
2
2
  jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema
3
3
  # whooshbang:public-origin production api https://api.whooshbang.com
4
- x-contract-version: 2.0.0-rc.8
4
+ x-contract-version: 2.1.0
5
5
  info:
6
6
  title: WhooshBang API
7
- version: 2.0.0-rc.8
7
+ version: 2.1.0
8
8
  description: |
9
9
  The V1 contract for human organization/project administration, project-scoped
10
10
  subscription links, and asynchronous text messages. A Clerk session selects
@@ -67,9 +67,278 @@ tags:
67
67
  description: Application-owned subscriber identity and transactional initial static-group membership.
68
68
  - name: Subscriber groups
69
69
  description: Environment-scoped static groups and monotonic membership generations.
70
+ - name: Operators
71
+ description: Current teammates, personal notification preferences and membership-derived service email.
70
72
  - name: Group broadcasts
71
73
  description: Durable group acceptance and aggregate projection over ordinary child messages.
72
74
  paths:
75
+ /v1/projects/{project_id}/environments/{environment_id}/whoami:
76
+ get:
77
+ operationId: whoAmI
78
+ summary: Identify the authenticated caller
79
+ description: Personal login identifies me without a recipient question. Shared or service credentials report their actual principal and require an explicit recipient. No account owner or credential creator is inferred.
80
+ tags: [Operators]
81
+ security:
82
+ - clerkSession: []
83
+ - bearerCredential: []
84
+ - bearerOrganizationCredential: []
85
+ - bearerGrant: [messages:read]
86
+ - machineCredential: []
87
+ x-required-scopes: [messages:read]
88
+ parameters:
89
+ - $ref: "#/components/parameters/ProjectId"
90
+ - $ref: "#/components/parameters/EnvironmentId"
91
+ responses:
92
+ "200":
93
+ description: Actual principal and safe authorized messaging context.
94
+ content:
95
+ application/json:
96
+ schema:
97
+ $ref: "#/components/schemas/WhoAmI"
98
+ "401":
99
+ $ref: "#/components/responses/Unauthorized"
100
+ "403":
101
+ $ref: "#/components/responses/Forbidden"
102
+ /v1/projects/{project_id}/environments/{environment_id}/operators:
103
+ get:
104
+ operationId: listOperators
105
+ summary: listOperators
106
+ description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
107
+ tags: [Operators]
108
+ security:
109
+ - clerkSession: []
110
+ - bearerCredential: []
111
+ - bearerGrant: [messages:read]
112
+ x-required-scopes: [messages:read]
113
+ parameters:
114
+ - $ref: "#/components/parameters/ProjectId"
115
+ - $ref: "#/components/parameters/EnvironmentId"
116
+ - $ref: "#/components/parameters/ListAfterCursor"
117
+ - $ref: "#/components/parameters/ListPageLimit"
118
+ - $ref: "#/components/parameters/PageNumber"
119
+ responses:
120
+ "200":
121
+ description: Authorized result.
122
+ content:
123
+ application/json:
124
+ schema:
125
+ $ref: "#/components/schemas/OperatorCollection"
126
+ "401":
127
+ $ref: "#/components/responses/Unauthorized"
128
+ "403":
129
+ $ref: "#/components/responses/Forbidden"
130
+ /v1/projects/{project_id}/environments/{environment_id}/operators/resolve:
131
+ get:
132
+ operationId: resolveOperator
133
+ summary: resolveOperator
134
+ description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
135
+ tags: [Operators]
136
+ security:
137
+ - clerkSession: []
138
+ - bearerCredential: []
139
+ - bearerGrant: [messages:read]
140
+ x-required-scopes: [messages:read]
141
+ parameters:
142
+ - $ref: "#/components/parameters/ProjectId"
143
+ - $ref: "#/components/parameters/EnvironmentId"
144
+ - name: recipient
145
+ in: query
146
+ required: true
147
+ schema: { type: string, minLength: 1, maxLength: 128 }
148
+ responses:
149
+ "200":
150
+ description: Authorized result.
151
+ content:
152
+ application/json:
153
+ schema:
154
+ $ref: "#/components/schemas/OperatorResolution"
155
+ "401":
156
+ $ref: "#/components/responses/Unauthorized"
157
+ "403":
158
+ $ref: "#/components/responses/Forbidden"
159
+ /v1/projects/{project_id}/environments/{environment_id}/operator-messages:
160
+ post:
161
+ operationId: sendOperatorMessage
162
+ summary: sendOperatorMessage
163
+ description: Message a current teammate by name or operator ID. Personal callers may omit recipient or use me. Shared credentials must name a recipient. Runtime machine credentials report recipient_required for omitted or me; named operator sends are forbidden because runtime authority remains subscriber-bound.
164
+ tags: [Operators]
165
+ security:
166
+ - clerkSession: []
167
+ - bearerCredential: []
168
+ - bearerOrganizationCredential: []
169
+ - machineCredential: []
170
+ - bearerGrant: [messages:write]
171
+ x-required-scopes: [messages:write]
172
+ parameters:
173
+ - $ref: "#/components/parameters/ProjectId"
174
+ - $ref: "#/components/parameters/EnvironmentId"
175
+ - $ref: "#/components/parameters/IdempotencyKey"
176
+ requestBody:
177
+ required: true
178
+ content:
179
+ application/json:
180
+ schema:
181
+ $ref: "#/components/schemas/CreateOperatorMessageRequest"
182
+ responses:
183
+ "200":
184
+ description: Authorized result.
185
+ content:
186
+ application/json:
187
+ schema:
188
+ $ref: "#/components/schemas/OperatorMessageResult"
189
+ "401":
190
+ $ref: "#/components/responses/Unauthorized"
191
+ "403":
192
+ $ref: "#/components/responses/Forbidden"
193
+ /v1/projects/{project_id}/environments/{environment_id}/operators/broadcasts:
194
+ post:
195
+ operationId: broadcastOperators
196
+ summary: broadcastOperators
197
+ description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
198
+ tags: [Operators]
199
+ security:
200
+ - clerkSession: []
201
+ - bearerCredential: []
202
+ - bearerGrant: [messages:write]
203
+ x-required-scopes: [messages:write]
204
+ parameters:
205
+ - $ref: "#/components/parameters/ProjectId"
206
+ - $ref: "#/components/parameters/EnvironmentId"
207
+ - $ref: "#/components/parameters/IdempotencyKey"
208
+ requestBody:
209
+ required: true
210
+ content:
211
+ application/json:
212
+ schema:
213
+ $ref: "#/components/schemas/CreateGroupBroadcastRequest"
214
+ responses:
215
+ "200":
216
+ description: Authorized result.
217
+ content:
218
+ application/json:
219
+ schema:
220
+ $ref: "#/components/schemas/OperatorBroadcast"
221
+ "401":
222
+ $ref: "#/components/responses/Unauthorized"
223
+ "403":
224
+ $ref: "#/components/responses/Forbidden"
225
+ /v1/projects/{project_id}/environments/{environment_id}/operators/broadcasts/{broadcast_id}:
226
+ get:
227
+ operationId: getOperatorBroadcast
228
+ summary: getOperatorBroadcast
229
+ description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
230
+ tags: [Operators]
231
+ security:
232
+ - clerkSession: []
233
+ - bearerCredential: []
234
+ - bearerGrant: [messages:read]
235
+ x-required-scopes: [messages:read]
236
+ parameters:
237
+ - $ref: "#/components/parameters/ProjectId"
238
+ - $ref: "#/components/parameters/EnvironmentId"
239
+ - name: broadcast_id
240
+ in: path
241
+ required: true
242
+ schema: { type: string }
243
+ responses:
244
+ "200":
245
+ description: Authorized result.
246
+ content:
247
+ application/json:
248
+ schema:
249
+ $ref: "#/components/schemas/OperatorBroadcast"
250
+ "401":
251
+ $ref: "#/components/responses/Unauthorized"
252
+ "403":
253
+ $ref: "#/components/responses/Forbidden"
254
+ /v1/projects/{project_id}/environments/{environment_id}/notification-preferences:
255
+ get:
256
+ operationId: getOperatorPreferences
257
+ summary: getOperatorPreferences
258
+ description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
259
+ tags: [Operators]
260
+ security:
261
+ - clerkSession: []
262
+ - bearerCredential: []
263
+ - bearerGrant: [messages:read]
264
+ x-required-scopes: [messages:read]
265
+ parameters:
266
+ - $ref: "#/components/parameters/ProjectId"
267
+ - $ref: "#/components/parameters/EnvironmentId"
268
+ responses:
269
+ "200":
270
+ description: Authorized result.
271
+ content:
272
+ application/json:
273
+ schema:
274
+ $ref: "#/components/schemas/OperatorPreferences"
275
+ "401":
276
+ $ref: "#/components/responses/Unauthorized"
277
+ "403":
278
+ $ref: "#/components/responses/Forbidden"
279
+ /v1/projects/{project_id}/environments/{environment_id}/notification-preferences/preferred-binding:
280
+ put:
281
+ operationId: setOperatorPreferredBinding
282
+ summary: setOperatorPreferredBinding
283
+ description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
284
+ tags: [Operators]
285
+ security:
286
+ - clerkSession: []
287
+ - bearerCredential: []
288
+ - bearerGrant: [messages:write]
289
+ x-required-scopes: [messages:write]
290
+ parameters:
291
+ - $ref: "#/components/parameters/ProjectId"
292
+ - $ref: "#/components/parameters/EnvironmentId"
293
+ requestBody:
294
+ required: true
295
+ content:
296
+ application/json:
297
+ schema:
298
+ $ref: "#/components/schemas/SetPreferredBindingRequest"
299
+ responses:
300
+ "200":
301
+ description: Authorized result.
302
+ content:
303
+ application/json:
304
+ schema:
305
+ $ref: "#/components/schemas/OperatorPreferences"
306
+ "401":
307
+ $ref: "#/components/responses/Unauthorized"
308
+ "403":
309
+ $ref: "#/components/responses/Forbidden"
310
+ /v1/projects/{project_id}/environments/{environment_id}/notification-preferences/connect:
311
+ post:
312
+ operationId: connectOperatorChannel
313
+ summary: connectOperatorChannel
314
+ description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
315
+ tags: [Operators]
316
+ security:
317
+ - clerkSession: []
318
+ - bearerCredential: []
319
+ - bearerGrant: [messages:write]
320
+ x-required-scopes: [messages:write]
321
+ parameters:
322
+ - $ref: "#/components/parameters/ProjectId"
323
+ - $ref: "#/components/parameters/EnvironmentId"
324
+ - $ref: "#/components/parameters/IdempotencyKey"
325
+ requestBody:
326
+ required: true
327
+ content:
328
+ application/json:
329
+ schema:
330
+ $ref: "#/components/schemas/OperatorConnectRequest"
331
+ responses:
332
+ "201":
333
+ description: Authorized result.
334
+ content:
335
+ application/json:
336
+ schema:
337
+ $ref: "#/components/schemas/SubscriptionLink"
338
+ "401":
339
+ $ref: "#/components/responses/Unauthorized"
340
+ "403":
341
+ $ref: "#/components/responses/Forbidden"
73
342
  /v1/billing/project-slots:
74
343
  get:
75
344
  operationId: getBillingProjectSlots
@@ -8332,6 +8601,26 @@ components:
8332
8601
  schema:
8333
8602
  $ref: "#/components/schemas/DiagnosticId"
8334
8603
  schemas:
8604
+ WhoAmI:
8605
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/WhoAmI
8606
+ Operator:
8607
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/Operator
8608
+ OperatorCollection:
8609
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/OperatorCollection
8610
+ OperatorResolution:
8611
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/OperatorResolution
8612
+ CreateOperatorMessageRequest:
8613
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/CreateOperatorMessageRequest
8614
+ OperatorMessageResult:
8615
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/OperatorMessageResult
8616
+ OperatorBroadcastRecipient:
8617
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/OperatorBroadcastRecipient
8618
+ OperatorBroadcast:
8619
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/OperatorBroadcast
8620
+ OperatorPreferences:
8621
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/OperatorPreferences
8622
+ OperatorConnectRequest:
8623
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/OperatorConnectRequest
8335
8624
  ListPageSize:
8336
8625
  $ref: "../schemas/whooshbang-v1.schema.json#/$defs/ListPageSize"
8337
8626
  MessageState:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whooshbang/contracts",
3
- "version": "2.0.0-rc.8",
3
+ "version": "2.1.0",
4
4
  "description": "Versioned public contracts for WhooshBang",
5
5
  "private": false,
6
6
  "license": "MIT",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "publishConfig": {
22
22
  "access": "public",
23
- "tag": "next"
23
+ "tag": "latest"
24
24
  },
25
25
  "files": [
26
26
  "CHANGELOG.md",
@@ -53,7 +53,6 @@
53
53
  "check": "npm run build && tsx scripts/check.ts",
54
54
  "generate": "tsx scripts/generate.ts",
55
55
  "lint": "eslint src scripts test --max-warnings=0",
56
- "pack:verified": "npm run check && tsx scripts/pack.ts",
57
56
  "test": "vitest run --no-file-parallelism",
58
57
  "type-check": "tsc --noEmit -p tsconfig.json"
59
58
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/core-scenario.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "CoreContractScenario",
6
6
  "description": "A deterministic C0-02 semantic, state, idempotency, or isolation scenario.",
7
7
  "type": "object",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/agent-binding-degraded-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "AgentBindingDegradedEventV1",
6
6
  "description": "An agent binding entered a provider-neutral degraded state.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/AgentBindingDegradedEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/interaction-expired-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "InteractionExpiredEventV1",
6
6
  "description": "An interaction reached its terminal expiry without a valid answer.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/InteractionExpiredEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/interaction-received-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "InteractionReceivedEventV1",
6
6
  "description": "One authenticated, provider-neutral interaction answer was received.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/InteractionReceivedEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/message-delivered-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "MessageDeliveredEventV1",
6
6
  "description": "A provider supplied trustworthy evidence that a message was delivered.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/MessageDeliveredEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/message-expired-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "MessageExpiredEventV1",
6
6
  "description": "A message expired before reaching a later delivery state.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/MessageExpiredEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/message-failed-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "MessageFailedEventV1",
6
6
  "description": "A message reached a classified terminal failure.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/MessageFailedEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/message-provider-accepted-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "MessageProviderAcceptedEventV1",
6
6
  "description": "The provider accepted a message without implying delivery.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/MessageProviderAcceptedEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/subscription-activated-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "SubscriptionActivatedEventV1",
6
6
  "description": "A subscription became active with a safe public channel binding.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/SubscriptionActivatedEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/subscription-revoked-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "SubscriptionRevokedEventV1",
6
6
  "description": "A subscription and its safe public channel binding were revoked.",
7
7
  "$ref": "whooshbang-event-v1.schema.json#/$defs/SubscriptionRevokedEvent"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/events/whooshbang-event-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "WhooshBangEventV1ContractDocument",
6
6
  "description": "Strict public customer-event envelope and initial WhooshBang event union.",
7
7
  "oneOf": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/fixture-index.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "CoreFixtureIndex",
6
6
  "description": "The machine-readable index of deterministic C0-02 through C0-04 golden fixtures.",
7
7
  "type": "object",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/interaction-machine-scenario.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "InteractionMachineScenario",
6
6
  "description": "A deterministic C0-03 interaction, credential, authorization, polling, acknowledgement, or quarantine scenario.",
7
7
  "type": "object",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/interaction-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "InteractionV1ContractDocument",
6
6
  "description": "Provider-neutral confirm, single-select, input, lifecycle, callback-token, and authenticated answer-event contracts.",
7
7
  "oneOf": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/machine-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "MachineV1ContractDocument",
6
6
  "description": "Machine-client administration, locally generated credential metadata, durable long-poll, and contiguous acknowledgement contracts.",
7
7
  "oneOf": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/provider-capabilities-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "ProviderCapabilitiesV1",
6
6
  "description": "Provider-neutral, renderer-facing delivery and interaction capabilities with explicit degradation.",
7
7
  "type": "object",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/webhooks/webhook-delivery-case-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "WebhookDeliveryCaseSetV1",
6
6
  "description": "Deterministic customer webhook response classification, Retry-After, and delivery-bound cases.",
7
7
  "type": "object",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://whooshbang.flowxo.com/schemas/webhooks/webhook-signing-vector-v1.schema.json",
4
- "x-contract-version": "2.0.0-rc.8",
4
+ "x-contract-version": "2.1.0",
5
5
  "title": "WebhookSigningVectorSetV1",
6
6
  "description": "Language-neutral deterministic Standard Webhooks V1 verification vectors. All key material is public synthetic test data and must never be used outside fixtures.",
7
7
  "type": "object",