@whooshbang/contracts 2.5.0 → 3.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 (102) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/README.md +21 -21
  3. package/contract-manifest.json +32 -33
  4. package/dist/generated/artifact-index.d.ts +34 -34
  5. package/dist/generated/artifact-index.js +32 -33
  6. package/dist/generated/artifact-index.js.map +1 -1
  7. package/dist/generated/interaction-v1.d.ts +77 -4
  8. package/dist/generated/validators-standalone.d.ts +492 -492
  9. package/dist/generated/validators-standalone.js +6405 -4572
  10. package/dist/generated/validators-standalone.js.map +1 -1
  11. package/dist/generated/validators.d.ts +2 -2
  12. package/dist/generated/validators.js +1 -0
  13. package/dist/generated/validators.js.map +1 -1
  14. package/dist/generated/whooshbang-v1.d.ts +526 -116
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/input-defaults.d.ts +7 -0
  19. package/dist/input-defaults.js +59 -0
  20. package/dist/input-defaults.js.map +1 -0
  21. package/dist/interaction-expiry.js +2 -1
  22. package/dist/interaction-expiry.js.map +1 -1
  23. package/fixtures/core-v1/fixture-index.json +1 -9
  24. package/fixtures/core-v1/problems/idempotency-key-required.json +2 -2
  25. package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
  26. package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
  27. package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
  28. package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
  29. package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
  30. package/fixtures/core-v1/scenarios/cross-organization-project.json +1 -1
  31. package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
  32. package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
  33. package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
  34. package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
  35. package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
  36. package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
  37. package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
  38. package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +1 -1
  39. package/fixtures/core-v1/scenarios/project-slug-conflict.json +1 -1
  40. package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
  41. package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
  42. package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
  43. package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
  44. package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
  45. package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
  46. package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
  47. package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
  48. package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
  49. package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
  50. package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
  51. package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
  52. package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
  53. package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
  54. package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
  55. package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
  56. package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
  57. package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
  58. package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
  59. package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
  60. package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
  61. package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
  62. package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
  63. package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
  64. package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
  65. package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
  66. package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
  67. package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
  68. package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
  69. package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
  70. package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
  71. package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
  72. package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
  73. package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
  74. package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
  75. package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
  76. package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
  77. package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
  78. package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
  79. package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +1 -1
  80. package/openapi/generated/whooshbang-v1.bundle.json +1009 -302
  81. package/openapi/whooshbang-v1.yaml +455 -74
  82. package/package.json +1 -1
  83. package/schemas/core-scenario.schema.json +1 -1
  84. package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
  85. package/schemas/events/interaction-expired-v1.schema.json +1 -1
  86. package/schemas/events/interaction-received-v1.schema.json +1 -1
  87. package/schemas/events/message-delivered-v1.schema.json +1 -1
  88. package/schemas/events/message-expired-v1.schema.json +1 -1
  89. package/schemas/events/message-failed-v1.schema.json +1 -1
  90. package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
  91. package/schemas/events/subscription-activated-v1.schema.json +1 -1
  92. package/schemas/events/subscription-revoked-v1.schema.json +1 -1
  93. package/schemas/events/whooshbang-event-v1.schema.json +1 -1
  94. package/schemas/fixture-index.schema.json +1 -1
  95. package/schemas/interaction-machine-scenario.schema.json +1 -1
  96. package/schemas/interaction-v1.schema.json +192 -5
  97. package/schemas/machine-v1.schema.json +1 -1
  98. package/schemas/provider-capabilities-v1.schema.json +1 -1
  99. package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
  100. package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
  101. package/schemas/whooshbang-v1.schema.json +410 -63
  102. package/fixtures/core-v1/problems/replay-unavailable-rollout.json +0 -16
package/dist/index.d.ts CHANGED
@@ -39,3 +39,6 @@ export type { InteractionMachineScenario } from "./generated/interaction-machine
39
39
  export type { CreateMachineClientRequest, MachineClient, MachineCredential, MachineCredentialBearer, MachineCredentialId, MachineCursor, MachineEventAckDisposition, MachineEventAckRequest, MachineEventAckResponse, MachineEventPollResponse, MachineScope, MachineScopeSummary, MachineSecretDigest, QuarantineReasonCode, RegisterMachineCredentialRequest, } from "./generated/machine-v1.js";
