@whooshbang/contracts 1.0.0-rc.21 → 1.0.0-rc.22

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 (97) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/contract-manifest.json +34 -32
  3. package/dist/generated/artifact-index.d.ts +34 -34
  4. package/dist/generated/artifact-index.js +34 -32
  5. package/dist/generated/artifact-index.js.map +1 -1
  6. package/dist/generated/validators-standalone.d.ts +340 -288
  7. package/dist/generated/validators-standalone.js +5459 -2824
  8. package/dist/generated/validators-standalone.js.map +1 -1
  9. package/dist/generated/validators.d.ts +5 -1
  10. package/dist/generated/validators.js +5 -1
  11. package/dist/generated/validators.js.map +1 -1
  12. package/dist/generated/whooshbang-v1.d.ts +89 -3
  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 +17 -1
  17. package/fixtures/core-v1/problems/live-simulator-refused.json +16 -0
  18. package/fixtures/core-v1/requests/update-project.json +3 -0
  19. package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
  20. package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
  21. package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
  22. package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
  23. package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
  24. package/fixtures/core-v1/scenarios/cross-account-project.json +1 -1
  25. package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
  26. package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
  27. package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
  28. package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
  29. package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
  30. package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
  31. package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
  32. package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +1 -1
  33. package/fixtures/core-v1/scenarios/project-slug-conflict.json +1 -1
  34. package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
  35. package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
  36. package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
  37. package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
  38. package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
  39. package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
  40. package/fixtures/core-v1/success/project-collection.json +2 -1
  41. package/fixtures/core-v1/success/project-created.json +2 -1
  42. package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
  43. package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
  44. package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
  45. package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
  46. package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
  47. package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
  48. package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
  49. package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
  50. package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
  51. package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
  52. package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
  53. package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
  54. package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
  55. package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
  56. package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
  57. package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
  58. package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
  59. package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
  60. package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
  61. package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
  62. package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
  63. package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
  64. package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
  65. package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
  66. package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
  67. package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
  68. package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
  69. package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
  70. package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
  71. package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
  72. package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
  73. package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
  74. package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
  75. package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +1 -1
  76. package/openapi/generated/whooshbang-v1.bundle.json +360 -11
  77. package/openapi/whooshbang-v1.yaml +216 -2
  78. package/package.json +1 -1
  79. package/schemas/core-scenario.schema.json +1 -1
  80. package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
  81. package/schemas/events/interaction-expired-v1.schema.json +1 -1
  82. package/schemas/events/interaction-received-v1.schema.json +1 -1
  83. package/schemas/events/message-delivered-v1.schema.json +1 -1
  84. package/schemas/events/message-expired-v1.schema.json +1 -1
  85. package/schemas/events/message-failed-v1.schema.json +1 -1
  86. package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
  87. package/schemas/events/subscription-activated-v1.schema.json +1 -1
  88. package/schemas/events/subscription-revoked-v1.schema.json +1 -1
  89. package/schemas/events/whooshbang-event-v1.schema.json +1 -1
  90. package/schemas/fixture-index.schema.json +1 -1
  91. package/schemas/interaction-machine-scenario.schema.json +1 -1
  92. package/schemas/interaction-v1.schema.json +1 -1
  93. package/schemas/machine-v1.schema.json +1 -1
  94. package/schemas/provider-capabilities-v1.schema.json +1 -1
  95. package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
  96. package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
  97. package/schemas/whooshbang-v1.schema.json +225 -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: 1.0.0-rc.21
4
+ x-contract-version: 1.0.0-rc.22
5
5
  info:
6
6
  title: WhooshBang API
7
- version: 1.0.0-rc.21
7
+ version: 1.0.0-rc.22
8
8
  description: |
9
9
  The V1 contract for human account/project administration, project-scoped
10
10
  subscription links, and asynchronous text messages. A Clerk session selects
@@ -99,6 +99,56 @@ paths:
99
99
  $ref: "#/components/responses/Forbidden"
