@openfin/cloud-notification-core-api 0.0.1-alpha.ff44012 → 10.0.0-beta.1c

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 (4) hide show
  1. package/bundle.d.ts +571 -330
  2. package/index.cjs +142 -31
  3. package/index.mjs +142 -32
  4. package/package.json +2 -2
package/bundle.d.ts CHANGED
@@ -1,16 +1,41 @@
1
- import z from 'zod';
1
+ import { z } from 'zod';
2
2
 
3
3
  export declare class AuthorizationError extends CloudNotificationAPIError {
4
4
  constructor(message?: string, code?: string);
5
5
  }
6
6
 
7
+ /**
8
+ * Represents common properties for all notification events
9
+ */
7
10
  export declare type BaseNotificationReceivedEvent = {
11
+ /**
12
+ * The action that was performed on the notification
13
+ */
8
14
  action: 'new' | 'update' | 'delete';
15
+ /**
16
+ * The unique identifier for the notification
17
+ */
9
18
  notificationId: string;
19
+ /**
20
+ * The correlation identifier for the notification
21
+ */
10
22
  correlationId?: string;
23
+ /**
24
+ * The identifier of the target of the notification
25
+ */
11
26
  target: string;
27
+ /**
28
+ * The name of the target i.e, the group or user that the notification was sent to
29
+ */
12
30
  targetName?: string;
13
- targetType: string;
31
+ /**
32
+ * The type of the target i.e, 'groups' or 'users'
33
+ */
34
+ targetType: TARGET_TYPE;
35
+ /**
36
+ * The payload of the notification.
37
+ * See the documentation for the notification center events for more information on the payload
38
+ */
14
39
  payload: unknown;
15
40
  };
16
41
 
