@whooshbang/sdk 1.0.0-rc.34 → 2.0.0-rc.4

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 (45) hide show
  1. package/README.md +34 -33
  2. package/dist/client.d.ts +80 -20
  3. package/dist/client.js +340 -73
  4. package/dist/client.js.map +1 -1
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/interactions.d.ts +2 -1
  8. package/dist/interactions.js +4 -0
  9. package/dist/interactions.js.map +1 -1
  10. package/dist/recipient/i18n/ar.js +1 -1
  11. package/dist/recipient/i18n/ar.js.map +1 -1
  12. package/dist/recipient/i18n/catalog.d.ts +1 -5
  13. package/dist/recipient/i18n/catalog.js +4 -15
  14. package/dist/recipient/i18n/catalog.js.map +1 -1
  15. package/dist/recipient/i18n/de.js +1 -1
  16. package/dist/recipient/i18n/de.js.map +1 -1
  17. package/dist/recipient/i18n/en.js +1 -1
  18. package/dist/recipient/i18n/en.js.map +1 -1
  19. package/dist/recipient/i18n/es.js +1 -1
  20. package/dist/recipient/i18n/es.js.map +1 -1
  21. package/dist/recipient/i18n/fa.js +1 -1
  22. package/dist/recipient/i18n/fa.js.map +1 -1
  23. package/dist/recipient/i18n/fr.js +1 -1
  24. package/dist/recipient/i18n/fr.js.map +1 -1
  25. package/dist/recipient/i18n/hi.js +1 -1
  26. package/dist/recipient/i18n/hi.js.map +1 -1
  27. package/dist/recipient/i18n/id.js +1 -1
  28. package/dist/recipient/i18n/id.js.map +1 -1
  29. package/dist/recipient/i18n/it.js +1 -1
  30. package/dist/recipient/i18n/it.js.map +1 -1
  31. package/dist/recipient/i18n/nl.js +1 -1
  32. package/dist/recipient/i18n/nl.js.map +1 -1
  33. package/dist/recipient/i18n/pl.js +1 -1
  34. package/dist/recipient/i18n/pl.js.map +1 -1
  35. package/dist/recipient/i18n/pt-BR.js +1 -1
  36. package/dist/recipient/i18n/pt-BR.js.map +1 -1
  37. package/dist/recipient/i18n/ru.js +1 -1
  38. package/dist/recipient/i18n/ru.js.map +1 -1
  39. package/dist/recipient/i18n/tr.js +1 -1
  40. package/dist/recipient/i18n/tr.js.map +1 -1
  41. package/dist/recipient/i18n/uk.js +1 -1
  42. package/dist/recipient/i18n/uk.js.map +1 -1
  43. package/dist/recipient/i18n/zh-Hans.js +1 -1
  44. package/dist/recipient/i18n/zh-Hans.js.map +1 -1
  45. package/package.json +2 -2
package/README.md CHANGED
@@ -400,39 +400,40 @@ and `retryAt` preserved. `test/problems.test.ts` holds this table to the code:
400
400
  a code marked outcome is returned by the method that owns it, and every other
401
401
  code throws from that same method.
402
402
 