100
100
  "429":
101
101
  $ref: "#/components/responses/RateLimited"
102
+ /v1/account/close:
103
+ post:
104
+ operationId: closeAccount
105
+ summary: Close the current customer account
106
+ description: |
107
+ Terminally closes the account selected by the verified Clerk
108
+ organization session. Only an administrator may close it. OAuth grants
109
+ and API credentials are deliberately excluded: delegated authority must
110
+ not be able to erase the account that granted it.
111
+
112
+ The request requires the exact confirmation `close-account`. Repeating a
113
+ completed closure is safe and returns the original `closed_at`. The
114
+ result names provider-owned resources the administrator must still retire
115
+ outside WhooshBang, such as revoking a customer-managed Telegram bot token
116
+ in BotFather; no provider credential is returned.
117
+ tags:
118
+ - Account
119
+ security:
120
+ - clerkSession: []
121
+ x-account-membership: required
122
+ x-required-membership-role: admin
123
+ x-repeat-semantics:
124
+ same_target: idempotent
125
+ secret_returned: false
126
+ requestBody:
127
+ required: true
128
+ content:
129
+ application/json:
130
+ schema:
131
+ $ref: "#/components/schemas/CloseAccountRequest"
132
+ responses:
133
+ "200":
134
+ description: The account is closed, with any manual provider retirement still required.
135
+ headers:
136
+ WhooshBang-Diagnostic-Id:
137
+ $ref: "#/components/headers/DiagnosticId"
138
+ content:
139
+ application/json:
140
+ schema:
141
+ $ref: "#/components/schemas/AccountClosureResult"
142
+ "400":
143
+ $ref: "#/components/responses/BadRequest"
144
+ "401":
145
+ $ref: "#/components/responses/Unauthorized"
146
+ "403":
147
+ $ref: "#/components/responses/Forbidden"
148
+ "409":
149
+ $ref: "#/components/responses/Conflict"
150
+ "429":
151
+ $ref: "#/components/responses/RateLimited"
102
152
  /v1/account/credentials:
103
153
  get:
104
154
  operationId: listAccountCredentials
@@ -426,6 +476,57 @@ paths:
426
476
  $ref: "#/components/responses/NotFound"
427
477
  "429":
428
478
  $ref: "#/components/responses/RateLimited"
479
+ patch:
480
+ operationId: updateProject
481
+ summary: Set a project's privacy policy
482
+ description: |
483
+ Changes profile collection for both project environments. minimal is the
484
+ default for new and existing projects. standard permits messenger profiles;
485
+ minimal keeps recipient language only; private keeps delivery routing and
486
+ the customer-supplied subscriber identifier, with no profile data.
487
+ Moving standard to minimal erases existing identifying profile fields.
488
+ Moving to private also erases recipient language. Increasing collection
489
+ does not restore erased data. The operation is naturally idempotent.
490
+ An absent project and one outside the account return the same 404.
491
+ tags:
492
+ - Projects
493
+ security:
494
+ - clerkSession: []
495
+ - bearerGrant: []
496
+ - bearerCredential: []
497
+ - bearerAccountCredential: []
498
+ x-required-scopes:
499
+ - projects:write
500
+ x-account-membership: required
501
+ requestBody:
502
+ required: true
503
+ content:
504
+ application/json:
505
+ schema:
506
+ $ref: "#/components/schemas/UpdateProjectRequest"
507
+ examples:
508
+ updateProject:
509
+ externalValue: ../fixtures/core-v1/requests/update-project.json
510
+ responses:
511
+ "200":
512
+ description: The project after changing its privacy policy and clearing disallowed profile fields.
513
+ headers:
514
+ WhooshBang-Diagnostic-Id:
515
+ $ref: "#/components/headers/DiagnosticId"
516
+ content:
517
+ application/json:
518
+ schema:
519
+ $ref: "#/components/schemas/Project"
520
+ "400":
521
+ $ref: "#/components/responses/BadRequest"
522
+ "401":
523
+ $ref: "#/components/responses/Unauthorized"
524
+ "403":
525
+ $ref: "#/components/responses/Forbidden"
526
+ "404":
527
+ $ref: "#/components/responses/NotFound"
528
+ "429":
529
+ $ref: "#/components/responses/RateLimited"
429
530
  /v1/projects/{project_id}/recipient-copy-overrides:
430
531
  parameters:
431
532
  - $ref: "#/components/parameters/ProjectId"
@@ -1021,6 +1122,10 @@ paths:
1021
1122
  Durably accepts one logical text message for one subscriber and one
1022
1123
  resolved channel binding. `202` proves API acceptance only; it does not
1023
1124
  claim provider acceptance or end-device delivery.
1125
+ The reserved `test:` subscriber prefix and `delivery_target: simulator`
1126
+ are test-environment-only. Live sends are refused before acceptance or
1127
+ idempotent replay with `400 request_invalid`; reserved subscriber IDs
1128
+ carry a field error at `/to/subscriber_id`.
1024
1129
  tags:
1025
1130
  - Messages
1026
1131
  security:
@@ -1276,6 +1381,8 @@ paths:
1276
1381
  project credential. The notifier, subscriber, and active binding become
1277
1382
  immutable authorization bounds. The response never contains a readable
1278
1383
  secret or digest.
1384
+ Live environments reject the reserved `test:` subscriber prefix with
1385
+ `400 request_invalid` and a field error at `/subscriber_id` before creation.
1279
1386
  tags:
1280
1387
  - Machine clients
1281
1388
  security:
@@ -4740,6 +4847,103 @@ paths:
4740
4847
  $ref: "#/components/responses/Forbidden"
4741
4848
  "404":
4742
4849
  $ref: "#/components/responses/NotFound"