40
40
  export type { ContextSupport, Degradation, InteractionCapability, ProviderCapabilitiesV1, } from "./generated/provider-capabilities-v1.js";
41
41
  export type { ContractValidationError, ContractValidator, } from "./generated/validators.js";
42
+ export { normalizeMessageContent, normalizeInteractionSendRequest, normalizeMessageEnvelope, normalizeCreateMessageRequest, normalizeOperatorMessageRequest, } from "./input-defaults.js";
43
+ export type { CanonicalCreateMessageRequest, CanonicalCreateGroupBroadcastRequest, CanonicalCreateOperatorMessageRequest, MessageContentInput, TextContentInput, DocumentContentInput, NotificationImageInput, } from "./generated/whooshbang-v1.js";
44
+ export type { CanonicalInteractionSendRequest, InteractionOptionInput, } from "./generated/interaction-v1.js";
package/dist/index.js CHANGED
@@ -10,4 +10,5 @@ export { normalizeNotificationImage, NOTIFICATION_IMAGE_CONTENT_TYPE, NOTIFICATI
10
10
  export { canonicalIanaTimeZone } from "./time-zone.js";
11
11
  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";
12
12
  export { contractValidationErrors, validateOrganizationCredential, validateOrganizationCredentialCollection, validateOrganizationCredentialRotation, validateOrganizationCredentialSecretReveal, validateBillingProjectSlots, validateAssignBillingProjectSlotsRequest, validateBillingPromotions, validateBillingPromotion, validateRedeemBillingPromotionRequest, validateSubscriptionChange, validateConfirmSubscriptionChangeRequest, validateBillingEntitlements, validateSubscriptionSelection, validateProjectAttribution, validateUpdateProjectAttributionRequest, validateUpdateAutoTopUpSettingsRequest, validateAutoTopUpSettings, validateBillingAccount, validateBillingCard, validateCardSetup, validateCreateCreditPurchaseRequest, validateCreditPurchase, validateBillingInvoice, validateBillingInvoiceCollection, validateUpdateBillingReceiptEmailRequest, validateOrganizationProjection, validateWhoAmI, validateOperator, validateOperatorCollection, validateOperatorResolution, validateCreateOperatorMessageRequest, validateOperatorMessageResult, validateOperatorBroadcastRecipient, validateOperatorBroadcast, validateOperatorPreferences, validateOperatorConnectRequest, 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, validateInteractionSendRequest, 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";
13
+ export { normalizeMessageContent, normalizeInteractionSendRequest, normalizeMessageEnvelope, normalizeCreateMessageRequest, normalizeOperatorMessageRequest, } from "./input-defaults.js";
13
14
  //# 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":"AAAA,OAAO,EACL,kCAAkC,EAClC,sCAAsC,EACtC,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,2CAA2C,EAC3C,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,mCAAmC,EACnC,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,kCAAkC,EAClC,oCAAoC,EACpC,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,gCAAgC,EAChC,sCAAsC,EACtC,8BAA8B,EAC9B,2BAA2B,EAC3B,kCAAkC,EAClC,gDAAgD,EAChD,kCAAkC,GACnC,MAAM,4BAA4B,CAAC;AA+CpC,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,wCAAwC,EACxC,sCAAsC,EACtC,0CAA0C,EAC1C,2BAA2B,EAC3B,wCAAwC,EACxC,yBAAyB,EACzB,wBAAwB,EACxB,qCAAqC,EACrC,0BAA0B,EAC1B,wCAAwC,EACxC,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,uCAAuC,EACvC,sCAAsC,EACtC,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,mCAAmC,EACnC,sBAAsB,EACtB,sBAAsB,EACtB,gCAAgC,EAChC,wCAAwC,EACxC,8BAA8B,EAC9B,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,oCAAoC,EACpC,6BAA6B,EAC7B,kCAAkC,EAClC,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,gBAAgB,EAChB,0BAA0B,EAC1B,6BAA6B,EAC7B,6BAA6B,EAC7B,qBAAqB,EACrB,+BAA+B,EAC/B,6BAA6B,EAC7B,iCAAiC,EACjC,iCAAiC,EACjC,sBAAsB,EACtB,2CAA2C,EAC3C,kCAAkC,EAClC,yBAAyB,EACzB,mCAAmC,EACnC,oCAAoC,EACpC,sCAAsC,EACtC,sCAAsC,EACtC,gDAAgD,EAChD,sBAAsB,EACtB,gCAAgC,EAChC,mBAAmB,EACnB,mCAAmC,EACnC,mCAAmC,EACnC,uCAAuC,EACvC,oCAAoC,EACpC,kCAAkC,EAClC,gCAAgC,EAChC,8BAA8B,EAC9B,+CAA+C,EAC/C,sCAAsC,EACtC,mDAAmD,EACnD,iCAAiC,EACjC,0CAA0C,EAC1C,qCAAqC,EACrC,sCAAsC,EACtC,wBAAwB,EACxB,oCAAoC,EACpC,uBAAuB,EACvB,kCAAkC,EAClC,kCAAkC,EAClC,wBAAwB,EACxB,+BAA+B,EAC/B,kBAAkB,EAClB,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,EAC5B,gCAAgC,EAChC,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,uBAAuB,EACvB,iCAAiC,EACjC,iCAAiC,EACjC,2CAA2C,EAC3C,mCAAmC,EACnC,sBAAsB,EACtB,qCAAqC,EACrC,4BAA4B,EAC5B,4BAA4B,EAC5B,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,8BAA8B,EAC9B,wBAAwB,EACxB,yCAAyC,EACzC,kCAAkC,EAClC,sCAAsC,EACtC,6CAA6C,EAC7C,sBAAsB,EACtB,iCAAiC,EACjC,wBAAwB,EACxB,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,oCAAoC,EACpC,8BAA8B,EAC9B,8BAA8B,EAC9B,gCAAgC,EAChC,2BAA2B,EAC3B,gCAAgC,EAChC,oCAAoC,EACpC,oCAAoC,EACpC,qBAAqB,EACrB,+BAA+B,EAC/B,mCAAmC,EACnC,8BAA8B,EAC9B,gCAAgC,EAChC,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,oCAAoC,EACpC,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,6BAA6B,EAC7B,uCAAuC,EACvC,6BAA6B,EAC7B,4BAA4B,EAC5B,sCAAsC,EACtC,sCAAsC,EACtC,6BAA6B,EAC7B,gCAAgC,EAChC,uCAAuC,EACvC,6BAA6B,EAC7B,wCAAwC,EACxC,2CAA2C,EAC3C,kCAAkC,EAClC,qCAAqC,EACrC,kCAAkC,EAClC,iCAAiC,EACjC,wBAAwB,EACxB,gCAAgC,EAChC,wCAAwC,EACxC,0CAA0C,EAC1C,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CanonicalCreateMessageRequest, CanonicalCreateGroupBroadcastRequest, CanonicalCreateOperatorMessageRequest, CreateMessageRequest, CreateGroupBroadcastRequest, CreateOperatorMessageRequest, MessageContent, MessageContentInput } from "./generated/whooshbang-v1.js";
2
+ import type { CanonicalInteractionSendRequest, InteractionSendRequest } from "./generated/interaction-v1.js";
3
+ export declare function normalizeMessageContent(input: MessageContentInput): MessageContent;
4
+ export declare function normalizeInteractionSendRequest(input: InteractionSendRequest): CanonicalInteractionSendRequest;
5
+ export declare function normalizeMessageEnvelope(input: Pick<CreateGroupBroadcastRequest, "content" | "interaction" | "notifier_id" | "expires_at" | "correlation_id" | "metadata" | "purpose">): CanonicalCreateGroupBroadcastRequest;
6
+ export declare function normalizeCreateMessageRequest(input: CreateMessageRequest): CanonicalCreateMessageRequest;
7
+ export declare function normalizeOperatorMessageRequest(input: CreateOperatorMessageRequest): CanonicalCreateOperatorMessageRequest;
@@ -0,0 +1,59 @@
1
+ export function normalizeMessageContent(input) {
2
+ if (typeof input === "string")
3
+ return { type: "text", text: input };
4
+ const { image: suppliedImage, ...content } = input;
5
+ const image = suppliedImage === undefined
6
+ ? {}
7
+ : { image: { ...suppliedImage, purpose: "illustration" } };
8
+ return "blocks" in content
9
+ ? { ...content, ...image, type: "document" }
10
+ : { ...content, ...image, type: "text" };
11
+ }
12
+ export function normalizeInteractionSendRequest(input) {
13
+ if ("options" in input)
14
+ return {
15
+ ...input,
16
+ type: "select",
17
+ options: input.options.map((option) => typeof option === "string"
18
+ ? { value: option, label: option }
19
+ : { ...option, value: option.value ?? option.label }),
20
+ };
21
+ if (input.type === "input")
22
+ return { ...input, type: "input" };
23
+ return { ...input, type: "confirm" };
24
+ }
25
+ export function normalizeMessageEnvelope(input) {
26
+ const interaction = input.interaction === undefined
27
+ ? undefined
28
+ : normalizeInteractionSendRequest(input.interaction);
29
+ const content = input.content === undefined
30
+ ? { type: "text", text: interaction?.prompt ?? "" }
31
+ : normalizeMessageContent(input.content);
32
+ const { interaction: ignoredInteraction, content: ignoredContent, ...envelope } = input;
33
+ void ignoredInteraction;
34
+ void ignoredContent;
35
+ return {
36
+ ...envelope,
37
+ content,
38
+ ...(interaction === undefined ? {} : { interaction }),
39
+ };
40
+ }
41
+ export function normalizeCreateMessageRequest(input) {
42
+ return {
43
+ ...normalizeMessageEnvelope(input),
44
+ to: typeof input.to === "string" ? { subscriber_id: input.to } : input.to,
45
+ ...(input.delivery_target === undefined
46
+ ? {}
47
+ : { delivery_target: input.delivery_target }),
48
+ ...(input.connection_id === undefined
49
+ ? {}
50
+ : { connection_id: input.connection_id }),
51
+ };
52
+ }
53
+ export function normalizeOperatorMessageRequest(input) {
54
+ return {
55
+ ...normalizeMessageEnvelope(input),
56
+ ...(input.recipient === undefined ? {} : { recipient: input.recipient }),
57
+ };
58
+ }
59
+ //# sourceMappingURL=input-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-defaults.js","sourceRoot":"","sources":["../src/input-defaults.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { normalizeInteractionSendRequest } from "./input-defaults.js";
1
2
  /** Compatibility default, never a ceiling on a sender-selected answer window. */
2
3
  export const DEFAULT_INTERACTION_EXPIRY_SECONDS = 86_400;
3
4
  /** The public RFC3339 timestamp vocabulary has four-digit years. */
@@ -60,7 +61,7 @@ export function resolveInteractionExpiry(acceptedAt, input) {
60
61
  /** Canonical retained/provider request: relative input never escapes acceptance. */
61
62
  export function resolveInteractionRequest(acceptedAt, input) {
62
63
  const expires_at = resolveInteractionExpiry(acceptedAt, input);
63
- const request = { ...input };
64
+ const request = { ...normalizeInteractionSendRequest(input) };
64
65
  delete request.expires_in_seconds;
65
66
  return { ...request, expires_at };
66
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-expiry.js","sourceRoot":"","sources":["../src/interaction-expiry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interaction-expiry.js","sourceRoot":"","sources":["../src/interaction-expiry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "fixtures": [
4
4
  {
5
5
  "id": "create-project.request",
@@ -418,14 +418,6 @@
418
418
  "status_code": 409,
419
419
  "problem_code": "replay_unavailable"
420
420
  },
421
- {
422
- "id": "replay-unavailable-rollout.problem",
423
- "kind": "problem",
424
- "path": "fixtures/core-v1/problems/replay-unavailable-rollout.json",
425
- "schema_ref": "schemas/whooshbang-v1.schema.json#/$defs/Problem",
426
- "status_code": 409,
427
- "problem_code": "replay_unavailable"
428
- },
429
421
  {
430
422
  "id": "subscriber-unbound.problem",
431
423
  "kind": "problem",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "type": "https://whooshbang.flowxo.com/problems/idempotency_key_required",
3
- "title": "Idempotency key required",
3
+ "title": "Invalid idempotency key",
4
4
  "status": 400,
5
- "detail": "Provide an Idempotency-Key containing 8 to 255 visible ASCII characters.",
5
+ "detail": "Idempotency-Key must be 8 to 255 visible ASCII characters.",
6
6
  "code": "idempotency_key_required",
7
7
  "diagnostic_id": "diag_idem_required_001",
8
8
  "retryable": false
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.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.5.0",
2
+ "contract_version": "3.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.5.0",
2
+ "contract_version": "3.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.5.0",
2
+ "contract_version": "3.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.5.0",
2
+ "contract_version": "3.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.5.0",
2
+ "contract_version": "3.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.5.0",
2
+ "contract_version": "3.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.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "environment-mismatch",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "idempotency-conflict",
4
4
  "category": "idempotency",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "idempotency-equivalent-replay",
4
4
  "category": "idempotency",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "malformed-bearer",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "metadata-overrun",
4
4
  "category": "message_outcome",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "missing-scope",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "project-create-equivalent-replay",
4
4
  "category": "idempotency",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "project-slug-conflict",
4
4
  "category": "idempotency",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "provider-outcome-unknown",
4
4
  "category": "message_outcome",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "subscription-activation-replay",
4
4
  "category": "subscription_replay",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "subscription-authorization-capability-opacity",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "subscription-cross-connection-callback-rejected",
4
4
  "category": "isolation",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "subscription-expired-replay",
4
4
  "category": "subscription_replay",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "subscription-selected-connection-replay",
4
4
  "category": "subscription_replay",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "ack-conflict",
4
4
  "category": "machine_ack",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "ack-cross-machine",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "ack-out-of-order",
4
4
  "category": "machine_ack",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "ack-replay",
4
4
  "category": "machine_ack",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "ambiguous-free-text",
4
4
  "category": "interaction_resolution",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "callback-token-opacity",
4
4
  "category": "callback_token",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "credential-registration-conflict",
4
4
  "category": "machine_credential",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "credential-registration-replay",
4
4
  "category": "machine_credential",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "credential-revocation-replay",
4
4
  "category": "machine_credential",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "credential-rotation",
4
4
  "category": "machine_credential",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "first-credential-activates",
4
4
  "category": "machine_credential",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "interaction-duplicate",
4
4
  "category": "interaction_resolution",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "interaction-expired",
4
4
  "category": "interaction_resolution",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "interaction-mismatch",
4
4
  "category": "interaction_resolution",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "interaction-retired",
4
4
  "category": "interaction_resolution",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "interaction-stale",
4
4
  "category": "interaction_resolution",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-admin-denied",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-bound-message-create",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-cancel-denied",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-crash-before-ack",
4
4
  "category": "machine_poll",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-notifier-mismatch",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-other-message-read",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-owned-message-read",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "machine-subscriber-mismatch",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "poll-uncommitted-cursor-rejected",
4
4
  "category": "machine_poll",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "project-credential-machine-endpoint-denied",
4
4
  "category": "machine_authorization",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "quarantine-integrity-rejected",
4
4
  "category": "quarantine",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "quarantine-signature-rejected",
4
4
  "category": "quarantine",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "quarantine-valid",
4
4
  "category": "quarantine",
5
5
  "given": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contract_version": "2.5.0",
2
+ "contract_version": "3.0.0",
3
3
  "id": "revoked-machine-credential",
4
4
  "category": "machine_authorization",
5
5
  "given": {