403
- | Code | Side | Why |
404
- | --------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
405
- | `cancellation_too_late` | Outcome | The race is inherent: a correct caller cancels and learns it was too late. `cancelSubscriptionLink` receives it as a problem and returns it; `cancelMessage` receives the same fact as `cancellation_effective: false` on a success, as the contract documents, so the problem code arriving there is outside the documented response and throws. |
406
- | `authentication_required` | Exception | No credential reached the service. The integration's configuration is wrong. |
407
- | `credential_invalid` | Exception | The credential is malformed, revoked, or past its rotation overlap. Only a replacement credential fixes it. |
408
- | `scope_forbidden` | Exception | The credential lacks a scope, or the organization is not yet invited (`pendingInvitation`). No branch at the call site grants either. |
409
- | `environment_mismatch` | Exception | A credential reached across the test/live boundary. |
410
- | `idempotency_key_required` | Exception | The client sends a key on every side effect, so receiving this means the request the service saw is not the one the client sent. |
411
- | `idempotency_conflict` | Exception | Same key, different body — including the stale row-version, claimed-identity, revoked-client, and acknowledgement cursor or disposition refusals that reuse the code. The fix is a new request, never a retry. |
412
- | `project_slug_conflict` | Exception | The slug is already taken in this organization. Refused input, handled as `request_invalid` is: choose another. |
413
- | `request_invalid` | Exception | The request broke a documented bound. `fieldErrors` names each field. |
414
- | `replay_unavailable` | Exception | A customer-event replay was refused by the attempt's state. The caller waits for a terminal attempt or accepts that an aged-out payload is gone; there is nothing to branch on. |
415
- | `subscriber_unbound` | Outcome | On a send, the person's channel state: they revoked their channel or never finished subscribing, so the branch is to invite them again. The service uses the same code when a `connection_id` does not route to the subscriber or the connection behind them was archived, which an invitation does not fix; `problem.diagnostic_id` tells support which. `createMessage` and `createMessageInEnvironment` return it. `createMachineClient` still throws it: a machine client for an unbound subscriber is setup that is wrong. |
416
- | `recipient_configuration_invalid` | Exception | The owner's recipient-experience configuration is not usable as submitted or as stored. |
417
- | `recipient_origin_forbidden` | Exception | The presenting browser origin is not registered for the session. |
418
- | `return_destination_not_found` | Exception | The return-destination key is not configured. |
419
- | `recipient_capability_invalid` | Exception | The session's capability is not live. Only the host backend can mint another; this is the browser surface's `credential_invalid`. |
420
- | `recipient_handoff_invalid` | Exception | The provider handoff is unavailable or belongs to another session. |
421
- | `preferred_binding_conflict` | Exception | A stale row version. Re-read the session and send a new request. |
422
- | `preferred_binding_unavailable` | Outcome | On a send, the subscriber's own channel state: the channel they chose as preferred is paused or revoked, and the service never picks a fallback. The same user event as `subscriber_unbound`, so `createMessage` and `createMessageInEnvironment` return it. The recipient-session client's `setPreferredBinding` still throws it: there it is a choice the service refused, and the panel offers the choice again. |
423
- | `subscriber_conflict` | Exception | A create for a subscriber that exists. Use the update and membership operations. |
424
- | `recipient_group_conflict` | Exception | The group's state, revision, or a ceiling refused the operation. |
425
- | `recipient_group_archived` | Exception | Archive is terminal. The caller needs a different group. |
426
- | `resource_not_found` | Exception | The identifier is wrong or outside the credential's reach; absent and out-of-scope look identical on purpose. |
427
- | `resource_expired` | Exception | Published but not produced by the service today: a resource's expiry reaches the caller as its own `status` or `state`, which is already a value. The recipient-session element treats it, with `recipient_capability_invalid`, as a session that has ended. |
428
- | `credential_organization_mismatch` | Exception | An organization credential reached a project outside its organization. |
429
- | `endpoint_rotation_conflict` | Exception | A prior overlap is still active. The caller waits for `retryAt`, as for rate limiting. |
430
- | `rate_limited` | Exception | Wait until `retryAt`. The caller's response is to wait, not to branch. |
431
- | `privacy_operation_in_progress` | Exception | Export, erasure, or organization closure still has in-flight work to drain or a provider cleanup to retry. Wait until `retryAt`, then repeat the same operation. |
432
- | `provider_retryable` | Exception | The provider failed before acceptance. The service retries where a retry is scheduled; the caller waits. |
433
- | `provider_terminal` | Exception | The provider refused permanently. Fix the binding or the content and send a new message. |
434
- | `provider_outcome_unknown` | Exception | The provider may already have acted. Read the resource state before deciding anything. |
435
- | `internal_error` | Exception | WhooshBang failed on its own side; no provider or customer system was involved. Retried like any retryable problem. If it persists, report `diagnosticId` to support. |
403
+ | Code | Side | Why |
404
+ | ---------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
405
+ | `cancellation_too_late` | Outcome | The race is inherent: a correct caller cancels and learns it was too late. `cancelSubscriptionLink` receives it as a problem and returns it; `cancelMessage` receives the same fact as `cancellation_effective: false` on a success, as the contract documents, so the problem code arriving there is outside the documented response and throws. |
406
+ | `authentication_required` | Exception | No credential reached the service. The integration's configuration is wrong. |
407
+ | `credential_invalid` | Exception | The credential is malformed, revoked, or past its rotation overlap. Only a replacement credential fixes it. |
408
+ | `scope_forbidden` | Exception | The credential lacks a scope, or the organization is not yet invited (`pendingInvitation`). No branch at the call site grants either. |
409
+ | `environment_mismatch` | Exception | A credential reached across the test/live boundary. |
410
+ | `idempotency_key_required` | Exception | The client sends a key on every side effect, so receiving this means the request the service saw is not the one the client sent. |
411
+ | `idempotency_conflict` | Exception | Same key, different body — including the stale row-version, claimed-identity, revoked-client, and acknowledgement cursor or disposition refusals that reuse the code. The fix is a new request, never a retry. |
412
+ | `project_slug_conflict` | Exception | The slug is already taken in this organization. Refused input, handled as `request_invalid` is: choose another. |
413
+ | `request_invalid` | Exception | The request broke a documented bound. `fieldErrors` names each field. |
414
+ | `replay_unavailable` | Exception | A customer-event replay was refused by the attempt's state. The caller waits for a terminal attempt or accepts that an aged-out payload is gone; there is nothing to branch on. |
415
+ | `subscriber_unbound` | Outcome | On a send, the person's channel state: they revoked their channel or never finished subscribing, so the branch is to invite them again. The service uses the same code when a `connection_id` does not route to the subscriber or the connection behind them was archived, which an invitation does not fix; `problem.diagnostic_id` tells support which. `createMessage` and `createMessageInEnvironment` return it. `createMachineClient` still throws it: a machine client for an unbound subscriber is setup that is wrong. |
416
+ | `subscriber_not_connected` | Exception | A connection test named a subscriber who has not connected through that connection. `problem.subscriber_id` and `problem.channel` say who and where; nothing was sent. The caller picks another subscriber or invites this one through the connection. |
417
+ | `recipient_configuration_invalid` | Exception | The owner's recipient-experience configuration is not usable as submitted or as stored. |
418
+ | `recipient_origin_forbidden` | Exception | The presenting browser origin is not registered for the session. |
419
+ | `return_destination_not_found` | Exception | The return-destination key is not configured. |
420
+ | `recipient_capability_invalid` | Exception | The session's capability is not live. Only the host backend can mint another; this is the browser surface's `credential_invalid`. |
421
+ | `recipient_handoff_invalid` | Exception | The provider handoff is unavailable or belongs to another session. |
422
+ | `preferred_binding_conflict` | Exception | A stale row version. Re-read the session and send a new request. |
423
+ | `preferred_binding_unavailable` | Outcome | On a send, the subscriber's own channel state: the channel they chose as preferred is paused or revoked, and the service never picks a fallback. The same user event as `subscriber_unbound`, so `createMessage` and `createMessageInEnvironment` return it. The recipient-session client's `setPreferredBinding` still throws it: there it is a choice the service refused, and the panel offers the choice again. |
424
+ | `subscriber_conflict` | Exception | A create for a subscriber that exists. Use the update and membership operations. |
425
+ | `subscriber_group_conflict` | Exception | The group's state, revision, or a ceiling refused the operation. |
426
+ | `subscriber_group_archived` | Exception | Deletion is terminal. The caller needs a different group. |
427
+ | `resource_not_found` | Exception | The identifier is wrong or outside the credential's reach; absent and out-of-scope look identical on purpose. |
428
+ | `resource_expired` | Exception | Published but not produced by the service today: a resource's expiry reaches the caller as its own `status` or `state`, which is already a value. The recipient-session element treats it, with `recipient_capability_invalid`, as a session that has ended. |
429
+ | `credential_organization_mismatch` | Exception | An organization credential reached a project outside its organization. |
430
+ | `endpoint_rotation_conflict` | Exception | A prior overlap is still active. The caller waits for `retryAt`, as for rate limiting. |
431
+ | `rate_limited` | Exception | Wait until `retryAt`. The caller's response is to wait, not to branch. |
432
+ | `privacy_operation_in_progress` | Exception | Export, erasure, or organization closure still has in-flight work to drain or a provider cleanup to retry. Wait until `retryAt`, then repeat the same operation. |
433
+ | `provider_retryable` | Exception | The provider failed before acceptance. The service retries where a retry is scheduled; the caller waits. |
434
+ | `provider_terminal` | Exception | The provider refused permanently. Fix the binding or the content and send a new message. |
435
+ | `provider_outcome_unknown` | Exception | The provider may already have acted. Read the resource state before deciding anything. |
436
+ | `internal_error` | Exception | WhooshBang failed on its own side; no provider or customer system was involved. Retried like any retryable problem. If it persists, report `diagnosticId` to support. |
436
437
 