@@ -20,11 +45,30 @@ export declare type BaseNotificationReceivedEvent = {
20
45
  */
21
46
  export declare class CloudNotificationAPI {
22
47
  #private;
23
- deDuplicator: SetWithTTL<string>;
48
+ /**
49
+ * Constructs a new instance of the CloudNotificationAPI
50
+ *
51
+ * @param cloudNotificationSettings - The settings for the Cloud Notification API.
52
+ */
24
53
  constructor(cloudNotificationSettings: CloudNotificationSettings);
25
54
  /**
26
55
  * Connects and creates a session on the Cloud Notifications service.
27
56
  *
57
+ * @example
58
+ * ```typescript
59
+ * const notificationApi = new CloudNotificationAPI({
60
+ * url: process.env.NOTIFICATION_SERVER_HOST
61
+ * });
62
+ *
63
+ * let connectionResult: ConnectionResult;
64
+ * try {
65
+ * connectionResult = await notificationApi.connect(connectSettings);
66
+ * } catch (errorConnect) {
67
+ * terminal.write(chalk.red(`\nError connecting to notification server: ${errorConnect}\n`));
68
+ * process.exit(1);
69
+ * }
70
+ * ```
71
+ *
28
72
  * @param parameters - The parameters to use to connect.
29
73
  * @returns A promise that resolves when the connection is established.
30
74
  * @throws {@link CloudNotificationAPIError} If an error occurs during connection.
@@ -41,369 +85,566 @@ export declare class CloudNotificationAPI {
41
85
  /**
42
86
  * Posts a notification event to the Cloud Notification service.
43
87
  *
44
- * @param notificationId - The ID of the notification.
88
+ * @param notificationId - The ID of the notification or an array of notification IDs.
45
89
  * @param event - The event details, including category, type, and optional payload.
46
90
  * @returns A promise that resolves when the event is posted.
47
91
  * @throws {@link SessionNotConnectedError} If the session is not connected.
48
92
  * @throws {@link PublishError} If an error occurs during publishing.
49
93
  */
50
- postNotificationEvent(notificationId: string, event: {
94
+ postNotificationEvent(notificationId: string | string[], event: {
51
95
  category: string;
52
96
  type: string;
53
97
  payload?: unknown;
54
- }): Promise<void>;
98
+ }, options?: NotificationEventOptions): Promise<void>;
99
+ /**
100
+ * Removes a notification from the notification center for a given set of users or user groups.
101
+ *
102
+ * @param notificationId - The ID of the notification to remove.
103
+ * @param targets - The targets to remove the notification from.
104
+ * @returns A promise that resolves when the notification is removed.
105
+ */
106
+ removeFromNotificationCenter(notificationId: string, targets: NotificationTargets): Promise<void>;
55
107
  /**
56
- * Raises a notification to the Cloud Notification service.
108
+ * Post a notification-reminder-created event to the Cloud Notification service.
57
109
  *
58
- * @param options - The options for the notification.
59
- * @param payload - The payload of the notification.
60
- * @returns A promise that resolves with the notification raise result.
110
+ * @param notificationId - The ID of the notification or an array of notification IDs to mark as a reminder.
111
+ * @param payload - The payload of the reminder.
112
+ * @returns A promise that resolves when the notification-reminder-created event is posted.
61
113
  * @throws {@link SessionNotConnectedError} If the session is not connected.
62
- * @throws {@link PublishError} If an error occurs during publishing.
63
- */
64
- raiseNotification(options: NotificationOptions_2, payload: unknown): Promise<NotificationRaiseResult>;
65
- /**
66
- * Raises a notification update to the Cloud Notification service.
67
- *
68
- * @param notificationId - The ID of the notification to update.
69
- * @param options - The options for the notification update.
70
- * @param payload - The new payload of the notification.
71
- * @throws {@link SessionNotConnectedError} If the session is not connected.
72
- * @throws {@link PublishError} If an error occurs during publishing of the update.
73
- */
74
- updateNotification(notificationId: string, options: NotificationUpdateOptions, payload: unknown): Promise<void>;
75
- /**
76
- * Marks a notification as deleted in the Cloud Notification service.
77
- *
78
- * @param notificationId - The ID of the notification to delete.
79
- * @returns A promise that resolves when the notification is deleted.
80
- * @throws {@link SessionNotConnectedError} If the session is not connected.
81
- */
82
- deleteNotification(notificationId: string): Promise<void>;
83
- /**
84
- * Replays notifications from the Cloud Notification service.
85
- *
86
- * @param pageItemLimit - The maximum number of items per page.
87
- * @param pageStartCursor - The cursor to start the page from.
88
- * @returns A promise that resolves with the notifications replay details.
89
- * @throws {@link SessionNotConnectedError} If the session is not connected.
90
- * @throws {@link NotificationRetrievalError} If an error occurs during retrieval.
91
- */
92
- replayNotifications(pageItemLimit: number | undefined, pageStartCursor: string | undefined): Promise<NotificationsReplayDetails>;
93
- /**
94
- * Adds an event listener for a specific event type.
95
- *
96
- * @param type - The event type.
97
- * @param callback - The callback function to invoke when the event occurs.
98
- */
99
- addEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
100
- /**
101
- * Removes an event listener for a specific event type.
102
- *
103
- * @param type - The event type.
104
- * @param callback - The callback function to remove.
105
- */
106
- removeEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
107
- /**
108
- * Adds a one-time event listener for a specific event type.
109
- *
110
- * @param type - The event type.
111
- * @param callback - The callback function to invoke once when the event occurs.
114
+ */
115
+ setReminder<T extends {
116
+ reminderDate: Date;
117
+ }>(notificationId: string | string[], payload: T, targets: NotificationTargets): Promise<void>;
118
+ /**
119
+ * Post a notification-reminder-removed event to the Cloud Notification service.
120
+ *
121
+ * @param notificationId - The ID of the notification or an array of notification IDs to cancel the reminder for.
122
+ * @returns A promise that resolves when the notification-reminder-removed event is posted.
123
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
124
+ */
125
+ cancelReminder(notificationId: string | string[], targets: NotificationTargets): Promise<void>;
126
+ /**
127
+ * Raises a notification to the Cloud Notification service.
128
+ *
129
+ * @param options - The options for the notification.
130
+ * @param payload - The payload of the notification which should generally conform to the notification center schema
131
+ * @returns A promise that resolves with the notification raise result.
132
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
133
+ * @throws {@link PublishError} If an error occurs during publishing.
134
+ */
135
+ raiseNotification(options: NotificationOptions_2, payload: unknown): Promise<NotificationRaiseResult>;
136
+ /**
137
+ * Raises a notification update to the Cloud Notification service.
138
+ *
139
+ * @param notificationId - The ID of the notification to update.
140
+ * @param options - The options for the notification update.
141
+ * @param payload - The new payload of the notification which should generally conform to the notification center update schema
142
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
143
+ * @throws {@link PublishError} If an error occurs during publishing of the update.
144
+ */
145
+ updateNotification(notificationId: string, options: NotificationUpdateOptions, payload: unknown): Promise<void>;
146
+ /**
147
+ * Marks a notification as deleted in the Cloud Notification service.
148
+ *
149
+ * This in turn causes notification events to be raised for the notification
150
+ *
151
+ * @param notificationId - The ID of the notification to delete.
152
+ * @returns A promise that resolves when the notification is deleted.
153
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
112
154
  */
113
- once<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
114
- }
155
+ deleteNotification(notificationId: string | string[]): Promise<void>;
156
+ /**
157
+ * Replays notifications from the Cloud Notification service.
158
+ *
159
+ * This is called at platform startup to populate the notification center with notifications that were missed since the last time the platform was started.
160
+ *
161
+ * @param pageItemLimit - The maximum number of items per page.
162
+ * @param pageStartCursor - The cursor to start the page from. This is retrieved from the pageInfo property.
163
+ * @returns A promise that resolves with the notifications replay details.
164
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
165
+ * @throws {@link NotificationRetrievalError} If an error occurs during retrieval.
166
+ */
167
+ replayNotifications(pageItemLimit: number | undefined, pageStartCursor: string | undefined): Promise<NotificationsReplayDetails>;
168
+ /**
169
+ * Adds an event listener for a specific event type.
170
+ *
171
+ * @param type - The event type.
172
+ * @param callback - The callback function to invoke when the event occurs.
173
+ */
174
+ addEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
175
+ /**
176
+ * Removes an event listener for a specific event type.
177
+ *
178
+ * @param type - The event type.
179
+ * @param callback - The callback function to remove.
180
+ */
181
+ removeEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
182
+ /**
183
+ * Adds a one-time event listener for a specific event type.
184
+ *
185
+ * @param type - The event type.
186
+ * @param callback - The callback function to invoke once when the event occurs.
187
+ */
188
+ once<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
189
+ }
115
190
 
