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

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 (144) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +9 -3
  3. package/contract-manifest.json +60 -43
  4. package/dist/generated/artifact-index.d.ts +36 -36
  5. package/dist/generated/artifact-index.js +58 -41
  6. package/dist/generated/artifact-index.js.map +1 -1
  7. package/dist/generated/validators-standalone.d.ts +429 -300
  8. package/dist/generated/validators-standalone.js +83679 -60246
  9. package/dist/generated/validators-standalone.js.map +1 -1
  10. package/dist/generated/validators.d.ts +22 -12
  11. package/dist/generated/validators.js +31 -21
  12. package/dist/generated/validators.js.map +1 -1
  13. package/dist/generated/whooshbang-event-v1.d.ts +32 -4
  14. package/dist/generated/whooshbang-v1.d.ts +1435 -442
  15. package/dist/index.d.ts +8 -7
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/fixtures/core-v1/fixture-index.json +146 -35
  19. package/fixtures/core-v1/problems/credential-organization-mismatch.json +9 -0
  20. package/fixtures/core-v1/problems/internal-error.json +10 -0
  21. package/fixtures/core-v1/problems/project-slug-conflict.json +1 -1
  22. package/fixtures/core-v1/problems/provider-destination-suppressed.json +13 -0
  23. package/fixtures/core-v1/problems/provider-hard-bounce.json +13 -0
  24. package/fixtures/core-v1/requests/assert-email-consent.json +10 -0
  25. package/fixtures/core-v1/requests/create-email-binding-import.json +35 -0
  26. package/fixtures/core-v1/requests/create-email-domain.json +5 -0
  27. package/fixtures/core-v1/requests/create-organization-credential.json +4 -0
  28. package/fixtures/core-v1/requests/create-subscription-link-email.json +8 -0
  29. package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
  30. package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
  31. package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
  32. package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
  33. package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
  34. package/fixtures/core-v1/scenarios/cross-organization-project.json +14 -0
  35. package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
  36. package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
  37. package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
  38. package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
  39. package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
  40. package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
  41. package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
  42. package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +2 -2
  43. package/fixtures/core-v1/scenarios/project-slug-conflict.json +2 -2
  44. package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
  45. package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
  46. package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
  47. package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
  48. package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
  49. package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
  50. package/fixtures/core-v1/success/channel-connection-email-customer-test.json +38 -0
  51. package/fixtures/core-v1/success/channel-connection-email-customer.json +38 -0
  52. package/fixtures/core-v1/success/channel-connection-email-shared.json +31 -0
  53. package/fixtures/core-v1/success/channel-connection-slack-customer-pending.json +3 -3
  54. package/fixtures/core-v1/success/customer-owned-slack-app-manifest.json +1 -0
  55. package/fixtures/core-v1/success/email-binding-import-job.json +22 -0
  56. package/fixtures/core-v1/success/email-consent-asserted.json +22 -0
  57. package/fixtures/core-v1/success/email-domain-collection.json +460 -0
  58. package/fixtures/core-v1/success/{account-credential-collection.json → organization-credential-collection.json} +3 -3
  59. package/fixtures/core-v1/success/organization-credential-created.json +12 -0
  60. package/fixtures/core-v1/success/{account-credential-revoked.json → organization-credential-revoked.json} +3 -3
  61. package/fixtures/core-v1/success/{account-credential-rotated.json → organization-credential-rotated.json} +7 -7
  62. package/fixtures/core-v1/success/{account-projection.json → organization-projection.json} +2 -2
  63. package/fixtures/core-v1/success/project-collection.json +1 -1
  64. package/fixtures/core-v1/success/project-created.json +1 -1
  65. package/fixtures/core-v1/success/provider-installation-email-collection.json +56 -0
  66. package/fixtures/core-v1/success/subscription-link-email-pending.json +24 -0
  67. package/fixtures/interaction-machine-v1/capabilities/providers.json +64 -32
  68. package/fixtures/interaction-machine-v1/capabilities/telegram.json +11 -33
  69. package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
  70. package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
  71. package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
  72. package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
  73. package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
  74. package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
  75. package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
  76. package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
  77. package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
  78. package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
  79. package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
  80. package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
  81. package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
  82. package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
  83. package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
  84. package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
  85. package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
  86. package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
  87. package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
  88. package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
  89. package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
  90. package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
  91. package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
  92. package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
  93. package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
  94. package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
  95. package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
  96. package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
  97. package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
  98. package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
  99. package/fixtures/recipient-experience-v1/requests/create-recipient-group.json +1 -1
  100. package/fixtures/recipient-experience-v1/requests/create-subscriber-with-groups.json +1 -1
  101. package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
  102. package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
  103. package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
  104. package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +2 -2
  105. package/fixtures/recipient-experience-v1/success/recipient-group.json +1 -1
  106. package/fixtures/whooshbang-events-v1/events/agent-binding-degraded.json +1 -1
  107. package/fixtures/whooshbang-events-v1/events/interaction-expired.json +1 -1
  108. package/fixtures/whooshbang-events-v1/events/interaction-received.json +1 -1
  109. package/fixtures/whooshbang-events-v1/events/message-delivered.json +1 -1
  110. package/fixtures/whooshbang-events-v1/events/message-expired.json +1 -1
  111. package/fixtures/whooshbang-events-v1/events/message-failed.json +1 -1
  112. package/fixtures/whooshbang-events-v1/events/message-provider-accepted.json +1 -1
  113. package/fixtures/whooshbang-events-v1/events/subscription-activated.json +1 -1
  114. package/fixtures/whooshbang-events-v1/events/subscription-asserted-revoked.json +18 -0
  115. package/fixtures/whooshbang-events-v1/events/subscription-asserted.json +18 -0
  116. package/fixtures/whooshbang-events-v1/events/subscription-revoked.json +1 -1
  117. package/fixtures/whooshbang-events-v1/signing/vectors.json +29 -29
  118. package/openapi/generated/whooshbang-v1.bundle.json +2656 -569
  119. package/openapi/whooshbang-v1.yaml +951 -246
  120. package/package.json +1 -1
  121. package/schemas/core-scenario.schema.json +1 -1
  122. package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
  123. package/schemas/events/interaction-expired-v1.schema.json +1 -1
  124. package/schemas/events/interaction-received-v1.schema.json +1 -1
  125. package/schemas/events/message-delivered-v1.schema.json +1 -1
  126. package/schemas/events/message-expired-v1.schema.json +1 -1
  127. package/schemas/events/message-failed-v1.schema.json +1 -1
  128. package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
  129. package/schemas/events/subscription-activated-v1.schema.json +1 -1
  130. package/schemas/events/subscription-revoked-v1.schema.json +1 -1
  131. package/schemas/events/whooshbang-event-v1.schema.json +121 -5
  132. package/schemas/fixture-index.schema.json +1 -1
  133. package/schemas/interaction-machine-scenario.schema.json +1 -1
  134. package/schemas/interaction-v1.schema.json +1 -1
  135. package/schemas/machine-v1.schema.json +1 -1
  136. package/schemas/provider-capabilities-v1.schema.json +1 -1
  137. package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
  138. package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
  139. package/schemas/whooshbang-v1.schema.json +1516 -297
  140. package/fixtures/core-v1/problems/credential-account-mismatch.json +0 -9
  141. package/fixtures/core-v1/requests/create-account-credential.json +0 -4
  142. package/fixtures/core-v1/scenarios/cross-account-project.json +0 -14
  143. package/fixtures/core-v1/success/account-credential-created.json +0 -12
  144. /package/fixtures/core-v1/requests/{rotate-account-credential.json → rotate-organization-credential.json} +0 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,74 @@ All notable contract changes are recorded here.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 1.0.0-rc.24