437
438
  ## Errors
438
439
 
package/dist/client.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type AssertEmailConsentRequest, type BindingSummary } from "@whooshbang/contracts";
2
2
  import type { InteractionOutcome } from "./interactions.js";
3
- import type { OrganizationProjection, ApiCredential, OrganizationCredential, OrganizationCredentialCollection, OrganizationCredentialRotation, OrganizationCredentialSecretReveal, ApiCredentialCollection, ApiCredentialRotation, ApiCredentialSecretReveal, AttachNotifierConnectionRequest, ChannelConnection, ChannelConnectionCollection, ConnectionProviderCollection, NotifierConnectionCollection, ProjectRecipientExperience, RecipientBrandLogoUpload, NotificationImageAsset, UpdateProjectRecipientExperienceRequest, EnvironmentRecipientExperience, UpdateEnvironmentRecipientExperienceRequest, SubscriberChannelSettings, AcknowledgeEmailRemediationRequest, CreateRecipientSessionRequest, CreateRecipientSessionResponse, RecipientSession, RecipientSessionCapability, CreateProviderHandoffRequest, ProviderHandoff, SetPreferredBindingRequest, PreferredBinding, CreateSubscriberRequest, Subscriber, SubscriberDataExport, CloseOrganizationRequest, OrganizationClosureResult, CreateRecipientGroupRequest, UpdateRecipientGroupRequest, RecipientGroup, RecipientGroupCollection, RecipientGroupMembership, RecipientGroupMembershipCollection, CreateGroupBroadcastRequest, GroupBroadcast, CreateOrganizationCredentialRequest, CreateApiCredentialRequest, CreateChannelConnectionRequest, CreateCustomerEndpointRequest, CreateMachineClientRequest, CreateMessageRequest, CreateProjectRequest, UpdateProjectRequest, CreateSubscriptionLinkRequest, CustomerEndpoint, CustomerEndpointAttemptCollection, CustomerEndpointCollection, CustomerEndpointMutationResult, InteractionSummary, MachineClient, MachineCredential, MachineEventAckRequest, MachineEventAckResponse, MachineEventPollResponse, Message, Problem, Project, ProjectCollection, RecipientCopyKey, RecipientCopyOverride, RecipientCopyOverrideCollection, RecipientLanguage, ProviderCapabilitiesCollection, ProviderInstallation, ProviderInstallationCollection, EmailDomain, EmailDomainCollection, CreateEmailDomainRequest, RegisterMachineCredentialRequest, RotateOrganizationCredentialRequest, RotateApiCredentialRequest, ConnectionTest, ConnectionTestCollection, CreateConnectionTestRequest, CustomerApplicationManifest, RotateChannelConnectionCredentialRequest, RotateCustomerEndpointRequest, SubscriptionLink, UpdateChannelConnectionRequest, UpdateRecipientCopyOverrideRequest } from "@whooshbang/contracts";
3
+ import type { OrganizationProjection, ApiCredential, OrganizationCredential, OrganizationCredentialCollection, OrganizationCredentialRotation, OrganizationCredentialSecretReveal, ApiCredentialCollection, ApiCredentialRotation, ApiCredentialSecretReveal, AttachNotifierConnectionRequest, ChannelConnection, ChannelConnectionCollection, ConnectionProviderCollection, UsageGrouping, UsageReport, MessageState, MessageListPage, MessageDeliveryHistory, MessageNotificationImage, InteractionTimeline, UpdateEmailSenderRequest, CustomerEventDeliveryHistory, CustomerEventDeliveryAttempt, DeliveryHolds, MachineClientOperationsList, RecipientCopyCatalogue, NotifierConnectionCollection, ProjectRecipientExperience, RecipientBrandLogoUpload, NotificationImageAsset, UpdateProjectRecipientExperienceRequest, EnvironmentRecipientExperience, UpdateEnvironmentRecipientExperienceRequest, SubscriberChannelSettings, AcknowledgeEmailRemediationRequest, CreateRecipientSessionRequest, CreateRecipientSessionResponse, RecipientSession, RecipientSessionCapability, CreateProviderHandoffRequest, ProviderHandoff, SetPreferredBindingRequest, PreferredBinding, CreateSubscriberRequest, Subscriber, SubscriberDataExport, UpdateSubscriberRequest, SubscriberCollection, CloseOrganizationRequest, OrganizationClosureResult, CreateSubscriberGroupRequest, UpdateSubscriberGroupRequest, SubscriberGroup, SubscriberGroupCollection, SubscriberGroupMembership, SubscriberGroupMembershipCollection, CreateGroupBroadcastRequest, GroupBroadcast, CreateOrganizationCredentialRequest, CreateApiCredentialRequest, CreateChannelConnectionRequest, CreateCustomerEndpointRequest, CreateMachineClientRequest, CreateMessageRequest, CreateProjectRequest, UpdateProjectRequest, CreateSubscriptionLinkRequest, CustomerEndpoint, CustomerEndpointAttemptCollection, CustomerEndpointCollection, CustomerEndpointMutationResult, InteractionSummary, MachineClient, MachineCredential, MachineEventAckRequest, MachineEventAckResponse, MachineEventPollResponse, Message, Problem, Project, ProjectCollection, RecipientCopyKey, RecipientCopyOverride, RecipientCopyOverrideCollection, RecipientLanguage, ProviderCapabilitiesCollection, ProviderInstallation, ProviderInstallationCollection, EmailDomain, EmailDomainCollection, CreateEmailDomainRequest, RegisterMachineCredentialRequest, RotateOrganizationCredentialRequest, RotateApiCredentialRequest, ConnectionTest, ConnectionTestCollection, CreateConnectionTestRequest, CustomerApplicationManifest, RotateChannelConnectionCredentialRequest, RotateCustomerEndpointRequest, SubscriptionLink, UpdateChannelConnectionRequest, UpdateRecipientCopyOverrideRequest } from "@whooshbang/contracts";
4
4
  export type WhooshBangFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