116
- export declare class CloudNotificationAPIError extends Error {
117
- code: string;
118
- constructor(message?: string, code?: string, cause?: unknown);
119
- }
191
+ export declare class CloudNotificationAPIError extends Error {
192
+ code: string;
193
+ constructor(message?: string, code?: string, cause?: unknown);
194
+ }
120
195
 
121
- /**
122
- * Represents a logging function to be used by the cloud notification client
123
- */
124
- export declare type CloudNotificationLogger = (level: LogLevel, message: string) => void;
196
+ /**
197
+ * Represents a logging function to be used by the cloud notification client
198
+ */
199
+ export declare type CloudNotificationLogger = (level: LogLevel, message: string) => void;
125
200
 
126
- export declare type CloudNotificationSettings = {
127
- /**
128
- * The URL of the notification server to connect to
129
- */
130
- url: string;
131
- /**
132
- * The maximum number of times to retry connecting to the cloud notification service when the connection is dropped
133
- * defaults to 30
134
- */
135
- reconnectRetryLimit?: number;
136
- /**
137
- * Specifies how often keep alive messages should be sent to the cloud notification service in seconds
138
- * defaults to 30
139
- */
140
- keepAliveIntervalSeconds?: number;
141
- /**
142
- * Optional function to call with any logging messages to allow integration with the host application's logging
143
- *
144
- * defaults to console.log
145
- */
146
- logger?: CloudNotificationLogger;
147
- /**
148
- * The time used to deduplicate notifications
149
- */
150
- deduplicationTTLms?: number;
151
- /**
152
- * Will cause the api to calculate the time offset between the local machine and the notification server
153
- * defaults to true
154
- */
155
- syncTime?: boolean;
156
- };
201
+ export declare type CloudNotificationSettings = {
202
+ /**
203
+ * The URL of the notification server to connect to
204
+ *
205
+ * @example 'https://the-environment.example.com/notifications'
206
+ */
207
+ url: string;
208
+ /**
209
+ * The maximum number of times to retry connecting to the cloud notification service when the connection is dropped
210
+ * defaults to 30
211
+ */
212
+ reconnectRetryLimit?: number;
213
+ /**
214
+ * Specifies how often keep alive messages should be sent to the cloud notification service in seconds
215
+ * defaults to 30
216
+ */
217
+ keepAliveIntervalSeconds?: number;
218
+ /**
219
+ * Optional function to call with any logging messages to allow integration with the host application's logging
220
+ *
221
+ * Defaults to console.log
222
+ */
223
+ logger?: CloudNotificationLogger;
224
+ /**
225
+ * The time used to deduplicate notifications
226
+ */
227
+ deduplicationTTLms?: number;
228
+ /**
229
+ * Will cause the api to calculate the time offset between the local machine and the notification server
230
+ * defaults to true
231
+ */
232
+ syncTime?: boolean;
233
+ };
157
234
 
