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