@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.
Files changed (97) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/README.md +4 -5
  3. package/contract-manifest.json +33 -32
  4. package/dist/generated/artifact-index.d.ts +34 -34
  5. package/dist/generated/artifact-index.js +33 -32
  6. package/dist/generated/artifact-index.js.map +1 -1
  7. package/dist/generated/validators-standalone.d.ts +488 -437
  8. package/dist/generated/validators-standalone.js +40130 -29709
  9. package/dist/generated/validators-standalone.js.map +1 -1
  10. package/dist/generated/validators.d.ts +5 -1
  11. package/dist/generated/validators.js +9 -2
  12. package/dist/generated/validators.js.map +1 -1
  13. package/dist/generated/whooshbang-event-v1.d.ts +34 -18
  14. package/dist/generated/whooshbang-v1.d.ts +220 -45
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/fixtures/core-v1/fixture-index.json +7 -1
  19. package/fixtures/core-v1/requests/assert-email-service.json +10 -0
  20. package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
  21. package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
  22. package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
  23. package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
  24. package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
  25. package/fixtures/core-v1/scenarios/cross-organization-project.json +1 -1
  26. package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
  27. package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
  28. package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
  29. package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
  30. package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
  31. package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
  32. package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
  33. package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +1 -1
  34. package/fixtures/core-v1/scenarios/project-slug-conflict.json +1 -1
  35. package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
  36. package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
  37. package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
  38. package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
  39. package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
  40. package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
  41. package/fixtures/core-v1/success/subscription-change.json +1 -1
  42. package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
  43. package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
  44. package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
  45. package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
  46. package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
  47. package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
  48. package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
  49. package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
  50. package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
  51. package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
  52. package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
  53. package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
  54. package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
  55. package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
  56. package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
  57. package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
  58. package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
  59. package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
  60. package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
  61. package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
  62. package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
  63. package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
  64. package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
  65. package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
  66. package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
  67. package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
  68. package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
  69. package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
  70. package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
  71. package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
  72. package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
  73. package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
  74. package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
  75. package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +1 -1
  76. package/openapi/generated/whooshbang-v1.bundle.json +630 -48
  77. package/openapi/whooshbang-v1.yaml +230 -5
  78. package/package.json +2 -3
  79. package/schemas/core-scenario.schema.json +1 -1
  80. package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
  81. package/schemas/events/interaction-expired-v1.schema.json +1 -1
  82. package/schemas/events/interaction-received-v1.schema.json +1 -1
  83. package/schemas/events/message-delivered-v1.schema.json +1 -1
  84. package/schemas/events/message-expired-v1.schema.json +1 -1
  85. package/schemas/events/message-failed-v1.schema.json +1 -1
  86. package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
  87. package/schemas/events/subscription-activated-v1.schema.json +1 -1
  88. package/schemas/events/subscription-revoked-v1.schema.json +1 -1
  89. package/schemas/events/whooshbang-event-v1.schema.json +145 -65
  90. package/schemas/fixture-index.schema.json +1 -1
  91. package/schemas/interaction-machine-scenario.schema.json +1 -1
  92. package/schemas/interaction-v1.schema.json +1 -1
  93. package/schemas/machine-v1.schema.json +1 -1
  94. package/schemas/provider-capabilities-v1.schema.json +1 -1
  95. package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
  96. package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
  97. package/schemas/whooshbang-v1.schema.json +552 -53
@@ -5,15 +5,15 @@
5
5
  /**
6
6
  * Public request, resource, summary, and Problem Details models for the WhooshBang V1 REST API.
7
7
  */
8
- export type WhooshBangV1ContractDocument = OrganizationProjection | CloseOrganizationRequest | OrganizationClosureResult | CreateProjectRequest | Project | UpdateProjectRequest | PrivacyMode | ProjectCollection | RecipientCopyOverrideCollection | UpdateRecipientCopyOverrideRequest | CreateApiCredentialRequest | RotateApiCredentialRequest | ApiCredential | ApiCredentialCollection | ApiCredentialSecretReveal | ApiCredentialRotation | CreateOrganizationCredentialRequest | RotateOrganizationCredentialRequest | OrganizationCredential | OrganizationCredentialCollection | OrganizationCredentialSecretReveal | OrganizationCredentialRotation | CreateCustomerEndpointRequest | CustomerEndpoint | CustomerEndpointCollection | CustomerEndpointMutationResult | CustomerEndpointAttemptCollection | CustomerEndpointVerificationChallenge | CreateSubscriptionLinkRequest | SubscriptionLink | CreateMessageRequest | Message | Problem | IdempotencyKey | ProviderCapabilitiesCollection | ProviderInstallationCollection | EmailDomainCollection | CreateEmailDomainRequest | CreateEmailBindingImportRequest | EmailBindingImportJob | ConnectionProviderCollection | ChannelConnection | ChannelConnectionCollection | CreateChannelConnectionRequest | UpdateChannelConnectionRequest | RotateChannelConnectionCredentialRequest | NotifierConnectionCollection | AttachNotifierConnectionRequest | ConnectionTest | ConnectionTestCollection | CreateConnectionTestRequest | CustomerApplicationManifest | ProjectRecipientExperience | UpdateProjectRecipientExperienceRequest | RecipientBrandLogoUpload | NotificationImageAsset | EnvironmentRecipientExperience | UpdateEnvironmentRecipientExperienceRequest | SubscriberChannelSettings | AcknowledgeEmailRemediationRequest | CreateRecipientSessionRequest | CreateRecipientSessionResponse | RecipientSession | CreateProviderHandoffRequest | ProviderHandoff | RecipientHandoffCompletion | SetPreferredBindingRequest | PreferredBinding | CreateSubscriberRequest | UpdateSubscriberRequest | SubscriberCollection | Subscriber | SubscriberDataExport | CreateSubscriberGroupRequest | SubscriberGroup | SubscriberGroupCollection | SubscriberGroupMembership | SubscriberGroupMembershipCollection | CreateGroupBroadcastRequest | GroupBroadcast | AssertEmailConsentRequest | BindingSummary | UsageReport | MessageListEntry | MessageListPage | MessageDeliveryTimelineEntry | RetainedMessageContent | MessageDeliveryHistory | InteractionTimelineEntry | InteractionTimeline | UpdateEmailSenderRequest | CustomerEventDeliveryAttempt | CustomerEventDeliveryHistory | DeliveryHolds | MachineClientOperations | MachineClientOperationsList | RecipientCopyCatalogue | MessageNotificationImage | BillingAccount | BillingCard | CardSetup | CreateCreditPurchaseRequest | CreditPurchase | BillingInvoice | BillingInvoiceCollection | UpdateBillingReceiptEmailRequest | BillingEntitlements | SubscriptionSelection | ProjectAttribution | UpdateProjectAttributionRequest | BillingProjectSlots | AssignBillingProjectSlotsRequest | UpdateAutoTopUpSettingsRequest | AutoTopUpSettings | SubscriptionChange | ConfirmSubscriptionChangeRequest;
8
+ export type WhooshBangV1ContractDocument = OrganizationProjection | Teammate | TeammateCollection | TeammateAccessRequest | InviteTeammateRequest | CloseOrganizationRequest | OrganizationClosureResult | CreateProjectRequest | Project | UpdateProjectRequest | PrivacyMode | ProjectCollection | RecipientCopyOverrideCollection | UpdateRecipientCopyOverrideRequest | CreateApiCredentialRequest | RotateApiCredentialRequest | ApiCredential | ApiCredentialCollection | ApiCredentialSecretReveal | ApiCredentialRotation | CreateOrganizationCredentialRequest | RotateOrganizationCredentialRequest | OrganizationCredential | OrganizationCredentialCollection | OrganizationCredentialSecretReveal | OrganizationCredentialRotation | CreateCustomerEndpointRequest | CustomerEndpoint | CustomerEndpointCollection | CustomerEndpointMutationResult | CustomerEndpointAttemptCollection | CustomerEndpointVerificationChallenge | CreateSubscriptionLinkRequest | SubscriptionLink | CreateMessageRequest | Message | Problem | IdempotencyKey | ProviderCapabilitiesCollection | ProviderInstallationCollection | EmailDomainCollection | CreateEmailDomainRequest | CreateEmailBindingImportRequest | EmailBindingImportJob | ConnectionProviderCollection | ChannelConnection | ChannelConnectionCollection | CreateChannelConnectionRequest | UpdateChannelConnectionRequest | RotateChannelConnectionCredentialRequest | NotifierConnectionCollection | AttachNotifierConnectionRequest | ConnectionTest | ConnectionTestCollection | CreateConnectionTestRequest | CustomerApplicationManifest | ProjectRecipientExperience | UpdateProjectRecipientExperienceRequest | RecipientBrandLogoUpload | NotificationImageAsset | EnvironmentRecipientExperience | UpdateEnvironmentRecipientExperienceRequest | SubscriberChannelSettings | AcknowledgeEmailRemediationRequest | CreateRecipientSessionRequest | CreateRecipientSessionResponse | RecipientSession | CreateProviderHandoffRequest | ProviderHandoff | RecipientHandoffCompletion | SetPreferredBindingRequest | PreferredBinding | CreateSubscriberRequest | UpdateSubscriberRequest | SubscriberCollection | Subscriber | SubscriberDataExport | CreateSubscriberGroupRequest | SubscriberGroup | SubscriberGroupCollection | SubscriberGroupMembership | SubscriberGroupMembershipCollection | CreateGroupBroadcastRequest | GroupBroadcast | AssertEmailConsentRequest | BindingSummary | UsageReport | MessageListEntry | MessageListPage | MessageDeliveryTimelineEntry | RetainedMessageContent | MessageDeliveryHistory | InteractionTimelineEntry | InteractionTimeline | UpdateEmailSenderRequest | CustomerEventDeliveryAttempt | CustomerEventDeliveryHistory | DeliveryHolds | MachineClientOperations | MachineClientOperationsList | RecipientCopyCatalogue | MessageNotificationImage | BillingAccount | BillingCard | CardSetup | CreateCreditPurchaseRequest | CreditPurchase | BillingInvoice | BillingInvoiceCollection | UpdateBillingReceiptEmailRequest | BillingEntitlements | SubscriptionSelection1 | ProjectAttribution | UpdateProjectAttributionRequest | BillingProjectSlots | AssignBillingProjectSlotsRequest | UpdateAutoTopUpSettingsRequest | AutoTopUpSettings | SubscriptionChange | ConfirmSubscriptionChangeRequest;
9
9
  /**
10
10
  * An opaque identifier. Its shape, ordering, and embedded content are not public promises.
11
11
  */