8
+
9
+ ### Breaking
10
+
11
+ - The channel-connection surface no longer names Slack (FXO-2442). Rename
12
+ `CustomerOwnedSlackChannelConnection`, `CustomerOwnedSlackConnectionSetup`,
13
+ `CustomerOwnedSlackSetupStatus`, `CustomerOwnedSlackAppAuthority` and
14
+ `CustomerOwnedSlackAppManifest` to `CustomerApplicationChannelConnection`,
15
+ `CustomerApplicationConnectionSetup`, `CustomerApplicationSetupStatus`,
16
+ `CustomerApplicationAuthority` and `CustomerApplicationManifest`, and
17
+ `validateCustomerOwnedSlackAppManifest` to
18
+ `validateCustomerApplicationManifest`. The old names have no aliases.
19
+ - The application authorities a customer-owned application hands over are
20
+ `application_identity`, `application_secret` and `ingress_secret`, replacing
21
+ `client_identity`, `client_secret` and `signing_secret` on
22
+ `RotateChannelConnectionCredentialRequest` and in `outstanding_authorities`.
23
+ `ingress_secret` is optional in shape; a provider whose application has one
24
+ (Slack) still refuses a request without it. `application_identity` is bounded
25
+ printable text; Slack still refuses a Client ID that is not
26
+ `<digits>.<digits>`.
27
+ - `TelegramConnectionIdentity`, `SlackConnectionIdentity` and
28
+ `EmailConnectionIdentity` are one `ConnectionIdentity` whose `provider` is any
29
+ `ChannelConnectionProvider`; an email handle is still an `EmailAddress`, and
30
+ every other handle is still at most 128 characters.
31
+ `SubscriptionConnectionSummary` is one object rather than a union of three.
32
+ - `HostedChannelConnection`, `CustomerApplicationChannelConnection` and the
33
+ hosted and customer-application arms of `CreateChannelConnectionRequest` take
34
+ any `ChannelConnectionProvider` rather than the `slack` constant. A provider
35
+ without that setup refuses it as `request_invalid` with the
36
+ `setup_mode_unavailable` field error on `/mode`.
37
+ `provider` alone therefore no longer discriminates `ChannelConnection`:
38
+ narrow on `mode`, or on a field only that arm publishes.
39
+ - `management_url` is no longer pinned to `slack://app`, and `creation_url` is
40
+ no longer pinned to `https://api.slack.com/apps`; each is a provider-owned
41
+ link. `management_url` still refuses a scheme a browser would execute.
42
+ - `CustomerApplicationManifest` carries `provider`; each of its `request_urls`
43
+ is present only when the provider calls it separately, and `manifest` only
44
+ when the provider creates the application from a document. Slack's always
45
+ carries all of them.
46
+ - `OrganizationClosureProviderAction.provider` is any
47
+ `ChannelConnectionProvider` rather than `telegram` or `slack`.
48
+
49
+ ### Added
50
+
51
+ - `ProblemCode` gains `internal_error` (500, "Internal error", retryable): a
52
+ fault inside WhooshBang with no provider or customer system involved. It
53
+ replaces the `provider_retryable` 503 the service used to answer for any
54
+ unrecognised failure, which sent readers to check a provider that was
55
+ working (FXO-2612). A consumer that switches exhaustively on `ProblemCode`
56
+ needs a branch for it.
57
+
58
+ ## 1.0.0-rc.23
59
+
60
+ ### Breaking
61
+
62
+ - Rename the WhooshBang tenant to organization throughout the public contract
63
+ (FXO-2337): `OrganizationProjection`, membership, role, credential and closure
64
+ types, `/v1/organization` routes, `organization_id` fields and
65
+ `organization:read`. Former tenant names have no aliases or deprecation
66
+ window. Personal and provider accounts retain their meaning.
67
+ - Organization credentials use `wb_oc1` and `ocred_`. The deployment migration
68
+ revokes existing tenant credentials; issue fresh organization credentials and
69
+ reauthorize existing OAuth clients after the cut. Project and machine
70
+ credentials retain their kinds.
71
+ - Update schemas, generated validators and synthetic fixtures together.
72
+ Integrators must update SDK validators even when their application does not
73
+ explicitly read the renamed tenant field.
74
+
7
75
  ## 1.0.0-rc.22
