@whooshbang/contracts 2.3.0 → 2.5.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 (98) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/contract-manifest.json +35 -32
  3. package/dist/generated/artifact-index.d.ts +34 -34
  4. package/dist/generated/artifact-index.js +35 -32
  5. package/dist/generated/artifact-index.js.map +1 -1
  6. package/dist/generated/validators-standalone.d.ts +439 -400
  7. package/dist/generated/validators-standalone.js +6840 -1621
  8. package/dist/generated/validators-standalone.js.map +1 -1
  9. package/dist/generated/validators.d.ts +4 -1
  10. package/dist/generated/validators.js +4 -1
  11. package/dist/generated/validators.js.map +1 -1
  12. package/dist/generated/whooshbang-v1.d.ts +112 -1
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/fixtures/core-v1/fixture-index.json +24 -1
  17. package/fixtures/core-v1/requests/redeem-billing-promotion.json +3 -0
  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/core-v1/success/billing-promotion.json +14 -0
  40. package/fixtures/core-v1/success/billing-promotions.json +64 -0
  41. package/fixtures/core-v1/success/credit-purchase.json +2 -0
  42. package/fixtures/core-v1/success/subscription-change.json +7 -0
  43. package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
  44. package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
  45. package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
  46. package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
  47. package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
  48. package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
  49. package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
  50. package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
  51. package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
  52. package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
  53. package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
  54. package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
  55. package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
  56. package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
  57. package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
  58. package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
  59. package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
  60. package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
  61. package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
  62. package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
  63. package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
  64. package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
  65. package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
  66. package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
  67. package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
  68. package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
  69. package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
  70. package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
  71. package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
  72. package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
  73. package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
  74. package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
  75. package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
  76. package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +1 -1
  77. package/openapi/generated/whooshbang-v1.bundle.json +423 -11
  78. package/openapi/whooshbang-v1.yaml +124 -2
  79. package/package.json +1 -1
  80. package/schemas/core-scenario.schema.json +1 -1
  81. package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
  82. package/schemas/events/interaction-expired-v1.schema.json +1 -1
  83. package/schemas/events/interaction-received-v1.schema.json +1 -1
  84. package/schemas/events/message-delivered-v1.schema.json +1 -1
  85. package/schemas/events/message-expired-v1.schema.json +1 -1
  86. package/schemas/events/message-failed-v1.schema.json +1 -1
  87. package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
  88. package/schemas/events/subscription-activated-v1.schema.json +1 -1
  89. package/schemas/events/subscription-revoked-v1.schema.json +1 -1
  90. package/schemas/events/whooshbang-event-v1.schema.json +1 -1
  91. package/schemas/fixture-index.schema.json +1 -1
  92. package/schemas/interaction-machine-scenario.schema.json +1 -1
  93. package/schemas/interaction-v1.schema.json +1 -1
  94. package/schemas/machine-v1.schema.json +1 -1
  95. package/schemas/provider-capabilities-v1.schema.json +1 -1
  96. package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
  97. package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
  98. package/schemas/whooshbang-v1.schema.json +374 -3
@@ -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.3.0
4
+ x-contract-version: 2.5.0
5
5
  info:
6
6
  title: WhooshBang API
7
- version: 2.3.0
7
+ version: 2.5.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
@@ -75,6 +75,7 @@ paths:
75
75
  /v1/projects/{project_id}/environments/{environment_id}/whoami:
76
76
  get:
77
77
  operationId: whoAmI
78
+ x-notification-scopes: [notifications:self, notifications:team]
78
79
  summary: Identify the authenticated caller
79
80
  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
81
  tags: [Operators]
@@ -83,6 +84,8 @@ paths:
83
84
  - bearerCredential: []
84
85
  - bearerOrganizationCredential: []
85
86
  - bearerGrant: [messages:read]
87
+ - bearerGrant: [notifications:self]
88
+ - bearerGrant: [notifications:team]
86
89
  - machineCredential: []
87
90
  x-required-scopes: [messages:read]
88
91
  parameters:
@@ -102,6 +105,7 @@ paths:
102
105
  /v1/projects/{project_id}/environments/{environment_id}/operators:
103
106
  get:
104
107
  operationId: listOperators
108
+ x-notification-scopes: [notifications:team]
105
109
  summary: listOperators
