@openfin/cloud-notification-core-api 0.0.1-alpha.2049c34 → 0.0.1-alpha.2051dd6

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