8
76
 
9
77
  - FXO-2271: live sends reject the reserved `test:` subscriber prefix and explicit
package/README.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # WhooshBang contract workspace
2
2
 
3
+ The organization contract batch uses `@whooshbang/contracts@1.0.0-rc.23`,
4
+ `@whooshbang/sdk@1.0.0-rc.32` and `@whooshbang/contract-mock@1.0.0-rc.35`.
5
+ Install the matching batch after publication. FXO-2337 is a clean cut from
6
+ tenant account terminology; the [upgrade guide](../../docs/onboarding/organization-upgrade.mdx)
7
+ covers renamed types, routes, fields, credentials and integration validation.
8
+
3
9
  `@whooshbang/contracts` is the runtime-neutral artifact boundary for
4
10
  public contracts owned by WhooshBang. It does not depend on sibling
5
11
  repositories or Cloudflare runtime types.
@@ -21,7 +27,7 @@ npm install @whooshbang/contracts@next
21
27
  pinned and exchanged as tarballs rather than accessed through sibling paths.
22
28
 
23
29
  The manifest indexes the C0-02 core REST contract, its approved N1-02
24
- account/project administration and N1-03 credential-lifecycle amendments, the
30
+ organization/project administration and N1-03 credential-lifecycle amendments, the
25
31
  C0-03 interaction, machine-client, machine-event, and provider-capability