106
110
  description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
107
111
  tags: [Operators]
@@ -109,6 +113,7 @@ paths:
109
113
  - clerkSession: []
110
114
  - bearerCredential: []
111
115
  - bearerGrant: [messages:read]
116
+ - bearerGrant: [notifications:team]
112
117
  x-required-scopes: [messages:read]
113
118
  parameters:
114
119
  - $ref: "#/components/parameters/ProjectId"
@@ -130,6 +135,7 @@ paths:
130
135
  /v1/projects/{project_id}/environments/{environment_id}/operators/resolve:
131
136
  get:
132
137
  operationId: resolveOperator
138
+ x-notification-scopes: [notifications:team]
133
139
  summary: resolveOperator
134
140
  description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
135
141
  tags: [Operators]
@@ -137,6 +143,7 @@ paths:
137
143
  - clerkSession: []
138
144
  - bearerCredential: []
139
145
  - bearerGrant: [messages:read]
146
+ - bearerGrant: [notifications:team]
140
147
  x-required-scopes: [messages:read]
141
148
  parameters:
142
149
  - $ref: "#/components/parameters/ProjectId"
@@ -159,6 +166,7 @@ paths:
159
166
  /v1/projects/{project_id}/environments/{environment_id}/operator-messages:
160
167
  post:
161
168
  operationId: sendOperatorMessage
169
+ x-notification-scopes: [notifications:self, notifications:team]
162
170
  summary: sendOperatorMessage
163
171
  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
172
  tags: [Operators]
@@ -168,6 +176,8 @@ paths:
168
176
  - bearerOrganizationCredential: []
169
177
  - machineCredential: []
170
178
  - bearerGrant: [messages:write]
179
+ - bearerGrant: [notifications:self]
180
+ - bearerGrant: [notifications:team]
171
181
  x-required-scopes: [messages:write]
172
182
  parameters:
173
183
  - $ref: "#/components/parameters/ProjectId"
@@ -193,6 +203,7 @@ paths:
193
203
  /v1/projects/{project_id}/environments/{environment_id}/operators/broadcasts:
194
204
  post:
195
205
  operationId: broadcastOperators
206
+ x-notification-scopes: [notifications:team]
196
207
  summary: broadcastOperators
197
208
  description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
198
209
  tags: [Operators]
@@ -200,6 +211,7 @@ paths:
200
211
  - clerkSession: []
201
212
  - bearerCredential: []
202
213
  - bearerGrant: [messages:write]
214
+ - bearerGrant: [notifications:team]
203
215
  x-required-scopes: [messages:write]
204
216
  parameters:
205
217
  - $ref: "#/components/parameters/ProjectId"
@@ -225,6 +237,7 @@ paths:
225
237
  /v1/projects/{project_id}/environments/{environment_id}/operators/broadcasts/{broadcast_id}:
226
238
  get:
227
239
  operationId: getOperatorBroadcast
240
+ x-notification-scopes: [notifications:team]
228
241
  summary: getOperatorBroadcast
229
242
  description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
230
243
  tags: [Operators]
@@ -232,6 +245,7 @@ paths:
232
245
  - clerkSession: []
233
246
  - bearerCredential: []
234
247
  - bearerGrant: [messages:read]
248
+ - bearerGrant: [notifications:team]
235
249
  x-required-scopes: [messages:read]
236
250
  parameters:
237
251
  - $ref: "#/components/parameters/ProjectId"
@@ -254,6 +268,7 @@ paths:
254
268
  /v1/projects/{project_id}/environments/{environment_id}/notification-preferences:
255
269
  get:
256
270
  operationId: getOperatorPreferences
271
+ x-notification-scopes: [notifications:self, notifications:team]
257
272
  summary: getOperatorPreferences
258
273
  description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
259
274
  tags: [Operators]
@@ -261,6 +276,8 @@ paths:
261
276
  - clerkSession: []
262
277
  - bearerCredential: []
263
278
  - bearerGrant: [messages:read]
279
+ - bearerGrant: [notifications:self]
280
+ - bearerGrant: [notifications:team]
264
281
  x-required-scopes: [messages:read]
265
282
  parameters:
266
283
  - $ref: "#/components/parameters/ProjectId"