158
- /**
159
- * Repesents the result of a successful connection to the server
160
- */
161
- export declare type ConnectionResult = {
162
- /**
163
- * The unique identifier for the session
164
- */
165
- sessionId: string;
166
- /**
167
- * The platform identifier
168
- */
169
- platformId: string;
170
- /**
171
- * The source identifier
172
- */
173
- sourceId: string;
174
- /**
175
- * The user identifier
176
- */
177
- userId: string;
178
- /**
179
- * A collection of groups that the user is either a direct or indirect member of
180
- */
181
- groups: {
182
- uuid: string;
183
- name: string;
184
- }[];
185
- };
186
-
187
- /**
188
- * Represents the parameters to use to connect to an notification server
189
- */
190
- export declare type ConnectParameters = {
191
- /**
192
- * ID for a group of shared applications.
193
- * This acts as a namespace for the notification messages that allows separation of messages between different groups of applications for the same user
194
- */
195
- platformId: string;
196
- /**
197
- * A value that distinguishes the host the application is running in. For example this could be the hostname of the current machine
198
- */
199
- sourceId: string;
200
- /**
201
- * Determines the type of authentication to use with the service gateway
202
- * defaults to 'none'
203
- *
204
- * 'jwt' - Use JWT authentication, in this case jwtAuthenticationParameters must also be provided
205
- * 'basic' - Use basic authentication, in this case basicAuthenticationParameters must also be provided
206
- * 'default' - Authentication will be inherited from the current session
207
- */
208
- authenticationType?: 'jwt' | 'basic' | 'default';
209
- /**
210
- * Optional parameters for basic authentication
211
- */
212
- basicAuthenticationParameters?: {
213
- /**
214
- * The username to use for basic authentication
215
- */
216
- username: string;
217
- /**
218
- * The password to use for basic authentication
219
- */
220
- password: string;
221
- };
222
- /**
223
- * Optional parameters for JWT authentication
224
- */
225
- jwtAuthenticationParameters?: {
226
- /**
227
- * When JWT authentication is being used, this will be invoked just whenever a JWT token is required for a request
228
- */
229
- jwtRequestCallback: () => string | object;
230
- /**
231
- * The id of the service gateway JWT authentication definition to use
232
- *
233
- * Note: Contact Here support to to get your organization's authentication id
234
- */
235
- authenticationId: string;
236
- };
237
- };
235
+ /**
236
+ * Represents the result of a successful connection to the server
237
+ */
238
+ export declare type ConnectionResult = {
239
+ /**
240
+ * The unique identifier for the session
241
+ */
242
+ sessionId: string;
243
+ /**
244
+ * The platform identifier
245
+ */
246
+ platformId: string;
247
+ /**
248
+ * The source identifier
249
+ */
250
+ sourceId: string;
251
+ /**
252
+ * The user identifier
253
+ */
254
+ userId: string;
255
+ /**
256
+ * A collection of groups that the user is either a direct or indirect member of
257
+ */
258
+ groups: {
259
+ uuid: string;
260
+ name: string;
261
+ }[];
262
+ };
238
263
 
