@whooshbang/contracts 2.4.0 → 2.6.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 +12 -0
- package/README.md +21 -21
- package/contract-manifest.json +35 -32
- package/dist/generated/artifact-index.d.ts +34 -34
- package/dist/generated/artifact-index.js +35 -32
- package/dist/generated/artifact-index.js.map +1 -1
- package/dist/generated/interaction-v1.d.ts +77 -4
- package/dist/generated/validators-standalone.d.ts +522 -483
- package/dist/generated/validators-standalone.js +12972 -6118
- package/dist/generated/validators-standalone.js.map +1 -1
- package/dist/generated/validators.d.ts +5 -2
- package/dist/generated/validators.js +4 -1
- package/dist/generated/validators.js.map +1 -1
- package/dist/generated/whooshbang-v1.d.ts +634 -116
- package/dist/index.d.ts +5 -2
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/input-defaults.d.ts +7 -0
- package/dist/input-defaults.js +59 -0
- package/dist/input-defaults.js.map +1 -0
- package/dist/interaction-expiry.js +2 -1
- package/dist/interaction-expiry.js.map +1 -1
- package/fixtures/core-v1/fixture-index.json +24 -1
- package/fixtures/core-v1/problems/idempotency-key-required.json +2 -2
- package/fixtures/core-v1/requests/redeem-billing-promotion.json +3 -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/billing-promotion.json +14 -0
- package/fixtures/core-v1/success/billing-promotions.json +64 -0
- package/fixtures/core-v1/success/credit-purchase.json +2 -0
- package/fixtures/core-v1/success/subscription-change.json +7 -0
- 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 +1338 -254
- package/openapi/whooshbang-v1.yaml +547 -73
- 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 +192 -5
- 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 +769 -63
|
@@ -5,7 +5,7 @@
|
|
|
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 | 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 | Operator | OperatorCollection | OperatorResolution | CreateOperatorMessageRequest | OperatorMessageResult | OperatorBroadcastRecipient | OperatorBroadcast | OperatorPreferences | OperatorConnectRequest | WhoAmI;
|
|
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 | Operator | OperatorCollection | OperatorResolution | CreateOperatorMessageRequest | OperatorMessageResult | OperatorBroadcastRecipient | OperatorBroadcast | OperatorPreferences | OperatorConnectRequest | WhoAmI | BillingPromotions | BillingPromotion | RedeemBillingPromotionRequest | CanonicalCreateMessageRequest | CanonicalCreateGroupBroadcastRequest | CanonicalCreateOperatorMessageRequest;
|
|
9
9
|
/**
|
|
10
10
|
* An opaque identifier. Its shape, ordering, and embedded content are not public promises.
|
|
11
11
|
*/
|
|
@@ -328,7 +328,7 @@ export type CreateSubscriptionLinkRequest = {
|
|
|
328
328
|
* @minItems 1
|
|
329
329
|
* @maxItems 1
|
|
330
330
|
*/
|
|
331
|
-
channels
|
|
331
|
+
channels?: [Channel];
|
|
332
332
|
/**
|
|
333
333
|
* An opaque identifier. Its shape, ordering, and embedded content are not public promises.
|
|
334
334
|
*/
|
|
@@ -529,8 +529,17 @@ export type ProblemCode = "authentication_required" | "credential_invalid" | "sc
|
|
|
529
529
|
*/
|
|
530
530
|
export type CreateMessageRequest = {
|
|
531
531
|
[k: string]: unknown;
|
|
532
|
-
} & {
|
|
533
|
-
|
|
532
|
+
} & ({
|
|
533
|
+
content: MessageContentInput;
|
|
534
|
+
[k: string]: unknown;
|
|
535
|
+
} | {
|
|
536
|
+
/**
|
|
537
|
+
* Options infer select; otherwise confirm. Typed replies require type: input. Omit expiry for 24 hours.
|
|
538
|
+
*/
|
|
539
|
+
interaction: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
540
|
+
[k: string]: unknown;
|
|
541
|
+
}) & {
|
|
542
|
+
to: MessageTarget | OpaqueIdentifier;
|
|
534
543
|
notifier_id?: OpaqueIdentifier;
|
|
535
544
|
/**
|
|
536
545
|
* Optional routing override. Simulator delivery and the reserved test: subscriber prefix are test-environment-only; live requests are refused with 400 request_invalid. Omit for connection delivery, or for the reserved test-environment simulator default.
|
|
@@ -540,7 +549,7 @@ export type CreateMessageRequest = {
|
|
|
540
549
|
* Optional channel connection to send through, from the environment's connections. The subscriber must be connected through it; the service never substitutes another connection or provider. A connection the subscriber has not connected through is refused as `subscriber_not_connected` when they are connected through another, and as an unchosen send would be (`subscriber_unbound` or `preferred_binding_unavailable`) when no connected channel can take the message. Omitted, the service chooses: the subscriber's preferred channel when they set one, otherwise the default connection when they are connected there, otherwise the connection they connected through most recently. The accepted message's `binding.connection_id` records the connection used. Implies `delivery_target: connection`.
|
|
541
550
|
*/
|
|
542
551
|
connection_id?: OpaqueIdentifier;
|
|
543
|
-
content
|
|
552
|
+
content?: MessageContentInput;
|
|
544
553
|
/**
|
|
545
554
|
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
546
555
|
*/
|
|
@@ -548,7 +557,7 @@ export type CreateMessageRequest = {
|
|
|
548
557
|
correlation_id?: string;
|
|
549
558
|
metadata?: Metadata;
|
|
550
559
|
/**
|
|
551
|
-
*
|
|
560
|
+
* Options infer select; otherwise confirm. Typed replies require type: input. Omit expiry for 24 hours.
|
|
552
561
|
*/
|
|
553
562
|
interaction?: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
554
563
|
/**
|
|
@@ -556,7 +565,7 @@ export type CreateMessageRequest = {
|
|
|
556
565
|
*/
|
|
557
566
|
purpose?: "service" | "marketing";
|
|
558
567
|
};
|
|
559
|
-
export type
|
|
568
|
+
export type MessageContentInput = string | TextContentInput | DocumentContentInput;
|
|
560
569
|
/**
|
|
561
570
|
* An opaque immutable version identity for one environment-owned notification image.
|
|
562
571
|
*/
|
|
@@ -1014,7 +1023,7 @@ export type Problem1 = {
|
|
|
1014
1023
|
[k: string]: unknown;
|
|
1015
1024
|
} | {
|
|
1016
1025
|
type?: "https://whooshbang.flowxo.com/problems/idempotency_key_required";
|
|
1017
|
-
title?: "Idempotency key required";
|
|
1026
|
+
title?: "Invalid idempotency key" | "Idempotency key required";
|
|
1018
1027
|
status?: 400;
|
|
1019
1028
|
code?: "idempotency_key_required";
|
|
1020
1029
|
retryable?: false;
|
|
@@ -2306,10 +2315,11 @@ export type CreateConnectionTestRequest = {
|
|
|
2306
2315
|
text?: string;
|
|
2307
2316
|
content?: MessageContent;
|
|
2308
2317
|
/**
|
|
2309
|
-
*
|
|
2318
|
+
* Options infer select; otherwise confirm. Typed replies require type: input. Omit expiry for 24 hours.
|
|
2310
2319
|
*/
|
|
2311
2320
|
interaction?: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
2312
2321
|
};
|
|
2322
|
+
export type MessageContent = TextContent | DocumentContent;
|
|
2313
2323
|
/**
|
|
2314
2324
|
* An opaque identifier for one normalized project-owned recipient brand logo.
|
|
2315
2325
|
*/
|
|
@@ -2379,6 +2389,10 @@ export type RecipientHandoffCompletion = {
|
|
|
2379
2389
|
* A named IANA time-zone identifier. Numeric offsets, abbreviations and display labels are invalid; recognized aliases normalize to the runtime's canonical identifier before persistence. Providers may leave it absent.
|
|
2380
2390
|
*/
|
|
2381
2391
|
export type TimeZone = string;
|
|
2392
|
+
/**
|
|
2393
|
+
* A stable, case-sensitive subscriber group key. Existing keys are preserved exactly.
|
|
2394
|
+
*/
|
|
2395
|
+
export type GroupKey = string;
|
|
2382
2396
|
/**
|
|
2383
2397
|
* An environment-scoped static group. Deletion is terminal and reserves the immutable key for history.
|
|
2384
2398
|
*/
|
|
@@ -2392,7 +2406,7 @@ export type SubscriberGroup = {
|
|
|
2392
2406
|
id: OpaqueIdentifier;
|
|
2393
2407
|
project_id: OpaqueIdentifier;
|
|
2394
2408
|
environment: Environment;
|
|
2395
|
-
key:
|
|
2409
|
+
key: GroupKey;
|
|
2396
2410
|
display_name: string;
|
|
2397
2411
|
description?: string;
|
|
2398
2412
|
status: "active" | "archived";
|
|
@@ -2410,7 +2424,7 @@ export type SubscriberGroupMembership = {
|
|
|
2410
2424
|
[k: string]: unknown;
|
|
2411
2425
|
} & {
|
|
2412
2426
|
group_id: OpaqueIdentifier;
|
|
2413
|
-
group_key:
|
|
2427
|
+
group_key: GroupKey;
|
|
2414
2428
|
subscriber_id: OpaqueIdentifier;
|
|
2415
2429
|
/**
|
|
2416
2430
|
* What to call the subscriber, resolved as on the subscriber's `name`: your display name, otherwise the channel's own name where the privacy setting keeps it. Absent when there is neither.
|
|
@@ -2424,14 +2438,47 @@ export type SubscriberGroupMembership = {
|
|
|
2424
2438
|
updated_at: Timestamp;
|
|
2425
2439
|
diagnostic_id: DiagnosticId;
|
|
2426
2440
|
};
|
|
2441
|
+
/**
|
|
2442
|
+
* Creates one group broadcast using the existing ordinary message envelope. The group target comes only from the path.
|
|
2443
|
+
*/
|
|
2444
|
+
export type CreateGroupBroadcastRequest = ({
|
|
2445
|
+
content: MessageContentInput;
|
|
2446
|
+
[k: string]: unknown;
|
|
2447
|
+
} | {
|
|
2448
|
+
/**
|
|
2449
|
+
* Options infer select; otherwise confirm. Typed replies require type: input. Omit expiry for 24 hours.
|
|
2450
|
+
*/
|
|
2451
|
+
interaction: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
2452
|
+
[k: string]: unknown;
|
|
2453
|
+
}) & {
|
|
2454
|
+
notifier_id?: OpaqueIdentifier;
|
|
2455
|
+
content?: MessageContentInput;
|
|
2456
|
+
/**
|
|
2457
|
+
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
2458
|
+
*/
|
|
2459
|
+
expires_at?: string;
|
|
2460
|
+
correlation_id?: string;
|
|
2461
|
+
metadata?: Metadata;
|
|
2462
|
+
/**
|
|
2463
|
+
* Options infer select; otherwise confirm. Typed replies require type: input. Omit expiry for 24 hours.
|
|
2464
|
+
*/
|
|
2465
|
+
interaction?: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
2466
|
+
/**
|
|
2467
|
+
* Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
|
|
2468
|
+
*/
|
|
2469
|
+
purpose?: "service" | "marketing";
|
|
2470
|
+
};
|
|
2427
2471
|
/**
|
|
2428
2472
|
* 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
2473
|
*/
|
|
2430
2474
|
export type AssertEmailConsentRequest = {
|
|
2431
2475
|
subscriber_id: OpaqueIdentifier;
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2476
|
+
/**
|
|
2477
|
+
* An opaque identifier. Its shape, ordering, and embedded content are not public promises.
|
|
2478
|
+
*/
|
|
2479
|
+
notifier_id?: string;
|
|
2480
|
+
connection_id?: OpaqueIdentifier;
|
|
2481
|
+
domain_id?: OpaqueIdentifier;
|
|
2435
2482
|
address: EmailAddress;
|
|
2436
2483
|
consented: true;
|
|
2437
2484
|
/**
|
|
@@ -2444,9 +2491,12 @@ export type AssertEmailConsentRequest = {
|
|
|
2444
2491
|
source?: string;
|
|
2445
2492
|
} | {
|
|
2446
2493
|
subscriber_id: OpaqueIdentifier;
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2494
|
+
/**
|
|
2495
|
+
* An opaque identifier. Its shape, ordering, and embedded content are not public promises.
|
|
2496
|
+
*/
|
|
2497
|
+
notifier_id?: string;
|
|
2498
|
+
connection_id?: OpaqueIdentifier;
|
|
2499
|
+
domain_id?: OpaqueIdentifier;
|
|
2450
2500
|
address: EmailAddress;
|
|
2451
2501
|
/**
|
|
2452
2502
|
* A bounded customer description of the service relationship. The authenticated asserting actor is recorded by the service, never accepted from this object.
|
|
@@ -2512,6 +2562,68 @@ export type MachineScopeSummary = [
|
|
|
2512
2562
|
("machine-messages:write" | "machine-messages:read" | "machine-events:read" | "machine-events:ack"),
|
|
2513
2563
|
("machine-messages:write" | "machine-messages:read" | "machine-events:read" | "machine-events:ack")
|
|
2514
2564
|
];
|
|
2565
|
+
/**
|
|
2566
|
+
* Send to a teammate by exact name or operator ID, or use me. Omitted recipient means the verified authenticated human only. Shared and service credentials must name a recipient. Preferred channel, service-email billing and marketing restrictions still apply.
|
|
2567
|
+
*/
|
|
2568
|
+
export type CreateOperatorMessageRequest = ({
|
|
2569
|
+
content: MessageContentInput;
|
|
2570
|
+
[k: string]: unknown;
|
|
2571
|
+
} | {
|
|
2572
|
+
/**
|
|
2573
|
+
* Options infer select; otherwise confirm. Typed replies require type: input. Omit expiry for 24 hours.
|
|
2574
|
+
*/
|
|
2575
|
+
interaction: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
2576
|
+
[k: string]: unknown;
|
|
2577
|
+
}) & {
|
|
2578
|
+
recipient?: string;
|
|
2579
|
+
content?: MessageContentInput;
|
|
2580
|
+
/**
|
|
2581
|
+
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
2582
|
+
*/
|
|
2583
|
+
expires_at?: string;
|
|
2584
|
+
correlation_id?: string;
|
|
2585
|
+
metadata?: Metadata;
|
|
2586
|
+
/**
|
|
2587
|
+
* Options infer select; otherwise confirm. Typed replies require type: input. Omit expiry for 24 hours.
|
|
2588
|
+
*/
|
|
2589
|
+
interaction?: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
2590
|
+
/**
|
|
2591
|
+
* Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
|
|
2592
|
+
*/
|
|
2593
|
+
purpose?: "service" | "marketing";
|
|
2594
|
+
};
|
|
2595
|
+
/**
|
|
2596
|
+
* Creates one logical message for one subscriber and one resolved channel binding.
|
|
2597
|
+
*/
|
|
2598
|
+
export type CanonicalCreateMessageRequest = {
|
|
2599
|
+
[k: string]: unknown;
|
|
2600
|
+
} & {
|
|
2601
|
+
to: MessageTarget;
|
|
2602
|
+
notifier_id?: OpaqueIdentifier;
|
|
2603
|
+
/**
|
|
2604
|
+
* The effective provider boundary selected for a message. Connection delivery uses the exact authorized environment connection; simulator delivery never calls a provider.
|
|
2605
|
+
*/
|
|
2606
|
+
delivery_target?: "connection" | "simulator";
|
|
2607
|
+
/**
|
|
2608
|
+
* Optional channel connection to send through, from the environment's connections. The subscriber must be connected through it; the service never substitutes another connection or provider. A connection the subscriber has not connected through is refused as `subscriber_not_connected` when they are connected through another, and as an unchosen send would be (`subscriber_unbound` or `preferred_binding_unavailable`) when no connected channel can take the message. Omitted, the service chooses: the subscriber's preferred channel when they set one, otherwise the default connection when they are connected there, otherwise the connection they connected through most recently. The accepted message's `binding.connection_id` records the connection used. Implies `delivery_target: connection`.
|
|
2609
|
+
*/
|
|
2610
|
+
connection_id?: OpaqueIdentifier;
|
|
2611
|
+
content: MessageContent;
|
|
2612
|
+
/**
|
|
2613
|
+
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
2614
|
+
*/
|
|
2615
|
+
expires_at?: string;
|
|
2616
|
+
correlation_id?: string;
|
|
2617
|
+
metadata?: Metadata;
|
|
2618
|
+
/**
|
|
2619
|
+
* Send-time interaction. Choose expires_in_seconds or expires_at; omit both for 24 hours from server acceptance. Idempotent replays retain the original resolved deadline.
|
|
2620
|
+
*/
|
|
2621
|
+
interaction?: CanonicalConfirmInteractionSendRequest | CanonicalSelectInteractionSendRequest | CanonicalInputInteractionSendRequest;
|
|
2622
|
+
/**
|
|
2623
|
+
* Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
|
|
2624
|
+
*/
|
|
2625
|
+
purpose?: "service" | "marketing";
|
|
2626
|
+
};
|
|
2515
2627
|
/**
|
|
2516
2628
|
* The current Clerk organization projected as a WhooshBang tenant. Clerk organization and user identifiers are not public fields.
|
|
2517
2629
|
*/
|
|
@@ -3108,7 +3220,7 @@ export interface CreateCustomerEndpointRequest {
|
|
|
3108
3220
|
* @minItems 1
|
|
3109
3221
|
* @maxItems 11
|
|
3110
3222
|
*/
|
|
3111
|
-
event_types
|
|
3223
|
+
event_types?: [CustomerEventType] | [CustomerEventType, CustomerEventType] | [CustomerEventType, CustomerEventType, CustomerEventType] | [
|
|
3112
3224
|
CustomerEventType,
|
|
3113
3225
|
CustomerEventType,
|
|
3114
3226
|
CustomerEventType,
|
|
@@ -3358,11 +3470,8 @@ export interface EmailVerificationSummary {
|
|
|
3358
3470
|
masked_address: string;
|
|
3359
3471
|
expires_at: Timestamp;
|
|
3360
3472
|
}
|
|
3361
|
-
export interface
|
|
3362
|
-
|
|
3363
|
-
}
|
|
3364
|
-
export interface TextContent {
|
|
3365
|
-
type: "text";
|
|
3473
|
+
export interface TextContentInput {
|
|
3474
|
+
type?: "text";
|
|
3366
3475
|
/**
|
|
3367
3476
|
* Text format. Omitted means plain text. Markdown supports headings, paragraphs, emphasis, strong emphasis, code, lists, quotes and safe HTTP(S) links; raw HTML and remote images are never executed or fetched.
|
|
3368
3477
|
*/
|
|
@@ -3463,7 +3572,7 @@ export interface TextContent {
|
|
|
3463
3572
|
StructuredTextSection,
|
|
3464
3573
|
StructuredTextSection
|
|
3465
3574
|
];
|
|
3466
|
-
image?:
|
|
3575
|
+
image?: NotificationImageInput;
|
|
3467
3576
|
}
|
|
3468
3577
|
export interface StructuredTextSection {
|
|
3469
3578
|
/**
|
|
@@ -3478,9 +3587,9 @@ export interface StructuredTextSection {
|
|
|
3478
3587
|
/**
|
|
3479
3588
|
* One optional provider-neutral illustrative image. The notification content remains complete without the pixels.
|
|
3480
3589
|
*/
|
|
3481
|
-
export interface
|
|
3590
|
+
export interface NotificationImageInput {
|
|
3482
3591
|
asset_id: NotificationImageAssetId;
|
|
3483
|
-
purpose
|
|
3592
|
+
purpose?: "illustration";
|
|
3484
3593
|
/**
|
|
3485
3594
|
* Optional accessible description preserved by every adapter. Omit it for a decorative illustration; notification text must remain complete without the image.
|
|
3486
3595
|
*/
|
|
@@ -3489,8 +3598,8 @@ export interface NotificationImage {
|
|
|
3489
3598
|
/**
|
|
3490
3599
|
* An authoritative ordered portable notification document that every delivery adapter renders faithfully.
|
|
3491
3600
|
*/
|
|
3492
|
-
export interface
|
|
3493
|
-
type
|
|
3601
|
+
export interface DocumentContentInput {
|
|
3602
|
+
type?: "document";
|
|
3494
3603
|
/**
|
|
3495
3604
|
* An optional semantic document title. The adapter chooses its native presentation.
|
|
3496
3605
|
*/
|
|
@@ -3502,7 +3611,7 @@ export interface DocumentContent {
|
|
|
3502
3611
|
* @maxItems 24
|
|
3503
3612
|
*/
|
|
3504
3613
|
blocks: [DocumentBlock, ...DocumentBlock[]];
|
|
3505
|
-
image?:
|
|
3614
|
+
image?: NotificationImageInput;
|
|
3506
3615
|
}
|
|
3507
3616
|
/**
|
|
3508
3617
|
* One prose section in an ordered portable document.
|
|
@@ -3828,14 +3937,8 @@ export interface DocumentDetailsBlock {
|
|
|
3828
3937
|
*/
|
|
3829
3938
|
text: string;
|
|
3830
3939
|
}
|
|
3831
|
-
/**
|
|
3832
|
-
* Bounded customer correlation data. Do not include secrets or personal data.
|
|
3833
|
-
*/
|
|
3834
|
-
export interface Metadata {
|
|
3835
|
-
[k: string]: MetadataValue;
|
|
3836
|
-
}
|
|
3837
3940
|
export interface ConfirmInteractionSendRequest {
|
|
3838
|
-
type
|
|
3941
|
+
type?: "confirm";
|
|
3839
3942
|
prompt: string;
|
|
3840
3943
|
confirm_label?: string;
|
|
3841
3944
|
deny_label?: string;
|
|
@@ -3853,30 +3956,117 @@ export interface ConfirmInteractionSendRequest {
|
|
|
3853
3956
|
expires_in_seconds?: number;
|
|
3854
3957
|
}
|
|
3855
3958
|
export interface SelectInteractionSendRequest {
|
|
3856
|
-
type
|
|
3959
|
+
type?: "select";
|
|
3857
3960
|
prompt: string;
|
|
3858
3961
|
/**
|
|
3859
3962
|
* @minItems 2
|
|
3860
3963
|
* @maxItems 6
|
|
3861
3964
|
*/
|
|
3862
|
-
options: [
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
] | [
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3965
|
+
options: [
|
|
3966
|
+
(string | {
|
|
3967
|
+
label: string;
|
|
3968
|
+
value?: string;
|
|
3969
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
3970
|
+
}),
|
|
3971
|
+
(string | {
|
|
3972
|
+
label: string;
|
|
3973
|
+
value?: string;
|
|
3974
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
3975
|
+
})
|
|
3976
|
+
] | [
|
|
3977
|
+
(string | {
|
|
3978
|
+
label: string;
|
|
3979
|
+
value?: string;
|
|
3980
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
3981
|
+
}),
|
|
3982
|
+
(string | {
|
|
3983
|
+
label: string;
|
|
3984
|
+
value?: string;
|
|
3985
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
3986
|
+
}),
|
|
3987
|
+
(string | {
|
|
3988
|
+
label: string;
|
|
3989
|
+
value?: string;
|
|
3990
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
3991
|
+
})
|
|
3992
|
+
] | [
|
|
3993
|
+
(string | {
|
|
3994
|
+
label: string;
|
|
3995
|
+
value?: string;
|
|
3996
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
3997
|
+
}),
|
|
3998
|
+
(string | {
|
|
3999
|
+
label: string;
|
|
4000
|
+
value?: string;
|
|
4001
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4002
|
+
}),
|
|
4003
|
+
(string | {
|
|
4004
|
+
label: string;
|
|
4005
|
+
value?: string;
|
|
4006
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4007
|
+
}),
|
|
4008
|
+
(string | {
|
|
4009
|
+
label: string;
|
|
4010
|
+
value?: string;
|
|
4011
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4012
|
+
})
|
|
4013
|
+
] | [
|
|
4014
|
+
(string | {
|
|
4015
|
+
label: string;
|
|
4016
|
+
value?: string;
|
|
4017
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4018
|
+
}),
|
|
4019
|
+
(string | {
|
|
4020
|
+
label: string;
|
|
4021
|
+
value?: string;
|
|
4022
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4023
|
+
}),
|
|
4024
|
+
(string | {
|
|
4025
|
+
label: string;
|
|
4026
|
+
value?: string;
|
|
4027
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4028
|
+
}),
|
|
4029
|
+
(string | {
|
|
4030
|
+
label: string;
|
|
4031
|
+
value?: string;
|
|
4032
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4033
|
+
}),
|
|
4034
|
+
(string | {
|
|
4035
|
+
label: string;
|
|
4036
|
+
value?: string;
|
|
4037
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4038
|
+
})
|
|
4039
|
+
] | [
|
|
4040
|
+
(string | {
|
|
4041
|
+
label: string;
|
|
4042
|
+
value?: string;
|
|
4043
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4044
|
+
}),
|
|
4045
|
+
(string | {
|
|
4046
|
+
label: string;
|
|
4047
|
+
value?: string;
|
|
4048
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4049
|
+
}),
|
|
4050
|
+
(string | {
|
|
4051
|
+
label: string;
|
|
4052
|
+
value?: string;
|
|
4053
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4054
|
+
}),
|
|
4055
|
+
(string | {
|
|
4056
|
+
label: string;
|
|
4057
|
+
value?: string;
|
|
4058
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4059
|
+
}),
|
|
4060
|
+
(string | {
|
|
4061
|
+
label: string;
|
|
4062
|
+
value?: string;
|
|
4063
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4064
|
+
}),
|
|
4065
|
+
(string | {
|
|
4066
|
+
label: string;
|
|
4067
|
+
value?: string;
|
|
4068
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
4069
|
+
})
|
|
3880
4070
|
];
|
|
3881
4071
|
/**
|
|
3882
4072
|
* Absolute RFC3339 deadline with an explicit timezone and at most millisecond precision. At least 30 seconds after server acceptance. Mutually exclusive with expires_in_seconds.
|
|
@@ -3891,17 +4081,6 @@ export interface SelectInteractionSendRequest {
|
|
|
3891
4081
|
*/
|
|
3892
4082
|
expires_in_seconds?: number;
|
|
3893
4083
|
}
|
|
3894
|
-
export interface InteractionOption {
|
|
3895
|
-
/**
|
|
3896
|
-
* Opaque customer data. It is never interpreted as a command.
|
|
3897
|
-
*/
|
|
3898
|
-
value: string;
|
|
3899
|
-
label: string;
|
|
3900
|
-
/**
|
|
3901
|
-
* What choosing this option does, so a channel can present it accordingly. Describes consequence rather than appearance: a channel renders `accept` green where it can, `destructive` red, `informational` prominent, and `neutral` plainly. A channel that cannot colour a control ignores this and the option still renders. Omitted means `neutral`.
|
|
3902
|
-
*/
|
|
3903
|
-
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
3904
|
-
}
|
|
3905
4084
|
export interface InputInteractionSendRequest {
|
|
3906
4085
|
type: "input";
|
|
3907
4086
|
prompt: string;
|
|
@@ -3918,6 +4097,15 @@ export interface InputInteractionSendRequest {
|
|
|
3918
4097
|
*/
|
|
3919
4098
|
expires_in_seconds?: number;
|
|
3920
4099
|
}
|
|
4100
|
+
export interface MessageTarget {
|
|
4101
|
+
subscriber_id: OpaqueIdentifier;
|
|
4102
|
+
}
|
|
4103
|
+
/**
|
|
4104
|
+
* Bounded customer correlation data. Do not include secrets or personal data.
|
|
4105
|
+
*/
|
|
4106
|
+
export interface Metadata {
|
|
4107
|
+
[k: string]: MetadataValue;
|
|
4108
|
+
}
|
|
3921
4109
|
/**
|
|
3922
4110
|
* Provenance carried by an ordinary message created during group expansion. The broadcast, message subscriber_id, and exact historical membership generation form the child uniqueness boundary.
|
|
3923
4111
|
*/
|
|
@@ -4981,6 +5169,139 @@ export interface ConnectionTestCollection {
|
|
|
4981
5169
|
page_size?: ListPageSize;
|
|
4982
5170
|
total?: ListTotal;
|
|
4983
5171
|
}
|
|
5172
|
+
export interface TextContent {
|
|
5173
|
+
type: "text";
|
|
5174
|
+
/**
|
|
5175
|
+
* Text format. Omitted means plain text. Markdown supports headings, paragraphs, emphasis, strong emphasis, code, lists, quotes and safe HTTP(S) links; raw HTML and remote images are never executed or fetched.
|
|
5176
|
+
*/
|
|
5177
|
+
format?: "plain" | "markdown";
|
|
5178
|
+
/**
|
|
5179
|
+
* The complete notification content. This remains authoritative and sufficient when an adapter cannot render optional structure.
|
|
5180
|
+
*/
|
|
5181
|
+
text: string;
|
|
5182
|
+
/**
|
|
5183
|
+
* An optional semantic title. The adapter chooses its native presentation.
|
|
5184
|
+
*/
|
|
5185
|
+
title?: string;
|
|
5186
|
+
/**
|
|
5187
|
+
* Optional ordered semantic sections that enhance, but never replace, the complete text.
|
|
5188
|
+
*
|
|
5189
|
+
* @minItems 1
|
|
5190
|
+
* @maxItems 12
|
|
5191
|
+
*/
|
|
5192
|
+
sections?: [StructuredTextSection] | [StructuredTextSection, StructuredTextSection] | [StructuredTextSection, StructuredTextSection, StructuredTextSection] | [
|
|
5193
|
+
StructuredTextSection,
|
|
5194
|
+
StructuredTextSection,
|
|
5195
|
+
StructuredTextSection,
|
|
5196
|
+
StructuredTextSection
|
|
5197
|
+
] | [
|
|
5198
|
+
StructuredTextSection,
|
|
5199
|
+
StructuredTextSection,
|
|
5200
|
+
StructuredTextSection,
|
|
5201
|
+
StructuredTextSection,
|
|
5202
|
+
StructuredTextSection
|
|
5203
|
+
] | [
|
|
5204
|
+
StructuredTextSection,
|
|
5205
|
+
StructuredTextSection,
|
|
5206
|
+
StructuredTextSection,
|
|
5207
|
+
StructuredTextSection,
|
|
5208
|
+
StructuredTextSection,
|
|
5209
|
+
StructuredTextSection
|
|
5210
|
+
] | [
|
|
5211
|
+
StructuredTextSection,
|
|
5212
|
+
StructuredTextSection,
|
|
5213
|
+
StructuredTextSection,
|
|
5214
|
+
StructuredTextSection,
|
|
5215
|
+
StructuredTextSection,
|
|
5216
|
+
StructuredTextSection,
|
|
5217
|
+
StructuredTextSection
|
|
5218
|
+
] | [
|
|
5219
|
+
StructuredTextSection,
|
|
5220
|
+
StructuredTextSection,
|
|
5221
|
+
StructuredTextSection,
|
|
5222
|
+
StructuredTextSection,
|
|
5223
|
+
StructuredTextSection,
|
|
5224
|
+
StructuredTextSection,
|
|
5225
|
+
StructuredTextSection,
|
|
5226
|
+
StructuredTextSection
|
|
5227
|
+
] | [
|
|
5228
|
+
StructuredTextSection,
|
|
5229
|
+
StructuredTextSection,
|
|
5230
|
+
StructuredTextSection,
|
|
5231
|
+
StructuredTextSection,
|
|
5232
|
+
StructuredTextSection,
|
|
5233
|
+
StructuredTextSection,
|
|
5234
|
+
StructuredTextSection,
|
|
5235
|
+
StructuredTextSection,
|
|
5236
|
+
StructuredTextSection
|
|
5237
|
+
] | [
|
|
5238
|
+
StructuredTextSection,
|
|
5239
|
+
StructuredTextSection,
|
|
5240
|
+
StructuredTextSection,
|
|
5241
|
+
StructuredTextSection,
|
|
5242
|
+
StructuredTextSection,
|
|
5243
|
+
StructuredTextSection,
|
|
5244
|
+
StructuredTextSection,
|
|
5245
|
+
StructuredTextSection,
|
|
5246
|
+
StructuredTextSection,
|
|
5247
|
+
StructuredTextSection
|
|
5248
|
+
] | [
|
|
5249
|
+
StructuredTextSection,
|
|
5250
|
+
StructuredTextSection,
|
|
5251
|
+
StructuredTextSection,
|
|
5252
|
+
StructuredTextSection,
|
|
5253
|
+
StructuredTextSection,
|
|
5254
|
+
StructuredTextSection,
|
|
5255
|
+
StructuredTextSection,
|
|
5256
|
+
StructuredTextSection,
|
|
5257
|
+
StructuredTextSection,
|
|
5258
|
+
StructuredTextSection,
|
|
5259
|
+
StructuredTextSection
|
|
5260
|
+
] | [
|
|
5261
|
+
StructuredTextSection,
|
|
5262
|
+
StructuredTextSection,
|
|
5263
|
+
StructuredTextSection,
|
|
5264
|
+
StructuredTextSection,
|
|
5265
|
+
StructuredTextSection,
|
|
5266
|
+
StructuredTextSection,
|
|
5267
|
+
StructuredTextSection,
|
|
5268
|
+
StructuredTextSection,
|
|
5269
|
+
StructuredTextSection,
|
|
5270
|
+
StructuredTextSection,
|
|
5271
|
+
StructuredTextSection,
|
|
5272
|
+
StructuredTextSection
|
|
5273
|
+
];
|
|
5274
|
+
image?: NotificationImage;
|
|
5275
|
+
}
|
|
5276
|
+
/**
|
|
5277
|
+
* One optional provider-neutral illustrative image. The notification content remains complete without the pixels.
|
|
5278
|
+
*/
|
|
5279
|
+
export interface NotificationImage {
|
|
5280
|
+
asset_id: NotificationImageAssetId;
|
|
5281
|
+
purpose: "illustration";
|
|
5282
|
+
/**
|
|
5283
|
+
* Optional accessible description preserved by every adapter. Omit it for a decorative illustration; notification text must remain complete without the image.
|
|
5284
|
+
*/
|
|
5285
|
+
description?: string;
|
|
5286
|
+
}
|
|
5287
|
+
/**
|
|
5288
|
+
* An authoritative ordered portable notification document that every delivery adapter renders faithfully.
|
|
5289
|
+
*/
|
|
5290
|
+
export interface DocumentContent {
|
|
5291
|
+
type: "document";
|
|
5292
|
+
/**
|
|
5293
|
+
* An optional semantic document title. The adapter chooses its native presentation.
|
|
5294
|
+
*/
|
|
5295
|
+
title?: string;
|
|
5296
|
+
/**
|
|
5297
|
+
* The complete portable document in exact authored order.
|
|
5298
|
+
*
|
|
5299
|
+
* @minItems 1
|
|
5300
|
+
* @maxItems 24
|
|
5301
|
+
*/
|
|
5302
|
+
blocks: [DocumentBlock, ...DocumentBlock[]];
|
|
5303
|
+
image?: NotificationImage;
|
|
5304
|
+
}
|
|
4984
5305
|
/**
|
|
4985
5306
|
* The exact configuration an application the customer creates and owns is created from, as data rather than as a URL-encoded blob.
|
|
4986
5307
|
*
|
|
@@ -6601,7 +6922,7 @@ export interface CreateSubscriberRequest {
|
|
|
6601
6922
|
/**
|
|
6602
6923
|
* @maxItems 50
|
|
6603
6924
|
*/
|
|
6604
|
-
groups?:
|
|
6925
|
+
groups?: GroupKey[];
|
|
6605
6926
|
}
|
|
6606
6927
|
/**
|
|
6607
6928
|
* Change subscriber display name, forced language or forced time zone. Null removes the corresponding override.
|
|
@@ -6716,7 +7037,7 @@ export interface Subscriber {
|
|
|
6716
7037
|
*
|
|
6717
7038
|
* @maxItems 200
|
|
6718
7039
|
*/
|
|
6719
|
-
groups?:
|
|
7040
|
+
groups?: GroupKey[];
|
|
6720
7041
|
/**
|
|
6721
7042
|
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
6722
7043
|
*/
|
|
@@ -6789,8 +7110,8 @@ export interface SubscriberDataExportExcludedControllerData {
|
|
|
6789
7110
|
* Creates one static, developer-managed subscriber group.
|
|
6790
7111
|
*/
|
|
6791
7112
|
export interface CreateSubscriberGroupRequest {
|
|
6792
|
-
key:
|
|
6793
|
-
display_name
|
|
7113
|
+
key: GroupKey;
|
|
7114
|
+
display_name?: string;
|
|
6794
7115
|
description?: string;
|
|
6795
7116
|
}
|
|
6796
7117
|
export interface SubscriberGroupCollection {
|
|
@@ -6804,7 +7125,7 @@ export interface SubscriberGroupCollection {
|
|
|
6804
7125
|
total?: ListTotal;
|
|
6805
7126
|
}
|
|
6806
7127
|
export interface SubscriberGroupMembershipCollection {
|
|
6807
|
-
group_key:
|
|
7128
|
+
group_key: GroupKey;
|
|
6808
7129
|
membership_revision: number;
|
|
6809
7130
|
/**
|
|
6810
7131
|
* @maxItems 100
|
|
@@ -6815,24 +7136,6 @@ export interface SubscriberGroupMembershipCollection {
|
|
|
6815
7136
|
page_size?: ListPageSize;
|
|
6816
7137
|
total?: ListTotal;
|
|
6817
7138
|
}
|
|
6818
|
-
/**
|
|
6819
|
-
* Creates one group broadcast using the existing ordinary message envelope. The group target comes only from the path.
|
|
6820
|
-
*/
|
|
6821
|
-
export interface CreateGroupBroadcastRequest {
|
|
6822
|
-
notifier_id?: OpaqueIdentifier;
|
|
6823
|
-
content: MessageContent;
|
|
6824
|
-
expires_at?: Timestamp;
|
|
6825
|
-
correlation_id?: string;
|
|
6826
|
-
metadata?: Metadata;
|
|
6827
|
-
/**
|
|
6828
|
-
* Send-time interaction. Choose expires_in_seconds or expires_at; omit both for 24 hours from server acceptance. Idempotent replays retain the original resolved deadline.
|
|
6829
|
-
*/
|
|
6830
|
-
interaction?: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
6831
|
-
/**
|
|
6832
|
-
* Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
|
|
6833
|
-
*/
|
|
6834
|
-
purpose?: "service" | "marketing";
|
|
6835
|
-
}
|
|
6836
7139
|
/**
|
|
6837
7140
|
* One durable acceptance against an exact group membership revision. Delivery remains represented by ordinary child messages.
|
|
6838
7141
|
*/
|
|
@@ -6845,7 +7148,7 @@ export interface GroupBroadcast {
|
|
|
6845
7148
|
project_id: OpaqueIdentifier;
|
|
6846
7149
|
environment: Environment;
|
|
6847
7150
|
group_id: OpaqueIdentifier;
|
|
6848
|
-
group_key:
|
|
7151
|
+
group_key: GroupKey;
|
|
6849
7152
|
audience_revision: number;
|
|
6850
7153
|
status: "accepted" | "expanding" | "expanded" | "complete";
|
|
6851
7154
|
aggregate: BroadcastAggregate;
|
|
@@ -6915,7 +7218,7 @@ export interface UsageBucket {
|
|
|
6915
7218
|
* How many of a day's messages fall in one group. `key` is a `MessageState` when grouping by state, a `Channel` when grouping by channel, and a channel connection id when grouping by connection. Groups with no messages are omitted, and a list holds at most the 200 largest groups, largest first.
|
|
6916
7219
|
*/
|
|
6917
7220
|
export interface UsageGroupCount {
|
|
6918
|
-
key:
|
|
7221
|
+
key: GroupKey;
|
|
6919
7222
|
count: number;
|
|
6920
7223
|
}
|
|
6921
7224
|
/**
|
|
@@ -7027,6 +7330,17 @@ export interface SelectInteractionRequest {
|
|
|
7027
7330
|
*/
|
|
7028
7331
|
correlation_id?: string;
|
|
7029
7332
|
}
|
|
7333
|
+
export interface InteractionOption {
|
|
7334
|
+
/**
|
|
7335
|
+
* Opaque customer data. It is never interpreted as a command.
|
|
7336
|
+
*/
|
|
7337
|
+
value: string;
|
|
7338
|
+
label: string;
|
|
7339
|
+
/**
|
|
7340
|
+
* What choosing this option does, so a channel can present it accordingly. Describes consequence rather than appearance: a channel renders `accept` green where it can, `destructive` red, `informational` prominent, and `neutral` plainly. A channel that cannot colour a control ignores this and the option still renders. Omitted means `neutral`.
|
|
7341
|
+
*/
|
|
7342
|
+
intent?: "accept" | "destructive" | "informational" | "neutral";
|
|
7343
|
+
}
|
|
7030
7344
|
export interface InputInteractionRequest {
|
|
7031
7345
|
type: "input";
|
|
7032
7346
|
prompt: string;
|
|
@@ -8062,6 +8376,10 @@ export interface CardSetup {
|
|
|
8062
8376
|
*/
|
|
8063
8377
|
export interface CreateCreditPurchaseRequest {
|
|
8064
8378
|
purchase_cents: 500 | 1000 | 2500 | 5000 | 10000;
|
|
8379
|
+
/**
|
|
8380
|
+
* Optional. The card charge the customer approved: the pack price less any promotion shown to them. When it differs from what would be charged, the purchase is refused with credit_purchase_price_changed and nothing is charged.
|
|
8381
|
+
*/
|
|
8382
|
+
approved_charge_usd?: string;
|
|
8065
8383
|
}
|
|
8066
8384
|
/**
|
|
8067
8385
|
* A credit pack charged to the default card. paid means the credit is in the balance. requires_action means the card issuer asks the customer to confirm in the payment form using client_secret; reconcile afterwards. A failed purchase charged nothing; start a new one after updating the card.
|
|
@@ -8070,6 +8388,14 @@ export interface CreditPurchase {
|
|
|
8070
8388
|
id: string;
|
|
8071
8389
|
purchase_cents: 500 | 1000 | 2500 | 5000 | 10000;
|
|
8072
8390
|
credit_usd: string;
|
|
8391
|
+
/**
|
|
8392
|
+
* What the card is charged: the pack price less any promotional discount. The pack's credit is unchanged.
|
|
8393
|
+
*/
|
|
8394
|
+
charged_usd: string;
|
|
8395
|
+
/**
|
|
8396
|
+
* The promotional discount taken off the pack price, or 0.000000.
|
|
8397
|
+
*/
|
|
8398
|
+
discount_usd: string;
|
|
8073
8399
|
status: "processing" | "requires_action" | "paid" | "failed";
|
|
8074
8400
|
failure: ("card_declined" | "authentication_failed") | null;
|
|
8075
8401
|
client_secret: string | null;
|
|
@@ -8286,6 +8612,33 @@ export interface SubscriptionChange {
|
|
|
8286
8612
|
* 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.
|
|
8287
8613
|
*/
|
|
8288
8614
|
unused_time_credit_usd: string | null;
|
|
8615
|
+
/**
|
|
8616
|
+
* A promotion code's plan discount applied to this first plan or add-on purchase: charge_now_usd is already reduced by it, and the monthly charges keep it for its months. Null when no plan discount applies.
|
|
8617
|
+
*/
|
|
8618
|
+
promotion: {
|
|
8619
|
+
percent_off: number;
|
|
8620
|
+
duration: "once" | "repeating";
|
|
8621
|
+
months: number | null;
|
|
8622
|
+
/**
|
|
8623
|
+
* What the promotion takes off charge_now_usd.
|
|
8624
|
+
*/
|
|
8625
|
+
discount_usd: string;
|
|
8626
|
+
} | null;
|
|
8627
|
+
/**
|
|
8628
|
+
* A plan discount already running on the subscription, which keeps lowering the monthly charges after this change. It never reduces charge_now_usd. Null when none applies to the next monthly charge, and once a change is no longer a quote.
|
|
8629
|
+
*/
|
|
8630
|
+
renewal_promotion: {
|
|
8631
|
+
percent_off: number;
|
|
8632
|
+
duration: "once" | "repeating";
|
|
8633
|
+
/**
|
|
8634
|
+
* What the next monthly charge for this selection comes to with the promotion: monthly_price_usd less its percentage.
|
|
8635
|
+
*/
|
|
8636
|
+
renewal_price_usd: string;
|
|
8637
|
+
/**
|
|
8638
|
+
* When a repeating promotion stops applying. Null for a once promotion, which applies to the next monthly charge only.
|
|
8639
|
+
*/
|
|
8640
|
+
ends_at: string | null;
|
|
8641
|
+
} | null;
|
|
8289
8642
|
effective_at: string | null;
|
|
8290
8643
|
expires_at: string;
|
|
8291
8644
|
/**
|
|
@@ -8340,27 +8693,6 @@ export interface OperatorResolution {
|
|
|
8340
8693
|
outcome: "resolved" | "ambiguous" | "not_found";
|
|
8341
8694
|
choices: Operator[];
|
|
8342
8695
|
}
|
|
8343
|
-
/**
|
|
8344
|
-
* Send to a teammate by exact name or operator ID, or use me. Omitted recipient means the verified authenticated human only. Shared and service credentials must name a recipient. Preferred channel, service-email billing and marketing restrictions still apply.
|
|
8345
|
-
*/
|
|
8346
|
-
export interface CreateOperatorMessageRequest {
|
|
8347
|
-
recipient?: string;
|
|
8348
|
-
content: MessageContent;
|
|
8349
|
-
/**
|
|
8350
|
-
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
8351
|
-
*/
|
|
8352
|
-
expires_at?: string;
|
|
8353
|
-
correlation_id?: string;
|
|
8354
|
-
metadata?: Metadata;
|
|
8355
|
-
/**
|
|
8356
|
-
* Send-time interaction. Choose expires_in_seconds or expires_at; omit both for 24 hours from server acceptance. Idempotent replays retain the original resolved deadline.
|
|
8357
|
-
*/
|
|
8358
|
-
interaction?: ConfirmInteractionSendRequest | SelectInteractionSendRequest | InputInteractionSendRequest;
|
|
8359
|
-
/**
|
|
8360
|
-
* Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
|
|
8361
|
-
*/
|
|
8362
|
-
purpose?: "service" | "marketing";
|
|
8363
|
-
}
|
|
8364
8696
|
/**
|
|
8365
8697
|
* Readable acceptance or refusal. Accepted means queued, never proof of provider delivery.
|
|
8366
8698
|
*/
|
|
@@ -8445,14 +8777,200 @@ export interface WhoAmI {
|
|
|
8445
8777
|
me?: Operator;
|
|
8446
8778
|
detail: string;
|
|
8447
8779
|
}
|
|
8448
|
-
|
|
8449
|
-
|
|
8780
|
+
/**
|
|
8781
|
+
* An organization's promotions: rewards WhooshBang gave it and promotion codes it redeemed, newest first.
|
|
8782
|
+
*/
|
|
8783
|
+
export interface BillingPromotions {
|
|
8784
|
+
/**
|
|
8785
|
+
* Unexpired promotional message credit available now.
|
|
8786
|
+
*/
|
|
8787
|
+
promotional_credit_usd: string;
|
|
8788
|
+
/**
|
|
8789
|
+
* Unexpired free shared emails available now.
|
|
8790
|
+
*/
|
|
8791
|
+
free_shared_emails: number;
|
|
8792
|
+
/**
|
|
8793
|
+
* When the latest active branding promotion ends, if one is active.
|
|
8794
|
+
*/
|
|
8795
|
+
branding_removed_until: string | null;
|
|
8796
|
+
/**
|
|
8797
|
+
* @maxItems 200
|
|
8798
|
+
*/
|
|
8799
|
+
promotions: BillingPromotion[];
|
|
8800
|
+
}
|
|
8801
|
+
/**
|
|
8802
|
+
* One promotion an organization holds. Promotional value has no cash value, is never refunded and cannot move to another organization.
|
|
8803
|
+
*/
|
|
8804
|
+
export interface BillingPromotion {
|
|
8805
|
+
id: string;
|
|
8806
|
+
/**
|
|
8807
|
+
* `whooshbang` for a reward WhooshBang gave the organization directly; `code` for a promotion code the organization redeemed.
|
|
8808
|
+
*/
|
|
8809
|
+
source: "whooshbang" | "code";
|
|
8810
|
+
/**
|
|
8811
|
+
* The promotion's name for a redeemed code. Null for a direct reward.
|
|
8812
|
+
*/
|
|
8813
|
+
name: string | null;
|
|
8814
|
+
/**
|
|
8815
|
+
* `pending` is a credit pack discount carried by a payment still waiting for the customer's bank; it is not available to another purchase. `used` applies only to a discount that has been applied to a purchase or put on a plan. `revoked` means WhooshBang withdrew what remained.
|
|
8816
|
+
*/
|
|
8817
|
+
status: "active" | "pending" | "expired" | "used" | "revoked";
|
|
8818
|
+
starts_at: string;
|
|
8819
|
+
/**
|
|
8820
|
+
* When the benefit stops. Null for a discount, which ends when it is used or, for a plan discount, after its months.
|
|
8821
|
+
*/
|
|
8822
|
+
ends_at: string | null;
|
|
8823
|
+
/**
|
|
8824
|
+
* When the promotion was used or withdrawn, if it was.
|
|
8825
|
+
*/
|
|
8826
|
+
ended_at: string | null;
|
|
8827
|
+
benefit: {
|
|
8828
|
+
kind: "message_credit";
|
|
8829
|
+
credit_usd: string;
|
|
8830
|
+
remaining_usd: string;
|
|
8831
|
+
} | {
|
|
8832
|
+
kind: "shared_emails";
|
|
8833
|
+
shared_emails: number;
|
|
8834
|
+
remaining: number;
|
|
8835
|
+
} | {
|
|
8836
|
+
kind: "branding";
|
|
8837
|
+
} | {
|
|
8838
|
+
kind: "discount";
|
|
8839
|
+
applies_to: "credit_packs" | "subscriptions";
|
|
8840
|
+
percent_off: number | null;
|
|
8841
|
+
amount_off_usd: string | null;
|
|
8842
|
+
duration: "once" | "repeating";
|
|
8843
|
+
months: number | null;
|
|
8844
|
+
};
|
|
8845
|
+
}
|
|
8846
|
+
export interface RedeemBillingPromotionRequest {
|
|
8847
|
+
/**
|
|
8848
|
+
* The promotion code. Case, spaces, hyphens and underscores are ignored.
|
|
8849
|
+
*/
|
|
8850
|
+
code: string;
|
|
8851
|
+
}
|
|
8852
|
+
export interface CanonicalConfirmInteractionSendRequest {
|
|
8853
|
+
type: "confirm";
|
|
8854
|
+
prompt: string;
|
|
8855
|
+
confirm_label?: string;
|
|
8856
|
+
deny_label?: string;
|
|
8857
|
+
/**
|
|
8858
|
+
* Absolute RFC3339 deadline with an explicit timezone and at most millisecond precision. At least 30 seconds after server acceptance. Mutually exclusive with expires_in_seconds.
|
|
8859
|
+
*/
|
|
8860
|
+
expires_at?: string;
|
|
8861
|
+
/**
|
|
8862
|
+
* Caller-owned opaque correlation returned as data, never treated as execution authority.
|
|
8863
|
+
*/
|
|
8864
|
+
correlation_id?: string;
|
|
8865
|
+
/**
|
|
8866
|
+
* Whole seconds from server acceptance. No fixed maximum; the resolved timestamp must be representable through year 9999. Mutually exclusive with expires_at. Omit both for 86400 seconds (24 hours).
|
|
8867
|
+
*/
|
|
8868
|
+
expires_in_seconds?: number;
|
|
8869
|
+
}
|
|
8870
|
+
export interface CanonicalSelectInteractionSendRequest {
|
|
8871
|
+
type: "select";
|
|
8872
|
+
prompt: string;
|
|
8873
|
+
/**
|
|
8874
|
+
* @minItems 2
|
|
8875
|
+
* @maxItems 6
|
|
8876
|
+
*/
|
|
8877
|
+
options: [InteractionOption, InteractionOption] | [InteractionOption, InteractionOption, InteractionOption] | [
|
|
8878
|
+
InteractionOption,
|
|
8879
|
+
InteractionOption,
|
|
8880
|
+
InteractionOption,
|
|
8881
|
+
InteractionOption
|
|
8882
|
+
] | [
|
|
8883
|
+
InteractionOption,
|
|
8884
|
+
InteractionOption,
|
|
8885
|
+
InteractionOption,
|
|
8886
|
+
InteractionOption,
|
|
8887
|
+
InteractionOption
|
|
8888
|
+
] | [
|
|
8889
|
+
InteractionOption,
|
|
8890
|
+
InteractionOption,
|
|
8891
|
+
InteractionOption,
|
|
8892
|
+
InteractionOption,
|
|
8893
|
+
InteractionOption,
|
|
8894
|
+
InteractionOption
|
|
8895
|
+
];
|
|
8896
|
+
/**
|
|
8897
|
+
* Absolute RFC3339 deadline with an explicit timezone and at most millisecond precision. At least 30 seconds after server acceptance. Mutually exclusive with expires_in_seconds.
|
|
8898
|
+
*/
|
|
8899
|
+
expires_at?: string;
|
|
8900
|
+
/**
|
|
8901
|
+
* Caller-owned opaque correlation returned as data, never treated as execution authority.
|
|
8902
|
+
*/
|
|
8903
|
+
correlation_id?: string;
|
|
8904
|
+
/**
|
|
8905
|
+
* Whole seconds from server acceptance. No fixed maximum; the resolved timestamp must be representable through year 9999. Mutually exclusive with expires_at. Omit both for 86400 seconds (24 hours).
|
|
8906
|
+
*/
|
|
8907
|
+
expires_in_seconds?: number;
|
|
8908
|
+
}
|
|
8909
|
+
export interface CanonicalInputInteractionSendRequest {
|
|
8910
|
+
type: "input";
|
|
8911
|
+
prompt: string;
|
|
8912
|
+
/**
|
|
8913
|
+
* Absolute RFC3339 deadline with an explicit timezone and at most millisecond precision. At least 30 seconds after server acceptance. Mutually exclusive with expires_in_seconds.
|
|
8914
|
+
*/
|
|
8915
|
+
expires_at?: string;
|
|
8916
|
+
/**
|
|
8917
|
+
* Caller-owned opaque correlation returned as data, never treated as execution authority.
|
|
8918
|
+
*/
|
|
8919
|
+
correlation_id?: string;
|
|
8920
|
+
/**
|
|
8921
|
+
* Whole seconds from server acceptance. No fixed maximum; the resolved timestamp must be representable through year 9999. Mutually exclusive with expires_at. Omit both for 86400 seconds (24 hours).
|
|
8922
|
+
*/
|
|
8923
|
+
expires_in_seconds?: number;
|
|
8924
|
+
}
|
|
8925
|
+
/**
|
|
8926
|
+
* Creates one group broadcast using the existing ordinary message envelope. The group target comes only from the path.
|
|
8927
|
+
*/
|
|
8928
|
+
export interface CanonicalCreateGroupBroadcastRequest {
|
|
8929
|
+
notifier_id?: OpaqueIdentifier;
|
|
8930
|
+
content: MessageContent;
|
|
8931
|
+
expires_at?: Timestamp;
|
|
8932
|
+
correlation_id?: string;
|
|
8933
|
+
metadata?: Metadata;
|
|
8934
|
+
/**
|
|
8935
|
+
* Send-time interaction. Choose expires_in_seconds or expires_at; omit both for 24 hours from server acceptance. Idempotent replays retain the original resolved deadline.
|
|
8936
|
+
*/
|
|
8937
|
+
interaction?: CanonicalConfirmInteractionSendRequest | CanonicalSelectInteractionSendRequest | CanonicalInputInteractionSendRequest;
|
|
8938
|
+
/**
|
|
8939
|
+
* Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
|
|
8940
|
+
*/
|
|
8941
|
+
purpose?: "service" | "marketing";
|
|
8942
|
+
}
|
|
8943
|
+
/**
|
|
8944
|
+
* Send to a teammate by exact name or operator ID, or use me. Omitted recipient means the verified authenticated human only. Shared and service credentials must name a recipient. Preferred channel, service-email billing and marketing restrictions still apply.
|
|
8945
|
+
*/
|
|
8946
|
+
export interface CanonicalCreateOperatorMessageRequest {
|
|
8947
|
+
recipient?: string;
|
|
8948
|
+
content: MessageContent;
|
|
8949
|
+
/**
|
|
8950
|
+
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
8951
|
+
*/
|
|
8952
|
+
expires_at?: string;
|
|
8953
|
+
correlation_id?: string;
|
|
8954
|
+
metadata?: Metadata;
|
|
8955
|
+
/**
|
|
8956
|
+
* Send-time interaction. Choose expires_in_seconds or expires_at; omit both for 24 hours from server acceptance. Idempotent replays retain the original resolved deadline.
|
|
8957
|
+
*/
|
|
8958
|
+
interaction?: CanonicalConfirmInteractionSendRequest | CanonicalSelectInteractionSendRequest | CanonicalInputInteractionSendRequest;
|
|
8959
|
+
/**
|
|
8960
|
+
* Omitted means service. Marketing refuses service-only bindings before charging and at every delayed dispatch.
|
|
8961
|
+
*/
|
|
8962
|
+
purpose?: "service" | "marketing";
|
|
8963
|
+
}
|
|
8964
|
+
export interface RotateCustomerEndpointRequest {
|
|
8965
|
+
overlap_seconds?: number;
|
|
8966
|
+
}
|
|
8967
|
+
/** Renames or redescribes a group; an omitted version uses last write wins. */
|
|
8450
8968
|
export type UpdateSubscriberGroupRequest = {
|
|
8451
|
-
row_version
|
|
8969
|
+
row_version?: number;
|
|
8452
8970
|
display_name: string;
|
|
8453
8971
|
description?: string | null;
|
|
8454
8972
|
} | {
|
|
8455
|
-
row_version
|
|
8973
|
+
row_version?: number;
|
|
8456
8974
|
display_name?: string;
|
|
8457
8975
|
description: string | null;
|
|
8458
8976
|
};
|