@@ -279,6 +296,7 @@ paths:
279
296
  /v1/projects/{project_id}/environments/{environment_id}/notification-preferences/preferred-binding:
280
297
  put:
281
298
  operationId: setOperatorPreferredBinding
299
+ x-notification-scopes: [notifications:self, notifications:team]
282
300
  summary: setOperatorPreferredBinding
283
301
  description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
284
302
  tags: [Operators]
@@ -286,6 +304,8 @@ paths:
286
304
  - clerkSession: []
287
305
  - bearerCredential: []
288
306
  - bearerGrant: [messages:write]
307
+ - bearerGrant: [notifications:self]
308
+ - bearerGrant: [notifications:team]
289
309
  x-required-scopes: [messages:write]
290
310
  parameters:
291
311
  - $ref: "#/components/parameters/ProjectId"
@@ -310,6 +330,7 @@ paths:
310
330
  /v1/projects/{project_id}/environments/{environment_id}/notification-preferences/connect:
311
331
  post:
312
332
  operationId: connectOperatorChannel
333
+ x-notification-scopes: [notifications:self, notifications:team]
313
334
  summary: connectOperatorChannel
314
335
  description: Membership-derived operator messaging. Only the authenticated human can manage personal preferences.
315
336
  tags: [Operators]
@@ -317,6 +338,8 @@ paths:
317
338
  - clerkSession: []
318
339
  - bearerCredential: []
319
340
  - bearerGrant: [messages:write]
341
+ - bearerGrant: [notifications:self]
342
+ - bearerGrant: [notifications:team]
320
343
  x-required-scopes: [messages:write]
321
344
  parameters:
322
345
  - $ref: "#/components/parameters/ProjectId"
@@ -412,6 +435,93 @@ paths:
412
435
  $ref: "#/components/responses/Conflict"
413
436
  "429":
414
437
  $ref: "#/components/responses/RateLimited"
438
+ /v1/billing/promotions:
439
+ get:
440
+ operationId: getBillingPromotions
441
+ summary: Read the organization's promotions
442
+ description: |
443
+ Organization administrators can read every promotion the organization holds: rewards WhooshBang gave it
444
+ and promotion codes it redeemed, with what remains and when each ends. Promotional value has no cash
445
+ value, is never refunded and cannot move to another organization.
446
+ tags: [Organization]
447
+ security:
448
+ - clerkSession: []
449
+ - bearerGrant: []
450
+ x-required-scopes: [billing:read]
451
+ x-organization-membership: required
452
+ responses:
453
+ "200":
454
+ description: The organization's promotions, newest first.
455
+ headers:
456
+ WhooshBang-Diagnostic-Id:
457
+ $ref: "#/components/headers/DiagnosticId"
458
+ content:
459
+ application/json:
460
+ schema:
461
+ $ref: "#/components/schemas/BillingPromotions"
462
+ "401":
463
+ $ref: "#/components/responses/Unauthorized"
464
+ "403":
465
+ $ref: "#/components/responses/Forbidden"
466
+ "404":
467
+ $ref: "#/components/responses/NotFound"
468
+ "429":
469
+ $ref: "#/components/responses/RateLimited"
470
+ /v1/billing/promotions/redeem:
471
+ post:
472
+ operationId: redeemBillingPromotion
473
+ summary: Redeem a promotion code
474
+ description: |
475
+ Organization administrators can redeem a promotion code for their own organization. Nothing is charged.
476
+ Every code that cannot be redeemed (mistyped, ended, fully used, not offered to this organization, or not
477
+ combinable with a promotion it already holds) receives the same `resource_not_found` answer. Repeated
478
+ refusals are rate limited per organization; wait for `Retry-After`. Reuse the same idempotency key after
479
+ an uncertain response: it can never redeem twice.
480
+ tags: [Organization]
481
+ security:
482
+ - clerkSession: []
483
+ - bearerGrant: []
484
+ x-required-scopes: [billing:write]
485
+ x-organization-membership: required
486
+ parameters:
487
+ - $ref: "#/components/parameters/IdempotencyKey"
488
+ requestBody:
489
+ required: true
490
+ content:
491
+ application/json:
492
+ schema:
493
+ $ref: "#/components/schemas/RedeemBillingPromotionRequest"
494
+ responses:
495
+ "200":
496
+ description: The same promotion, replayed for a repeated idempotency key.
497
+ headers:
498
+ WhooshBang-Diagnostic-Id:
499
+ $ref: "#/components/headers/DiagnosticId"
500
+ content:
501
+ application/json:
502
+ schema:
503
+ $ref: "#/components/schemas/BillingPromotion"
504
+ "201":
505
+ description: The promotion the code gave the organization.
506
+ headers:
507
+ WhooshBang-Diagnostic-Id:
508
+ $ref: "#/components/headers/DiagnosticId"
509
+ content:
510
+ application/json:
511
+ schema:
512
+ $ref: "#/components/schemas/BillingPromotion"
513
+ "400":
514
+ $ref: "#/components/responses/BadRequest"
515
+ "401":
516
+ $ref: "#/components/responses/Unauthorized"
517
+ "403":
518
+ $ref: "#/components/responses/Forbidden"
519
+ "404":
520
+ $ref: "#/components/responses/NotFound"
521
+ "409":
522
+ $ref: "#/components/responses/Conflict"
523
+ "429":
524
+ $ref: "#/components/responses/RateLimited"
415
525
  /v1/billing/auto-top-up:
416
526
  get:
417
527
  operationId: getAutoTopUpSettings
@@ -1961,6 +2071,7 @@ paths:
1961
2071
  /v1/projects:
1962
2072
  get:
1963
2073
  operationId: listProjects
2074
+ x-notification-scopes: [notifications:self, notifications:team]
1964
2075
  summary: List projects in the current organization
1965
2076
  description: |
1966
2077
  Returns only projects owned by the organization selected by the verified
@@ -1971,6 +2082,8 @@ paths:
1971
2082
  security:
1972
2083
  - clerkSession: []
1973
2084
  - bearerGrant: []
2085
+ - bearerGrant: [notifications:self]
2086
+ - bearerGrant: [notifications:team]
1974
2087
  - bearerOrganizationCredential: []
1975
2088
  x-required-scopes:
1976
2089
  - projects:read
@@ -2064,6 +2177,7 @@ paths:
2064
2177
  - $ref: "#/components/parameters/ProjectId"
2065
2178
  get:
2066
2179
  operationId: getProject
2180
+ x-notification-scopes: [notifications:self, notifications:team]
2067
2181
  summary: Read one project in the current organization
2068
2182
  description: |
2069
2183
  Returns the complete project bootstrap. An absent project and a project
@@ -2073,6 +2187,8 @@ paths:
2073
2187
  security:
2074
2188
  - clerkSession: []
2075
2189
  - bearerGrant: []
2190
+ - bearerGrant: [notifications:self]
2191
+ - bearerGrant: [notifications:team]
2076
2192
  - bearerOrganizationCredential: []
2077
2193
  x-required-scopes:
2078
2194
  - projects:read
@@ -8725,6 +8841,12 @@ components:
8725
8841
  $ref: "../schemas/whooshbang-v1.schema.json#/$defs/BillingProjectSlots"
8726
8842
  AssignBillingProjectSlotsRequest:
8727
8843
  $ref: "../schemas/whooshbang-v1.schema.json#/$defs/AssignBillingProjectSlotsRequest"
8844
+ BillingPromotions:
8845
+ $ref: "../schemas/whooshbang-v1.schema.json#/$defs/BillingPromotions"
8846
+ BillingPromotion:
8847
+ $ref: "../schemas/whooshbang-v1.schema.json#/$defs/BillingPromotion"
8848
+ RedeemBillingPromotionRequest:
8849
+ $ref: "../schemas/whooshbang-v1.schema.json#/$defs/RedeemBillingPromotionRequest"
8728
8850
  BillingEntitlements:
8729
8851
  $ref: "../schemas/whooshbang-v1.schema.json#/$defs/BillingEntitlements"
8730
8852
  SubscriptionSelection:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whooshbang/contracts",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "Versioned public contracts for WhooshBang",
5
5
  "private": false,
6
6
  "license": "MIT",
@@ -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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.0",
5
5
  "title": "InteractionV1ContractDocument",
6
6
  "description": "Provider-neutral confirm, single-select, input, lifecycle, callback-token, and authenticated answer-event contracts.",
7
7
  "$defs": {
@@ -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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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.3.0",
4
+ "x-contract-version": "2.5.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",