12
12
  export type OpaqueIdentifier = string;
13
13
  /**
14
- * The stable WhooshBang authorization role projected from the current Clerk organization membership.
14
+ * The person's WhooshBang role in the organization. `admin` does everything, including billing, API keys and teammates. `member` runs the projects they were given: channels, subscribers, messages and project settings. `messenger` sends messages and reads replies in the projects they were given. Clients must tolerate roles added later.
15
15
  */
16
- export type OrganizationRole = "admin" | "member";
16
+ export type OrganizationRole = "admin" | "member" | "messenger";
17
17
  /**
18
18
  * An RFC 3339 timestamp with a UTC offset. The server is authoritative.
19
19
  */
@@ -22,6 +22,26 @@ export type Timestamp = string;
22
22
  * A safe public identifier used to correlate protected service diagnostics.
23
23
  */
24
24
  export type DiagnosticId = string;
25
+ /**
26
+ * `active` has joined. `invited` has an invitation they have not accepted.
27
+ */
28
+ export type TeammateStatus = "active" | "invited";
29
+ /**
30
+ * A 1-based page number. Present on a response only when the request addressed the list by page rather than by cursor: a cursor walk cannot know which page it is on. What is bounded is the row a page starts at, not the page number: a request whose first row would be past 50,000 — the deepest row any published list ceiling reaches — is refused as `request_invalid`. Bounding the page number instead would make the last rows of a large list unreachable at a small page size, which is exactly when a person is paging through one.
31
+ */
32
+ export type ListPageNumber = number;
33
+ /**
34
+ * The page size that produced `items`, echoed so a caller that sent no `limit` can still divide `total` into pages without knowing the server default.
35
+ */
36
+ export type ListPageSize = number;
37
+ /**
38
+ * How many records the list holds in total, not only on this page. Counted while the page was read, so a write landing between the count and the page can leave it a record or two out of step with `items`. That is noise on an inspection surface; it never changes which records a page addresses.
39
+ */
40
+ export type ListTotal = number;
41
+ /**
42
+ * Exactly one mailbox: an unquoted ASCII dot-atom local part plus a canonical lower-case IDNA domain. The comparison key preserves local-part bytes and case and lower-cases only the domain; dot, plus-tag, alias and provider equivalence are never inferred.
43
+ */
44
+ export type EmailAddress = string;
25
45
  /**
26
46
  * A provider that can back a Channel Connection. A member can be frozen before its adapter exists; deployments advertise only providers they can execute.
27
47
  */
@@ -38,18 +58,6 @@ export type Environment = "test" | "live";
38
58
  * Project profile collection policy. standard (the default for new projects) permits messenger profile data, including the name a subscriber's channel gives; minimal keeps recipient language only; private retains delivery routing and the customer-supplied subscriber identifier, with no profile data. Lowering collection erases existing fields the new mode disallows.
39
59
  */
40
60
  export type PrivacyMode = "minimal" | "standard" | "private";
41
- /**
42
- * A 1-based page number. Present on a response only when the request addressed the list by page rather than by cursor: a cursor walk cannot know which page it is on. What is bounded is the row a page starts at, not the page number: a request whose first row would be past 50,000 — the deepest row any published list ceiling reaches — is refused as `request_invalid`. Bounding the page number instead would make the last rows of a large list unreachable at a small page size, which is exactly when a person is paging through one.
43
- */
44
- export type ListPageNumber = number;
45
- /**
46
- * The page size that produced `items`, echoed so a caller that sent no `limit` can still divide `total` into pages without knowing the server default.
47
- */
48
- export type ListPageSize = number;
49
- /**
50
- * How many records the list holds in total, not only on this page. Counted while the page was read, so a write landing between the count and the page can leave it a record or two out of step with `items`. That is noise on an inspection surface; it never changes which records a page addresses.
51
- */
52
- export type ListTotal = number;
53
61
  /**
54
62
  * Every recipient-facing text is customizable (owner decision 2026-09-30, FXO-2739). Labels do not change the actions or capability semantics of recipient controls.
55
63
  */
@@ -326,7 +334,7 @@ export type CreateSubscriptionLinkRequest = {
326
334
  */
327
335
  connection_id?: string;
328
336
  /**
329
- * The exact recipient address for a server-initiated email verification. It is accepted only when the selected channel is email, stored encrypted, and does not assert consent. Omit it when the recipient will enter the address on the hosted page.
337
+ * Exactly one mailbox: an unquoted ASCII dot-atom local part plus a canonical lower-case IDNA domain. The comparison key preserves local-part bytes and case and lower-cases only the domain; dot, plus-tag, alias and provider equivalence are never inferred.
330
338
  */
331
339
  address?: string;
332
340
  /**
@@ -470,8 +478,52 @@ export type BindingSummary = {
470
478
  };
471
479
  domain_id: OpaqueIdentifier;
472
480
  };
481
+ } | {
482
+ id: OpaqueIdentifier;
483
+ project_id: OpaqueIdentifier;
484
+ environment: Environment;
485
+ subscriber_id: OpaqueIdentifier;
486
+ notifier_id: OpaqueIdentifier;
487
+ channel: "email";
488
+ connection_id: OpaqueIdentifier;
489
+ status: "active" | "paused" | "revoked";
490
+ /**
491
+ * Exactly one mailbox: an unquoted ASCII dot-atom local part plus a canonical lower-case IDNA domain. The comparison key preserves local-part bytes and case and lower-cases only the domain; dot, plus-tag, alias and provider equivalence are never inferred.
492
+ */
493
+ address: string;
494
+ basis: "service";
495
+ service: {
496
+ source: string;
497
+ asserted_at: Timestamp;
498
+ asserted_by: {
499
+ kind: "credential" | "grant" | "session";
500
+ id: OpaqueIdentifier;
501
+ };
502
+ domain_id: OpaqueIdentifier;
503
+ relationship_started_at: Timestamp;
504
+ };
505
+ } | {
506
+ id: OpaqueIdentifier;
507
+ project_id: OpaqueIdentifier;
508
+ environment: Environment;
509
+ subscriber_id: OpaqueIdentifier;
510
+ notifier_id: OpaqueIdentifier;
511
+ channel: "email";
512
+ connection_id: OpaqueIdentifier;
513
+ status: "active" | "paused" | "revoked";
514
+ basis: "service";
515
+ service: {
516
+ source: string;
517
+ asserted_at: Timestamp;
518
+ asserted_by: {
519
+ kind: "credential" | "grant" | "session";
520
+ id: OpaqueIdentifier;
521
+ };
522
+ domain_id: OpaqueIdentifier;
523
+ relationship_started_at: Timestamp;
524
+ };
473
525
  };
