@whooshbang/contracts 3.2.0 → 4.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 +10 -0
- package/contract-manifest.json +32 -32
- package/dist/generated/artifact-index.d.ts +33 -33
- package/dist/generated/artifact-index.js +32 -32
- package/dist/generated/interaction-v1.d.ts +1 -1
- package/dist/generated/machine-v1.d.ts +1 -1
- package/dist/generated/validators-standalone.d.ts +377 -378
- package/dist/generated/validators-standalone.js +5070 -4019
- package/dist/generated/validators-standalone.js.map +1 -1
- package/dist/generated/whooshbang-v1.d.ts +47 -18
- package/fixtures/core-v1/fixture-index.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
- package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
- package/fixtures/core-v1/scenarios/cross-organization-project.json +1 -1
- package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
- package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
- package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
- package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
- package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
- package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
- package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
- package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +1 -1
- package/fixtures/core-v1/scenarios/project-slug-conflict.json +1 -1
- package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +1 -1
- package/fixtures/recipient-experience-v1/success/project-recipient-experience.json +2 -0
- package/openapi/generated/whooshbang-v1.bundle.json +137 -24
- package/openapi/whooshbang-v1.yaml +32 -3
- package/package.json +1 -1
- package/schemas/core-scenario.schema.json +1 -1
- package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
- package/schemas/events/interaction-expired-v1.schema.json +1 -1
- package/schemas/events/interaction-received-v1.schema.json +1 -1
- package/schemas/events/message-delivered-v1.schema.json +1 -1
- package/schemas/events/message-expired-v1.schema.json +1 -1
- package/schemas/events/message-failed-v1.schema.json +1 -1
- package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
- package/schemas/events/subscription-activated-v1.schema.json +1 -1
- package/schemas/events/subscription-revoked-v1.schema.json +1 -1
- package/schemas/events/whooshbang-event-v1.schema.json +1 -1
- package/schemas/fixture-index.schema.json +1 -1
- package/schemas/interaction-machine-scenario.schema.json +1 -1
- package/schemas/interaction-v1.schema.json +2 -2
- 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 +109 -22
|
@@ -663,7 +663,7 @@ export type Message = {
|
|
|
663
663
|
* The effective provider boundary selected for a message. Connection delivery uses the exact authorized environment connection; simulator delivery never calls a provider.
|
|
664
664
|
*/
|
|
665
665
|
export type MessageDeliveryTarget = "connection" | "simulator";
|
|
666
|
-
export type MessageState = "accepted" | "dispatch_pending" | "queued" | "sending" | "provider_accepted" | "retry_wait" | "terminal_failed" | "outcome_unknown" | "cancelled" | "expired";
|
|
666
|
+
export type MessageState = "accepted" | "dispatch_pending" | "queued" | "sending" | "intake_pending" | "provider_accepted" | "retry_wait" | "terminal_failed" | "outcome_unknown" | "cancelled" | "expired";
|
|
667
667
|
/**
|
|
668
668
|
* A safe aggregate of delivery attempts. Protected provider responses are excluded.
|
|
669
669
|
*/
|
|
@@ -1374,7 +1374,7 @@ export type EmailDomainName = string;
|
|
|
1374
1374
|
export type EmailDomainLifecycle = "requested" | "creating" | "dns_required" | "verifying" | "testing" | "active" | "provider_action_required" | "dns_failed" | "oauth_required" | "held" | "deleting" | "deleted";
|
|
1375
1375
|
export type EmailDomainCapabilityState = "pending" | "verified" | "failed" | "unsupported";
|
|
1376
1376
|
/**
|
|
1377
|
-
* One exact neutral DNS record. `name`
|
|
1377
|
+
* One exact neutral DNS record. `name` and `value` are preserved exactly as supplied; a record name may be relative to the registrable domain or a full hostname. DNS consoles differ in whether they append the zone automatically.
|
|
1378
1378
|
*/
|
|
1379
1379
|
export type EmailDnsRecord = {
|
|
1380
1380
|
type: "MX";
|
|
@@ -1398,6 +1398,18 @@ export type EmailDomainGuide = {
|
|
|
1398
1398
|
*/
|
|
1399
1399
|
instructions_url?: string;
|
|
1400
1400
|
};
|
|
1401
|
+
/**
|
|
1402
|
+
* Creates or safely adopts an account-owned domain. Omit backend and installation_id for the default FlowXO Mail service. An existing legacy OAuth installation may still be selected by id.
|
|
1403
|
+
*/
|
|
1404
|
+
export type CreateEmailDomainRequest = {
|
|
1405
|
+
installation_id: OpaqueIdentifier;
|
|
1406
|
+
domain: EmailDomainName;
|
|
1407
|
+
tls?: "opportunistic" | "enforced";
|
|
1408
|
+
} | {
|
|
1409
|
+
backend?: "flowxo_mail";
|
|
1410
|
+
domain: EmailDomainName;
|
|
1411
|
+
tls?: "opportunistic" | "enforced";
|
|
1412
|
+
};
|
|
1401
1413
|
/**
|
|
1402
1414
|
* 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.
|
|
1403
1415
|
*/
|
|
@@ -4163,11 +4175,16 @@ export interface MessageCategory {
|
|
|
4163
4175
|
level: "low" | "normal" | "high" | "critical";
|
|
4164
4176
|
can_turn_off: boolean;
|
|
4165
4177
|
is_default: boolean;
|
|
4166
|
-
}
|
|
4167
|
-
export interface MessageCategoryCollection {
|
|
4168
4178
|
/**
|
|
4169
|
-
*
|
|
4179
|
+
* Number of subscribers in this project who currently have this category switched off. Returned when listing a project's categories.
|
|
4170
4180
|
*/
|
|
4181
|
+
opted_out_subscriber_count?: number;
|
|
4182
|
+
/**
|
|
4183
|
+
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
4184
|
+
*/
|
|
4185
|
+
archived_at?: string;
|
|
4186
|
+
}
|
|
4187
|
+
export interface MessageCategoryCollection {
|
|
4171
4188
|
items: MessageCategory[];
|
|
4172
4189
|
total: ListTotal;
|
|
4173
4190
|
}
|
|
@@ -4335,6 +4352,10 @@ export interface ProviderInstallation {
|
|
|
4335
4352
|
updated_at: Timestamp;
|
|
4336
4353
|
}
|
|
4337
4354
|
export interface EmailDomainCollection {
|
|
4355
|
+
/**
|
|
4356
|
+
* Whether this deployment is configured to offer service-managed custom-domain setup. False is a deployment capability, not a domain readiness verdict.
|
|
4357
|
+
*/
|
|
4358
|
+
managed_domain_available?: boolean;
|
|
4338
4359
|
/**
|
|
4339
4360
|
* @maxItems 100
|
|
4340
4361
|
*/
|
|
@@ -4614,14 +4635,6 @@ export interface EmailSubjectPolicy {
|
|
|
4614
4635
|
maximum_code_points: 200;
|
|
4615
4636
|
normalize_whitespace: true;
|
|
4616
4637
|
}
|
|
4617
|
-
/**
|
|
4618
|
-
* Creates or safely adopts one dedicated domain inside an authorized account-owned installation. No provider team id, API key or OAuth credential can be supplied.
|
|
4619
|
-
*/
|
|
4620
|
-
export interface CreateEmailDomainRequest {
|
|
4621
|
-
installation_id: OpaqueIdentifier;
|
|
4622
|
-
domain: EmailDomainName;
|
|
4623
|
-
tls?: "opportunistic" | "enforced";
|
|
4624
|
-
}
|
|
4625
4638
|
/**
|
|
4626
4639
|
* Creates one durable import scoped by the authenticated organization and the project/environment route. Every row delegates to the ordinary binding operation so imports cannot bypass consent, uniqueness, hold or tenant checks.
|
|
4627
4640
|
*/
|
|
@@ -5808,7 +5821,7 @@ export interface CustomerApplicationManifest {
|
|
|
5808
5821
|
diagnostic_id: DiagnosticId;
|
|
5809
5822
|
}
|
|
5810
5823
|
/**
|
|
5811
|
-
* The project-owned recipient identity, fallback locale,
|
|
5824
|
+
* The project-owned recipient identity, fallback locale, email answer behavior, and category switch visibility. Email answers use one click when no setting has been saved.
|
|
5812
5825
|
*/
|
|
5813
5826
|
export interface ProjectRecipientExperience {
|
|
5814
5827
|
project_id: OpaqueIdentifier;
|
|
@@ -5818,6 +5831,14 @@ export interface ProjectRecipientExperience {
|
|
|
5818
5831
|
* How an email confirm or select button records its bound answer. Defaults to one_click for existing and new projects; free-text answers always use a form.
|
|
5819
5832
|
*/
|
|
5820
5833
|
email_answer_confirmation?: "one_click" | "confirm";
|
|
5834
|
+
/**
|
|
5835
|
+
* Whether subscriber settings show service category switches. A subscriber who already turned a category off still sees its switch. Defaults to true.
|
|
5836
|
+
*/
|
|
5837
|
+
show_service_category_switches: boolean;
|
|
5838
|
+
/**
|
|
5839
|
+
* Whether subscriber settings show marketing category switches. A subscriber who already turned a category off still sees its switch. Defaults to true.
|
|
5840
|
+
*/
|
|
5841
|
+
show_marketing_category_switches: boolean;
|
|
5821
5842
|
row_version: number;
|
|
5822
5843
|
updated_at: Timestamp;
|
|
5823
5844
|
diagnostic_id: DiagnosticId;
|
|
@@ -5835,15 +5856,23 @@ export interface RecipientBrand {
|
|
|
5835
5856
|
color_scheme: "light" | "dark" | "system";
|
|
5836
5857
|
}
|
|
5837
5858
|
/**
|
|
5838
|
-
*
|
|
5859
|
+
* Updates supplied project recipient settings under the last observed row version. Omitted fields keep their current values or project defaults.
|
|
5839
5860
|
*/
|
|
5840
5861
|
export interface UpdateProjectRecipientExperienceRequest {
|
|
5841
|
-
default_locale
|
|
5842
|
-
brand
|
|
5862
|
+
default_locale?: RecipientLanguage;
|
|
5863
|
+
brand?: RecipientBrand;
|
|
5843
5864
|
/**
|
|
5844
5865
|
* Optional project-wide email answer behavior. Omission preserves the current value.
|
|
5845
5866
|
*/
|
|
5846
5867
|
email_answer_confirmation?: "one_click" | "confirm";
|
|
5868
|
+
/**
|
|
5869
|
+
* Show service category switches in subscriber settings. A subscriber who already turned a category off still sees its switch. Omit to keep the current value.
|
|
5870
|
+
*/
|
|
5871
|
+
show_service_category_switches?: boolean;
|
|
5872
|
+
/**
|
|
5873
|
+
* Show marketing category switches in subscriber settings. A subscriber who already turned a category off still sees its switch. Omit to keep the current value.
|
|
5874
|
+
*/
|
|
5875
|
+
show_marketing_category_switches?: boolean;
|
|
5847
5876
|
row_version: number;
|
|
5848
5877
|
}
|
|
5849
5878
|
/**
|
|
@@ -7398,7 +7427,7 @@ export interface MessageDeliveryTimelineEntry {
|
|
|
7398
7427
|
at: Timestamp;
|
|
7399
7428
|
attempt?: number;
|
|
7400
7429
|
classified_error_code?: ProblemCode;
|
|
7401
|
-
kind: "accepted" | "queued" | "attempt_started" | "attempt_sent" | "attempt_retry_scheduled" | "attempt_could_not_send" | "attempt_outcome_unknown" | "could_not_send" | "outcome_unknown" | "cancelled" | "expired";
|
|
7430
|
+
kind: "accepted" | "queued" | "attempt_started" | "attempt_intake_pending" | "attempt_sent" | "attempt_retry_scheduled" | "attempt_could_not_send" | "attempt_outcome_unknown" | "could_not_send" | "outcome_unknown" | "cancelled" | "expired";
|
|
7402
7431
|
retry_at?: Timestamp;
|
|
7403
7432
|
}
|
|
7404
7433
|
/**
|