239
- export declare type DeleteNotificationEvent = BaseNotificationReceivedEvent & {
240
- action: 'delete';
241
- };
264
+ /**
265
+ * Represents the parameters to use to connect to an notification server
266
+ */
267
+ export declare type ConnectParameters = {
268
+ /**
269
+ * ID for a group of shared applications.
270
+ *
271
+ * This acts as a namespace for the notification messages that allows separation of messages between different groups of applications for the same user
272
+ *
273
+ * This, in general, should be the uuid of the platform that you are communicating
274
+ */
275
+ platformId: string;
276
+ /**
277
+ * A value that distinguishes the host the application is running in. For example this could be the hostname of the current machine
278
+ */
279
+ sourceId: string;
280
+ /**
281
+ * Determines the type of authentication to use with the service gateway
282
+ *
283
+ * - 'jwt' - Use JWT authentication, in this case jwtAuthenticationParameters must also be provided
284
+ * - 'basic' - Use basic authentication, in this case basicAuthenticationParameters must also be provided
285
+ * - 'default' - Authentication will be inherited from the current session
286
+ */
287
+ authenticationType?: 'jwt' | 'basic' | 'default';
288
+ /**
289
+ * Optional parameters for basic authentication
290
+ */
291
+ basicAuthenticationParameters?: {
292
+ /**
293
+ * The username to use for basic authentication
294
+ */
295
+ username: string;
296
+ /**
297
+ * The password to use for basic authentication
298
+ */
299
+ password: string;
300
+ };
301
+ /**
302
+ * Optional parameters for JWT authentication
303
+ */
304
+ jwtAuthenticationParameters?: {
305
+ /**
306
+ * When JWT authentication is being used, this will be invoked just whenever a JWT token is required for a request
307
+ *
308
+ * This token should be conform to the configuration set within your environment. Contact Here support for more details
309
+ *
310
+ * @example
311
+ * ```typescript
312
+ * const jwtRequestCallback = () => {
313
+ * return 'your-jwt-token';
314
+ * };
315
+ * ```
316
+ */
317
+ jwtRequestCallback: () => string | object;
318
+ /**
319
+ * The id of the service gateway JWT authentication definition to use
320
+ *
321
+ * Note: Contact Here support to to get your organization's authentication id
322
+ */
323
+ authenticationId: string;
324
+ };
325
+ };
242
326
 
243
- export declare type EventListenersMap = Map<keyof EventMap, Array<(...args: Parameters<EventMap[keyof EventMap]>) => void>>;
327
+ export declare type DeleteNotificationEvent = BaseNotificationReceivedEvent & {
328
+ action: 'delete';
329
+ };
244
330
 
245
- export declare type EventMap = {
246
- reconnected: () => void;
247
- disconnected: () => void;
248
- reconnecting: (attemptNo: number) => void;
249
- error: (error: Error) => void;
250
- 'session-expired': () => void;
251
- 'session-extended': () => void;
252
- 'new-notification': (event: NewNotificationEvent) => void;
253
- 'update-notification': (event: UpdateNotificationEvent) => void;
254
- 'delete-notification': (event: DeleteNotificationEvent) => void;
255
- 'notification-event': (event: NotificationEvent) => void;
256
- };
331
+ export declare type EventMap = {
332
+ /**
333
+ * Emitted when the connection has been re-established
334
+ * @returns void
335
+ */
336
+ reconnected: () => void;
337
+ /**
338
+ * Emitted when the connection has been disconnected
339
+ * @returns void
340
+ */
341
+ reconnecting: (attemptNo: number) => void;
342
+ /**
343
+ * Emitted when the connection has been disconnected
344
+ * @returns void
345
+ */
346
+ disconnected: () => void;
347
+ /**
348
+ * Emitted when an error occurs
349
+ * @returns void
350
+ */
351
+ error: (error: Error) => void;
352
+ /**
353
+ * Emitted when the session has expired
354
+ * @returns void
355
+ */
356
+ 'session-expired': () => void;
357
+ /**
358
+ * Emitted when the session has been extended
359
+ * @returns void
360
+ */
361
+ 'session-extended': () => void;
362
+ /**
363
+ * Emitted when a new notification is received
364
+ * @returns void
365
+ */
366
+ 'new-notification': (event: NewNotificationEvent) => void;
367
+ /**
368
+ * Emitted when an update to a notification is received
369
+ * @returns void
370
+ */
371
+ 'update-notification': (event: UpdateNotificationEvent) => void;
372
+ /**
373
+ * Emitted when a notification is deleted
374
+ * @returns void
375
+ */
376
+ 'delete-notification': (event: DeleteNotificationEvent) => void;
377
+ /**
378
+ * Emitted when a notification event is received for this specific session
379
+ * @returns void
380
+ */
381
+ 'notification-event': (event: NotificationEvent) => void;
382
+ /**
383
+ * Emitted when a notification event is received for all sessions
384
+ * @returns void
385
+ */
386
+ 'global-notification-event': (event: NotificationEvent) => void;
387
+ };
257
388
 