474
- export type ProblemCode = "authentication_required" | "credential_invalid" | "scope_forbidden" | "environment_mismatch" | "idempotency_key_required" | "idempotency_conflict" | "privacy_operation_in_progress" | "project_slug_conflict" | "request_invalid" | "replay_unavailable" | "subscriber_unbound" | "subscriber_not_connected" | "recipient_configuration_invalid" | "recipient_origin_forbidden" | "return_destination_not_found" | "recipient_capability_invalid" | "recipient_handoff_invalid" | "preferred_binding_conflict" | "preferred_binding_unavailable" | "subscriber_conflict" | "subscriber_group_conflict" | "subscriber_group_archived" | "resource_not_found" | "resource_expired" | "cancellation_too_late" | "credential_organization_mismatch" | "endpoint_rotation_conflict" | "rate_limited" | "provider_retryable" | "provider_terminal" | "provider_outcome_unknown" | "internal_error";
526
+ export type ProblemCode = "authentication_required" | "credential_invalid" | "scope_forbidden" | "environment_mismatch" | "idempotency_key_required" | "idempotency_conflict" | "privacy_operation_in_progress" | "project_slug_conflict" | "request_invalid" | "replay_unavailable" | "subscriber_unbound" | "subscriber_not_connected" | "recipient_configuration_invalid" | "recipient_origin_forbidden" | "return_destination_not_found" | "recipient_capability_invalid" | "recipient_handoff_invalid" | "preferred_binding_conflict" | "preferred_binding_unavailable" | "subscriber_conflict" | "subscriber_group_conflict" | "subscriber_group_archived" | "resource_not_found" | "resource_expired" | "cancellation_too_late" | "credential_organization_mismatch" | "endpoint_rotation_conflict" | "rate_limited" | "provider_retryable" | "provider_terminal" | "provider_outcome_unknown" | "internal_error" | "not_consented_for_marketing";
475
527
  /**
476
528
  * Creates one logical message for one subscriber and one resolved channel binding.
477
529
  */
@@ -499,6 +551,10 @@ export type CreateMessageRequest = {
499
551
  * A required-type tagged union. C0 supports confirm, single-select, and input only.
500
552
  */
501
553
  interaction?: ConfirmInteractionRequest | SelectInteractionRequest | InputInteractionRequest;
554
+ /**
555
+ * Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
556
+ */
557
+ purpose?: "service" | "marketing";
502
558
  };
503
559
  export type MessageContent = TextContent | DocumentContent;
504
560
  /**
@@ -583,6 +639,10 @@ export type Message = {
583
639
  */
584
640
  connection_test_id?: string;
585
641
  outcome_guidance?: "Delivery may have been accepted by the provider. No automatic retry is scheduled; create a new message explicitly if another attempt is appropriate.";
642
+ /**
643
+ * Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
644
+ */
645
+ purpose?: "service" | "marketing";
586
646
  };
587
647
  /**
588
648
  * The effective provider boundary selected for a message. Connection delivery uses the exact authorized environment connection; simulator delivery never calls a provider.
@@ -1129,6 +1189,13 @@ export type Problem1 = {
1129
1189
  code?: "internal_error";
1130
1190
  retryable?: true;
1131
1191
  [k: string]: unknown;
1192
+ } | {
1193
+ type?: "https://whooshbang.flowxo.com/problems/not_consented_for_marketing";
1194
+ title?: "Marketing consent required";
1195
+ status?: 422;
1196
+ code?: "not_consented_for_marketing";
1197
+ retryable?: false;
1198
+ [k: string]: unknown;
1132
1199
  };
1133
1200
  /**
1134
1201
  * Visible ASCII, scoped by authenticated environment, operation ID, and key, and retained for seven days from first acceptance.
@@ -1288,10 +1355,6 @@ export type EmailDomainGuide = {
1288
1355
  */
1289
1356
  instructions_url?: string;
1290
1357
  };
1291
- /**
1292
- * Exactly one mailbox: an unquoted ASCII dot-atom local part plus a canonical lower-case IDNA domain. The comparison key preserves local-part bytes and case and lower-cases only the domain; dot, plus-tag, alias and provider equivalence are never inferred.
1293
- */
1294
- export type EmailAddress = string;
1295
1358
  /**
1296
1359
  * How consent for this exact subscriber, notifier and connection was established. A customer assertion never becomes recipient-observed verification. Complaint, unsubscribe and suppression override either arm.
1297
1360
  */
@@ -2361,6 +2424,40 @@ export type SubscriberGroupMembership = {
2361
2424
  updated_at: Timestamp;
2362
2425
  diagnostic_id: DiagnosticId;
2363
2426
  };
2427
+ /**
2428
+ * Assert prior consent or enroll an application-verified user for service email on an exact customer-owned connection. Revocation and sending restrictions always win.
2429
+ */
2430
+ export type AssertEmailConsentRequest = {
2431
+ subscriber_id: OpaqueIdentifier;
2432
+ notifier_id: OpaqueIdentifier;
2433
+ connection_id: OpaqueIdentifier;
2434
+ domain_id: OpaqueIdentifier;
2435
+ address: EmailAddress;
2436
+ consented: true;
2437
+ /**
2438
+ * An RFC 3339 timestamp with a UTC offset. The server is authoritative.
2439
+ */
2440
+ consented_at: string;
2441
+ /**
2442
+ * A bounded customer description of where consent was collected. The authenticated asserting actor is recorded by the service, never accepted from this object.
2443
+ */
2444
+ source?: string;
2445
+ } | {
2446
+ subscriber_id: OpaqueIdentifier;
2447
+ notifier_id: OpaqueIdentifier;
2448
+ connection_id: OpaqueIdentifier;
2449
+ domain_id: OpaqueIdentifier;
2450
+ address: EmailAddress;
2451
+ /**
2452
+ * A bounded customer description of the service relationship. The authenticated asserting actor is recorded by the service, never accepted from this object.
2453
+ */
2454
+ source: string;
2455
+ basis: "service";
2456
+ /**
2457
+ * An RFC 3339 timestamp with a UTC offset. The server is authoritative.
2458
+ */
2459
+ relationship_started_at: string;
2460
+ };
2364
2461
  /**
2365
2462
  * A calendar day in UTC, as `YYYY-MM-DD`.
2366
2463
  */
@@ -2430,6 +2527,81 @@ export interface OrganizationProjection {
2430
2527
  export interface OrganizationMembershipSummary {
2431
2528
  role: OrganizationRole;
2432
2529
  }
2530
+ /**
2531
+ * One person in the organization, or one invitation to it. Identity-provider identifiers are not public fields.
2532
+ */
2533
+ export interface Teammate {
2534
+ id: OpaqueIdentifier;
2535
+ status: TeammateStatus;
2536
+ role: OrganizationRole;
2537
+ /**
2538
+ * The person's name, when they have given one. Null for an invitation.
2539
+ */
2540
+ name: null | string;
2541
+ /**
2542
+ * The address the person signs in with, or the address invited.
2543
+ */
2544
+ email: null | string;
2545
+ projects: TeammateProjectAccess;
2546
+ /**
2547
+ * Whether this is the person making the request.
2548
+ */
2549
+ is_current_user: boolean;
2550
+ /**
2551
+ * An RFC 3339 timestamp with a UTC offset. The server is authoritative.
2552
+ */
2553
+ created_at: string;
2554
+ /**
2555
+ * An RFC 3339 timestamp with a UTC offset. The server is authoritative.
2556
+ */
2557
+ expires_at?: string;
2558
+ }
2559
+ /**
2560
+ * Which projects the teammate can see. An admin sees every project, including ones created later.
2561
+ */
2562
+ export interface TeammateProjectAccess {
2563
+ all: boolean;
2564
+ /**
2565
+ * The projects given to this teammate. Empty when `all` is true.
2566
+ *
2567
+ * @maxItems 1000
2568
+ */
2569
+ project_ids: OpaqueIdentifier[];
2570
+ }
2571
+ /**
2572
+ * Everybody in the organization and every open invitation, people first.
2573
+ */
2574
+ export interface TeammateCollection {
2575
+ /**
2576
+ * @maxItems 100
2577
+ */
2578
+ items: Teammate[];
2579
+ next_cursor?: string;
2580
+ page?: ListPageNumber;
2581
+ page_size?: ListPageSize;
2582
+ total: ListTotal;
2583
+ }
2584
+ /**
2585
+ * A role and, except for an admin, at least one project. An admin sees every project and takes no list.
2586
+ */
2587
+ export interface TeammateAccessRequest {
2588
+ role: OrganizationRole;
2589
+ /**
2590
+ * @maxItems 1000
2591
+ */
2592
+ project_ids?: OpaqueIdentifier[];
2593
+ }
2594
+ /**
2595
+ * Invites one person by email with their role and projects in one step.
2596
+ */
2597
+ export interface InviteTeammateRequest {
2598
+ email: EmailAddress;
2599
+ role: OrganizationRole;
2600
+ /**
2601
+ * @maxItems 1000
2602
+ */
2603
+ project_ids?: OpaqueIdentifier[];
2604
+ }
2433
2605
  /**
2434
2606
  * Exact, explicit confirmation that the current organization administrator intends to close the whole organization.
2435
2607
  */
@@ -6644,6 +6816,10 @@ export interface CreateGroupBroadcastRequest {
6644
6816
  * A required-type tagged union. C0 supports confirm, single-select, and input only.
6645
6817
  */
6646
6818
  interaction?: ConfirmInteractionRequest | SelectInteractionRequest | InputInteractionRequest;
6819
+ /**
6820
+ * Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
6821
+ */
6822
+ purpose?: "service" | "marketing";
6647
6823
  }
6648
6824
  /**
6649
6825
  * One durable acceptance against an exact group membership revision. Delivery remains represented by ordinary child messages.
@@ -6680,25 +6856,6 @@ export interface BroadcastAggregate {
6680
6856
  cancelled: number;
6681
6857
  expired: number;
6682
6858
  }
6683
- /**
6684
- * Atomically create or resolve one subscriber and assert existing consent for an exact customer-owned email connection and domain. No verification message is sent. Revocation, suppression, recipient pause, holds and unhealthy authority take precedence. An omitted source is recorded as customer.
6685
- */
6686
- export interface AssertEmailConsentRequest {
6687
- subscriber_id: OpaqueIdentifier;
6688
- notifier_id: OpaqueIdentifier;
6689
- connection_id: OpaqueIdentifier;
6690
- domain_id: OpaqueIdentifier;
6691
- address: EmailAddress;
6692
- consented: true;
6693
- /**
6694
- * An RFC 3339 timestamp with a UTC offset. The server is authoritative.
6695
- */
6696
- consented_at: string;
6697
- /**
6698
- * A bounded customer description of where consent was collected. The authenticated asserting actor is recorded by the service, never accepted from this object.
6699
- */
6700
- source?: string;
6701
- }
6702
6859
  /**
6703
6860
  * An environment's accepted messages per UTC day over an inclusive range, one bucket for every day in the range including days with none, oldest first. `totals` sums the range.
6704
6861
  */
@@ -7946,9 +8103,10 @@ export interface BillingEntitlements {
7946
8103
  amount_usd: string;
7947
8104
  next_attempt_at: string | null;
7948
8105
  };
8106
+ recurring_selection?: SubscriptionSelection;
7949
8107
  }