26
32
  contracts, and the C0-04 signed customer-event and delivery contracts. The
27
33
  canonical API is `openapi/whooshbang-v1.yaml`; its committed distribution
@@ -38,8 +44,8 @@ perform no networking or persistence.
38
44
 
39
45
  ## N1-03 credential boundary
40
46
 
41
- - Human credential administration is scoped by the verified Clerk account and
42
- explicit account-owned project/environment path targets.
47
+ - Human credential administration is scoped by the verified Clerk organization and
48
+ explicit organization-owned project/environment path targets.
43
49
  - Project bearer syntax is
44
50
  `wb_pc1.pcred_<16-byte-base64url>.<32-byte-base64url-secret>`. Creation and
45
51
  rotation reveal the complete bearer exactly once and cannot be replayed.
@@ -1,120 +1,120 @@
1
1
  {
2
2
  "schema": "flowxo.contract-manifest.v1",
3
3
  "artifact": "@whooshbang/contracts",
4
- "version": "1.0.0-rc.22",
4
+ "version": "1.0.0-rc.24",
5
5
  "openapi": [
6
6
  {
7
7
  "id": "whooshbang-rest-v1",
8
- "version": "1.0.0-rc.22",
8
+ "version": "1.0.0-rc.24",
9
9
  "path": "openapi/whooshbang-v1.yaml"
10
10
  }
11
11
  ],
12
12
  "schemas": [
13
13
  {
14
14
  "id": "whooshbang-v1",
15
- "version": "1.0.0-rc.22",
15
+ "version": "1.0.0-rc.24",
16
16
  "path": "schemas/whooshbang-v1.schema.json"
17
17
  },
18
18
  {
19
19
  "id": "interaction-v1",
20
- "version": "1.0.0-rc.22",
20
+ "version": "1.0.0-rc.24",
21
21
  "path": "schemas/interaction-v1.schema.json"
22
22
  },
23
23
  {
24
24
  "id": "machine-v1",
25
- "version": "1.0.0-rc.22",
25
+ "version": "1.0.0-rc.24",
26
26
  "path": "schemas/machine-v1.schema.json"
27
27
  },
28
28
  {
29
29
  "id": "provider-capabilities-v1",
30
- "version": "1.0.0-rc.22",
30
+ "version": "1.0.0-rc.24",
31
31
  "path": "schemas/provider-capabilities-v1.schema.json"
32
32
  },
33
33
  {
34
34
  "id": "whooshbang-event-v1",
35
- "version": "1.0.0-rc.22",
35
+ "version": "1.0.0-rc.24",
36
36
  "path": "schemas/events/whooshbang-event-v1.schema.json"
37
37
  },
38
38
  {
39
39
  "id": "subscription-activated-event-v1",
40
- "version": "1.0.0-rc.22",
40
+ "version": "1.0.0-rc.24",
41
41
  "path": "schemas/events/subscription-activated-v1.schema.json"
42
42
  },
43
43
  {
44
44
  "id": "subscription-revoked-event-v1",
45
- "version": "1.0.0-rc.22",
45
+ "version": "1.0.0-rc.24",
46
46
  "path": "schemas/events/subscription-revoked-v1.schema.json"
47
47
  },
48
48
  {
49
49
  "id": "message-provider-accepted-event-v1",
50
- "version": "1.0.0-rc.22",
50
+ "version": "1.0.0-rc.24",
51
51
  "path": "schemas/events/message-provider-accepted-v1.schema.json"
52
52
  },
53
53
  {
54
54
  "id": "message-delivered-event-v1",
55
- "version": "1.0.0-rc.22",
55
+ "version": "1.0.0-rc.24",
56
56
  "path": "schemas/events/message-delivered-v1.schema.json"
57
57
  },
58
58
  {
59
59
  "id": "message-failed-event-v1",
60
- "version": "1.0.0-rc.22",
60
+ "version": "1.0.0-rc.24",
61
61
  "path": "schemas/events/message-failed-v1.schema.json"
62
62
  },
63
63
  {
64
64
  "id": "message-expired-event-v1",
65
- "version": "1.0.0-rc.22",
65
+ "version": "1.0.0-rc.24",
66
66
  "path": "schemas/events/message-expired-v1.schema.json"
67
67
  },
68
68
  {
69
69
  "id": "interaction-received-event-v1",
70
- "version": "1.0.0-rc.22",
70
+ "version": "1.0.0-rc.24",
71
71
  "path": "schemas/events/interaction-received-v1.schema.json"
72
72
  },
73
73
  {
74
74
  "id": "interaction-expired-event-v1",
75
- "version": "1.0.0-rc.22",
75
+ "version": "1.0.0-rc.24",
76
76
  "path": "schemas/events/interaction-expired-v1.schema.json"
77
77
  },
78
78
  {
79
79
  "id": "agent-binding-degraded-event-v1",
80
- "version": "1.0.0-rc.22",
80
+ "version": "1.0.0-rc.24",
81
81
  "path": "schemas/events/agent-binding-degraded-v1.schema.json"
82
82
  },
83
83
  {
84
84
  "id": "webhook-signing-vector-v1",
85
- "version": "1.0.0-rc.22",
85
+ "version": "1.0.0-rc.24",
86
86
  "path": "schemas/webhooks/webhook-signing-vector-v1.schema.json"
87
87
  },
88
88
  {
89
89
  "id": "webhook-delivery-case-v1",
90
- "version": "1.0.0-rc.22",
90
+ "version": "1.0.0-rc.24",
91
91
  "path": "schemas/webhooks/webhook-delivery-case-v1.schema.json"
92
92
  },
93
93
  {
94
94
  "id": "interaction-machine-scenario",
95
- "version": "1.0.0-rc.22",
95
+ "version": "1.0.0-rc.24",
96
96
  "path": "schemas/interaction-machine-scenario.schema.json"
97
97
  },
98
98
  {
99
99
  "id": "core-contract-scenario",
100
- "version": "1.0.0-rc.22",
100
+ "version": "1.0.0-rc.24",
101
101
  "path": "schemas/core-scenario.schema.json"
102
102
  },
103
103
  {
104
104
  "id": "core-fixture-index",
105
- "version": "1.0.0-rc.22",
105
+ "version": "1.0.0-rc.24",
106
106
  "path": "schemas/fixture-index.schema.json"
107
107
  }
108
108
  ],
109
109
  "fixture_sets": [
110
110
  {
111
111
  "id": "core-api-bodies",
112
- "version": "1.0.0-rc.22",
112
+ "version": "1.0.0-rc.24",
113
113
  "schema": "schemas/whooshbang-v1.schema.json",
114
114
  "fixtures": [
115
115
  "fixtures/core-v1/requests/create-project.json",
116
116
  "fixtures/core-v1/requests/update-project.json",
117
- "fixtures/core-v1/success/account-projection.json",
117
+ "fixtures/core-v1/success/organization-projection.json",
118
118
  "fixtures/core-v1/success/project-created.json",
119
119
  "fixtures/core-v1/success/project-collection.json",
120
120
  "fixtures/core-v1/requests/create-api-credential.json",
@@ -123,13 +123,13 @@
123
123
  "fixtures/core-v1/success/api-credential-created.json",
124
124
  "fixtures/core-v1/success/api-credential-rotated.json",
125
125
  "fixtures/core-v1/success/api-credential-revoked.json",
126
- "fixtures/core-v1/requests/create-account-credential.json",
127
- "fixtures/core-v1/requests/rotate-account-credential.json",
128
- "fixtures/core-v1/success/account-credential-collection.json",
129
- "fixtures/core-v1/success/account-credential-created.json",
130
- "fixtures/core-v1/success/account-credential-rotated.json",
131
- "fixtures/core-v1/success/account-credential-revoked.json",
132
- "fixtures/core-v1/problems/credential-account-mismatch.json",
126
+ "fixtures/core-v1/requests/create-organization-credential.json",
127
+ "fixtures/core-v1/requests/rotate-organization-credential.json",
128
+ "fixtures/core-v1/success/organization-credential-collection.json",
129
+ "fixtures/core-v1/success/organization-credential-created.json",
130
+ "fixtures/core-v1/success/organization-credential-rotated.json",
131
+ "fixtures/core-v1/success/organization-credential-revoked.json",
132
+ "fixtures/core-v1/problems/credential-organization-mismatch.json",
133
133
  "fixtures/core-v1/requests/create-customer-endpoint.json",
134
134
  "fixtures/core-v1/requests/rotate-customer-endpoint.json",
135
135
  "fixtures/core-v1/success/customer-endpoint-created.json",
@@ -138,12 +138,14 @@
138
138
  "fixtures/core-v1/success/customer-endpoint-collection.json",
139
139
  "fixtures/core-v1/success/customer-endpoint-attempts.json",
140
140
  "fixtures/core-v1/requests/create-subscription-link.json",
141
+ "fixtures/core-v1/requests/create-subscription-link-email.json",
141
142
  "fixtures/core-v1/requests/create-message.json",
142
143
  "fixtures/core-v1/requests/create-message-structured.json",
143
144
  "fixtures/core-v1/requests/create-message-image.json",
144
145
  "fixtures/core-v1/requests/create-message-document-image.json",
145
146
  "fixtures/core-v1/requests/create-message-connection.json",
146
147
  "fixtures/core-v1/success/subscription-link-pending.json",
148
+ "fixtures/core-v1/success/subscription-link-email-pending.json",
147
149
  "fixtures/core-v1/success/subscription-link-activated.json",
148
150
  "fixtures/core-v1/success/subscription-link-paused.json",
149
151
  "fixtures/core-v1/success/subscription-link-revoked.json",
@@ -174,7 +176,10 @@
174
176
  "fixtures/core-v1/problems/rate-limited.json",
175
177
  "fixtures/core-v1/problems/provider-retryable.json",
176
178
  "fixtures/core-v1/problems/provider-terminal.json",
179
+ "fixtures/core-v1/problems/provider-destination-suppressed.json",
180
+ "fixtures/core-v1/problems/provider-hard-bounce.json",
177
181
  "fixtures/core-v1/problems/provider-outcome-unknown.json",
182
+ "fixtures/core-v1/problems/internal-error.json",
178
183
  "fixtures/core-v1/requests/create-channel-connection.json",
179
184
  "fixtures/core-v1/requests/create-channel-connection-byok.json",
180
185
  "fixtures/core-v1/requests/create-channel-connection-managed.json",
@@ -190,6 +195,14 @@
190
195
  "fixtures/core-v1/success/channel-connection-managed-setup-failed.json",
191
196
  "fixtures/core-v1/success/channel-connection-slack-hosted-pending.json",
192
197
  "fixtures/core-v1/success/channel-connection-slack-hosted-active.json",
198
+ "fixtures/core-v1/success/channel-connection-email-shared.json",
199
+ "fixtures/core-v1/success/channel-connection-email-customer.json",
200
+ "fixtures/core-v1/success/channel-connection-email-customer-test.json",
201
+ "fixtures/core-v1/success/provider-installation-email-collection.json",
202
+ "fixtures/core-v1/success/email-domain-collection.json",
203
+ "fixtures/core-v1/requests/create-email-domain.json",
204
+ "fixtures/core-v1/requests/create-email-binding-import.json",
205
+ "fixtures/core-v1/success/email-binding-import-job.json",
193
206
  "fixtures/core-v1/success/channel-connection-slack-hosted-failed.json",
194
207
  "fixtures/core-v1/success/channel-connection-slack-customer-pending.json",
195
208
  "fixtures/core-v1/success/channel-connection-slack-customer-active.json",
@@ -237,17 +250,19 @@
237
250
  "fixtures/recipient-experience-v1/success/recipient-group-members.json",
238
251
  "fixtures/recipient-experience-v1/success/group-broadcast-accepted.json",
239
252
  "fixtures/recipient-experience-v1/success/group-broadcast-complete.json",
240
- "fixtures/recipient-experience-v1/success/broadcast-child-message.json"
253
+ "fixtures/recipient-experience-v1/success/broadcast-child-message.json",
254
+ "fixtures/core-v1/requests/assert-email-consent.json",
255
+ "fixtures/core-v1/success/email-consent-asserted.json"
241
256
  ]
242
257
  },
243
258
  {
244
259
  "id": "core-semantic-scenarios",
245
- "version": "1.0.0-rc.22",
260
+ "version": "1.0.0-rc.24",
246
261
  "schema": "schemas/core-scenario.schema.json",
247
262
  "fixtures": [
248
263
  "fixtures/core-v1/scenarios/project-create-equivalent-replay.json",
249
264
  "fixtures/core-v1/scenarios/project-slug-conflict.json",
250
- "fixtures/core-v1/scenarios/cross-account-project.json",
265
+ "fixtures/core-v1/scenarios/cross-organization-project.json",
251
266
  "fixtures/core-v1/scenarios/api-credential-one-time-reveal.json",
252
267
  "fixtures/core-v1/scenarios/api-credential-rotation-overlap.json",
253
268
  "fixtures/core-v1/scenarios/api-credential-revocation-replay.json",
@@ -274,7 +289,7 @@
274
289
  },
275
290
  {
276
291
  "id": "interaction-message-api-bodies",
277
- "version": "1.0.0-rc.22",
292
+ "version": "1.0.0-rc.24",
278
293
  "schema": "schemas/whooshbang-v1.schema.json",
279
294
  "fixtures": [
280
295
  "fixtures/interaction-machine-v1/requests/create-message-confirm.json",
@@ -286,7 +301,7 @@
286
301
  },
287
302
  {
288
303
  "id": "interaction-contract-bodies",
289
- "version": "1.0.0-rc.22",
304
+ "version": "1.0.0-rc.24",
290
305
  "schema": "schemas/interaction-v1.schema.json",
291
306
  "fixtures": [
292
307
  "fixtures/interaction-machine-v1/success/interaction-open.json",
@@ -303,7 +318,7 @@
303
318
  },
304
319
  {
305
320
  "id": "machine-api-bodies",
306
- "version": "1.0.0-rc.22",
321
+ "version": "1.0.0-rc.24",
307
322
  "schema": "schemas/machine-v1.schema.json",
308
323
  "fixtures": [
309
324
  "fixtures/interaction-machine-v1/requests/create-machine-client.json",
@@ -324,13 +339,13 @@
324
339
  },
325
340
  {
326
341
  "id": "provider-capability-bodies",
327
- "version": "1.0.0-rc.22",
342
+ "version": "1.0.0-rc.24",
328
343
  "schema": "schemas/provider-capabilities-v1.schema.json",
329
344
  "fixtures": ["fixtures/interaction-machine-v1/capabilities/telegram.json"]
330
345
  },
331
346
  {
332
347
  "id": "interaction-machine-semantic-scenarios",
333
- "version": "1.0.0-rc.22",
348
+ "version": "1.0.0-rc.24",
334
349
  "schema": "schemas/interaction-machine-scenario.schema.json",
335
350
  "fixtures": [
336
351
  "fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json",
@@ -367,7 +382,7 @@
367
382
  },
368
383
  {
369
384
  "id": "customer-event-bodies",
370
- "version": "1.0.0-rc.22",
385
+ "version": "1.0.0-rc.24",
371
386
  "schema": "schemas/events/whooshbang-event-v1.schema.json",
372
387
  "fixtures": [
373
388
  "fixtures/whooshbang-events-v1/events/subscription-activated.json",
@@ -378,24 +393,26 @@
378
393
  "fixtures/whooshbang-events-v1/events/message-expired.json",
379
394
  "fixtures/whooshbang-events-v1/events/interaction-received.json",
380
395
  "fixtures/whooshbang-events-v1/events/interaction-expired.json",
381
- "fixtures/whooshbang-events-v1/events/agent-binding-degraded.json"
396
+ "fixtures/whooshbang-events-v1/events/agent-binding-degraded.json",
397
+ "fixtures/whooshbang-events-v1/events/subscription-asserted.json",
398
+ "fixtures/whooshbang-events-v1/events/subscription-asserted-revoked.json"
382
399
  ]
383
400
  },
384
401
  {
385
402
  "id": "webhook-signing-vectors",
386
- "version": "1.0.0-rc.22",
403
+ "version": "1.0.0-rc.24",
387
404
  "schema": "schemas/webhooks/webhook-signing-vector-v1.schema.json",
388
405
  "fixtures": ["fixtures/whooshbang-events-v1/signing/vectors.json"]
389
406
  },
390
407
  {
391
408
  "id": "webhook-delivery-cases",
392
- "version": "1.0.0-rc.22",
409
+ "version": "1.0.0-rc.24",
393
410
  "schema": "schemas/webhooks/webhook-delivery-case-v1.schema.json",
394
411
  "fixtures": ["fixtures/whooshbang-events-v1/delivery/cases.json"]
395
412
  },
396
413
  {
397
414
  "id": "core-fixture-index",
398
- "version": "1.0.0-rc.22",
415
+ "version": "1.0.0-rc.24",
399
416
  "schema": "schemas/fixture-index.schema.json",
400
417
  "fixtures": ["fixtures/core-v1/fixture-index.json"]
401
418
  }