5
5
  /**
6
6
  * The outcome of one SDK invocation, as reported to an optional logging hook.
@@ -38,6 +38,10 @@ export interface RequestOptions {
38
38
  */
39
39
  readonly timeoutMs?: number;
40
40
  }
41
+ /** Optionally stop work not yet offered to a provider when deleting a group. */
42
+ export interface DeleteSubscriberGroupOptions extends RequestOptions {
43
+ readonly stopBroadcasts?: boolean;
44
+ }
41
45
  export interface SideEffectRequestOptions extends RequestOptions {
42
46
  readonly idempotencyKey: string;
43
47
  }
@@ -65,7 +69,8 @@ export interface PollMachineEventsOptions extends RequestOptions {
65
69
  * both is two different answers to "which records next", and the client
66
70
  * refuses it here rather than letting the service pick one.
67
71
  *
68
- * Either way the response carries the list's `total`.
72
+ * Resource collections also carry `total`. Accepted-message history deliberately
73
+ * carries no total, so reading one page does not scan the retained time series.
69
74
  */
70
75
  export interface ListPageOptions extends RequestOptions {
71
76
  readonly after?: string;
@@ -73,12 +78,46 @@ export interface ListPageOptions extends RequestOptions {
73
78
  readonly page?: number;
74
79
  }
75
80
  export type ListProjectsOptions = ListPageOptions;
81
+ export interface ListMessagesOptions extends ListPageOptions {
82
+ readonly connectionId?: string;
83
+ readonly acceptedAfter?: string;
84
+ readonly acceptedBefore?: string;
85
+ readonly states?: readonly MessageState[];
86
+ readonly subscriberId?: string;
87
+ }
88
+ export interface RecipientCopyCatalogueOptions extends RequestOptions {
89
+ readonly language?: RecipientLanguage;
90
+ }
91
+ /**
92
+ * Which days `getEnvironmentUsage` counts, and how it splits them.
93
+ *
94
+ * Both dates are UTC calendar days, inclusive. Leaving both out asks for the
95
+ * last 30 days.
96
+ */
97
+ export interface EnvironmentUsageOptions extends RequestOptions {
98
+ readonly from?: string;
99
+ readonly groupBy?: UsageGrouping;
100
+ readonly to?: string;
101
+ }
76
102
  export interface ListRecipientCopyOverridesOptions extends ListPageOptions {
77
103
  readonly language?: RecipientLanguage;
78
104
  }
79
105
  export type ListApiCredentialsOptions = ListPageOptions;
80
- export type ListRecipientGroupsOptions = ListPageOptions;
81
- export type ListRecipientGroupMembersOptions = ListPageOptions;
106
+ export type ListSubscriberGroupsOptions = ListPageOptions;
107
+ export type ListSubscriberGroupMembersOptions = ListPageOptions;
108
+ /** Search and filters for a subscriber list (FXO-2678). */
109
+ export interface ListSubscribersOptions extends ListPageOptions {
110
+ /** A prefix or part of an ID, app name or kept channel name; narrows from one character. */
111
+ readonly q?: string;
112
+ readonly channel?: "email" | "slack" | "telegram";
113
+ readonly connectionId?: string;
114
+ /** Only current members of the static group with this key. */
115
+ readonly group?: string;
116
+ readonly createdAfter?: string;
117
+ readonly createdBefore?: string;
118
+ readonly activeAfter?: string;
119
+ readonly activeBefore?: string;
120
+ }
82
121
  export interface WhooshBangRecipientSessionClientOptions {
83
122
  readonly baseUrl: string | URL;
84
123
  /** The creation-only capability returned by createRecipientSession. */
@@ -246,24 +285,29 @@ export declare class WhooshBangClient {
246
285
  createSubscriberInEnvironment(projectId: string, environmentId: string, request: CreateSubscriberRequest, options: SideEffectRequestOptions): Promise<Subscriber>;
247
286
  getSubscriber(subscriberId: string, options?: RequestOptions): Promise<Subscriber>;
248
287
  getSubscriberInEnvironment(projectId: string, environmentId: string, subscriberId: string, options?: RequestOptions): Promise<Subscriber>;
288
+ /** Sets, or with `null` removes, the name your application knows a subscriber by. */
289
+ updateSubscriber(subscriberId: string, request: UpdateSubscriberRequest, options?: RequestOptions): Promise<Subscriber>;
290
+ updateSubscriberInEnvironment(projectId: string, environmentId: string, subscriberId: string, request: UpdateSubscriberRequest, options?: RequestOptions): Promise<Subscriber>;
249
291
  getSubscriberDataExport(projectId: string, subscriberId: string, options?: RequestOptions): Promise<SubscriberDataExport>;
250
292
  eraseSubscriber(projectId: string, subscriberId: string, options?: RequestOptions): Promise<void>;
251
- listRecipientGroups(options?: ListRecipientGroupsOptions): Promise<RecipientGroupCollection>;
252
- listRecipientGroupsInEnvironment(projectId: string, environmentId: string, options?: ListRecipientGroupsOptions): Promise<RecipientGroupCollection>;
253
- createRecipientGroup(request: CreateRecipientGroupRequest, options: SideEffectRequestOptions): Promise<RecipientGroup>;
254
- createRecipientGroupInEnvironment(projectId: string, environmentId: string, request: CreateRecipientGroupRequest, options: SideEffectRequestOptions): Promise<RecipientGroup>;
255
- getRecipientGroup(groupKey: string, options?: RequestOptions): Promise<RecipientGroup>;
256
- getRecipientGroupInEnvironment(projectId: string, environmentId: string, groupKey: string, options?: RequestOptions): Promise<RecipientGroup>;
257
- updateRecipientGroup(groupKey: string, request: UpdateRecipientGroupRequest, options?: RequestOptions): Promise<RecipientGroup>;
258
- updateRecipientGroupInEnvironment(projectId: string, environmentId: string, groupKey: string, request: UpdateRecipientGroupRequest, options?: RequestOptions): Promise<RecipientGroup>;
259
- archiveRecipientGroup(groupKey: string, options?: RequestOptions): Promise<RecipientGroup>;
260
- archiveRecipientGroupInEnvironment(projectId: string, environmentId: string, groupKey: string, options?: RequestOptions): Promise<RecipientGroup>;
261
- listRecipientGroupMembers(groupKey: string, options?: ListRecipientGroupMembersOptions): Promise<RecipientGroupMembershipCollection>;
262
- listRecipientGroupMembersInEnvironment(projectId: string, environmentId: string, groupKey: string, options?: ListRecipientGroupMembersOptions): Promise<RecipientGroupMembershipCollection>;
263
- addRecipientGroupMember(groupKey: string, subscriberId: string, options?: RequestOptions): Promise<RecipientGroupMembership>;
264
- addRecipientGroupMemberInEnvironment(projectId: string, environmentId: string, groupKey: string, subscriberId: string, options?: RequestOptions): Promise<RecipientGroupMembership>;
265
- removeRecipientGroupMember(groupKey: string, subscriberId: string, options?: RequestOptions): Promise<void>;
266
- removeRecipientGroupMemberInEnvironment(projectId: string, environmentId: string, groupKey: string, subscriberId: string, options?: RequestOptions): Promise<void>;
293
+ listSubscriberGroups(options?: ListSubscriberGroupsOptions): Promise<SubscriberGroupCollection>;
294
+ listSubscriberGroupsInEnvironment(projectId: string, environmentId: string, options?: ListSubscriberGroupsOptions): Promise<SubscriberGroupCollection>;
295
+ createSubscriberGroup(request: CreateSubscriberGroupRequest, options: SideEffectRequestOptions): Promise<SubscriberGroup>;
296
+ createSubscriberGroupInEnvironment(projectId: string, environmentId: string, request: CreateSubscriberGroupRequest, options: SideEffectRequestOptions): Promise<SubscriberGroup>;
297
+ getSubscriberGroup(groupKey: string, options?: RequestOptions): Promise<SubscriberGroup>;
298
+ getSubscriberGroupInEnvironment(projectId: string, environmentId: string, groupKey: string, options?: RequestOptions): Promise<SubscriberGroup>;
299
+ updateSubscriberGroup(groupKey: string, request: UpdateSubscriberGroupRequest, options?: RequestOptions): Promise<SubscriberGroup>;
300
+ updateSubscriberGroupInEnvironment(projectId: string, environmentId: string, groupKey: string, request: UpdateSubscriberGroupRequest, options?: RequestOptions): Promise<SubscriberGroup>;
301
+ deleteSubscriberGroup(groupKey: string, options?: DeleteSubscriberGroupOptions): Promise<SubscriberGroup>;
302
+ deleteSubscriberGroupInEnvironment(projectId: string, environmentId: string, groupKey: string, options?: DeleteSubscriberGroupOptions): Promise<SubscriberGroup>;
303
+ listSubscribers(options?: ListSubscribersOptions): Promise<SubscriberCollection>;
304
+ listSubscribersInEnvironment(projectId: string, environmentId: string, options?: ListSubscribersOptions): Promise<SubscriberCollection>;
305
+ listSubscriberGroupMembers(groupKey: string, options?: ListSubscriberGroupMembersOptions): Promise<SubscriberGroupMembershipCollection>;
306
+ listSubscriberGroupMembersInEnvironment(projectId: string, environmentId: string, groupKey: string, options?: ListSubscriberGroupMembersOptions): Promise<SubscriberGroupMembershipCollection>;
307
+ addSubscriberGroupMember(groupKey: string, subscriberId: string, options?: RequestOptions): Promise<SubscriberGroupMembership>;
308
+ addSubscriberGroupMemberInEnvironment(projectId: string, environmentId: string, groupKey: string, subscriberId: string, options?: RequestOptions): Promise<SubscriberGroupMembership>;
309
+ removeSubscriberGroupMember(groupKey: string, subscriberId: string, options?: RequestOptions): Promise<void>;
310
+ removeSubscriberGroupMemberInEnvironment(projectId: string, environmentId: string, groupKey: string, subscriberId: string, options?: RequestOptions): Promise<void>;
267
311
  createGroupBroadcast(groupKey: string, request: CreateGroupBroadcastRequest, options: SideEffectRequestOptions): Promise<GroupBroadcast>;
268
312
  createGroupBroadcastInEnvironment(projectId: string, environmentId: string, groupKey: string, request: CreateGroupBroadcastRequest, options: SideEffectRequestOptions): Promise<GroupBroadcast>;
269
313
  getGroupBroadcast(broadcastId: string, options?: RequestOptions): Promise<GroupBroadcast>;
@@ -381,6 +425,22 @@ export declare class WhooshBangClient {
381
425
  resumeCustomerEndpoint(projectId: string, environmentId: string, endpointId: string, options?: RequestOptions): Promise<CustomerEndpoint>;
382
426
  disableCustomerEndpoint(projectId: string, environmentId: string, endpointId: string, options?: RequestOptions): Promise<CustomerEndpoint>;
383
427
  listCustomerEndpointAttempts(projectId: string, environmentId: string, endpointId: string, options?: ListPageOptions): Promise<CustomerEndpointAttemptCollection>;
428
+ /**
429
+ * An environment's content-free message history, with connection, subscriber,
430
+ * state and acceptance-time filters and bounded cursor or numbered pages.
431
+ */
432
+ listMessagesInEnvironment(projectId: string, environmentId: string, options?: ListMessagesOptions): Promise<MessageListPage>;
433
+ getMessageDeliveryHistory(projectId: string, environmentId: string, messageId: string, options?: RequestOptions): Promise<MessageDeliveryHistory>;
434
+ getMessageNotificationImage(projectId: string, environmentId: string, messageId: string, options?: RequestOptions): Promise<MessageNotificationImage>;
435
+ getInteractionTimeline(projectId: string, environmentId: string, interactionId: string, options?: RequestOptions): Promise<InteractionTimeline>;
436
+ getCustomerEventDeliveryHistory(projectId: string, environmentId: string, eventId: string, options?: RequestOptions): Promise<CustomerEventDeliveryHistory>;
437
+ replayCustomerEventAttempt(projectId: string, environmentId: string, eventId: string, attemptId: string, options?: RequestOptions): Promise<CustomerEventDeliveryAttempt>;
438
+ getDeliveryHolds(projectId: string, environmentId: string, options?: RequestOptions): Promise<DeliveryHolds>;
439
+ listMachineClientOperations(projectId: string, environmentId: string, options?: RequestOptions): Promise<MachineClientOperationsList>;
440
+ updateEmailSender(projectId: string, environmentId: string, connectionId: string, request: UpdateEmailSenderRequest, options?: RequestOptions): Promise<ChannelConnection>;
441
+ revokeMachineClientInEnvironment(projectId: string, environmentId: string, machineClientId: string, options: SideEffectRequestOptions): Promise<MachineClient>;
442
+ getRecipientCopyCatalogue(projectId: string, options?: RecipientCopyCatalogueOptions): Promise<RecipientCopyCatalogue>;
443
+ getEnvironmentUsage(projectId: string, environmentId: string, options?: EnvironmentUsageOptions): Promise<UsageReport>;
384
444
  listConnectionProviders(projectId: string, environmentId: string, options?: RequestOptions): Promise<ConnectionProviderCollection>;
385
445
  listChannelConnections(projectId: string, environmentId: string, options?: ListPageOptions): Promise<ChannelConnectionCollection>;
386
446
  createChannelConnection(projectId: string, environmentId: string, request: CreateChannelConnectionRequest, options: SideEffectRequestOptions): Promise<ChannelConnection>;