7950
8108
  /**
7951
- * An account's recurring selection: a plan, branding removal and extra projects. The server selects approved prices and allowances. Branding removal is included on Team and Agency; Pay as you go may add it. Choosing Pay as you go with nothing else ends every recurring charge at the paid boundary.
8109
+ * Selection that will renew; paid project capacity can also include dropped extras until their original expiry. Optional for compatibility with older servers.
7952
8110
  */
7953
8111
  export interface SubscriptionSelection {
7954
8112
  plan: "payg" | "team" | "agency";
@@ -7961,6 +8119,20 @@ export interface SubscriptionSelection {
7961
8119
  */
7962
8120
  additional_projects: number;
7963
8121
  }
8122
+ /**
8123
+ * An account's recurring selection: a plan, branding removal and extra projects. The server selects approved prices and allowances. Branding removal is included on Team and Agency; Pay as you go may add it. Choosing Pay as you go with nothing else ends every recurring charge at the paid boundary.
8124
+ */
8125
+ export interface SubscriptionSelection1 {
8126
+ plan: "payg" | "team" | "agency";
8127
+ /**
8128
+ * Remove WhooshBang branding from recipient emails, messages and subscription pages.
8129
+ */
8130
+ hide_attribution: boolean;
8131
+ /**
8132
+ * Extra projects beyond the plan's included projects, each billed monthly.
8133
+ */
8134
+ additional_projects: number;
8135
+ }
7964
8136
  /**
7965
8137
  * The saved project preference and current server-enforced paid entitlement. Expiry restores visible attribution without changing sender identity, consent, unsubscribe or answer controls.
7966
8138
  */
@@ -7973,16 +8145,16 @@ export interface UpdateProjectAttributionRequest {
7973
8145
  hide_attribution: boolean;
7974
8146
  }
7975
8147
  /**
7976
- * Reusable account project slots. After a downgrade the oldest requested projects retain active slots. Unassigned projects retain data, accepted delivery and answers; new live sends require an active slot.
8148
+ * Reusable account project slots. After a downgrade the oldest requested projects retain active slots. Unassigned projects retain data, accepted delivery and answers; new live sends require an active slot. Paid capacity includes all unexpired project purchases, so retained dropped extras can exceed the maximum renewing selection.
7977
8149
  */
7978
8150
  export interface BillingProjectSlots {
7979
8151
  project_capacity: number;
7980
8152
  /**
7981
- * @maxItems 10025
8153
+ * @maxItems 2147483647
7982
8154
  */
7983
8155
  requested_project_ids: OpaqueIdentifier[];
7984
8156
  /**
7985
- * @maxItems 10025
8157
+ * @maxItems 2147483647
7986
8158
  */
7987
8159
  active_project_ids: OpaqueIdentifier[];
7988
8160
  }
@@ -8030,9 +8202,12 @@ export interface SubscriptionChange {
8030
8202
  id: string;
8031
8203
  kind: "start" | "upgrade" | "boundary";
8032
8204
  status: "reserved" | "processing" | "pending" | "scheduled" | "applied" | "expired";
8033
- selection: SubscriptionSelection;
8205
+ selection: SubscriptionSelection1;
8034
8206
  monthly_price_usd: string;
8035
8207
  charge_now_usd: string | null;
8208
+ /**
8209
+ * Compatibility field: new upgrades return 0.000000; starts and boundary changes return null. Historical quotes can retain their recorded unused-time credit. No new automatic unused-time refunds or offsets.
8210
+ */
8036
8211
  unused_time_credit_usd: string | null;
8037
8212
  effective_at: string | null;
8038
8213
  expires_at: string;
package/dist/index.d.ts CHANGED
@@ -15,12 +15,12 @@ export type { MachineCredentialCrypto, MachineCredentialMaterial, MachineCredent
15
15
  export type { RejectedWebhookSignature, VerifiedWebhookSignature, VerifyWebhookSignatureOptions, WebhookCrypto, WebhookHeaderEntry, WebhookHeaderRecord, WebhookHeaders, WebhookSignatureVerification, WebhookVerificationFailureReason, } from "./webhook-signature.js";
16
16
  export type { ConsumeVerifiedWebhookOptions, DuplicateWebhookConsumption, ProcessedWebhookConsumption, RejectedWebhookConsumption, WebhookConsumptionResult, WebhookConsumerRejectionReason, WebhookDeduplicationInput, WebhookDeduplicationOutcome, WebhookDeduplicationStore, } from "./webhook-consumer.js";
17
17
  export type { AcceptedWebhookDelivery, ClassifyWebhookDeliveryOptions, HttpDeliveryOutcome, NetworkFailureOutcome, RetryWebhookDelivery, TerminalWebhookDelivery, WebhookDeliveryClassification, WebhookDeliveryOutcome, WebhookDeliveryRetryReason, WebhookDeliveryTerminalReason, } from "./webhook-delivery.js";
18
- export { contractValidationErrors, validateOrganizationCredential, validateOrganizationCredentialCollection, validateOrganizationCredentialRotation, validateOrganizationCredentialSecretReveal, validateBillingProjectSlots, validateAssignBillingProjectSlotsRequest, validateSubscriptionChange, validateConfirmSubscriptionChangeRequest, validateBillingEntitlements, validateSubscriptionSelection, validateProjectAttribution, validateUpdateProjectAttributionRequest, validateUpdateAutoTopUpSettingsRequest, validateAutoTopUpSettings, validateBillingAccount, validateBillingCard, validateCardSetup, validateCreateCreditPurchaseRequest, validateCreditPurchase, validateBillingInvoice, validateBillingInvoiceCollection, validateUpdateBillingReceiptEmailRequest, validateOrganizationProjection, validateApiCredential, validateApiCredentialCollection, validateApiCredentialRotation, validateApiCredentialSecretReveal, validateAssertEmailConsentRequest, validateBindingSummary, validateCreateOrganizationCredentialRequest, validateCreateApiCredentialRequest, validateChannelConnection, validateChannelConnectionCollection, validateConnectionProviderCollection, validateCreateChannelConnectionRequest, validateUpdateChannelConnectionRequest, validateRotateChannelConnectionCredentialRequest, validateConnectionTest, validateConnectionTestCollection, validateUsageReport, validateCreateConnectionTestRequest, validateCustomerApplicationManifest, validateAttachNotifierConnectionRequest, validateNotifierConnectionCollection, validateProjectRecipientExperience, validateRecipientBrandLogoUpload, validateNotificationImageAsset, validateUpdateProjectRecipientExperienceRequest, validateEnvironmentRecipientExperience, validateUpdateEnvironmentRecipientExperienceRequest, validateSubscriberChannelSettings, validateAcknowledgeEmailRemediationRequest, validateCreateRecipientSessionRequest, validateCreateRecipientSessionResponse, validateRecipientSession, validateCreateProviderHandoffRequest, validateProviderHandoff, validateRecipientHandoffCompletion, validateSetPreferredBindingRequest, validatePreferredBinding, validateCreateSubscriberRequest, validateSubscriber, validateUpdateSubscriberRequest, validateSubscriberCollection, validateSubscriberDataExport, validateCloseOrganizationRequest, validateOrganizationClosureResult, validateCreateSubscriberGroupRequest, validateUpdateSubscriberGroupRequest, validateSubscriberGroup, validateSubscriberGroupCollection, validateSubscriberGroupMembership, validateSubscriberGroupMembershipCollection, validateCreateGroupBroadcastRequest, validateGroupBroadcast, validateCreateCustomerEndpointRequest, validateCreateProjectRequest, validateUpdateProjectRequest, validateCreateMachineClientRequest, validateCreateMessageRequest, validateCreateSubscriptionLinkRequest, validateDeliveryAttemptSummary, validateCustomerEndpoint, validateCustomerEndpointAttemptCollection, validateCustomerEndpointCollection, validateCustomerEndpointMutationResult, validateCustomerEndpointVerificationChallenge, validateIdempotencyKey, validateAgentBindingDegradedEvent, validateInteractionEvent, validateInteractionExpiredEvent, validateInteractionReceivedEvent, validateInteractionRequest, validateInteractionSummary, validateMachineClient, validateMachineCredential, validateMachineCredentialBearer, validateMachineEventAckRequest, validateMachineEventAckResponse, validateMachineEventPollResponse, validateMessage, validateMessageListEntry, validateMessageListPage, validateMessageDeliveryTimelineEntry, validateRetainedMessageContent, validateMessageDeliveryHistory, validateInteractionTimelineEntry, validateInteractionTimeline, validateUpdateEmailSenderRequest, validateCustomerEventDeliveryAttempt, validateCustomerEventDeliveryHistory, validateDeliveryHolds, validateMachineClientOperations, validateMachineClientOperationsList, validateRecipientCopyCatalogue, validateMessageNotificationImage, validateMessageDeliveredEvent, validateMessageExpiredEvent, validateMessageFailedEvent, validateMessageProviderAcceptedEvent, validateWhooshBangEvent, validateProblem, validateProject, validateProjectCollection, validateRecipientCopyOverride, validateRecipientCopyOverrideCollection, validateProviderCallbackToken, validateProviderCapabilities, validateProviderCapabilitiesCollection, validateProviderInstallationCollection, validateEmailDomainCollection, validateCreateEmailDomainRequest, validateCreateEmailBindingImportRequest, validateEmailBindingImportJob, validateRegisterMachineCredentialRequest, validateRotateOrganizationCredentialRequest, validateRotateApiCredentialRequest, validateRotateCustomerEndpointRequest, validateSubscriptionActivatedEvent, validateSubscriptionAssertedEvent, validateSubscriptionLink, validateSubscriptionRevokedEvent, validateSubscriptionAssertedRevokedEvent, validateUpdateRecipientCopyOverrideRequest, validateWebhookDeliveryCaseSet, validateWebhookSigningVectorSet, } from "./generated/validators.js";
18
+ export { contractValidationErrors, validateOrganizationCredential, validateOrganizationCredentialCollection, validateOrganizationCredentialRotation, validateOrganizationCredentialSecretReveal, validateBillingProjectSlots, validateAssignBillingProjectSlotsRequest, validateSubscriptionChange, validateConfirmSubscriptionChangeRequest, validateBillingEntitlements, validateSubscriptionSelection, validateProjectAttribution, validateUpdateProjectAttributionRequest, validateUpdateAutoTopUpSettingsRequest, validateAutoTopUpSettings, validateBillingAccount, validateBillingCard, validateCardSetup, validateCreateCreditPurchaseRequest, validateCreditPurchase, validateBillingInvoice, validateBillingInvoiceCollection, validateUpdateBillingReceiptEmailRequest, validateOrganizationProjection, validateTeammate, validateTeammateCollection, validateTeammateAccessRequest, validateInviteTeammateRequest, validateApiCredential, validateApiCredentialCollection, validateApiCredentialRotation, validateApiCredentialSecretReveal, validateAssertEmailConsentRequest, validateBindingSummary, validateCreateOrganizationCredentialRequest, validateCreateApiCredentialRequest, validateChannelConnection, validateChannelConnectionCollection, validateConnectionProviderCollection, validateCreateChannelConnectionRequest, validateUpdateChannelConnectionRequest, validateRotateChannelConnectionCredentialRequest, validateConnectionTest, validateConnectionTestCollection, validateUsageReport, validateCreateConnectionTestRequest, validateCustomerApplicationManifest, validateAttachNotifierConnectionRequest, validateNotifierConnectionCollection, validateProjectRecipientExperience, validateRecipientBrandLogoUpload, validateNotificationImageAsset, validateUpdateProjectRecipientExperienceRequest, validateEnvironmentRecipientExperience, validateUpdateEnvironmentRecipientExperienceRequest, validateSubscriberChannelSettings, validateAcknowledgeEmailRemediationRequest, validateCreateRecipientSessionRequest, validateCreateRecipientSessionResponse, validateRecipientSession, validateCreateProviderHandoffRequest, validateProviderHandoff, validateRecipientHandoffCompletion, validateSetPreferredBindingRequest, validatePreferredBinding, validateCreateSubscriberRequest, validateSubscriber, validateUpdateSubscriberRequest, validateSubscriberCollection, validateSubscriberDataExport, validateCloseOrganizationRequest, validateOrganizationClosureResult, validateCreateSubscriberGroupRequest, validateUpdateSubscriberGroupRequest, validateSubscriberGroup, validateSubscriberGroupCollection, validateSubscriberGroupMembership, validateSubscriberGroupMembershipCollection, validateCreateGroupBroadcastRequest, validateGroupBroadcast, validateCreateCustomerEndpointRequest, validateCreateProjectRequest, validateUpdateProjectRequest, validateCreateMachineClientRequest, validateCreateMessageRequest, validateCreateSubscriptionLinkRequest, validateDeliveryAttemptSummary, validateCustomerEndpoint, validateCustomerEndpointAttemptCollection, validateCustomerEndpointCollection, validateCustomerEndpointMutationResult, validateCustomerEndpointVerificationChallenge, validateIdempotencyKey, validateAgentBindingDegradedEvent, validateInteractionEvent, validateInteractionExpiredEvent, validateInteractionReceivedEvent, validateInteractionRequest, validateInteractionSummary, validateMachineClient, validateMachineCredential, validateMachineCredentialBearer, validateMachineEventAckRequest, validateMachineEventAckResponse, validateMachineEventPollResponse, validateMessage, validateMessageListEntry, validateMessageListPage, validateMessageDeliveryTimelineEntry, validateRetainedMessageContent, validateMessageDeliveryHistory, validateInteractionTimelineEntry, validateInteractionTimeline, validateUpdateEmailSenderRequest, validateCustomerEventDeliveryAttempt, validateCustomerEventDeliveryHistory, validateDeliveryHolds, validateMachineClientOperations, validateMachineClientOperationsList, validateRecipientCopyCatalogue, validateMessageNotificationImage, validateMessageDeliveredEvent, validateMessageExpiredEvent, validateMessageFailedEvent, validateMessageProviderAcceptedEvent, validateWhooshBangEvent, validateProblem, validateProject, validateProjectCollection, validateRecipientCopyOverride, validateRecipientCopyOverrideCollection, validateProviderCallbackToken, validateProviderCapabilities, validateProviderCapabilitiesCollection, validateProviderInstallationCollection, validateEmailDomainCollection, validateCreateEmailDomainRequest, validateCreateEmailBindingImportRequest, validateEmailBindingImportJob, validateRegisterMachineCredentialRequest, validateRotateOrganizationCredentialRequest, validateRotateApiCredentialRequest, validateRotateCustomerEndpointRequest, validateSubscriptionActivatedEvent, validateSubscriptionAssertedEvent, validateSubscriptionLink, validateSubscriptionRevokedEvent, validateSubscriptionAssertedRevokedEvent, validateUpdateRecipientCopyOverrideRequest, validateWebhookDeliveryCaseSet, validateWebhookSigningVectorSet, } from "./generated/validators.js";
19
19
  export type { Artifact, ContractManifest, FixtureSet, GeneratedArtifact, } from "./generated/contract-manifest.js";
20
20
  export type { AgentBindingDegradedData, AgentBindingDegradedEvent, ConfirmInteractionResponse as CustomerEventConfirmInteractionResponse, InteractionExpiredData, InteractionExpiredEvent, InteractionReceivedData, InteractionReceivedEvent, InteractionResponse as CustomerEventInteractionResponse, MessageDeliveredData, MessageDeliveredEvent, MessageExpiredData, MessageExpiredEvent, MessageFailedData, MessageFailedEvent, MessageProviderAcceptedData, MessageProviderAcceptedEvent, WhooshBangEventV1ContractDocument, SelectInteractionResponse as CustomerEventSelectInteractionResponse, SubscriptionActivatedData, SubscriptionActivatedEvent, SubscriptionAssertedEvent, SubscriptionRevokedData, SubscriptionRevokedEvent, SubscriptionAssertedRevokedEvent, InputInteractionResponse as CustomerEventInputInteractionResponse, } from "./generated/whooshbang-event-v1.js";
21
21
  export type { WebhookDeliveryCaseSetV1, DeliveryCase as WebhookDeliveryFixtureCase, } from "./generated/webhook-delivery-case-v1.js";
22
22
  export type { WebhookSigningVectorSetV1, VerificationCase as WebhookSigningVerificationCase, } from "./generated/webhook-signing-vector-v1.js";
23
- export type { OrganizationCredential, OrganizationCredentialCollection, OrganizationCredentialId, OrganizationCredentialPrefix, OrganizationCredentialRotation, OrganizationCredentialScope, OrganizationCredentialScopeSet, OrganizationCredentialSecret, OrganizationCredentialSecretReveal, OrganizationMembershipSummary, BillingProjectSlots, AssignBillingProjectSlotsRequest, SubscriptionChange, ConfirmSubscriptionChangeRequest, BillingEntitlements, SubscriptionSelection, ProjectAttribution, UpdateProjectAttributionRequest, UpdateAutoTopUpSettingsRequest, AutoTopUpSettings, BillingAccount, BillingCard, CardSetup, CreateCreditPurchaseRequest, CreditPurchase, BillingInvoice, BillingInvoiceCollection, UpdateBillingReceiptEmailRequest, OrganizationProjection, OrganizationRole, ApiCredential, ApiCredentialCollection, ApiCredentialId, ApiCredentialPrefix, ApiCredentialRotation, ApiCredentialScope, ApiCredentialScopeSet, ApiCredentialSecret, ApiCredentialSecretReveal, AssertEmailConsentRequest, BindingSummary, Channel, ClassifiedError, CreateOrganizationCredentialRequest, CreateApiCredentialRequest, ChannelConnection, ChannelConnectionCollection, ChannelConnectionSetup, ChannelConnectionSetupStatus, ChannelConnectionStatus, ConnectionLifecycleOperation, ConnectionProvider, ConnectionProviderCollection, CreateChannelConnectionRequest, AttachNotifierConnectionRequest, NotifierConnectionCollection, NotifierConnectionRoute, ProjectRecipientExperience, RecipientBrandAssetId, RecipientBrandLogoAsset, RecipientBrandLogoUpload, NotificationImage, NotificationImageAsset, NotificationImageAssetId, UpdateProjectRecipientExperienceRequest, EnvironmentRecipientExperience, UpdateEnvironmentRecipientExperienceRequest, RecipientBrand, ReturnDestination, SubscriberChannelSettings, AcknowledgeEmailRemediationRequest, SharedEmailStatus, EmailVerificationSummary, CreateRecipientSessionRequest, CreateRecipientSessionResponse, RecipientSession, RecipientPanelCopyOverrides, RecipientSessionCapability, RecipientSessionCapabilityPrefix, RecipientSessionOperation, RecipientChannelSummary, CreateProviderHandoffRequest, ProviderHandoff, ProviderHandoffCompletionMode, RecipientHandoffCompletion, SetPreferredBindingRequest, PreferredBinding, CreateSubscriberRequest, Subscriber, UpdateSubscriberRequest, SubscriberCollection, SubscriberDataExport, SubscriberDataExportRecord, SubscriberDataExportExcludedControllerData, CloseOrganizationRequest, OrganizationClosureProviderAction, OrganizationClosureResult, DeveloperKey, CreateSubscriberGroupRequest, UpdateSubscriberGroupRequest, SubscriberGroup, SubscriberGroupCollection, SubscriberGroupMembership, SubscriberGroupMembershipCollection, CreateGroupBroadcastRequest, BroadcastAggregate, GroupBroadcast, BroadcastMessageProvenance, ProviderHealthState, ProviderFailure, ProviderInstallationStatus, ProviderInstallationSummary, RotateChannelConnectionCredentialRequest, ConnectionTest, ConnectionTestCollection, ConnectionTestEvidence, UsageBucket, UsageDate, UsageGroupCount, UsageGrouping, UsageReport, ConnectionTestFailureCode, ConnectionTestKind, ConnectionTestStatus, CreateConnectionTestRequest, CustomerApplicationManifest, SharedProviderIdentity, SuggestedBotUsername, UpdateChannelConnectionRequest, CreateCustomerEndpointRequest, CreateMessageRequest, CreateProjectRequest, UpdateProjectRequest, PrivacyMode, DefaultNotifierSummary, CreateSubscriptionLinkRequest, DeliveryAttemptSummary, CustomerEndpoint, CustomerEndpointAttemptCollection, CustomerEndpointAttemptDiagnostic, CustomerEndpointCollection, CustomerEndpointFailure, CustomerEndpointMutationResult, CustomerEndpointSecret, CustomerEndpointStatus, CustomerEndpointVerificationChallenge, CustomerEventType, Environment, IdempotencyKey, Message, MessageListEntry, MessageListPage, MessageDeliveryTimelineEntry, RetainedMessageContent, MessageDeliveryHistory, InteractionTimelineEntry, InteractionTimeline, UpdateEmailSenderRequest, CustomerEventDeliveryAttempt, CustomerEventDeliveryHistory, DeliveryHolds, MachineClientOperations, MachineClientOperationsList, RecipientCopyCatalogue, MessageNotificationImage, MessageState, WhooshBangV1ContractDocument, Problem, ProblemCode, Project, ProjectCollection, ProjectEnvironment, ProviderCapabilitiesCollection, ProviderInstallation, ProviderInstallationCollection, EmailAddress, EmailBindingConsent, EmailBindingImportRow, EmailDeliveryPolicy, EmailDisplayName, EmailDnsRecord, EmailDomain, EmailDomainCapabilities, EmailDomainCapabilityState, EmailDomainCollection, EmailDomainGuide, EmailDomainLifecycle, EmailDomainName, EmailLocalPart, EmailSubjectPolicy, CreateEmailDomainRequest, CreateEmailBindingImportRequest, EmailBindingImportJob, RecipientCopyKey, RecipientCopyOverride, RecipientCopyOverrideCollection, RecipientCopyOverrideValue, RecipientLanguage, TimeZone, RotateOrganizationCredentialRequest, RotateApiCredentialRequest, RotateCustomerEndpointRequest, SubscriptionLink, UpdateRecipientCopyOverrideRequest, } from "./generated/whooshbang-v1.js";
23
+ export type { OrganizationCredential, OrganizationCredentialCollection, OrganizationCredentialId, OrganizationCredentialPrefix, OrganizationCredentialRotation, OrganizationCredentialScope, OrganizationCredentialScopeSet, OrganizationCredentialSecret, OrganizationCredentialSecretReveal, OrganizationMembershipSummary, BillingProjectSlots, AssignBillingProjectSlotsRequest, SubscriptionChange, ConfirmSubscriptionChangeRequest, BillingEntitlements, SubscriptionSelection, ProjectAttribution, UpdateProjectAttributionRequest, UpdateAutoTopUpSettingsRequest, AutoTopUpSettings, BillingAccount, BillingCard, CardSetup, CreateCreditPurchaseRequest, CreditPurchase, BillingInvoice, BillingInvoiceCollection, UpdateBillingReceiptEmailRequest, OrganizationProjection, Teammate, TeammateCollection, TeammateAccessRequest, InviteTeammateRequest, OrganizationRole, ApiCredential, ApiCredentialCollection, ApiCredentialId, ApiCredentialPrefix, ApiCredentialRotation, ApiCredentialScope, ApiCredentialScopeSet, ApiCredentialSecret, ApiCredentialSecretReveal, AssertEmailConsentRequest, BindingSummary, Channel, ClassifiedError, CreateOrganizationCredentialRequest, CreateApiCredentialRequest, ChannelConnection, ChannelConnectionCollection, ChannelConnectionSetup, ChannelConnectionSetupStatus, ChannelConnectionStatus, ConnectionLifecycleOperation, ConnectionProvider, ConnectionProviderCollection, CreateChannelConnectionRequest, AttachNotifierConnectionRequest, NotifierConnectionCollection, NotifierConnectionRoute, ProjectRecipientExperience, RecipientBrandAssetId, RecipientBrandLogoAsset, RecipientBrandLogoUpload, NotificationImage, NotificationImageAsset, NotificationImageAssetId, UpdateProjectRecipientExperienceRequest, EnvironmentRecipientExperience, UpdateEnvironmentRecipientExperienceRequest, RecipientBrand, ReturnDestination, SubscriberChannelSettings, AcknowledgeEmailRemediationRequest, SharedEmailStatus, EmailVerificationSummary, CreateRecipientSessionRequest, CreateRecipientSessionResponse, RecipientSession, RecipientPanelCopyOverrides, RecipientSessionCapability, RecipientSessionCapabilityPrefix, RecipientSessionOperation, RecipientChannelSummary, CreateProviderHandoffRequest, ProviderHandoff, ProviderHandoffCompletionMode, RecipientHandoffCompletion, SetPreferredBindingRequest, PreferredBinding, CreateSubscriberRequest, Subscriber, UpdateSubscriberRequest, SubscriberCollection, SubscriberDataExport, SubscriberDataExportRecord, SubscriberDataExportExcludedControllerData, CloseOrganizationRequest, OrganizationClosureProviderAction, OrganizationClosureResult, DeveloperKey, CreateSubscriberGroupRequest, UpdateSubscriberGroupRequest, SubscriberGroup, SubscriberGroupCollection, SubscriberGroupMembership, SubscriberGroupMembershipCollection, CreateGroupBroadcastRequest, BroadcastAggregate, GroupBroadcast, BroadcastMessageProvenance, ProviderHealthState, ProviderFailure, ProviderInstallationStatus, ProviderInstallationSummary, RotateChannelConnectionCredentialRequest, ConnectionTest, ConnectionTestCollection, ConnectionTestEvidence, UsageBucket, UsageDate, UsageGroupCount, UsageGrouping, UsageReport, ConnectionTestFailureCode, ConnectionTestKind, ConnectionTestStatus, CreateConnectionTestRequest, CustomerApplicationManifest, SharedProviderIdentity, SuggestedBotUsername, UpdateChannelConnectionRequest, CreateCustomerEndpointRequest, CreateMessageRequest, CreateProjectRequest, UpdateProjectRequest, PrivacyMode, DefaultNotifierSummary, CreateSubscriptionLinkRequest, DeliveryAttemptSummary, CustomerEndpoint, CustomerEndpointAttemptCollection, CustomerEndpointAttemptDiagnostic, CustomerEndpointCollection, CustomerEndpointFailure, CustomerEndpointMutationResult, CustomerEndpointSecret, CustomerEndpointStatus, CustomerEndpointVerificationChallenge, CustomerEventType, Environment, IdempotencyKey, Message, MessageListEntry, MessageListPage, MessageDeliveryTimelineEntry, RetainedMessageContent, MessageDeliveryHistory, InteractionTimelineEntry, InteractionTimeline, UpdateEmailSenderRequest, CustomerEventDeliveryAttempt, CustomerEventDeliveryHistory, DeliveryHolds, MachineClientOperations, MachineClientOperationsList, RecipientCopyCatalogue, MessageNotificationImage, MessageState, WhooshBangV1ContractDocument, Problem, ProblemCode, Project, ProjectCollection, ProjectEnvironment, ProviderCapabilitiesCollection, ProviderInstallation, ProviderInstallationCollection, EmailAddress, EmailBindingConsent, EmailBindingImportRow, EmailDeliveryPolicy, EmailDisplayName, EmailDnsRecord, EmailDomain, EmailDomainCapabilities, EmailDomainCapabilityState, EmailDomainCollection, EmailDomainGuide, EmailDomainLifecycle, EmailDomainName, EmailLocalPart, EmailSubjectPolicy, CreateEmailDomainRequest, CreateEmailBindingImportRequest, EmailBindingImportJob, RecipientCopyKey, RecipientCopyOverride, RecipientCopyOverrideCollection, RecipientCopyOverrideValue, RecipientLanguage, TimeZone, RotateOrganizationCredentialRequest, RotateApiCredentialRequest, RotateCustomerEndpointRequest, SubscriptionLink, UpdateRecipientCopyOverrideRequest, } from "./generated/whooshbang-v1.js";
24
24
  export type HostedChannelConnectionSetup = NonNullable<import("./generated/whooshbang-v1.js").HostedChannelConnection["authorization_setup"]>;
25
25
  export type ChannelConnectionMode = import("./generated/whooshbang-v1.js").ChannelConnection["mode"];
26
26
  export type ChannelConnectionProvider = import("./generated/whooshbang-v1.js").ChannelConnection["provider"];
package/dist/index.js CHANGED
@@ -8,5 +8,5 @@ export { RECIPIENT_BRAND_DEFAULT_ACCENT_COLOR } from "./recipient-brand.js";
8
8
  export { normalizeNotificationImage, NOTIFICATION_IMAGE_CONTENT_TYPE, NOTIFICATION_IMAGE_MAX_BYTES, NOTIFICATION_IMAGE_MAX_DIMENSION, NOTIFICATION_IMAGE_MAX_PIXELS, NotificationImageError, } from "./notification-image.js";
9
9
  export { canonicalIanaTimeZone } from "./time-zone.js";
10
10
  export { CUSTOMIZABLE_RECIPIENT_COPY_KEYS, CUSTOMIZABLE_RECIPIENT_PANEL_COPY_KEYS, isCustomizableRecipientCopyKey, recipientCopyOverrideIssues, recipientCopyOverrideMaximumLength, RECIPIENT_COPY_OVERRIDE_HOSTED_ACTION_MAX_LENGTH, RECIPIENT_COPY_OVERRIDE_MAX_LENGTH, } from "./recipient-copy-policy.js";
11
- export { contractValidationErrors, validateOrganizationCredential, validateOrganizationCredentialCollection, validateOrganizationCredentialRotation, validateOrganizationCredentialSecretReveal, validateBillingProjectSlots, validateAssignBillingProjectSlotsRequest, validateSubscriptionChange, validateConfirmSubscriptionChangeRequest, validateBillingEntitlements, validateSubscriptionSelection, validateProjectAttribution, validateUpdateProjectAttributionRequest, validateUpdateAutoTopUpSettingsRequest, validateAutoTopUpSettings, validateBillingAccount, validateBillingCard, validateCardSetup, validateCreateCreditPurchaseRequest, validateCreditPurchase, validateBillingInvoice, validateBillingInvoiceCollection, validateUpdateBillingReceiptEmailRequest, validateOrganizationProjection, validateApiCredential, validateApiCredentialCollection, validateApiCredentialRotation, validateApiCredentialSecretReveal, validateAssertEmailConsentRequest, validateBindingSummary, validateCreateOrganizationCredentialRequest, validateCreateApiCredentialRequest, validateChannelConnection, validateChannelConnectionCollection, validateConnectionProviderCollection, validateCreateChannelConnectionRequest, validateUpdateChannelConnectionRequest, validateRotateChannelConnectionCredentialRequest, validateConnectionTest, validateConnectionTestCollection, validateUsageReport, validateCreateConnectionTestRequest, validateCustomerApplicationManifest, validateAttachNotifierConnectionRequest, validateNotifierConnectionCollection, validateProjectRecipientExperience, validateRecipientBrandLogoUpload, validateNotificationImageAsset, validateUpdateProjectRecipientExperienceRequest, validateEnvironmentRecipientExperience, validateUpdateEnvironmentRecipientExperienceRequest, validateSubscriberChannelSettings, validateAcknowledgeEmailRemediationRequest, validateCreateRecipientSessionRequest, validateCreateRecipientSessionResponse, validateRecipientSession, validateCreateProviderHandoffRequest, validateProviderHandoff, validateRecipientHandoffCompletion, validateSetPreferredBindingRequest, validatePreferredBinding, validateCreateSubscriberRequest, validateSubscriber, validateUpdateSubscriberRequest, validateSubscriberCollection, validateSubscriberDataExport, validateCloseOrganizationRequest, validateOrganizationClosureResult, validateCreateSubscriberGroupRequest, validateUpdateSubscriberGroupRequest, validateSubscriberGroup, validateSubscriberGroupCollection, validateSubscriberGroupMembership, validateSubscriberGroupMembershipCollection, validateCreateGroupBroadcastRequest, validateGroupBroadcast, validateCreateCustomerEndpointRequest, validateCreateProjectRequest, validateUpdateProjectRequest, validateCreateMachineClientRequest, validateCreateMessageRequest, validateCreateSubscriptionLinkRequest, validateDeliveryAttemptSummary, validateCustomerEndpoint, validateCustomerEndpointAttemptCollection, validateCustomerEndpointCollection, validateCustomerEndpointMutationResult, validateCustomerEndpointVerificationChallenge, validateIdempotencyKey, validateAgentBindingDegradedEvent, validateInteractionEvent, validateInteractionExpiredEvent, validateInteractionReceivedEvent, validateInteractionRequest, validateInteractionSummary, validateMachineClient, validateMachineCredential, validateMachineCredentialBearer, validateMachineEventAckRequest, validateMachineEventAckResponse, validateMachineEventPollResponse, validateMessage, validateMessageListEntry, validateMessageListPage, validateMessageDeliveryTimelineEntry, validateRetainedMessageContent, validateMessageDeliveryHistory, validateInteractionTimelineEntry, validateInteractionTimeline, validateUpdateEmailSenderRequest, validateCustomerEventDeliveryAttempt, validateCustomerEventDeliveryHistory, validateDeliveryHolds, validateMachineClientOperations, validateMachineClientOperationsList, validateRecipientCopyCatalogue, validateMessageNotificationImage, validateMessageDeliveredEvent, validateMessageExpiredEvent, validateMessageFailedEvent, validateMessageProviderAcceptedEvent, validateWhooshBangEvent, validateProblem, validateProject, validateProjectCollection, validateRecipientCopyOverride, validateRecipientCopyOverrideCollection, validateProviderCallbackToken, validateProviderCapabilities, validateProviderCapabilitiesCollection, validateProviderInstallationCollection, validateEmailDomainCollection, validateCreateEmailDomainRequest, validateCreateEmailBindingImportRequest, validateEmailBindingImportJob, validateRegisterMachineCredentialRequest, validateRotateOrganizationCredentialRequest, validateRotateApiCredentialRequest, validateRotateCustomerEndpointRequest, validateSubscriptionActivatedEvent, validateSubscriptionAssertedEvent, validateSubscriptionLink, validateSubscriptionRevokedEvent, validateSubscriptionAssertedRevokedEvent, validateUpdateRecipientCopyOverrideRequest, validateWebhookDeliveryCaseSet, validateWebhookSigningVectorSet, } from "./generated/validators.js";
11
+ export { contractValidationErrors, validateOrganizationCredential, validateOrganizationCredentialCollection, validateOrganizationCredentialRotation, validateOrganizationCredentialSecretReveal, validateBillingProjectSlots, validateAssignBillingProjectSlotsRequest, validateSubscriptionChange, validateConfirmSubscriptionChangeRequest, validateBillingEntitlements, validateSubscriptionSelection, validateProjectAttribution, validateUpdateProjectAttributionRequest, validateUpdateAutoTopUpSettingsRequest, validateAutoTopUpSettings, validateBillingAccount, validateBillingCard, validateCardSetup, validateCreateCreditPurchaseRequest, validateCreditPurchase, validateBillingInvoice, validateBillingInvoiceCollection, validateUpdateBillingReceiptEmailRequest, validateOrganizationProjection, validateTeammate, validateTeammateCollection, validateTeammateAccessRequest, validateInviteTeammateRequest, validateApiCredential, validateApiCredentialCollection, validateApiCredentialRotation, validateApiCredentialSecretReveal, validateAssertEmailConsentRequest, validateBindingSummary, validateCreateOrganizationCredentialRequest, validateCreateApiCredentialRequest, validateChannelConnection, validateChannelConnectionCollection, validateConnectionProviderCollection, validateCreateChannelConnectionRequest, validateUpdateChannelConnectionRequest, validateRotateChannelConnectionCredentialRequest, validateConnectionTest, validateConnectionTestCollection, validateUsageReport, validateCreateConnectionTestRequest, validateCustomerApplicationManifest, validateAttachNotifierConnectionRequest, validateNotifierConnectionCollection, validateProjectRecipientExperience, validateRecipientBrandLogoUpload, validateNotificationImageAsset, validateUpdateProjectRecipientExperienceRequest, validateEnvironmentRecipientExperience, validateUpdateEnvironmentRecipientExperienceRequest, validateSubscriberChannelSettings, validateAcknowledgeEmailRemediationRequest, validateCreateRecipientSessionRequest, validateCreateRecipientSessionResponse, validateRecipientSession, validateCreateProviderHandoffRequest, validateProviderHandoff, validateRecipientHandoffCompletion, validateSetPreferredBindingRequest, validatePreferredBinding, validateCreateSubscriberRequest, validateSubscriber, validateUpdateSubscriberRequest, validateSubscriberCollection, validateSubscriberDataExport, validateCloseOrganizationRequest, validateOrganizationClosureResult, validateCreateSubscriberGroupRequest, validateUpdateSubscriberGroupRequest, validateSubscriberGroup, validateSubscriberGroupCollection, validateSubscriberGroupMembership, validateSubscriberGroupMembershipCollection, validateCreateGroupBroadcastRequest, validateGroupBroadcast, validateCreateCustomerEndpointRequest, validateCreateProjectRequest, validateUpdateProjectRequest, validateCreateMachineClientRequest, validateCreateMessageRequest, validateCreateSubscriptionLinkRequest, validateDeliveryAttemptSummary, validateCustomerEndpoint, validateCustomerEndpointAttemptCollection, validateCustomerEndpointCollection, validateCustomerEndpointMutationResult, validateCustomerEndpointVerificationChallenge, validateIdempotencyKey, validateAgentBindingDegradedEvent, validateInteractionEvent, validateInteractionExpiredEvent, validateInteractionReceivedEvent, validateInteractionRequest, validateInteractionSummary, validateMachineClient, validateMachineCredential, validateMachineCredentialBearer, validateMachineEventAckRequest, validateMachineEventAckResponse, validateMachineEventPollResponse, validateMessage, validateMessageListEntry, validateMessageListPage, validateMessageDeliveryTimelineEntry, validateRetainedMessageContent, validateMessageDeliveryHistory, validateInteractionTimelineEntry, validateInteractionTimeline, validateUpdateEmailSenderRequest, validateCustomerEventDeliveryAttempt, validateCustomerEventDeliveryHistory, validateDeliveryHolds, validateMachineClientOperations, validateMachineClientOperationsList, validateRecipientCopyCatalogue, validateMessageNotificationImage, validateMessageDeliveredEvent, validateMessageExpiredEvent, validateMessageFailedEvent, validateMessageProviderAcceptedEvent, validateWhooshBangEvent, validateProblem, validateProject, validateProjectCollection, validateRecipientCopyOverride, validateRecipientCopyOverrideCollection, validateProviderCallbackToken, validateProviderCapabilities, validateProviderCapabilitiesCollection, validateProviderInstallationCollection, validateEmailDomainCollection, validateCreateEmailDomainRequest, validateCreateEmailBindingImportRequest, validateEmailBindingImportJob, validateRegisterMachineCredentialRequest, validateRotateOrganizationCredentialRequest, validateRotateApiCredentialRequest, validateRotateCustomerEndpointRequest, validateSubscriptionActivatedEvent, validateSubscriptionAssertedEvent, validateSubscriptionLink, validateSubscriptionRevokedEvent, validateSubscriptionAssertedRevokedEvent, validateUpdateRecipientCopyOverrideRequest, validateWebhookDeliveryCaseSet, validateWebhookSigningVectorSet, } from "./generated/validators.js";
12
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "fixtures": [
4
4
  {
5
5
  "id": "create-project.request",
@@ -2038,6 +2038,12 @@
2038
2038
  "path": "fixtures/core-v1/requests/update-billing-receipt-email.json",
2039
2039
  "schema_ref": "schemas/whooshbang-v1.schema.json#/$defs/UpdateBillingReceiptEmailRequest",
2040
2040
  "operation_id": "updateBillingReceiptEmail"
2041
+ },
2042
+ {
2043
+ "id": "assert-email-service.request",
2044
+ "kind": "request",
2045
+ "path": "fixtures/core-v1/requests/assert-email-service.json",
2046
+ "schema_ref": "schemas/whooshbang-v1.schema.json#/$defs/AssertEmailConsentRequest"
2041
2047
  }
2042
2048
  ]
2043
2049
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "subscriber_id": "member-123",
3
+ "notifier_id": "default",
4
+ "connection_id": "connection_customer_email",
5
+ "domain_id": "emaildom_customer",
6
+ "address": "member@example.com",
7
+ "basis": "service",
8
+ "source": "project membership",
9
+ "relationship_started_at": "2026-10-08T12:00:00Z"
10
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "api-credential-invalid-indistinguishable",
4
4
  "category": "credential_lifecycle",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "api-credential-one-time-reveal",
4
4
  "category": "credential_lifecycle",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "api-credential-revocation-replay",
4
4
  "category": "credential_lifecycle",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "api-credential-rotation-overlap",
4
4
  "category": "credential_lifecycle",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "cancellation-too-late",
4
4
  "category": "cancellation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "cross-organization-project",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "cross-project-resource",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "environment-mismatch",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "idempotency-conflict",
4
4
  "category": "idempotency",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.0.0-rc.7",
2
+ "contract_version": "2.0.0",
3
3
  "id": "idempotency-equivalent-replay",
4
4
  "category": "idempotency",
5
5
  "given": {