4850
+ /v1/projects/{project_id}/subscribers/{subscriber_id}:
4851
+ parameters:
4852
+ - $ref: "#/components/parameters/ProjectId"
4853
+ - name: subscriber_id
4854
+ in: path
4855
+ required: true
4856
+ schema:
4857
+ $ref: "#/components/schemas/OpaqueIdentifier"
4858
+ delete:
4859
+ operationId: eraseSubscriber
4860
+ summary: Erase one subscriber across the project
4861
+ description: |
4862
+ Erases the person represented by this customer-supplied subscriber id
4863
+ across both project environments. Personal content, answers, identities,
4864
+ and identifiers are removed while non-identifying delivery and usage
4865
+ shells remain. Pending work and old capabilities cannot restore or send
4866
+ data for the erased person.
4867
+
4868
+ Repeating the operation is safe, including when the subscriber is already
4869
+ absent. Project-environment credentials cannot call this project-wide
4870
+ operation. A provider action that has already begun returns
4871
+ `privacy_operation_in_progress` rather than claiming erasure won the race;
4872
+ retry after that operation finishes.
4873
+ tags:
4874
+ - Subscribers
4875
+ security:
4876
+ - clerkSession: []
4877
+ - bearerGrant: []
4878
+ - bearerAccountCredential: []
4879
+ x-required-scopes:
4880
+ - subscriptions:write
4881
+ - messages:write
4882
+ - machine-clients:write
4883
+ x-account-membership: required
4884
+ x-repeat-semantics:
4885
+ same_target: idempotent
4886
+ secret_returned: false
4887
+ responses:
4888
+ "204":
4889
+ description: The subscriber's personal data is erased or was already absent.
4890
+ "401":
4891
+ $ref: "#/components/responses/Unauthorized"
4892
+ "403":
4893
+ $ref: "#/components/responses/Forbidden"
4894
+ "404":
4895
+ $ref: "#/components/responses/NotFound"
4896
+ "409":
4897
+ $ref: "#/components/responses/Conflict"
4898
+ "429":
4899
+ $ref: "#/components/responses/RateLimited"
4900
+ /v1/projects/{project_id}/subscribers/{subscriber_id}/data-export:
4901
+ parameters:
4902
+ - $ref: "#/components/parameters/ProjectId"
4903
+ - name: subscriber_id
4904
+ in: path
4905
+ required: true
4906
+ schema:
4907
+ $ref: "#/components/schemas/OpaqueIdentifier"
4908
+ get:
4909
+ operationId: getSubscriberDataExport
4910
+ summary: Export all customer-controlled data held for one subscriber
4911
+ description: |
4912
+ Returns one complete, machine-readable artifact across every environment
4913
+ in the project. `provided_by_subscriber` is the Article 20 portable subset;
4914
+ the three provenance sections together provide the Article 15 access copy.
4915
+ WhooshBang-controller audit and service log data is identified as excluded
4916
+ and requires a separate recipient request. Project-environment credentials
4917
+ cannot call this project-wide operation.
4918
+ tags:
4919
+ - Subscribers
4920
+ security:
4921
+ - clerkSession: []
4922
+ - bearerGrant: []
4923
+ - bearerAccountCredential: []
4924
+ x-required-scopes:
4925
+ - subscriptions:read
4926
+ - messages:read
4927
+ - machine-clients:read
4928
+ x-account-membership: required
4929
+ responses:
4930
+ "200":
4931
+ description: Complete project-wide customer-controller subscriber data export.
4932
+ headers:
4933
+ Content-Disposition:
4934
+ schema:
4935
+ type: string
4936
+ description: Fixed safe attachment filename.
4937
+ content:
4938
+ application/json:
4939
+ schema:
4940
+ $ref: "#/components/schemas/SubscriberDataExport"
4941
+ "401":
4942
+ $ref: "#/components/responses/Unauthorized"
4943
+ "403":
4944
+ $ref: "#/components/responses/Forbidden"
4945
+ "404":
4946
+ $ref: "#/components/responses/NotFound"
4743
4947
  /v1/projects/{project_id}/environments/{environment_id}/recipient-groups:
4744
4948
  parameters:
4745
4949
  - $ref: "#/components/parameters/ProjectId"
@@ -5577,6 +5781,10 @@ components:
5577
5781
  $ref: ../schemas/whooshbang-v1.schema.json#/$defs/IdempotencyKey
5578
5782
  AccountProjection:
5579
5783
  $ref: ../schemas/whooshbang-v1.schema.json#/$defs/AccountProjection
5784
+ UpdateProjectRequest:
5785
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/UpdateProjectRequest
5786
+ PrivacyMode:
5787
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/PrivacyMode
5580
5788
  CreateProjectRequest:
5581
5789
  $ref: ../schemas/whooshbang-v1.schema.json#/$defs/CreateProjectRequest
5582
5790
  DefaultNotifierSummary:
@@ -5725,6 +5933,12 @@ components:
5725
5933
  $ref: ../schemas/whooshbang-v1.schema.json#/$defs/CreateSubscriberRequest
5726
5934
  Subscriber:
5727
5935
  $ref: ../schemas/whooshbang-v1.schema.json#/$defs/Subscriber
5936
+ SubscriberDataExport:
5937
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/SubscriberDataExport
5938
+ CloseAccountRequest:
5939
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/CloseAccountRequest
5940
+ AccountClosureResult:
5941
+ $ref: ../schemas/whooshbang-v1.schema.json#/$defs/AccountClosureResult
5728
5942
  CreateRecipientGroupRequest:
5729
5943
  $ref: ../schemas/whooshbang-v1.schema.json#/$defs/CreateRecipientGroupRequest
5730
5944
  UpdateRecipientGroupRequest:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whooshbang/contracts",
3
- "version": "1.0.0-rc.21",
3
+ "version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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": "1.0.0-rc.21",
4
+ "x-contract-version": "1.0.0-rc.22",
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",