258
- export declare class EventPublishError extends CloudNotificationAPIError {
259
- constructor(message?: string, code?: string, cause?: unknown);
260
- }
389
+ export declare class EventPublishError extends CloudNotificationAPIError {
390
+ constructor(message?: string, code?: string, cause?: unknown);
391
+ }
261
392
 
262
- export declare class EventRetrievalError extends CloudNotificationAPIError {
263
- constructor(message?: string, code?: string, cause?: unknown);
264
- }
393
+ export declare class EventRetrievalError extends CloudNotificationAPIError {
394
+ constructor(message?: string, code?: string, cause?: unknown);
395
+ }
265
396
 
266
- export declare class InvalidMessageFormatError extends CloudNotificationAPIError {
267
- constructor(zodParseResult: z.SafeParseReturnType<unknown, unknown>);
268
- }
397
+ export declare class InvalidMessageFormatError extends CloudNotificationAPIError {
398
+ constructor(zodParseResult: z.SafeParseReturnType<unknown, unknown>);
399
+ }
269
400
 
270
- export declare type LogLevel = 'log' | 'debug' | 'info' | 'warn' | 'error';
401
+ export declare type LogLevel = 'log' | 'debug' | 'info' | 'warn' | 'error';
271
402
 
272
- export declare type NewNotificationEvent = BaseNotificationReceivedEvent & {
273
- action: 'new';
274
- };
403
+ export declare type NewNotificationEvent = BaseNotificationReceivedEvent & {
404
+ action: 'new';
405
+ };
275
406
 
276
- export declare type NotificationEvent = {
277
- notificationId: string;
278
- correlationId?: string;
279
- category: string;
280
- type: string;
281
- payload?: unknown;
282
- };
407
+ /**
408
+ * Represents a notification event
409
+ */
410
+ export declare type NotificationEvent = {
411
+ /**
412
+ * The unique identifier for the notification
413
+ */
414
+ notificationId: string;
415
+ /**
416
+ * The correlation identifier for the notification
417
+ */
418
+ correlationId?: string;
419
+ /**
420
+ * The source identifier
421
+ */
422
+ sourceId: string;
423
+ /**
424
+ * The originating session identifier
425
+ */
426
+ originatingSessionId: string;
427
+ /**
428
+ * The platform identifier
429
+ */
430
+ platformId: string;
431
+ /**
432
+ * The unique platform identifier for the user
433
+ */
434
+ userId: string;
435
+ /**
436
+ * The resolved username of the user
437
+ */
438
+ userName?: string;
439
+ /**
440
+ * The category of the notification.
441
+ * For notification center events this will be 'notification-center-event'
442
+ */
443
+ category: string;
444
+ /**
445
+ * The type of the notification.
446
+ * For example 'notification-close' when a user closes a notification in the notification center
447
+ */
448
+ type: string;
449
+ /**
450
+ * The payload of the notification.
451
+ * See the documentation for the notification center events for more information on the payload
452
+ */
453
+ payload?: unknown;
454
+ };
283
455
 
284
- /**
285
- * Represents the options for a notification publish
286
- */
287
- declare type NotificationOptions_2 = {
288
- /**
289
- * A caller specified identifier for the notification
290
- * This is used to identify the notification in the system when events and responses are received
291
- */
292
- correlationId?: string;
293
- /**
294
- * The targets to send the notification to
295
- * This is a set of groups and users that the notification will be sent to
296
- */
297
- targets: NotificationTargets;
298
- /**
299
- * Optional number of seconds to keep the notification alive
300
- * After this time the notification will be expired and a delete update will be raised
301
- */
302
- ttlSeconds?: number;
303
- };
304
- export { NotificationOptions_2 as NotificationOptions }
456
+ /**
457
+ * Represents the options for a notification event publish
458
+ */
459
+ export declare type NotificationEventOptions = {
460
+ /**
461
+ * The targets to send the event to
462
+ *
463
+ * This is a set of groups and users that the notification event will direct to. You may use to explicitly remove the notification
464
+ * from a subset of the original targets that received it.
465
+ *
466
+ * For example you send a notification to *all-users* and then want to remove the notification from a specific group. You can do this by
467
+ * specifying the group name in the targets.
468
+ *
469
+ * @example
470
+ * ```typescript
471
+ * const notificationEventOptions: NotificationEventOptions = {
472
+ * targets: {
473
+ * groups: ['all-users'],
474
+ * users: ['someuser@company.com']
475
+ * }
476
+ * };
477
+ * ```
478
+ */
479
+ targets: NotificationTargets;
480
+ };
305
481
 
