@whooshbang/contracts 3.1.0 → 3.3.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 (95) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/contract-manifest.json +32 -32
  3. package/dist/generated/artifact-index.d.ts +33 -33
  4. package/dist/generated/artifact-index.js +32 -32
  5. package/dist/generated/validators-standalone.d.ts +582 -491
  6. package/dist/generated/validators-standalone.js +9597 -4634
  7. package/dist/generated/validators-standalone.js.map +1 -1
  8. package/dist/generated/validators.d.ts +8 -1
  9. package/dist/generated/validators.js +8 -1
  10. package/dist/generated/validators.js.map +1 -1
  11. package/dist/generated/whooshbang-v1.d.ts +147 -6
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.js +1 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/input-defaults.d.ts +1 -1
  16. package/dist/input-defaults.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/fixtures/recipient-experience-v1/success/project-recipient-experience.json +2 -0
  74. package/openapi/generated/whooshbang-v1.bundle.json +582 -19
  75. package/openapi/whooshbang-v1.yaml +281 -3
  76. package/package.json +1 -1
  77. package/schemas/core-scenario.schema.json +1 -1
  78. package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
  79. package/schemas/events/interaction-expired-v1.schema.json +1 -1
  80. package/schemas/events/interaction-received-v1.schema.json +1 -1
  81. package/schemas/events/message-delivered-v1.schema.json +1 -1
  82. package/schemas/events/message-expired-v1.schema.json +1 -1
  83. package/schemas/events/message-failed-v1.schema.json +1 -1
  84. package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
  85. package/schemas/events/subscription-activated-v1.schema.json +1 -1
  86. package/schemas/events/subscription-revoked-v1.schema.json +1 -1
  87. package/schemas/events/whooshbang-event-v1.schema.json +1 -1
  88. package/schemas/fixture-index.schema.json +1 -1
  89. package/schemas/interaction-machine-scenario.schema.json +1 -1
  90. package/schemas/interaction-v1.schema.json +1 -1
  91. package/schemas/machine-v1.schema.json +1 -1
  92. package/schemas/provider-capabilities-v1.schema.json +1 -1
  93. package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
  94. package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
  95. package/schemas/whooshbang-v1.schema.json +288 -11
@@ -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: 3.1.0
4
+ x-contract-version: 3.3.0
5
5
  info:
6
6
  title: WhooshBang API
7
- version: 3.1.0
7
+ version: 3.3.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
@@ -51,6 +51,8 @@ tags:
51
51
  description: Single-use, expiring Telegram authorization links.
52
52
  - name: Messages
53
53
  description: Asynchronous logical messages and their highest proven outcomes.
54
+ - name: Message categories
55
+ description: Project categories and subscriber choices for those categories.
54
56
  - name: Machine clients
55
57
  description: Project-administered, destination-bound local-client identities and one-way credential metadata.
56
58
  - name: Machine events
@@ -72,6 +74,191 @@ tags:
72
74
  - name: Group broadcasts
73
75
  description: Durable group acceptance and aggregate projection over ordinary child messages.
74
76
  paths:
