@whooshbang/contracts 2.0.0-rc.7 → 2.0.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 +17 -1
- package/README.md +4 -5
- package/contract-manifest.json +33 -32
- package/dist/generated/artifact-index.d.ts +34 -34
- package/dist/generated/artifact-index.js +33 -32
- package/dist/generated/artifact-index.js.map +1 -1
- package/dist/generated/validators-standalone.d.ts +488 -437
- package/dist/generated/validators-standalone.js +40130 -29709
- package/dist/generated/validators-standalone.js.map +1 -1
- package/dist/generated/validators.d.ts +5 -1
- package/dist/generated/validators.js +9 -2
- package/dist/generated/validators.js.map +1 -1
- package/dist/generated/whooshbang-event-v1.d.ts +34 -18
- package/dist/generated/whooshbang-v1.d.ts +220 -45
- 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 +7 -1
- package/fixtures/core-v1/requests/assert-email-service.json +10 -0
- 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/core-v1/success/subscription-change.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 +630 -48
- package/openapi/whooshbang-v1.yaml +230 -5
- 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 +145 -65
- 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 +552 -53
|
@@ -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.0.0
|
|
4
|
+
x-contract-version: 2.0.0
|
|
5
5
|
info:
|
|
6
6
|
title: WhooshBang API
|
|
7
|
-
version: 2.0.0
|
|
7
|
+
version: 2.0.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
|
|
@@ -37,6 +37,8 @@ security:
|
|
|
37
37
|
tags:
|
|
38
38
|
- name: Organization
|
|
39
39
|
description: The current Clerk organization projected as a WhooshBang organization.
|
|
40
|
+
- name: Teammates
|
|
41
|
+
description: The people in an organization, their roles and the projects each can see.
|
|
40
42
|
- name: Projects
|
|
41
43
|
description: Organization-scoped applications with transactionally bootstrapped test/live environments.
|
|
42
44
|
- name: API credentials
|
|
@@ -266,8 +268,16 @@ paths:
|
|
|
266
268
|
/v1/billing/subscription-changes:
|
|
267
269
|
post:
|
|
268
270
|
operationId: createSubscriptionChange
|
|
271
|
+
description: >-
|
|
272
|
+
Quote a new recurring selection without charging. Upgrades keep renewal
|
|
273
|
+
and charge the new plan or additional add-on units for the remaining
|
|
274
|
+
period, without unused-time credits or offsets. Paid dropped extras
|
|
275
|
+
remain available through their original expiry and do not renew.
|
|
276
|
+
Requires an administrator in the current organization. Without a current
|
|
277
|
+
plan or add-on the change starts one. Confirmation matches the saved exact
|
|
278
|
+
cash amount and charges the default card. Uncertain outcomes recover the
|
|
279
|
+
same owned change.
|
|
269
280
|
summary: Quote an approved recurring change
|
|
270
|
-
description: Requires an administrator in the current organization. A quote does not charge. Without a current plan or add-on the change starts one. Confirmation matches the saved exact cash amount and charges the default card. Uncertain outcomes recover the same owned change.
|
|
271
281
|
tags: [Organization]
|
|
272
282
|
security:
|
|
273
283
|
- clerkSession: []
|
|
@@ -310,7 +320,10 @@ paths:
|
|
|
310
320
|
get:
|
|
311
321
|
operationId: getSubscriptionChange
|
|
312
322
|
summary: Recover an owned recurring change
|
|
313
|
-
|
|
323
|
+
Requires an administrator in the current organization. Without a current
|
|
324
|
+
plan or add-on the change starts one. Confirmation matches the saved exact
|
|
325
|
+
cash amount and charges the default card. Uncertain outcomes recover the
|
|
326
|
+
same owned change.
|
|
314
327
|
tags: [Organization]
|
|
315
328
|
security:
|
|
316
329
|
- clerkSession: []
|
|
@@ -352,7 +365,10 @@ paths:
|
|
|
352
365
|
post:
|
|
353
366
|
operationId: confirmSubscriptionChange
|
|
354
367
|
summary: Confirm the quoted card charge or scheduled reduction
|
|
355
|
-
|
|
368
|
+
Requires an administrator in the current organization. Without a current
|
|
369
|
+
plan or add-on the change starts one. Confirmation matches the saved exact
|
|
370
|
+
cash amount and charges the default card. Uncertain outcomes recover the
|
|
371
|
+
same owned change.
|
|
356
372
|
tags: [Organization]
|
|
357
373
|
security:
|
|
358
374
|
- clerkSession: []
|
|
@@ -923,6 +939,207 @@ paths:
|
|
|
923
939
|
$ref: "#/components/responses/Conflict"
|
|
924
940
|
"429":
|
|
925
941
|
$ref: "#/components/responses/RateLimited"
|
|
942
|
+
/v1/organization/teammates:
|
|
943
|
+
get:
|
|
944
|
+
operationId: listTeammates
|
|
945
|
+
summary: List the organization's teammates and open invitations
|
|
946
|
+
description: |
|
|
947
|
+
Returns every person in the organization with their role, the projects
|
|
948
|
+
they can see and whether they have joined, plus every invitation not yet
|
|
949
|
+
accepted. Any teammate may read it; only an admin may change it.
|
|
950
|
+
tags:
|
|
951
|
+
- Teammates
|
|
952
|
+
security:
|
|
953
|
+
- clerkSession: []
|
|
954
|
+
- bearerGrant: [teammates:read]
|
|
955
|
+
x-required-scopes: [teammates:read]
|
|
956
|
+
x-organization-membership: required
|
|
957
|
+
parameters:
|
|
958
|
+
- $ref: "#/components/parameters/ListAfterCursor"
|
|
959
|
+
- $ref: "#/components/parameters/ListPageLimit"
|
|
960
|
+
- $ref: "#/components/parameters/PageNumber"
|
|
961
|
+
responses:
|
|
962
|
+
"200":
|
|
963
|
+
description: The organization's teammates.
|
|
964
|
+
headers:
|
|
965
|
+
WhooshBang-Diagnostic-Id:
|
|
966
|
+
$ref: "#/components/headers/DiagnosticId"
|
|
967
|
+
content:
|
|
968
|
+
application/json:
|
|
969
|
+
schema:
|
|
970
|
+
$ref: "#/components/schemas/TeammateCollection"
|
|
971
|
+
"401":
|
|
972
|
+
$ref: "#/components/responses/Unauthorized"
|
|
973
|
+
"403":
|
|
974
|
+
$ref: "#/components/responses/Forbidden"
|
|
975
|
+
"429":
|
|
976
|
+
$ref: "#/components/responses/RateLimited"
|
|
977
|
+
post:
|
|
978
|
+
operationId: inviteTeammate
|
|
979
|
+
summary: Invite a teammate
|
|
980
|
+
description: |
|
|
981
|
+
Emails one invitation carrying the chosen role and, for a member or
|
|
982
|
+
messenger, the projects they will see. Nothing else is needed after they
|
|
983
|
+
accept. Inviting an address that is already invited or already a
|
|
984
|
+
teammate is refused rather than repeated.
|
|
985
|
+
tags:
|
|
986
|
+
- Teammates
|
|
987
|
+
security:
|
|
988
|
+
- clerkSession: []
|
|
989
|
+
- bearerGrant: [teammates:write]
|
|
990
|
+
x-required-scopes: [teammates:write]
|
|
991
|
+
x-organization-membership: required
|
|
992
|
+
x-required-membership-role: admin
|
|
993
|
+
requestBody:
|
|
994
|
+
required: true
|
|
995
|
+
content:
|
|
996
|
+
application/json:
|
|
997
|
+
schema:
|
|
998
|
+
$ref: "#/components/schemas/InviteTeammateRequest"
|
|
999
|
+
responses:
|
|
1000
|
+
"201":
|
|
1001
|
+
description: The invitation.
|
|
1002
|
+
headers:
|
|
1003
|
+
WhooshBang-Diagnostic-Id:
|
|
1004
|
+
$ref: "#/components/headers/DiagnosticId"
|
|
1005
|
+
content:
|
|
1006
|
+
application/json:
|
|
1007
|
+
schema:
|
|
1008
|
+
$ref: "#/components/schemas/Teammate"
|
|
1009
|
+
"400":
|
|
1010
|
+
$ref: "#/components/responses/BadRequest"
|
|
1011
|
+
"401":
|
|
1012
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1013
|
+
"403":
|
|
1014
|
+
$ref: "#/components/responses/Forbidden"
|
|
1015
|
+
"429":
|
|
1016
|
+
$ref: "#/components/responses/RateLimited"
|
|
1017
|
+
/v1/organization/teammates/{teammate_id}:
|
|
1018
|
+
parameters:
|
|
1019
|
+
- name: teammate_id
|
|
1020
|
+
in: path
|
|
1021
|
+
required: true
|
|
1022
|
+
schema:
|
|
1023
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/OpaqueIdentifier"
|
|
1024
|
+
delete:
|
|
1025
|
+
operationId: removeTeammate
|
|
1026
|
+
summary: Remove a teammate or revoke an invitation
|
|
1027
|
+
description: |
|
|
1028
|
+
Removes an active teammate from the organization, or revokes an
|
|
1029
|
+
invitation. Removal applies to their next request, including requests
|
|
1030
|
+
from MCP connections they authorized. The last admin cannot be removed.
|
|
1031
|
+
tags:
|
|
1032
|
+
- Teammates
|
|
1033
|
+
security:
|
|
1034
|
+
- clerkSession: []
|
|
1035
|
+
- bearerGrant: [teammates:write]
|
|
1036
|
+
x-required-scopes: [teammates:write]
|
|
1037
|
+
x-organization-membership: required
|
|
1038
|
+
x-required-membership-role: admin
|
|
1039
|
+
responses:
|
|
1040
|
+
"204":
|
|
1041
|
+
description: The teammate was removed or the invitation revoked.
|
|
1042
|
+
headers:
|
|
1043
|
+
WhooshBang-Diagnostic-Id:
|
|
1044
|
+
$ref: "#/components/headers/DiagnosticId"
|
|
1045
|
+
"401":
|
|
1046
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1047
|
+
"403":
|
|
1048
|
+
$ref: "#/components/responses/Forbidden"
|
|
1049
|
+
"404":
|
|
1050
|
+
$ref: "#/components/responses/NotFound"
|
|
1051
|
+
"429":
|
|
1052
|
+
$ref: "#/components/responses/RateLimited"
|
|
1053
|
+
/v1/organization/teammates/{teammate_id}/access:
|
|
1054
|
+
parameters:
|
|
1055
|
+
- name: teammate_id
|
|
1056
|
+
in: path
|
|
1057
|
+
required: true
|
|
1058
|
+
schema:
|
|
1059
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/OpaqueIdentifier"
|
|
1060
|
+
put:
|
|
1061
|
+
operationId: setTeammateAccess
|
|
1062
|
+
summary: Change a teammate's role and projects
|
|
1063
|
+
description: |
|
|
1064
|
+
Replaces the role and, for a member or messenger, the projects of an
|
|
1065
|
+
active teammate or an open invitation. Narrowed access applies to their
|
|
1066
|
+
next request. The last admin cannot be demoted.
|
|
1067
|
+
tags:
|
|
1068
|
+
- Teammates
|
|
1069
|
+
security:
|
|
1070
|
+
- clerkSession: []
|
|
1071
|
+
- bearerGrant: [teammates:write]
|
|
1072
|
+
x-required-scopes: [teammates:write]
|
|
1073
|
+
x-organization-membership: required
|
|
1074
|
+
x-required-membership-role: admin
|
|
1075
|
+
x-repeat-semantics:
|
|
1076
|
+
same_target: idempotent
|
|
1077
|
+
secret_returned: false
|
|
1078
|
+
requestBody:
|
|
1079
|
+
required: true
|
|
1080
|
+
content:
|
|
1081
|
+
application/json:
|
|
1082
|
+
schema:
|
|
1083
|
+
$ref: "#/components/schemas/TeammateAccessRequest"
|
|
1084
|
+
responses:
|
|
1085
|
+
"200":
|
|
1086
|
+
description: The teammate with their new access.
|
|
1087
|
+
headers:
|
|
1088
|
+
WhooshBang-Diagnostic-Id:
|
|
1089
|
+
$ref: "#/components/headers/DiagnosticId"
|
|
1090
|
+
content:
|
|
1091
|
+
application/json:
|
|
1092
|
+
schema:
|
|
1093
|
+
$ref: "#/components/schemas/Teammate"
|
|
1094
|
+
"400":
|
|
1095
|
+
$ref: "#/components/responses/BadRequest"
|
|
1096
|
+
"401":
|
|
1097
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1098
|
+
"403":
|
|
1099
|
+
$ref: "#/components/responses/Forbidden"
|
|
1100
|
+
"404":
|
|
1101
|
+
$ref: "#/components/responses/NotFound"
|
|
1102
|
+
"429":
|
|
1103
|
+
$ref: "#/components/responses/RateLimited"
|
|
1104
|
+
/v1/organization/teammates/{teammate_id}/resend:
|
|
1105
|
+
parameters:
|
|
1106
|
+
- name: teammate_id
|
|
1107
|
+
in: path
|
|
1108
|
+
required: true
|
|
1109
|
+
schema:
|
|
1110
|
+
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/OpaqueIdentifier"
|
|
1111
|
+
post:
|
|
1112
|
+
operationId: resendTeammateInvitation
|
|
1113
|
+
summary: Resend an invitation
|
|
1114
|
+
description: |
|
|
1115
|
+
Replaces an open invitation with a fresh one carrying the same role and
|
|
1116
|
+
projects, and emails it again. The earlier link stops working.
|
|
1117
|
+
tags:
|
|
1118
|
+
- Teammates
|
|
1119
|
+
security:
|
|
1120
|
+
- clerkSession: []
|
|
1121
|
+
- bearerGrant: [teammates:write]
|
|
1122
|
+
x-required-scopes: [teammates:write]
|
|
1123
|
+
x-organization-membership: required
|
|
1124
|
+
x-required-membership-role: admin
|
|
1125
|
+
responses:
|
|
1126
|
+
"200":
|
|
1127
|
+
description: The renewed invitation.
|
|
1128
|
+
headers:
|
|
1129
|
+
WhooshBang-Diagnostic-Id:
|
|
1130
|
+
$ref: "#/components/headers/DiagnosticId"
|
|
1131
|
+
content:
|
|
1132
|
+
application/json:
|
|
1133
|
+
schema:
|
|
1134
|
+
$ref: "#/components/schemas/Teammate"
|
|
1135
|
+
"401":
|
|
1136
|
+
$ref: "#/components/responses/Unauthorized"
|
|
1137
|
+
"403":
|
|
1138
|
+
$ref: "#/components/responses/Forbidden"
|
|
1139
|
+
"404":
|
|
1140
|
+
$ref: "#/components/responses/NotFound"
|
|
1141
|
+
"429":
|
|
1142
|
+
$ref: "#/components/responses/RateLimited"
|
|
926
1143
|
/v1/provider-installations:
|
|
927
1144
|
get:
|
|
928
1145
|
operationId: listProviderInstallations
|
|
@@ -8253,6 +8470,14 @@ components:
|
|
|
8253
8470
|
$ref: "../schemas/whooshbang-v1.schema.json#/$defs/UpdateBillingReceiptEmailRequest"
|
|
8254
8471
|
OrganizationProjection:
|
|
8255
8472
|
$ref: ../schemas/whooshbang-v1.schema.json#/$defs/OrganizationProjection
|
|
8473
|
+
Teammate:
|
|
8474
|
+
$ref: ../schemas/whooshbang-v1.schema.json#/$defs/Teammate
|
|
8475
|
+
TeammateCollection:
|
|
8476
|
+
$ref: ../schemas/whooshbang-v1.schema.json#/$defs/TeammateCollection
|
|
8477
|
+
TeammateAccessRequest:
|
|
8478
|
+
$ref: ../schemas/whooshbang-v1.schema.json#/$defs/TeammateAccessRequest
|
|
8479
|
+
InviteTeammateRequest:
|
|
8480
|
+
$ref: ../schemas/whooshbang-v1.schema.json#/$defs/InviteTeammateRequest
|
|
8256
8481
|
UpdateProjectRequest:
|
|
8257
8482
|
$ref: ../schemas/whooshbang-v1.schema.json#/$defs/UpdateProjectRequest
|
|
8258
8483
|
PrivacyMode:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whooshbang/contracts",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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.0.0
|
|
4
|
+
"x-contract-version": "2.0.0",
|
|
5
5
|
"title": "WhooshBangEventV1ContractDocument",
|
|
6
6
|
"description": "Strict public customer-event envelope and initial WhooshBang event union.",
|
|
7
7
|
"oneOf": [
|
|
@@ -694,40 +694,80 @@
|
|
|
694
694
|
]
|
|
695
695
|
},
|
|
696
696
|
"SubscriptionAssertedData": {
|
|
697
|
-
"
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
"
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
697
|
+
"oneOf": [
|
|
698
|
+
{
|
|
699
|
+
"type": "object",
|
|
700
|
+
"required": [
|
|
701
|
+
"consent_assertion_id",
|
|
702
|
+
"binding_id",
|
|
703
|
+
"subscriber_id",
|
|
704
|
+
"notifier_id",
|
|
705
|
+
"channel",
|
|
706
|
+
"state",
|
|
707
|
+
"activated_at"
|
|
708
|
+
],
|
|
709
|
+
"properties": {
|
|
710
|
+
"binding_id": {
|
|
711
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
712
|
+
},
|
|
713
|
+
"subscriber_id": {
|
|
714
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
715
|
+
},
|
|
716
|
+
"notifier_id": {
|
|
717
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
718
|
+
},
|
|
719
|
+
"channel": {
|
|
720
|
+
"const": "email"
|
|
721
|
+
},
|
|
722
|
+
"state": {
|
|
723
|
+
"const": "activated"
|
|
724
|
+
},
|
|
725
|
+
"activated_at": {
|
|
726
|
+
"$ref": "#/$defs/Timestamp"
|
|
727
|
+
},
|
|
728
|
+
"consent_assertion_id": {
|
|
729
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
730
|
+
}
|
|
731
|
+
},
|
|
732
|
+
"additionalProperties": false
|
|
725
733
|
},
|
|
726
|
-
|
|
727
|
-
"
|
|
734
|
+
{
|
|
735
|
+
"type": "object",
|
|
736
|
+
"required": [
|
|
737
|
+
"service_assertion_id",
|
|
738
|
+
"binding_id",
|
|
739
|
+
"subscriber_id",
|
|
740
|
+
"notifier_id",
|
|
741
|
+
"channel",
|
|
742
|
+
"state",
|
|
743
|
+
"activated_at"
|
|
744
|
+
],
|
|
745
|
+
"properties": {
|
|
746
|
+
"binding_id": {
|
|
747
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
748
|
+
},
|
|
749
|
+
"subscriber_id": {
|
|
750
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
751
|
+
},
|
|
752
|
+
"notifier_id": {
|
|
753
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
754
|
+
},
|
|
755
|
+
"channel": {
|
|
756
|
+
"const": "email"
|
|
757
|
+
},
|
|
758
|
+
"state": {
|
|
759
|
+
"const": "activated"
|
|
760
|
+
},
|
|
761
|
+
"activated_at": {
|
|
762
|
+
"$ref": "#/$defs/Timestamp"
|
|
763
|
+
},
|
|
764
|
+
"service_assertion_id": {
|
|
765
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
"additionalProperties": false
|
|
728
769
|
}
|
|
729
|
-
|
|
730
|
-
"additionalProperties": false
|
|
770
|
+
]
|
|
731
771
|
},
|
|
732
772
|
"SubscriptionAssertedEvent": {
|
|
733
773
|
"allOf": [
|
|
@@ -748,40 +788,80 @@
|
|
|
748
788
|
]
|
|
749
789
|
},
|
|
750
790
|
"SubscriptionAssertedRevokedData": {
|
|
751
|
-
"
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
"
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
791
|
+
"oneOf": [
|
|
792
|
+
{
|
|
793
|
+
"type": "object",
|
|
794
|
+
"required": [
|
|
795
|
+
"consent_assertion_id",
|
|
796
|
+
"binding_id",
|
|
797
|
+
"subscriber_id",
|
|
798
|
+
"notifier_id",
|
|
799
|
+
"channel",
|
|
800
|
+
"state",
|
|
801
|
+
"revoked_at"
|
|
802
|
+
],
|
|
803
|
+
"properties": {
|
|
804
|
+
"binding_id": {
|
|
805
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
806
|
+
},
|
|
807
|
+
"subscriber_id": {
|
|
808
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
809
|
+
},
|
|
810
|
+
"notifier_id": {
|
|
811
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
812
|
+
},
|
|
813
|
+
"channel": {
|
|
814
|
+
"const": "email"
|
|
815
|
+
},
|
|
816
|
+
"state": {
|
|
817
|
+
"const": "revoked"
|
|
818
|
+
},
|
|
819
|
+
"revoked_at": {
|
|
820
|
+
"$ref": "#/$defs/Timestamp"
|
|
821
|
+
},
|
|
822
|
+
"consent_assertion_id": {
|
|
823
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
824
|
+
}
|
|
825
|
+
},
|
|
826
|
+
"additionalProperties": false
|
|
779
827
|
},
|
|
780
|
-
|
|
781
|
-
"
|
|
828
|
+
{
|
|
829
|
+
"type": "object",
|
|
830
|
+
"required": [
|
|
831
|
+
"service_assertion_id",
|
|
832
|
+
"binding_id",
|
|
833
|
+
"subscriber_id",
|
|
834
|
+
"notifier_id",
|
|
835
|
+
"channel",
|
|
836
|
+
"state",
|
|
837
|
+
"revoked_at"
|
|
838
|
+
],
|
|
839
|
+
"properties": {
|
|
840
|
+
"binding_id": {
|
|
841
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
842
|
+
},
|
|
843
|
+
"subscriber_id": {
|
|
844
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
845
|
+
},
|
|
846
|
+
"notifier_id": {
|
|
847
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
848
|
+
},
|
|
849
|
+
"channel": {
|
|
850
|
+
"const": "email"
|
|
851
|
+
},
|
|
852
|
+
"state": {
|
|
853
|
+
"const": "revoked"
|
|
854
|
+
},
|
|
855
|
+
"revoked_at": {
|
|
856
|
+
"$ref": "#/$defs/Timestamp"
|
|
857
|
+
},
|
|
858
|
+
"service_assertion_id": {
|
|
859
|
+
"$ref": "#/$defs/OpaqueIdentifier"
|
|
860
|
+
}
|
|
861
|
+
},
|
|
862
|
+
"additionalProperties": false
|
|
782
863
|
}
|
|
783
|
-
|
|
784
|
-
"additionalProperties": false
|
|
864
|
+
]
|
|
785
865
|
},
|
|
786
866
|
"SubscriptionAssertedRevokedEvent": {
|
|
787
867
|
"allOf": [
|
|
@@ -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.0.0
|
|
4
|
+
"x-contract-version": "2.0.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",
|