306
- /**
307
- * Represents the response from raising a notification
308
- */
309
- export declare type NotificationRaiseResult = {
310
- /**
311
- * The unique identifier for the notification
312
- */
313
- notificationId: string;
314
- /**
315
- * The correlation ID that was provided when raising the notification
316
- */
317
- correlationId?: string;
318
- };
482
+ /**
483
+ * Represents the options for a notification publish
484
+ */
485
+ declare type NotificationOptions_2 = {
486
+ /**
487
+ * A caller specified identifier for the notification
488
+ *
489
+ * This is used to identify the notification in the system when events and responses are received
490
+ */
491
+ correlationId?: string;
492
+ /**
493
+ * The targets to send the notification to
494
+ *
495
+ * This is a set of groups and users that the notification will be sent to
496
+ *
497
+ * @example
498
+ * ```typescript
499
+ * const notificationOptions: NotificationOptions = {
500
+ * targets: {
501
+ * groups: ['all-users'],
502
+ * users: ['someuser@company.com']
503
+ * }
504
+ * };
505
+ * ```
506
+ */
507
+ targets: NotificationTargets;
508
+ /**
509
+ * Optional number of seconds to keep the notification alive
510
+ *
511
+ * After this time the notification will be expired and a delete update will be raised
512
+ */
513
+ ttlSeconds?: number;
514
+ };
515
+ export { NotificationOptions_2 as NotificationOptions }
319
516
 
320
- export declare class NotificationRetrievalError extends CloudNotificationAPIError {
321
- constructor(message?: string, code?: string, cause?: unknown);
322
- }
517
+ /**
518
+ * Represents the response from raising a notification
519
+ */
520
+ export declare type NotificationRaiseResult = {
521
+ /**
522
+ * The unique identifier for the notification
523
+ */
524
+ notificationId: string;
525
+ /**
526
+ * The correlation ID that was provided when raising the notification
527
+ */
528
+ correlationId?: string;
529
+ };
323
530
 
324
- export declare type NotificationsReplayDetail = {
325
- cursor: string;
326
- sessionId: string;
327
- notificationId: string;
328
- version: number;
329
- action: 'new' | 'update' | 'delete';
330
- payload?: unknown;
331
- correlationId?: string | null;
332
- timestamp: Date;
333
- };
531
+ export declare class NotificationRetrievalError extends CloudNotificationAPIError {
532
+ constructor(message?: string, code?: string, cause?: unknown);
533
+ }
334
534
 
335
- export declare type NotificationsReplayDetails = {
336
- data: NotificationsReplayDetail[];
337
- pageInfo: {
338
- pageStart?: string;
339
- nextPage?: string;
340
- hasNextPage: boolean;
341
- };
342
- };
535
+ /**
536
+ * Represents a single notification replay detail.
537
+ */
538
+ export declare type NotificationsReplayDetail = {
539
+ /**
540
+ * The cursor of the notification.
541
+ */
542
+ cursor: string;
543
+ /**
544
+ * The session ID of the notification.
545
+ */
546
+ sessionId: string;
547
+ /**
548
+ * The notification ID.
549
+ */
550
+ notificationId: string;
551
+ /**
552
+ * The version of the notification.
553
+ */
554
+ version: number;
555
+ /**
556
+ * The type of notification record.
557
+ */
558
+ action: 'new' | 'update' | 'delete';
559
+ /**
560
+ * The payload of the notification.
561
+ */
562
+ payload?: unknown;
563
+ /**
564
+ * The original correlation ID of the notification if specified.
565
+ */
566
+ correlationId?: string | null;
567
+ /**
568
+ * The timestamp of the notification.
569
+ */
570
+ timestamp: Date;
571
+ /**
572
+ * The payload of the latest reminder event for the notification.
573
+ */
574
+ latestReminderPayload?: unknown;
575
+ };
343
576
 