77
+ /v1/projects/{project_id}/message-categories:
78
+ parameters:
79
+ - $ref: "#/components/parameters/ProjectId"
80
+ get:
81
+ operationId: listMessageCategories
82
+ summary: List project message categories
83
+ description: By default, only current categories are listed. Include archived categories when offering a filter over historical messages.
84
+ tags: [Message categories]
85
+ security:
86
+ - clerkSession: []
87
+ - bearerGrant: []
88
+ - bearerCredential: []
89
+ x-required-scopes: [projects:read]
90
+ parameters:
91
+ - in: query
92
+ name: include_archived
93
+ required: false
94
+ schema:
95
+ type: boolean
96
+ default: false
97
+ responses:
98
+ "200":
99
+ description: Categories in this project.
100
+ content:
101
+ application/json:
102
+ schema:
103
+ $ref: "#/components/schemas/MessageCategoryCollection"
104
+ "401":
105
+ $ref: "#/components/responses/Unauthorized"
106
+ "403":
107
+ $ref: "#/components/responses/Forbidden"
108
+ "404":
109
+ $ref: "#/components/responses/NotFound"
110
+ post:
111
+ operationId: createMessageCategory
112
+ summary: Add a project message category
113
+ tags: [Message categories]
114
+ security:
115
+ - clerkSession: []
116
+ - bearerGrant: []
117
+ - bearerCredential: []
118
+ x-required-scopes: [projects:write]
119
+ requestBody:
120
+ required: true
121
+ content:
122
+ application/json:
123
+ schema:
124
+ $ref: "#/components/schemas/CreateMessageCategoryRequest"
125
+ responses:
126
+ "201":
127
+ description: Category added.
128
+ content:
129
+ application/json:
130
+ schema:
131
+ $ref: "#/components/schemas/MessageCategory"
132
+ "400":
133
+ $ref: "#/components/responses/BadRequest"
134
+ "401":
135
+ $ref: "#/components/responses/Unauthorized"
136
+ "403":
137
+ $ref: "#/components/responses/Forbidden"
138
+ "409":
139
+ $ref: "#/components/responses/Conflict"
140
+ /v1/projects/{project_id}/message-categories/{category_key}:
141
+ parameters:
142
+ - $ref: "#/components/parameters/ProjectId"
143
+ - name: category_key
144
+ in: path
145
+ required: true
146
+ schema:
147
+ $ref: "#/components/schemas/MessageCategoryKey"
148
+ put:
149
+ operationId: updateMessageCategory
150
+ summary: Change a project's message category
151
+ tags: [Message categories]
152
+ security:
153
+ - clerkSession: []
154
+ - bearerGrant: []
155
+ - bearerCredential: []
156
+ x-required-scopes: [projects:write]
157
+ requestBody:
158
+ required: true
159
+ content:
160
+ application/json:
161
+ schema:
162
+ $ref: "#/components/schemas/UpdateMessageCategoryRequest"
163
+ responses:
164
+ "200":
165
+ description: Category updated.
166
+ content:
167
+ application/json:
168
+ schema:
169
+ $ref: "#/components/schemas/MessageCategory"
170
+ "400":
171
+ $ref: "#/components/responses/BadRequest"
172
+ "401":
173
+ $ref: "#/components/responses/Unauthorized"
174
+ "403":
175
+ $ref: "#/components/responses/Forbidden"
176
+ "404":
177
+ $ref: "#/components/responses/NotFound"
178
+ "409":
179
+ $ref: "#/components/responses/Conflict"
180
+ delete:
181
+ operationId: deleteMessageCategory
182
+ summary: Remove an unused message category
183
+ tags: [Message categories]
184
+ description: The default category and a category still used by queued messages cannot be removed.
185
+ security:
186
+ - clerkSession: []
187
+ - bearerGrant: []
188
+ - bearerCredential: []
189
+ x-required-scopes: [projects:write]
190
+ responses:
191
+ "204":
192
+ description: Category removed.
193
+ "401":
194
+ $ref: "#/components/responses/Unauthorized"
195
+ "403":
196
+ $ref: "#/components/responses/Forbidden"
197
+ "404":
198
+ $ref: "#/components/responses/NotFound"
199
+ "409":
200
+ $ref: "#/components/responses/Conflict"
201
+ /v1/projects/{project_id}/environments/{environment_id}/notification-preferences/categories:
202
+ parameters:
203
+ - $ref: "#/components/parameters/ProjectId"
204
+ - $ref: "#/components/parameters/EnvironmentId"
205
+ get:
206
+ operationId: getOwnCategoryPreferences
207
+ summary: Read my message category switches
208
+ tags: [Message categories]
209
+ security:
210
+ - clerkSession: []
211
+ x-required-scopes: [messages:read]
212
+ responses:
213
+ "200":
214
+ description: Category choices for the signed-in person.
215
+ content:
216
+ application/json:
217
+ schema:
218
+ $ref: "#/components/schemas/SubscriberCategoryPreferenceCollection"
219
+ "401":
220
+ $ref: "#/components/responses/Unauthorized"
221
+ "403":
222
+ $ref: "#/components/responses/Forbidden"
223
+ /v1/projects/{project_id}/environments/{environment_id}/notification-preferences/categories/{category_key}:
224
+ parameters:
225
+ - $ref: "#/components/parameters/ProjectId"
226
+ - $ref: "#/components/parameters/EnvironmentId"
227
+ - name: category_key
228
+ in: path
229
+ required: true
230
+ schema:
231
+ $ref: "#/components/schemas/MessageCategoryKey"
232
+ put:
233
+ operationId: setOwnCategoryPreference
234
+ summary: Switch one of my message categories on or off
235
+ tags: [Message categories]
236
+ security:
237
+ - clerkSession: []
238
+ x-required-scopes: [messages:write]
239
+ requestBody:
240
+ required: true
241
+ content:
242
+ application/json:
243
+ schema:
244
+ $ref: "#/components/schemas/SetSubscriberCategoryPreferenceRequest"
245
+ responses:
246
+ "200":
247
+ description: Updated category choice.
248
+ content:
249
+ application/json:
250
+ schema:
251
+ $ref: "#/components/schemas/SubscriberCategoryPreference"
252
+ "400":
253
+ $ref: "#/components/responses/BadRequest"
254
+ "401":
255
+ $ref: "#/components/responses/Unauthorized"
256
+ "403":
257
+ $ref: "#/components/responses/Forbidden"
258
+ "404":
259
+ $ref: "#/components/responses/NotFound"
260
+ "409":
261
+ $ref: "#/components/responses/Conflict"
75
262
  /v1/projects/{project_id}/environments/{environment_id}/whoami:
76
263
  get:
77
264
  operationId: whoAmI
@@ -5658,6 +5845,60 @@ paths:
5658
5845
  $ref: "#/components/responses/RecipientCapabilityInvalid"
5659
5846
  "403":
5660
5847
  $ref: "#/components/responses/RecipientOriginForbidden"
5848
+ /v1/recipient-session/category-preferences:
5849
+ get:
5850
+ operationId: getCategoryPreferences
5851
+ summary: Read this subscriber's message categories and switches
5852
+ tags: [Message categories]
5853
+ security:
5854
+ - recipientSessionCapability: []
5855
+ responses:
5856
+ "200":
5857
+ description: Category choices for this exact subscriber.
5858
+ content:
5859
+ application/json:
5860
+ schema:
5861
+ $ref: "#/components/schemas/SubscriberCategoryPreferenceCollection"
5862
+ "401":
5863
+ $ref: "#/components/responses/RecipientCapabilityInvalid"
5864
+ "403":
5865
+ $ref: "#/components/responses/RecipientOriginForbidden"
5866
+ /v1/recipient-session/category-preferences/{category_key}:
5867
+ parameters:
5868
+ - name: category_key
5869
+ in: path
5870
+ required: true
5871
+ schema:
5872
+ $ref: "#/components/schemas/MessageCategoryKey"
5873
+ put:
5874
+ operationId: setCategoryPreference
5875
+ summary: Switch one of this subscriber's message categories on or off
5876
+ tags: [Message categories]
5877
+ security:
5878
+ - recipientSessionCapability: []
5879
+ requestBody:
5880
+ required: true
5881
+ content:
5882
+ application/json:
5883
+ schema:
5884
+ $ref: "#/components/schemas/SetSubscriberCategoryPreferenceRequest"
5885
+ responses:
5886
+ "200":
5887
+ description: Updated category choice.
5888
+ content:
5889
+ application/json:
5890
+ schema:
5891
+ $ref: "#/components/schemas/SubscriberCategoryPreference"
5892
+ "400":
5893
+ $ref: "#/components/responses/BadRequest"
5894
+ "401":
5895
+ $ref: "#/components/responses/RecipientCapabilityInvalid"
5896
+ "403":
5897
+ $ref: "#/components/responses/RecipientOriginForbidden"
5898
+ "404":
5899
+ $ref: "#/components/responses/NotFound"
5900
+ "409":
5901
+ $ref: "#/components/responses/Conflict"
5661
5902
  /v1/recipient-session/logo/{asset_id}:
5662
5903
  parameters:
5663
5904
  - name: Origin
@@ -6649,7 +6890,7 @@ paths:
6649
6890
  get:
6650
6891
  operationId: listMessagesInEnvironment
6651
6892
  summary: List accepted messages with filters
6652
- description: "Content-free message history. Filters combine. accepted_after is inclusive; accepted_before is exclusive. Supply after or page, never both. after accepts the opaque next_after continuation; history intentionally has no total."
6893
+ description: "Message history with a retained-content snippet. q searches retained text or an exact message or subscriber ID. After content expires, its message ID still finds it. Filters combine before pagination. accepted_after is inclusive; accepted_before is exclusive. Supply after or page, never both. after accepts the opaque next_after continuation; history intentionally has no total."
6653
6894
  tags: [Administration]
6654
6895
  security:
6655
6896
  - clerkSession: []
@@ -6680,6 +6921,14 @@ paths:
6680
6921
  required: false
6681
6922
  schema:
6682
6923
  $ref: "#/components/schemas/OpaqueIdentifier"
6924
+ - in: query
6925
+ name: q
6926
+ required: false
6927
+ description: Search retained message text or an exact message or subscriber ID. Expired content is found by message ID only.
6928
+ schema:
6929
+ type: string
6930
+ minLength: 1
6931
+ maxLength: 256
6683
6932
  - in: query
6684
6933
  name: accepted_after
6685
6934
  required: false
@@ -6695,6 +6944,19 @@ paths:
6695
6944
  required: false
6696
6945
  schema:
6697
6946
  $ref: "#/components/schemas/OpaqueIdentifier"
6947
+ - in: query
6948
+ name: category_key
6949
+ required: false
6950
+ description: Match the category key captured when the message was accepted.
6951
+ schema:
6952
+ $ref: "#/components/schemas/MessageCategoryKey"
6953
+ - in: query
6954
+ name: no_category
6955
+ required: false
6956
+ description: Match messages accepted before categories were recorded. Cannot be true with category_key.
6957
+ schema:
6958
+ type: boolean
6959
+ default: false
6698
6960
  - in: query
6699
6961
  name: state
6700
6962
  required: false
@@ -9133,6 +9395,22 @@ components:
9133
9395
  schema:
9134
9396
  $ref: "#/components/schemas/DiagnosticId"
9135
9397
  schemas:
9398
+ MessageCategoryKey:
9399
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/MessageCategoryKey
9400
+ MessageCategory:
9401
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/MessageCategory
9402
+ MessageCategoryCollection:
9403
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/MessageCategoryCollection
9404
+ CreateMessageCategoryRequest:
9405
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/CreateMessageCategoryRequest
9406
+ UpdateMessageCategoryRequest:
9407
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/UpdateMessageCategoryRequest
9408
+ SubscriberCategoryPreference:
9409
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/SubscriberCategoryPreference
9410
+ SubscriberCategoryPreferenceCollection:
9411
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/SubscriberCategoryPreferenceCollection
9412
+ SetSubscriberCategoryPreferenceRequest:
9413
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/SetSubscriberCategoryPreferenceRequest
9136
9414
  WhoAmI:
9137
9415
  $ref: ../schemas/whooshbang-v1.schema.json#/$defs/WhoAmI
9138
9416
  Operator:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whooshbang/contracts",
3
- "version": "3.1.0",
3
+ "version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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": "3.1.0",
4
+ "x-contract-version": "3.3.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",