344
- /**
345
- * Represents a set of targets for a notification publish
346
- */
347
- export declare type NotificationTargets = {
348
- /**
349
- * The groups to send the notification to
350
- */
351
- groups: string[];
352
- /**
353
- * The users to send the notification to
354
- */
355
- users: string[];
356
- };
577
+ /**
578
+ * Represents the results of a notifications replay request.
579
+ */
580
+ export declare type NotificationsReplayDetails = {
581
+ /**
582
+ * The list of notifications replay details.
583
+ */
584
+ data: NotificationsReplayDetail[];
585
+ /**
586
+ * The pagination information for the notifications replay request.
587
+ */
588
+ pageInfo: {
589
+ /**
590
+ * The cursor of the first notification in the page.
591
+ */
592
+ pageStart?: string;
593
+ /**
594
+ * The cursor of the next page.
595
+ */
596
+ nextPage?: string;
597
+ /**
598
+ * Whether there is a next page of notifications.
599
+ */
600
+ hasNextPage: boolean;
601
+ };
602
+ };
357
603
 
358
- /**
359
- * Represents the options for a notification update
360
- */
361
- export declare type NotificationUpdateOptions = {
362
- /**
363
- * Optional number of seconds to keep the notification alive
364
- * After this time the notification will be expired and a delete update will be raised
365
- */
366
- ttlSeconds?: number;
367
- };
604
+ /**
605
+ * Represents a set of targets for a notification publish
606
+ */
607
+ export declare type NotificationTargets = {
608
+ /**
609
+ * The optional groups to send the notification to
610
+ *
611
+ * This can be a collection of either group names e.g. all-users which can be retrieved from the admin console or the
612
+ * UUID of the group itself
613
+ */
614
+ groups: string[];
615
+ /**
616
+ * The optional specific users to send the notification to
617
+ *
618
+ * This can be the username e.g. someuser\@company.com or the UUID of the user itself
619
+ */
620
+ users: string[];
621
+ };
368
622
 
369
- export declare class PublishError extends CloudNotificationAPIError {
370
- constructor(message?: string, code?: string, cause?: unknown);
371
- }
623
+ /**
624
+ * Represents the options for a notification update
625
+ */
626
+ export declare type NotificationUpdateOptions = {
627
+ /**
628
+ * Optional number of seconds to keep the notification alive
629
+ * After this time the notification will be expired and a delete update will be raised
630
+ */
631
+ ttlSeconds?: number;
632
+ };
372
633
 
373
- export declare type PublishResult = {
374
- notificationId: string;
375
- correlationId: string | undefined;
376
- };
634
+ export declare class PublishError extends CloudNotificationAPIError {
635
+ constructor(message?: string, code?: string, cause?: unknown);
636
+ }
377
637
 
378
- export declare class SessionNotConnectedError extends CloudNotificationAPIError {
379
- constructor(message?: string, code?: string);
380
- }
638
+ export declare class SessionNotConnectedError extends CloudNotificationAPIError {
639
+ constructor(message?: string, code?: string);
640
+ }
381
641
 
382
- /**
383
- * Simple set-like structure that allows you to add values with a TTL (time to live).
384
- * Values are automatically removed from the set after the TTL expires.
385
- */
386
- declare class SetWithTTL<T> {
387
- #private;
388
- private ttl;
389
- private store;
390
- private nextCollection;
391
- private collectionDelay;
392
- constructor(ttl: number, collectionCheckInterval?: number);
393
- get size(): number;
394
- add(value: T, customTtl?: number): this;
395
- has(value: T): boolean;
396
- delete(value: T): this;
397
- }
642
+ export declare type TARGET_TYPE = z.infer<typeof targetTypeSchema>;
398
643
 
399
- export declare type UpdateNotificationEvent = BaseNotificationReceivedEvent & {
400
- action: 'update';
401
- };
644
+ export declare const targetTypeSchema: z.ZodEnum<["users", "groups"]>;
402
645
 
403
- export declare type UserGroupWithTopic = {
404
- uuid: string;
405
- name: string;
406
- topic?: string;
407
- };
646
+ export declare type UpdateNotificationEvent = BaseNotificationReceivedEvent & {
647
+ action: 'update';
648
+ };
408
649
 
409
- export { }
650
+ export { }