@schibsted/pulse-sdk 8.0.0-alpha.8

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.
@@ -0,0 +1,4566 @@
1
+ // Generated by dts-bundle-generator v9.5.1
2
+
3
+ export declare const EngagementAudioPlayer: {
4
+ readonly object: {
5
+ readonly type: "AudioPlayer";
6
+ };
7
+ readonly type: "Engagement";
8
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementAudioPlayer.json";
9
+ };
10
+ export declare const EngagementForm: {
11
+ readonly object: {
12
+ readonly type: "Form";
13
+ };
14
+ readonly type: "Engagement";
15
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementForm.json";
16
+ };
17
+ export declare const EngagementNotification: {
18
+ readonly object: {
19
+ readonly type: "Notification";
20
+ };
21
+ readonly type: "Engagement";
22
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementNotification.json";
23
+ };
24
+ export declare const EngagementOffer: {
25
+ readonly object: {
26
+ readonly type: "Offer";
27
+ };
28
+ readonly type: "Engagement";
29
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementOffer.json";
30
+ };
31
+ export declare const EngagementTeaser: {
32
+ readonly object: {
33
+ readonly type: "Teaser";
34
+ };
35
+ readonly type: "Engagement";
36
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementTeaser.json";
37
+ };
38
+ export declare const EngagementUIElement: {
39
+ readonly object: {
40
+ readonly type: "UIElement";
41
+ };
42
+ readonly type: "Engagement";
43
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementUIElement.json";
44
+ };
45
+ export declare const EngagementVideoPlayer: {
46
+ readonly object: {
47
+ readonly type: "VideoPlayer";
48
+ };
49
+ readonly type: "Engagement";
50
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementVideoPlayer.json";
51
+ };
52
+ export declare const EngagementWidget: {
53
+ readonly object: {
54
+ readonly type: "Widget";
55
+ };
56
+ readonly type: "Engagement";
57
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/EngagementWidget.json";
58
+ };
59
+ export declare const InternalProbe: {
60
+ readonly object: {
61
+ readonly type: "Probe";
62
+ };
63
+ readonly type: "Internal";
64
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/InternalProbe.json";
65
+ };
66
+ export declare const LeaveArticle: {
67
+ readonly object: {
68
+ readonly type: "Article";
69
+ };
70
+ readonly type: "Leave";
71
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveArticle.json";
72
+ };
73
+ export declare const LeaveAudio: {
74
+ readonly object: {
75
+ readonly type: "Audio";
76
+ };
77
+ readonly type: "Leave";
78
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveAudio.json";
79
+ };
80
+ export declare const LeaveError: {
81
+ readonly object: {
82
+ readonly type: "Error";
83
+ };
84
+ readonly type: "Leave";
85
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveError.json";
86
+ };
87
+ export declare const LeaveFrontpage: {
88
+ readonly object: {
89
+ readonly type: "Frontpage";
90
+ };
91
+ readonly type: "Leave";
92
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveFrontpage.json";
93
+ };
94
+ export declare const LeaveLandingpage: {
95
+ readonly object: {
96
+ readonly type: "Landingpage";
97
+ };
98
+ readonly type: "Leave";
99
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveLandingpage.json";
100
+ };
101
+ export declare const LeaveListing: {
102
+ readonly object: {
103
+ readonly type: "Listing";
104
+ };
105
+ readonly type: "Leave";
106
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveListing.json";
107
+ };
108
+ export declare const LeaveLockedArticle: {
109
+ readonly object: {
110
+ readonly type: "LockedArticle";
111
+ };
112
+ readonly type: "Leave";
113
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveLockedArticle.json";
114
+ };
115
+ export declare const LeaveLockedAudio: {
116
+ readonly object: {
117
+ readonly type: "LockedAudio";
118
+ };
119
+ readonly type: "Leave";
120
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveLockedAudio.json";
121
+ };
122
+ export declare const LeaveLockedVideo: {
123
+ readonly object: {
124
+ readonly type: "LockedVideo";
125
+ };
126
+ readonly type: "Leave";
127
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveLockedVideo.json";
128
+ };
129
+ export declare const LeavePage: {
130
+ readonly object: {
131
+ readonly type: "Page";
132
+ };
133
+ readonly type: "Leave";
134
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeavePage.json";
135
+ };
136
+ export declare const LeaveTitle: {
137
+ readonly object: {
138
+ readonly type: "Title";
139
+ };
140
+ readonly type: "Leave";
141
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveTitle.json";
142
+ };
143
+ export declare const LeaveVideo: {
144
+ readonly object: {
145
+ readonly type: "Video";
146
+ };
147
+ readonly type: "Leave";
148
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveVideo.json";
149
+ };
150
+ export declare const LeaveWeather: {
151
+ readonly object: {
152
+ readonly type: "Weather";
153
+ };
154
+ readonly type: "Leave";
155
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/LeaveWeather.json";
156
+ };
157
+ export declare const ViewAdSlot: {
158
+ readonly object: {
159
+ readonly type: "AdSlot";
160
+ };
161
+ readonly type: "View";
162
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewAdSlot.json";
163
+ };
164
+ export declare const ViewArticle: {
165
+ readonly object: {
166
+ readonly type: "Article";
167
+ };
168
+ readonly type: "View";
169
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewArticle.json";
170
+ };
171
+ export declare const ViewAudio: {
172
+ readonly object: {
173
+ readonly type: "Audio";
174
+ };
175
+ readonly type: "View";
176
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewAudio.json";
177
+ };
178
+ export declare const ViewAudioPlayer: {
179
+ readonly object: {
180
+ readonly type: "AudioPlayer";
181
+ };
182
+ readonly type: "View";
183
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewAudioPlayer.json";
184
+ };
185
+ export declare const ViewError: {
186
+ readonly object: {
187
+ readonly type: "Error";
188
+ };
189
+ readonly type: "View";
190
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewError.json";
191
+ };
192
+ export declare const ViewForm: {
193
+ readonly object: {
194
+ readonly type: "Form";
195
+ };
196
+ readonly type: "View";
197
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewForm.json";
198
+ };
199
+ export declare const ViewFrontpage: {
200
+ readonly object: {
201
+ readonly type: "Frontpage";
202
+ };
203
+ readonly type: "View";
204
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewFrontpage.json";
205
+ };
206
+ export declare const ViewLandingpage: {
207
+ readonly object: {
208
+ readonly type: "Landingpage";
209
+ };
210
+ readonly type: "View";
211
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewLandingpage.json";
212
+ };
213
+ export declare const ViewListing: {
214
+ readonly object: {
215
+ readonly type: "Listing";
216
+ };
217
+ readonly type: "View";
218
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewListing.json";
219
+ };
220
+ export declare const ViewLockedArticle: {
221
+ readonly object: {
222
+ readonly type: "LockedArticle";
223
+ };
224
+ readonly type: "View";
225
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewLockedArticle.json";
226
+ };
227
+ export declare const ViewLockedAudio: {
228
+ readonly object: {
229
+ readonly type: "LockedAudio";
230
+ };
231
+ readonly type: "View";
232
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewLockedAudio.json";
233
+ };
234
+ export declare const ViewLockedVideo: {
235
+ readonly object: {
236
+ readonly type: "LockedVideo";
237
+ };
238
+ readonly type: "View";
239
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewLockedVideo.json";
240
+ };
241
+ export declare const ViewNotification: {
242
+ readonly object: {
243
+ readonly name: "PushNotification";
244
+ readonly type: "Notification";
245
+ };
246
+ readonly type: "View";
247
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewNotification.json";
248
+ };
249
+ export declare const ViewNotificationFlat: {
250
+ readonly "object.name": "PushNotification";
251
+ readonly "object.type": "Notification";
252
+ readonly type: "View";
253
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewNotification.json";
254
+ };
255
+ export declare const ViewOffer: {
256
+ readonly object: {
257
+ readonly type: "Offer";
258
+ };
259
+ readonly type: "View";
260
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewOffer.json";
261
+ };
262
+ export declare const ViewPage: {
263
+ readonly object: {
264
+ readonly type: "Page";
265
+ };
266
+ readonly type: "View";
267
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewPage.json";
268
+ };
269
+ export declare const ViewTeaser: {
270
+ readonly object: {
271
+ readonly type: "Teaser";
272
+ };
273
+ readonly type: "View";
274
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewTeaser.json";
275
+ };
276
+ export declare const ViewTitle: {
277
+ readonly object: {
278
+ readonly type: "Title";
279
+ };
280
+ readonly type: "View";
281
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewTitle.json";
282
+ };
283
+ export declare const ViewUIElement: {
284
+ readonly object: {
285
+ readonly type: "UIElement";
286
+ };
287
+ readonly type: "View";
288
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewUIElement.json";
289
+ };
290
+ export declare const ViewVideo: {
291
+ readonly object: {
292
+ readonly type: "Video";
293
+ };
294
+ readonly type: "View";
295
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewVideo.json";
296
+ };
297
+ export declare const ViewVideoAd: {
298
+ readonly object: {
299
+ readonly type: "VideoAd";
300
+ };
301
+ readonly type: "View";
302
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewVideoAd.json";
303
+ };
304
+ export declare const ViewVideoPlayer: {
305
+ readonly object: {
306
+ readonly type: "VideoPlayer";
307
+ };
308
+ readonly type: "View";
309
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewVideoPlayer.json";
310
+ };
311
+ export declare const ViewWeather: {
312
+ readonly object: {
313
+ readonly type: "Weather";
314
+ };
315
+ readonly type: "View";
316
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewWeather.json";
317
+ };
318
+ export declare const ViewWidget: {
319
+ readonly object: {
320
+ readonly type: "Widget";
321
+ };
322
+ readonly type: "View";
323
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/ViewWidget.json";
324
+ };
325
+ export declare const WatchAudioPlayer: {
326
+ readonly object: {
327
+ readonly type: "AudioPlayer";
328
+ };
329
+ readonly type: "Watch";
330
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/WatchAudioPlayer.json";
331
+ };
332
+ export declare const WatchVideoPlayer: {
333
+ readonly object: {
334
+ readonly type: "VideoPlayer";
335
+ };
336
+ readonly type: "Watch";
337
+ readonly schema: "https://tpaas-schemas.schibsted.media/catalogs/versions/1.0.11/schemas/WatchVideoPlayer.json";
338
+ };
339
+ export declare const CATALOG_VERSION: "1.0.11";
340
+ /* eslint-disable */
341
+ /**
342
+ * This file was automatically generated by json-schema-to-typescript.
343
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
344
+ * and run json-schema-to-typescript to regenerate this file.
345
+ */
346
+ /**
347
+ * Information about the user's TCF/CMP choices.
348
+ */
349
+ export interface IConsents {
350
+ /**
351
+ * Indicates if this data can be used for advertising.
352
+ */
353
+ advertising: "accepted" | "rejected" | "unknown";
354
+ /**
355
+ * Indicates if this data can be used for analytics and product improvement.
356
+ */
357
+ analytics: "accepted" | "rejected" | "unknown";
358
+ /**
359
+ * Indicates if this data can be used for marketing.
360
+ */
361
+ marketing: "accepted" | "rejected" | "unknown";
362
+ /**
363
+ * Indicates if this data can be used for personalization.
364
+ */
365
+ personalization: "accepted" | "rejected" | "unknown";
366
+ /**
367
+ * The source of consent information
368
+ */
369
+ source: string;
370
+ }
371
+ /* eslint-disable */
372
+ /**
373
+ * This file was automatically generated by json-schema-to-typescript.
374
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
375
+ * and run json-schema-to-typescript to regenerate this file.
376
+ */
377
+ /**
378
+ * Information about the device.
379
+ */
380
+ export interface IDevice {
381
+ /**
382
+ * The client used to render the site
383
+ */
384
+ clientType: "Chrome" | "Safari" | "Edge" | "Firefox" | "Samsung" | "NativeScreen" | "Webview" | "other";
385
+ /**
386
+ * The version of the client.
387
+ */
388
+ clientVersion: string;
389
+ /**
390
+ * The device’s hardware category.
391
+ */
392
+ deviceType: "desktop" | "mobile" | "tablet" | "smart-tv" | "other";
393
+ /**
394
+ * The environmentId.
395
+ */
396
+ environmentId: string;
397
+ /**
398
+ * DEPRECATED: Backwards compatibility with ads.
399
+ */
400
+ jweIds?: string;
401
+ /**
402
+ * Mobile only: The brand name of the device.
403
+ */
404
+ mobileBrand?: string;
405
+ /**
406
+ * Mobile only: The model of the device.
407
+ */
408
+ mobileModel?: string;
409
+ /**
410
+ * The device’s operating system.
411
+ */
412
+ operatingSystem: "Windows" | "Mac" | "Linux" | "other";
413
+ /**
414
+ * The format of the screen.
415
+ */
416
+ screenOrientation: "portrait" | "landscape";
417
+ /**
418
+ * The raw userAgent string, if it exists.
419
+ */
420
+ userAgent?: string;
421
+ /**
422
+ * The breakpoint corresponding to the window's viewport size.
423
+ */
424
+ viewportSize: "XS" | "S" | "M" | "L" | "XL";
425
+ }
426
+ /* eslint-disable */
427
+ /**
428
+ * This file was automatically generated by json-schema-to-typescript.
429
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
430
+ * and run json-schema-to-typescript to regenerate this file.
431
+ */
432
+ /**
433
+ * Details about the user interaction.
434
+ */
435
+ export interface IEngagement {
436
+ /**
437
+ * The action the user is performing.
438
+ */
439
+ action: "click" | "scroll" | "drag" | "drop" | "doubleClick";
440
+ /**
441
+ * The name of the UIElement being interacted with.
442
+ */
443
+ elementName: string;
444
+ }
445
+ /* eslint-disable */
446
+ /**
447
+ * This file was automatically generated by json-schema-to-typescript.
448
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
449
+ * and run json-schema-to-typescript to regenerate this file.
450
+ */
451
+ /**
452
+ * Metadata about the content of a pageview.
453
+ */
454
+ export interface IContent {
455
+ /**
456
+ * The access restriction placed on the content.
457
+ */
458
+ accessLevel: "free" | "login" | "meter" | "paid";
459
+ /**
460
+ * The format that this content is presented in.
461
+ */
462
+ category: "Article" | "Audio" | "Video" | "Weather" | "Title" | "other";
463
+ /**
464
+ * The identifier of the content.
465
+ */
466
+ contentId: string;
467
+ /**
468
+ * The canonical title of the content.
469
+ */
470
+ contentTitle: string;
471
+ /**
472
+ * The subtype of the content.
473
+ */
474
+ contentType: "Article" | "LiveArticle" | "SpecialArticle" | "Podcast" | "Episode" | "Audiobook" | "AudiobookSample" | "Movie" | "Series" | "Story";
475
+ requiredProductFeatures?: string[];
476
+ tags?: string[];
477
+ }
478
+ /* eslint-disable */
479
+ /**
480
+ * This file was automatically generated by json-schema-to-typescript.
481
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
482
+ * and run json-schema-to-typescript to regenerate this file.
483
+ */
484
+ /**
485
+ * A reference to another (internal) page.
486
+ */
487
+ export interface IPageRef {
488
+ /**
489
+ * The unique ID of the referred page.
490
+ */
491
+ pageId: string;
492
+ /**
493
+ * The event type of the base pageview.
494
+ */
495
+ pageType: "Page" | "Error" | "Listing" | "Frontpage" | "LandingPage" | "Article" | "Video" | "Audio" | "Title" | "LockedArticle" | "LockedVideo" | "LockedAudio";
496
+ /**
497
+ * The URL of the page.
498
+ */
499
+ url?: string;
500
+ }
501
+ /* eslint-disable */
502
+ /**
503
+ * This file was automatically generated by json-schema-to-typescript.
504
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
505
+ * and run json-schema-to-typescript to regenerate this file.
506
+ */
507
+ /**
508
+ * A block of UTM tags used for origin/referrer tracking and attribution.
509
+ */
510
+ export interface IUtmTags {
511
+ /**
512
+ * The marketing campaign that brought the user to this page, if present.
513
+ */
514
+ utmCampaign?: string;
515
+ /**
516
+ * The UIElement a user engaged with to be sent here.
517
+ */
518
+ utmContent?: string;
519
+ /**
520
+ * The channel that provided the traffic.
521
+ */
522
+ utmMedium: "organic" | "cpc" | "email" | "social" | "referral" | "display" | "affiliate" | "video" | "internal";
523
+ /**
524
+ * The domain the user came from.
525
+ */
526
+ utmSource: string;
527
+ /**
528
+ * If paid medium: The keywords triggering the ad. Else: The keywords used by the search engine.
529
+ */
530
+ utmTerms: string;
531
+ }
532
+ /* eslint-disable */
533
+ /**
534
+ * This file was automatically generated by json-schema-to-typescript.
535
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
536
+ * and run json-schema-to-typescript to regenerate this file.
537
+ */
538
+ /**
539
+ * Information about the team tracking the event.
540
+ */
541
+ export interface IProvider {
542
+ /**
543
+ * The name of the component. Used to contact owners of the event. This should be a recognized name within the product.
544
+ */
545
+ component?: string;
546
+ /**
547
+ * The version of the component used.
548
+ */
549
+ componentVersion?: string;
550
+ /**
551
+ * The name of the product. Used to contact owners of the event. This should be a recognized name within the organization of the provider.
552
+ */
553
+ product: string;
554
+ /**
555
+ * The providerID.
556
+ */
557
+ providerId: string;
558
+ /**
559
+ * The deployment stage of the event.
560
+ */
561
+ stage: "dev" | "test" | "pro";
562
+ /**
563
+ * If a component is set, the version of the component. Else the version of the product.
564
+ */
565
+ version: string;
566
+ }
567
+ /* eslint-disable */
568
+ /**
569
+ * This file was automatically generated by json-schema-to-typescript.
570
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
571
+ * and run json-schema-to-typescript to regenerate this file.
572
+ */
573
+ /**
574
+ * Information about the current session.
575
+ */
576
+ export interface ISession {
577
+ /**
578
+ * True if the event is the first to fire in a this session.
579
+ */
580
+ isFirstEvent: boolean;
581
+ /**
582
+ * The sessionID.
583
+ */
584
+ sessionId: string;
585
+ /**
586
+ * Timestamp of when the session started.
587
+ */
588
+ startTime: string;
589
+ /**
590
+ * The session ID on a partner domain (set via query parameter), else the current session ID.
591
+ */
592
+ xDomainId?: string;
593
+ }
594
+ /* eslint-disable */
595
+ /**
596
+ * This file was automatically generated by json-schema-to-typescript.
597
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
598
+ * and run json-schema-to-typescript to regenerate this file.
599
+ */
600
+ /**
601
+ * Timings of different stages of the event lifecycle.
602
+ */
603
+ export interface ITime {
604
+ /**
605
+ * Timestamp at event creation (in UTC).
606
+ */
607
+ createdAt: string;
608
+ /**
609
+ * Estimate of actual time of event creation. (UTC)
610
+ */
611
+ publishedAt?: string;
612
+ /**
613
+ * Timestamp at event transmission. (UTC, client-side)
614
+ */
615
+ sentAt: string;
616
+ }
617
+ /* eslint-disable */
618
+ /**
619
+ * This file was automatically generated by json-schema-to-typescript.
620
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
621
+ * and run json-schema-to-typescript to regenerate this file.
622
+ */
623
+ /**
624
+ * Information about the SDK used for tracking.
625
+ */
626
+ export interface ITracker {
627
+ /**
628
+ * If the auto-tracker was used, the version of the autotracker library.
629
+ */
630
+ autoTrackerVersion?: string;
631
+ /**
632
+ * True if the event was produced by the autotracker.
633
+ */
634
+ isAutoTracker: boolean;
635
+ /**
636
+ * True if the event was produced in webview and intercepted by a mobile tracker.
637
+ */
638
+ isHybrid: boolean;
639
+ /**
640
+ * The SDK being used. If no SDK was used, use “backend”.
641
+ */
642
+ trackerType: "JS" | "iOS" | "Android" | "backend";
643
+ /**
644
+ * The version of the tracker.
645
+ */
646
+ version: string;
647
+ }
648
+ /* eslint-disable */
649
+ /**
650
+ * This file was automatically generated by json-schema-to-typescript.
651
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
652
+ * and run json-schema-to-typescript to regenerate this file.
653
+ */
654
+ /**
655
+ * Information about the user.
656
+ */
657
+ export interface IUser {
658
+ /**
659
+ * True if the user has an active subscription
660
+ */
661
+ isSubscribed: boolean;
662
+ productFeatures?: string[];
663
+ /**
664
+ * The region of primary belonging
665
+ */
666
+ region?: "Norway" | "Sweden" | "Finland";
667
+ /**
668
+ * The userId.
669
+ */
670
+ userId: string;
671
+ }
672
+ /**
673
+ * This file was automatically generated by json-schema-to-typescript.
674
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
675
+ * and run json-schema-to-typescript to regenerate this file.
676
+ */
677
+ /**
678
+ * An interaction with an audio player widget.
679
+ */
680
+ export interface IEngagementAudioPlayer {
681
+ consents: IConsents;
682
+ device: IDevice;
683
+ engagement: IEngagement;
684
+ /**
685
+ * Event ID
686
+ */
687
+ id: string;
688
+ object: {
689
+ /**
690
+ * The closest parent container used for traffic attribution.
691
+ */
692
+ containerName: string;
693
+ /**
694
+ * How the content is presented on the page.
695
+ */
696
+ displayMode: "normal" | "fullscreen" | "minimized" | "background" | "chromecast" | "airplay" | "carplay";
697
+ /**
698
+ * The total duration of the track in milliseconds. Use -1 for live streams with unknown duration.
699
+ */
700
+ durationMs: number;
701
+ /**
702
+ * The size of the component.
703
+ */
704
+ elementSize?: "XS" | "S" | "M" | "L" | "XL";
705
+ /**
706
+ * The unique ID for this component.
707
+ */
708
+ id: string;
709
+ /**
710
+ * True if the video starts to play automatically.
711
+ */
712
+ isAutoplay: boolean;
713
+ /**
714
+ * True if the video is a live stream.
715
+ */
716
+ isLive: boolean;
717
+ /**
718
+ * True if the player was first created on this page.
719
+ */
720
+ isNewPlayer: boolean;
721
+ /**
722
+ * True if the video was loaded automatically after a previous video was finished.
723
+ */
724
+ isPlayNext: boolean;
725
+ /**
726
+ * The name of the component.
727
+ */
728
+ name: string;
729
+ /**
730
+ * The current playback speed.
731
+ */
732
+ playbackSpeed: number;
733
+ /**
734
+ * A unique ID for this player instance.
735
+ */
736
+ playerId: string;
737
+ /**
738
+ * Indicates what the player is doing at the time of impression.
739
+ */
740
+ playerState: "playing" | "paused" | "buffering" | "failed";
741
+ playingBefore?: IContent;
742
+ playingNow: IContent;
743
+ /**
744
+ * The ID of the playlist.
745
+ */
746
+ playlistId?: string;
747
+ /**
748
+ * The position of the video in the playlist.
749
+ */
750
+ playlistPosition?: number;
751
+ /**
752
+ * The offset of the current playback from the start of the video in seconds.
753
+ */
754
+ position: number;
755
+ /**
756
+ * The current playback’s audio quality.
757
+ */
758
+ quality: string;
759
+ /**
760
+ * The type of the component.
761
+ */
762
+ type: "AudioPlayer";
763
+ };
764
+ page: {
765
+ content?: IContent;
766
+ info: IPageRef;
767
+ /**
768
+ * The pageviewID.
769
+ */
770
+ pageviewId: string;
771
+ referrer?: IPageRef;
772
+ utm?: IUtmTags;
773
+ };
774
+ provider: IProvider;
775
+ /**
776
+ * The schema of the event.
777
+ */
778
+ schema: string;
779
+ session: ISession;
780
+ time: ITime;
781
+ tracker: ITracker;
782
+ /**
783
+ * The type of event.
784
+ */
785
+ type: "Engagement";
786
+ user?: IUser;
787
+ }
788
+ /**
789
+ * This file was automatically generated by json-schema-to-typescript.
790
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
791
+ * and run json-schema-to-typescript to regenerate this file.
792
+ */
793
+ /**
794
+ * Interaction with a form component.
795
+ */
796
+ export interface IEngagementForm {
797
+ consents: IConsents;
798
+ device: IDevice;
799
+ engagement: IEngagement;
800
+ /**
801
+ * Event ID
802
+ */
803
+ id: string;
804
+ object: {
805
+ /**
806
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
807
+ */
808
+ containerName: string;
809
+ /**
810
+ * The size of the component.
811
+ */
812
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
813
+ fields?: {
814
+ /**
815
+ * The default value of the field.
816
+ */
817
+ default?: string;
818
+ /**
819
+ * The name of the field.
820
+ */
821
+ name: string;
822
+ /**
823
+ * True if the field is required.
824
+ */
825
+ required: boolean;
826
+ /**
827
+ * The data type of the field.
828
+ */
829
+ type: string;
830
+ }[];
831
+ /**
832
+ * The unique ID for this component.
833
+ */
834
+ id: string;
835
+ /**
836
+ * The name of the component.
837
+ */
838
+ name: string;
839
+ /**
840
+ * The type of the component.
841
+ */
842
+ type: "Form";
843
+ };
844
+ page: {
845
+ content?: IContent;
846
+ info: IPageRef;
847
+ /**
848
+ * The pageviewID.
849
+ */
850
+ pageviewId: string;
851
+ referrer?: IPageRef;
852
+ utm?: IUtmTags;
853
+ };
854
+ provider: IProvider;
855
+ /**
856
+ * The schema of the event.
857
+ */
858
+ schema: string;
859
+ session: ISession;
860
+ target?: {
861
+ content?: IContent;
862
+ info?: IPageRef;
863
+ };
864
+ time: ITime;
865
+ tracker: ITracker;
866
+ /**
867
+ * The type of event.
868
+ */
869
+ type: "Engagement";
870
+ user?: IUser;
871
+ }
872
+ /**
873
+ * This file was automatically generated by json-schema-to-typescript.
874
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
875
+ * and run json-schema-to-typescript to regenerate this file.
876
+ */
877
+ /**
878
+ * Interaction with a push notification.
879
+ */
880
+ export interface IEngagementNotification {
881
+ consents: IConsents;
882
+ device: IDevice;
883
+ engagement: IEngagement;
884
+ /**
885
+ * Schema ID
886
+ */
887
+ id: string;
888
+ object: {
889
+ /**
890
+ * The creative used.
891
+ */
892
+ creativeURL?: string;
893
+ /**
894
+ * The unique ID for this component.
895
+ */
896
+ id: string;
897
+ /**
898
+ * The name of the component.
899
+ */
900
+ name: string;
901
+ /**
902
+ * The topics related to this push (should this be tags on the content?)
903
+ */
904
+ relatedTopics: string;
905
+ /**
906
+ * The text in the notification.
907
+ */
908
+ text?: string;
909
+ /**
910
+ * The title of the notification.
911
+ */
912
+ title: string;
913
+ /**
914
+ * The topics matching this push (should this be UTM terms?)
915
+ */
916
+ topicsMatch: string;
917
+ /**
918
+ * The type of the component.
919
+ */
920
+ type: "Notification";
921
+ };
922
+ provider: IProvider;
923
+ /**
924
+ * The schema of the event.
925
+ */
926
+ schema: string;
927
+ session: ISession;
928
+ target: {
929
+ content?: IContent;
930
+ info: IPageRef;
931
+ };
932
+ time: ITime;
933
+ tracker: ITracker;
934
+ /**
935
+ * The type of event.
936
+ */
937
+ type: "Engagement";
938
+ user?: IUser;
939
+ }
940
+ /**
941
+ * This file was automatically generated by json-schema-to-typescript.
942
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
943
+ * and run json-schema-to-typescript to regenerate this file.
944
+ */
945
+ /**
946
+ * Interaction with an offer event.
947
+ */
948
+ export interface IEngagementOffer {
949
+ consents: IConsents;
950
+ device: IDevice;
951
+ engagement: IEngagement;
952
+ /**
953
+ * Event ID
954
+ */
955
+ id: string;
956
+ object: {
957
+ /**
958
+ * The campaign associated with this offer.
959
+ */
960
+ campaign: string;
961
+ /**
962
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
963
+ */
964
+ containerName?: string;
965
+ /**
966
+ * The size of the component.
967
+ */
968
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
969
+ /**
970
+ * The unique ID for this component.
971
+ */
972
+ id: string;
973
+ /**
974
+ * The name of the component.
975
+ */
976
+ name: string;
977
+ offerCodes?: string[];
978
+ /**
979
+ * The variant/layout of the offer.
980
+ */
981
+ offerType?: "login" | "meter" | "paid";
982
+ /**
983
+ * The position where this offer was placed.
984
+ */
985
+ placement: string;
986
+ /**
987
+ * The type of the component.
988
+ */
989
+ type: "Offer";
990
+ };
991
+ page: {
992
+ content?: IContent;
993
+ info: IPageRef;
994
+ /**
995
+ * The pageviewID.
996
+ */
997
+ pageviewId: string;
998
+ referrer?: IPageRef;
999
+ utm?: IUtmTags;
1000
+ };
1001
+ provider: IProvider;
1002
+ /**
1003
+ * The schema of the event.
1004
+ */
1005
+ schema: string;
1006
+ session: ISession;
1007
+ target: {
1008
+ content?: IContent;
1009
+ info: IPageRef;
1010
+ };
1011
+ time: ITime;
1012
+ tracker: ITracker;
1013
+ /**
1014
+ * The type of event
1015
+ */
1016
+ type: "Engagement";
1017
+ user?: IUser;
1018
+ }
1019
+ /* eslint-disable */
1020
+ /**
1021
+ * This file was automatically generated by json-schema-to-typescript.
1022
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1023
+ * and run json-schema-to-typescript to regenerate this file.
1024
+ */
1025
+ /**
1026
+ * Long-lived performance metrics.
1027
+ */
1028
+ export type IMetrics = {
1029
+ /**
1030
+ * A grouping key for the metric, e.g. curate’s blendId.
1031
+ */
1032
+ key: string;
1033
+ /**
1034
+ * Name of the metric, e.g., "topKScore".
1035
+ */
1036
+ name: string;
1037
+ /**
1038
+ * Source of the metric, e.g., "Curate".
1039
+ */
1040
+ source: string;
1041
+ /**
1042
+ * The value of the template.
1043
+ */
1044
+ value: number;
1045
+ }[];
1046
+ /**
1047
+ * An interaction with a teaser component.
1048
+ */
1049
+ export interface IEngagementTeaser {
1050
+ consents: IConsents;
1051
+ device: IDevice;
1052
+ engagement: IEngagement;
1053
+ /**
1054
+ * Event ID
1055
+ */
1056
+ id: string;
1057
+ metrics?: IMetrics;
1058
+ object: {
1059
+ /**
1060
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
1061
+ */
1062
+ containerName: string;
1063
+ /**
1064
+ * The engine producing this teaser. Use “editorial” for manually curated item.
1065
+ */
1066
+ contentSource: string;
1067
+ /**
1068
+ * The creative of the teaser.
1069
+ */
1070
+ creativeURL: string;
1071
+ /**
1072
+ * The context in which the recommendation was made.
1073
+ */
1074
+ curateContext: string;
1075
+ /**
1076
+ * The size of the component.
1077
+ */
1078
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
1079
+ /**
1080
+ * The unique ID for this component.
1081
+ */
1082
+ id: string;
1083
+ /**
1084
+ * The name of the component.
1085
+ */
1086
+ name: string;
1087
+ /**
1088
+ * The parent’s primary direction along which components are laid out.
1089
+ */
1090
+ primaryAxis: "horizontal" | "vertical";
1091
+ /**
1092
+ * The position of this component along the primary axis.
1093
+ */
1094
+ primaryPosition: number;
1095
+ /**
1096
+ * The position of this component along the secondary axis.
1097
+ */
1098
+ secondaryPosition: number;
1099
+ /**
1100
+ * The title of the teaser.
1101
+ */
1102
+ title: string;
1103
+ /**
1104
+ * The type of the component.
1105
+ */
1106
+ type: "Teaser";
1107
+ };
1108
+ page: {
1109
+ content?: IContent;
1110
+ info: IPageRef;
1111
+ /**
1112
+ * The pageviewID.
1113
+ */
1114
+ pageviewId: string;
1115
+ referrer?: IPageRef;
1116
+ utm?: IUtmTags;
1117
+ };
1118
+ provider: IProvider;
1119
+ /**
1120
+ * The schema of the event.
1121
+ */
1122
+ schema: string;
1123
+ session: ISession;
1124
+ target: {
1125
+ content?: IContent;
1126
+ info: IPageRef;
1127
+ };
1128
+ time: ITime;
1129
+ tracker: ITracker;
1130
+ /**
1131
+ * The type of event.
1132
+ */
1133
+ type: "Engagement";
1134
+ user?: IUser;
1135
+ }
1136
+ /**
1137
+ * This file was automatically generated by json-schema-to-typescript.
1138
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1139
+ * and run json-schema-to-typescript to regenerate this file.
1140
+ */
1141
+ /**
1142
+ * Interaction with a UIElement.
1143
+ */
1144
+ export interface IEngagementUIElement {
1145
+ consents: IConsents;
1146
+ device: IDevice;
1147
+ engagement: IEngagement;
1148
+ /**
1149
+ * Event ID
1150
+ */
1151
+ id: string;
1152
+ object: {
1153
+ /**
1154
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
1155
+ */
1156
+ containerName: string;
1157
+ /**
1158
+ * The size of the component.
1159
+ */
1160
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
1161
+ /**
1162
+ * The text of the element.
1163
+ */
1164
+ elementText?: string;
1165
+ /**
1166
+ * The unique ID for this component.
1167
+ */
1168
+ id: string;
1169
+ /**
1170
+ * The name of the component.
1171
+ */
1172
+ name: string;
1173
+ /**
1174
+ * The type of the component.
1175
+ */
1176
+ type: "UIElement";
1177
+ };
1178
+ page: {
1179
+ content?: IContent;
1180
+ info: IPageRef;
1181
+ /**
1182
+ * The pageviewID.
1183
+ */
1184
+ pageviewId: string;
1185
+ referrer?: IPageRef;
1186
+ utm?: IUtmTags;
1187
+ };
1188
+ provider: IProvider;
1189
+ /**
1190
+ * The schema of the event.
1191
+ */
1192
+ schema: string;
1193
+ session: ISession;
1194
+ target?: {
1195
+ content?: IContent;
1196
+ info?: IPageRef;
1197
+ };
1198
+ time: ITime;
1199
+ tracker: ITracker;
1200
+ /**
1201
+ * The type of event.
1202
+ */
1203
+ type: "Engagement";
1204
+ user?: IUser;
1205
+ }
1206
+ /**
1207
+ * This file was automatically generated by json-schema-to-typescript.
1208
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1209
+ * and run json-schema-to-typescript to regenerate this file.
1210
+ */
1211
+ /**
1212
+ * Interaction with a video player component.
1213
+ */
1214
+ export interface IEngagementVideoPlayer {
1215
+ consents: IConsents;
1216
+ device: IDevice;
1217
+ engagement: IEngagement;
1218
+ /**
1219
+ * Event ID
1220
+ */
1221
+ id: string;
1222
+ object: {
1223
+ /**
1224
+ * The language of the current audio track.
1225
+ */
1226
+ audioLanguage?: "Norwegian" | "Swedish" | "English";
1227
+ /**
1228
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
1229
+ */
1230
+ containerName: string;
1231
+ /**
1232
+ * How the content is presented on the page.
1233
+ */
1234
+ displayMode: "normal" | "fullscreen" | "minimized" | "picture-in-picture" | "chromecast" | "airplay" | "carplay" | "background";
1235
+ /**
1236
+ * The total duration of the track in milliseconds. Use -1 for live streams with unknown duration.
1237
+ */
1238
+ durationMs: number;
1239
+ /**
1240
+ * The size of the component.
1241
+ */
1242
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
1243
+ /**
1244
+ * The unique ID for this component.
1245
+ */
1246
+ id: string;
1247
+ /**
1248
+ * True if the video starts to play automatically.
1249
+ */
1250
+ isAutoplay: boolean;
1251
+ /**
1252
+ * True if the video is a live stream.
1253
+ */
1254
+ isLive: boolean;
1255
+ /**
1256
+ * True if the playback is muted.
1257
+ */
1258
+ isMuted: boolean;
1259
+ /**
1260
+ * True if the player was first created on this page.
1261
+ */
1262
+ isNewPlayer: boolean;
1263
+ /**
1264
+ * True if the video was loaded automatically after a previous video was finished.
1265
+ */
1266
+ isPlayNext: boolean;
1267
+ /**
1268
+ * The number of times the video has automatically repeated itself.
1269
+ */
1270
+ loopCount: number;
1271
+ /**
1272
+ * The name of the component.
1273
+ */
1274
+ name: string;
1275
+ /**
1276
+ * The current playback speed.
1277
+ */
1278
+ playbackSpeed: number;
1279
+ /**
1280
+ * A unique ID for this player instance.
1281
+ */
1282
+ playerId: string;
1283
+ /**
1284
+ * Indicates what the player is doing at the time of impression.
1285
+ */
1286
+ playerState: "playing" | "paused" | "buffering" | "failed";
1287
+ playingBefore?: IContent;
1288
+ playingNow: IContent;
1289
+ /**
1290
+ * The ID of the playlist.
1291
+ */
1292
+ playlistId?: string;
1293
+ /**
1294
+ * The position of the video in the playlist.
1295
+ */
1296
+ playlistPosition?: number;
1297
+ /**
1298
+ * The offset of the current playback from the start of the video in seconds.
1299
+ */
1300
+ position: number;
1301
+ /**
1302
+ * The current playback quality.
1303
+ */
1304
+ quality: string;
1305
+ /**
1306
+ * The index of the CC stream in the file.
1307
+ */
1308
+ subtitleLanguage?: "None" | "Norwegian" | "Swedish" | "English";
1309
+ /**
1310
+ * The type of the component.
1311
+ */
1312
+ type: "VideoPlayer";
1313
+ };
1314
+ page: {
1315
+ content?: IContent;
1316
+ info: IPageRef;
1317
+ /**
1318
+ * The pageviewID.
1319
+ */
1320
+ pageviewId: string;
1321
+ referrer?: IPageRef;
1322
+ utm?: IUtmTags;
1323
+ };
1324
+ provider: IProvider;
1325
+ /**
1326
+ * The schema of the event.
1327
+ */
1328
+ schema: string;
1329
+ session: ISession;
1330
+ time: ITime;
1331
+ tracker: ITracker;
1332
+ /**
1333
+ * The type of event.
1334
+ */
1335
+ type: "Engagement";
1336
+ user?: IUser;
1337
+ }
1338
+ /**
1339
+ * This file was automatically generated by json-schema-to-typescript.
1340
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1341
+ * and run json-schema-to-typescript to regenerate this file.
1342
+ */
1343
+ /**
1344
+ * Interaction with a widget component.
1345
+ */
1346
+ export interface IEngagementWidget {
1347
+ consents: IConsents;
1348
+ device: IDevice;
1349
+ engagement: IEngagement;
1350
+ /**
1351
+ * Event ID
1352
+ */
1353
+ id: string;
1354
+ object: {
1355
+ /**
1356
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
1357
+ */
1358
+ containerName?: string;
1359
+ /**
1360
+ * The size of the component.
1361
+ */
1362
+ elementSize?: "XS" | "S" | "M" | "L" | "XL";
1363
+ /**
1364
+ * The unique ID for this component.
1365
+ */
1366
+ id: string;
1367
+ /**
1368
+ * The name of the component.
1369
+ */
1370
+ name: string;
1371
+ /**
1372
+ * The parent’s primary direction along which components are laid out.
1373
+ */
1374
+ primaryAxis?: "horizontal" | "vertical";
1375
+ /**
1376
+ * The position of this component along the primary axis.
1377
+ */
1378
+ primaryPosition: number;
1379
+ /**
1380
+ * The position of this component along the secondary axis.
1381
+ */
1382
+ secondaryPosition: number;
1383
+ /**
1384
+ * The type of the component.
1385
+ */
1386
+ type: "Widget";
1387
+ };
1388
+ page: {
1389
+ content?: IContent;
1390
+ info: IPageRef;
1391
+ /**
1392
+ * The pageviewID.
1393
+ */
1394
+ pageviewId: string;
1395
+ referrer?: IPageRef;
1396
+ utm?: IUtmTags;
1397
+ };
1398
+ provider: IProvider;
1399
+ /**
1400
+ * The schema of the event.
1401
+ */
1402
+ schema: string;
1403
+ session: ISession;
1404
+ target?: {
1405
+ content?: IContent;
1406
+ info?: IPageRef;
1407
+ };
1408
+ time: ITime;
1409
+ tracker: ITracker;
1410
+ /**
1411
+ * The type of event.
1412
+ */
1413
+ type: "Engagement";
1414
+ user?: IUser;
1415
+ }
1416
+ /**
1417
+ * This file was automatically generated by json-schema-to-typescript.
1418
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1419
+ * and run json-schema-to-typescript to regenerate this file.
1420
+ */
1421
+ /**
1422
+ * Internal Pulse event to calculate pipeline latency
1423
+ */
1424
+ export interface IInternalProbe {
1425
+ /**
1426
+ * The unique identifier for the event.
1427
+ */
1428
+ id: string;
1429
+ object?: {
1430
+ /**
1431
+ * The type of the object.
1432
+ */
1433
+ type: "Probe";
1434
+ };
1435
+ provider: IProvider;
1436
+ /**
1437
+ * URL to the JSON schema for this event.
1438
+ */
1439
+ schema: string;
1440
+ /**
1441
+ * Numerical identifier of the Probe instance emitting the events.
1442
+ */
1443
+ senderId: number;
1444
+ /**
1445
+ * Monotonically increasing identifier that helps detect duplicates or gaps.
1446
+ */
1447
+ sequenceNumber: number;
1448
+ time: ITime;
1449
+ /**
1450
+ * The type of the event.
1451
+ */
1452
+ type: "Internal";
1453
+ }
1454
+ /* eslint-disable */
1455
+ /**
1456
+ * This file was automatically generated by json-schema-to-typescript.
1457
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1458
+ * and run json-schema-to-typescript to regenerate this file.
1459
+ */
1460
+ /**
1461
+ * engagement metrics for leave events.
1462
+ */
1463
+ export interface ILeave {
1464
+ /**
1465
+ * The total active time a user spends on the page in milliseconds. Active implies a timespan of less than 30 sec since triggering one of the following browser events(On web): 'mousedown', 'mousemove', 'keydown', 'scroll', 'touchstart'.
1466
+ */
1467
+ activityDurationMs: number;
1468
+ /**
1469
+ * The total time the user spent on the page in milliseconds.
1470
+ */
1471
+ durationMs: number;
1472
+ /**
1473
+ * The maximum relative scroll position of the article when the user leaves it.
1474
+ */
1475
+ maxObjectViewPercentage: number;
1476
+ /**
1477
+ * The maximum absolute scroll position of the top of the users' viewport on the page when the user left it, in pixels.
1478
+ */
1479
+ maxPageScrollPosition: number;
1480
+ /**
1481
+ * The maximum relative scroll position of the page when the user leaves it.
1482
+ */
1483
+ maxPageViewPercentage: number;
1484
+ /**
1485
+ * The relative scroll position of the article when the user leaves it.
1486
+ */
1487
+ objectViewPercentage: number;
1488
+ /**
1489
+ * The absolute scroll position of the top of the users' viewport on the page when the user left it, in pixels.
1490
+ */
1491
+ pageScrollPosition: number;
1492
+ /**
1493
+ * The relative scroll position of the page when the user leaves it.
1494
+ */
1495
+ pageViewPercentage: number;
1496
+ }
1497
+ /**
1498
+ * This file was automatically generated by json-schema-to-typescript.
1499
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1500
+ * and run json-schema-to-typescript to regenerate this file.
1501
+ */
1502
+ /**
1503
+ * A user leaving an article page.
1504
+ */
1505
+ export interface ILeaveArticle {
1506
+ consents: IConsents;
1507
+ device: IDevice;
1508
+ /**
1509
+ * Event ID
1510
+ */
1511
+ id: string;
1512
+ leave: ILeave;
1513
+ object: {
1514
+ authors?: string[];
1515
+ /**
1516
+ * The editorial category of this article.
1517
+ */
1518
+ category: string;
1519
+ /**
1520
+ * The hotness value that was set in the CMS.
1521
+ */
1522
+ hotness: number;
1523
+ /**
1524
+ * The unique ID of this page.
1525
+ */
1526
+ id: string;
1527
+ /**
1528
+ * True if scrolling up/down transitions to the next or previous article.
1529
+ */
1530
+ isStacked: boolean;
1531
+ /**
1532
+ * The publication date of this version of the article.
1533
+ */
1534
+ lastUpdatedDate: string;
1535
+ /**
1536
+ * The lifetime value that was set in the CMS.
1537
+ */
1538
+ lifetime: number;
1539
+ /**
1540
+ * The newsroom that published the article.
1541
+ */
1542
+ newsroom: string;
1543
+ /**
1544
+ * The publication date of the article.
1545
+ */
1546
+ publicationDate: string;
1547
+ /**
1548
+ * The name of the company that sponsored the article. Omitted if the article was not sponsored.
1549
+ */
1550
+ sponsor?: string;
1551
+ /**
1552
+ * The title of the page.
1553
+ */
1554
+ title: string;
1555
+ /**
1556
+ * The type of this page.
1557
+ */
1558
+ type: "Article";
1559
+ /**
1560
+ * The type of article.
1561
+ */
1562
+ variant: "Article" | "LiveArticle" | "Special";
1563
+ /**
1564
+ * The version counter of the article.
1565
+ */
1566
+ versionCounter: number;
1567
+ /**
1568
+ * The number of words in this version of the article.
1569
+ */
1570
+ wordCount: number;
1571
+ };
1572
+ page: {
1573
+ content: IContent;
1574
+ info: IPageRef;
1575
+ /**
1576
+ * The browser navigation that got the user to the current page.
1577
+ */
1578
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender" | "scroll";
1579
+ /**
1580
+ * The pageviewID.
1581
+ */
1582
+ pageviewId: string;
1583
+ referrer?: IPageRef;
1584
+ utm?: IUtmTags;
1585
+ };
1586
+ provider: IProvider;
1587
+ /**
1588
+ * The schema of the event.
1589
+ */
1590
+ schema: string;
1591
+ session: ISession;
1592
+ time: ITime;
1593
+ tracker: ITracker;
1594
+ /**
1595
+ * The type of page.
1596
+ */
1597
+ type: "Leave";
1598
+ user?: IUser;
1599
+ }
1600
+ /**
1601
+ * This file was automatically generated by json-schema-to-typescript.
1602
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1603
+ * and run json-schema-to-typescript to regenerate this file.
1604
+ */
1605
+ /**
1606
+ * A user leaving an audio page.
1607
+ */
1608
+ export interface ILeaveAudio {
1609
+ consents: IConsents;
1610
+ device: IDevice;
1611
+ /**
1612
+ * Event ID
1613
+ */
1614
+ id: string;
1615
+ leave: ILeave;
1616
+ object: {
1617
+ /**
1618
+ * The location of the page in the brand’s page hierarchy.
1619
+ */
1620
+ category: string;
1621
+ /**
1622
+ * The unique ID of this page.
1623
+ */
1624
+ id: string;
1625
+ /**
1626
+ * The ID of the playlist.
1627
+ */
1628
+ playlistId?: string;
1629
+ /**
1630
+ * The position of the video in the playlist.
1631
+ */
1632
+ playlistPosition?: number;
1633
+ /**
1634
+ * The title of the page.
1635
+ */
1636
+ title: string;
1637
+ /**
1638
+ * The type of this page.
1639
+ */
1640
+ type: "Audio";
1641
+ /**
1642
+ * The type of audio.
1643
+ */
1644
+ variant: "Podcast" | "Episode" | "Audiobook" | "AudiobookSample";
1645
+ };
1646
+ page: {
1647
+ content: IContent;
1648
+ info: IPageRef;
1649
+ /**
1650
+ * The browser navigation that got the user to the current page.
1651
+ */
1652
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
1653
+ /**
1654
+ * The pageviewID.
1655
+ */
1656
+ pageviewId: string;
1657
+ referrer?: IPageRef;
1658
+ utm?: IUtmTags;
1659
+ };
1660
+ provider: IProvider;
1661
+ /**
1662
+ * The schema of the event.
1663
+ */
1664
+ schema: string;
1665
+ session: ISession;
1666
+ time: ITime;
1667
+ tracker: ITracker;
1668
+ /**
1669
+ * The type of event.
1670
+ */
1671
+ type: "Leave";
1672
+ user?: IUser;
1673
+ }
1674
+ /**
1675
+ * This file was automatically generated by json-schema-to-typescript.
1676
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1677
+ * and run json-schema-to-typescript to regenerate this file.
1678
+ */
1679
+ /**
1680
+ * A user leaves an error page
1681
+ */
1682
+ export interface ILeaveError {
1683
+ consents: IConsents;
1684
+ device: IDevice;
1685
+ /**
1686
+ * Event ID
1687
+ */
1688
+ id: string;
1689
+ leave: ILeave;
1690
+ object: {
1691
+ /**
1692
+ * The location of the page in the brand’s page hierarchy.
1693
+ */
1694
+ category?: string;
1695
+ /**
1696
+ * The response code of the page.
1697
+ */
1698
+ errorCode: number;
1699
+ /**
1700
+ * The error message.
1701
+ */
1702
+ errorMessage: string;
1703
+ /**
1704
+ * The unique ID of this page.
1705
+ */
1706
+ id: string;
1707
+ /**
1708
+ * The title of the page.
1709
+ */
1710
+ title: string;
1711
+ /**
1712
+ * The type of this page.
1713
+ */
1714
+ type: "Error";
1715
+ };
1716
+ page: {
1717
+ info: IPageRef;
1718
+ /**
1719
+ * The browser navigation that got the user to the current page.
1720
+ */
1721
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
1722
+ /**
1723
+ * The pageviewID.
1724
+ */
1725
+ pageviewId: string;
1726
+ referrer?: IPageRef;
1727
+ utm?: IUtmTags;
1728
+ };
1729
+ provider: IProvider;
1730
+ /**
1731
+ * The schema of the event.
1732
+ */
1733
+ schema: string;
1734
+ session: ISession;
1735
+ time: ITime;
1736
+ tracker: ITracker;
1737
+ /**
1738
+ * The event type
1739
+ */
1740
+ type: "Leave";
1741
+ user?: IUser;
1742
+ }
1743
+ /**
1744
+ * This file was automatically generated by json-schema-to-typescript.
1745
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1746
+ * and run json-schema-to-typescript to regenerate this file.
1747
+ */
1748
+ /**
1749
+ * A user leaves the frontpage.
1750
+ */
1751
+ export interface ILeaveFrontpage {
1752
+ consents: IConsents;
1753
+ device: IDevice;
1754
+ /**
1755
+ * Event ID
1756
+ */
1757
+ id: string;
1758
+ leave: ILeave;
1759
+ object: {
1760
+ /**
1761
+ * The location of the page in the brand’s page hierarchy.
1762
+ */
1763
+ category?: string;
1764
+ /**
1765
+ * The engine producing this listing. Use “editorial” for manually curated lists.
1766
+ */
1767
+ contentSource: "capi" | "curate" | "elasticSearch" | "editorial";
1768
+ /**
1769
+ * The unique ID of this page.
1770
+ */
1771
+ id: string;
1772
+ /**
1773
+ * True if list is populated indefinitely.
1774
+ */
1775
+ isInfinite: boolean;
1776
+ /**
1777
+ * The total number of items in the listing, or -1 if unknown.
1778
+ */
1779
+ itemsTotal: number;
1780
+ /**
1781
+ * Indicates how results are sorted. Use “editorial” for manually curated lists.
1782
+ */
1783
+ sortingMethod: "time" | "editorial" | "relevance" | "alphabetical";
1784
+ /**
1785
+ * The title of the page.
1786
+ */
1787
+ title: string;
1788
+ /**
1789
+ * The type of this page.
1790
+ */
1791
+ type: "Frontpage";
1792
+ };
1793
+ page: {
1794
+ info: IPageRef;
1795
+ /**
1796
+ * The browser navigation that got the user to the current page.
1797
+ */
1798
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
1799
+ /**
1800
+ * The pageviewID.
1801
+ */
1802
+ pageviewId: string;
1803
+ referrer?: IPageRef;
1804
+ utm?: IUtmTags;
1805
+ };
1806
+ provider: IProvider;
1807
+ /**
1808
+ * The schema of the event.
1809
+ */
1810
+ schema: string;
1811
+ session: ISession;
1812
+ time: ITime;
1813
+ tracker: ITracker;
1814
+ /**
1815
+ * The type of event.
1816
+ */
1817
+ type: "Leave";
1818
+ user?: IUser;
1819
+ }
1820
+ /**
1821
+ * This file was automatically generated by json-schema-to-typescript.
1822
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1823
+ * and run json-schema-to-typescript to regenerate this file.
1824
+ */
1825
+ /**
1826
+ * A user leaves a landingpage.
1827
+ */
1828
+ export interface ILeaveLandingpage {
1829
+ consents: IConsents;
1830
+ device: IDevice;
1831
+ /**
1832
+ * Event ID
1833
+ */
1834
+ id: string;
1835
+ leave: ILeave;
1836
+ object: {
1837
+ /**
1838
+ * The name of the landing page campaign.
1839
+ */
1840
+ campaign?: string;
1841
+ /**
1842
+ * The location of the page in the brand’s page hierarchy.
1843
+ */
1844
+ category?: string;
1845
+ /**
1846
+ * The unique ID of this page.
1847
+ */
1848
+ id: string;
1849
+ /**
1850
+ * The title of the page.
1851
+ */
1852
+ title: string;
1853
+ /**
1854
+ * The type of this page.
1855
+ */
1856
+ type: "Landingpage";
1857
+ };
1858
+ page: {
1859
+ info: IPageRef;
1860
+ /**
1861
+ * The browser navigation that got the user to the current page.
1862
+ */
1863
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
1864
+ /**
1865
+ * The pageviewID.
1866
+ */
1867
+ pageviewId: string;
1868
+ referrer?: IPageRef;
1869
+ utm?: IUtmTags;
1870
+ };
1871
+ provider: IProvider;
1872
+ /**
1873
+ * The schema of the event.
1874
+ */
1875
+ schema: string;
1876
+ session: ISession;
1877
+ time: ITime;
1878
+ tracker: ITracker;
1879
+ /**
1880
+ * The type of page.
1881
+ */
1882
+ type: "Leave";
1883
+ user?: IUser;
1884
+ }
1885
+ /**
1886
+ * This file was automatically generated by json-schema-to-typescript.
1887
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1888
+ * and run json-schema-to-typescript to regenerate this file.
1889
+ */
1890
+ /**
1891
+ * A user leaving a listing page.
1892
+ */
1893
+ export interface ILeaveListing {
1894
+ consents: IConsents;
1895
+ device: IDevice;
1896
+ /**
1897
+ * Event ID
1898
+ */
1899
+ id: string;
1900
+ leave: ILeave;
1901
+ object: {
1902
+ /**
1903
+ * The location of the page in the brand’s page hierarchy.
1904
+ */
1905
+ category?: string;
1906
+ /**
1907
+ * The engine producing this listing. Use “editorial” for manually curated lists.
1908
+ */
1909
+ contentSource: "capi" | "curate" | "elasticSearch" | "editorial";
1910
+ /**
1911
+ * The unique ID of this page.
1912
+ */
1913
+ id: string;
1914
+ /**
1915
+ * True if list is populated indefinitely.
1916
+ */
1917
+ isInfinite: boolean;
1918
+ /**
1919
+ * The total number of items in the listing, or -1 if unknown.
1920
+ */
1921
+ itemsTotal: number;
1922
+ /**
1923
+ * Current pagination index. Zero if results are not paged.
1924
+ */
1925
+ pageNumber: number;
1926
+ /**
1927
+ * Indicates how results are sorted. Use “editorial” for manually curated lists.
1928
+ */
1929
+ sortingMethod: "time" | "editorial" | "relevance" | "alphabetical";
1930
+ /**
1931
+ * The title of the page.
1932
+ */
1933
+ title: string;
1934
+ /**
1935
+ * The type of this page.
1936
+ */
1937
+ type: "Listing";
1938
+ };
1939
+ page: {
1940
+ info: IPageRef;
1941
+ /**
1942
+ * The browser navigation that got the user to the current page.
1943
+ */
1944
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
1945
+ /**
1946
+ * The pageviewID.
1947
+ */
1948
+ pageviewId: string;
1949
+ referrer?: IPageRef;
1950
+ utm?: IUtmTags;
1951
+ };
1952
+ provider: IProvider;
1953
+ /**
1954
+ * The schema of the event.
1955
+ */
1956
+ schema: string;
1957
+ session: ISession;
1958
+ time: ITime;
1959
+ tracker: ITracker;
1960
+ /**
1961
+ * The type of the event.
1962
+ */
1963
+ type: "Leave";
1964
+ user?: IUser;
1965
+ }
1966
+ /**
1967
+ * This file was automatically generated by json-schema-to-typescript.
1968
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
1969
+ * and run json-schema-to-typescript to regenerate this file.
1970
+ */
1971
+ /**
1972
+ * A user leaving a page preventing them from accessing a premium article.
1973
+ */
1974
+ export interface ILeaveLockedArticle {
1975
+ consents: IConsents;
1976
+ device: IDevice;
1977
+ /**
1978
+ * Event ID
1979
+ */
1980
+ id: string;
1981
+ leave: ILeave;
1982
+ object: {
1983
+ authors?: string[];
1984
+ /**
1985
+ * The location of the page in the brand’s page hierarchy.
1986
+ */
1987
+ category: string;
1988
+ /**
1989
+ * The hotness value that was set in the CMS.
1990
+ */
1991
+ hotness: number;
1992
+ /**
1993
+ * The unique ID of this page.
1994
+ */
1995
+ id: string;
1996
+ /**
1997
+ * True if scrolling up/down transitions to the next or previous article.
1998
+ */
1999
+ isStacked: boolean;
2000
+ /**
2001
+ * The publication date of this version of the article.
2002
+ */
2003
+ lastUpdatedDate: string;
2004
+ /**
2005
+ * The lifetime value that was set in the CMS.
2006
+ */
2007
+ lifetime: number;
2008
+ /**
2009
+ * The newsroom that published the article.
2010
+ */
2011
+ newsroom: string;
2012
+ /**
2013
+ * The reason the user saw this paywall instead of the content.
2014
+ */
2015
+ paywallType: "paid" | "metered" | "login" | "free" | "dynamic";
2016
+ /**
2017
+ * The publication date of the article.
2018
+ */
2019
+ publishedDate: string;
2020
+ /**
2021
+ * The name of the company that sponsored the article. Omitted if the article was not sponsored.
2022
+ */
2023
+ sponsor?: string;
2024
+ /**
2025
+ * The title of the page.
2026
+ */
2027
+ title: string;
2028
+ /**
2029
+ * The type of this page.
2030
+ */
2031
+ type: "LockedArticle";
2032
+ /**
2033
+ * The type of article.
2034
+ */
2035
+ variant: "Article" | "LiveArticle" | "Special";
2036
+ /**
2037
+ * The version counter of the article.
2038
+ */
2039
+ versionCounter: number;
2040
+ /**
2041
+ * The number of words in this version of the article.
2042
+ */
2043
+ wordCount: number;
2044
+ };
2045
+ page: {
2046
+ content: IContent;
2047
+ info: IPageRef;
2048
+ /**
2049
+ * The browser navigation that got the user to the current page.
2050
+ */
2051
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender" | "scroll";
2052
+ /**
2053
+ * The pageviewID.
2054
+ */
2055
+ pageviewId: string;
2056
+ referrer?: IPageRef;
2057
+ utm?: IUtmTags;
2058
+ };
2059
+ provider: IProvider;
2060
+ /**
2061
+ * The schema of the event.
2062
+ */
2063
+ schema: string;
2064
+ session: ISession;
2065
+ time: ITime;
2066
+ tracker: ITracker;
2067
+ /**
2068
+ * The type of the event.
2069
+ */
2070
+ type: "Leave";
2071
+ user?: IUser;
2072
+ }
2073
+ /**
2074
+ * This file was automatically generated by json-schema-to-typescript.
2075
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2076
+ * and run json-schema-to-typescript to regenerate this file.
2077
+ */
2078
+ /**
2079
+ * A user leaving a page that prevents them from accessing audio content.
2080
+ */
2081
+ export interface ILeaveLockedAudio {
2082
+ consents: IConsents;
2083
+ device: IDevice;
2084
+ /**
2085
+ * Event ID
2086
+ */
2087
+ id: string;
2088
+ leave: ILeave;
2089
+ object: {
2090
+ /**
2091
+ * The editorial category of this audio content.
2092
+ */
2093
+ category: string;
2094
+ /**
2095
+ * The unique ID of this page.
2096
+ */
2097
+ id: string;
2098
+ /**
2099
+ * The reason the user saw this paywall instead of the content.
2100
+ */
2101
+ paywallType: "paid" | "metered" | "login" | "free" | "dynamic";
2102
+ /**
2103
+ * The ID of the playlist.
2104
+ */
2105
+ playlistId?: string;
2106
+ /**
2107
+ * The position of the video in the playlist.
2108
+ */
2109
+ playlistPosition?: number;
2110
+ /**
2111
+ * The title of the page.
2112
+ */
2113
+ title: string;
2114
+ /**
2115
+ * The type of this page.
2116
+ */
2117
+ type: "LockedAudio";
2118
+ /**
2119
+ * The type of audio.
2120
+ */
2121
+ variant: "Podcast" | "Episode" | "Audiobook" | "AudiobookSample";
2122
+ };
2123
+ page: {
2124
+ content: IContent;
2125
+ info: IPageRef;
2126
+ /**
2127
+ * The browser navigation that got the user to the current page.
2128
+ */
2129
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
2130
+ /**
2131
+ * The pageviewID.
2132
+ */
2133
+ pageviewId: string;
2134
+ referrer?: IPageRef;
2135
+ utm?: IUtmTags;
2136
+ };
2137
+ provider: IProvider;
2138
+ /**
2139
+ * The schema of the event.
2140
+ */
2141
+ schema: string;
2142
+ session: ISession;
2143
+ time: ITime;
2144
+ tracker: ITracker;
2145
+ /**
2146
+ * The type of event.
2147
+ */
2148
+ type: "Leave";
2149
+ user?: IUser;
2150
+ }
2151
+ /**
2152
+ * This file was automatically generated by json-schema-to-typescript.
2153
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2154
+ * and run json-schema-to-typescript to regenerate this file.
2155
+ */
2156
+ /**
2157
+ * A user leaving a page preventing them from accessing premium video content.
2158
+ */
2159
+ export interface ILeaveLockedVideo {
2160
+ consents: IConsents;
2161
+ device: IDevice;
2162
+ /**
2163
+ * Event ID
2164
+ */
2165
+ id: string;
2166
+ leave: ILeave;
2167
+ object: {
2168
+ /**
2169
+ * The editorial category of the video content being blocked.
2170
+ */
2171
+ category: string;
2172
+ /**
2173
+ * The unique ID of this page.
2174
+ */
2175
+ id: string;
2176
+ /**
2177
+ * The reason the user saw this paywall instead of the content.
2178
+ */
2179
+ paywallType: "paid" | "metered" | "login" | "free" | "dynamic";
2180
+ /**
2181
+ * The ID of the playlist.
2182
+ */
2183
+ playlistId?: string;
2184
+ /**
2185
+ * The position of the video in the playlist.
2186
+ */
2187
+ playlistPosition: number;
2188
+ /**
2189
+ * The title of the page.
2190
+ */
2191
+ title: string;
2192
+ /**
2193
+ * The type of this page.
2194
+ */
2195
+ type: "LockedVideo";
2196
+ /**
2197
+ * The type of video.
2198
+ */
2199
+ variant: "Story" | "Series" | "Movie";
2200
+ };
2201
+ page: {
2202
+ content: IContent;
2203
+ info: IPageRef;
2204
+ /**
2205
+ * The browser navigation that got the user to the current page.
2206
+ */
2207
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
2208
+ /**
2209
+ * The pageviewID.
2210
+ */
2211
+ pageviewId: string;
2212
+ referrer?: IPageRef;
2213
+ utm?: IUtmTags;
2214
+ };
2215
+ provider: IProvider;
2216
+ /**
2217
+ * The schema of the event.
2218
+ */
2219
+ schema: string;
2220
+ session: ISession;
2221
+ time: ITime;
2222
+ tracker: ITracker;
2223
+ /**
2224
+ * The type of event.
2225
+ */
2226
+ type: "Leave";
2227
+ user?: IUser;
2228
+ }
2229
+ /**
2230
+ * This file was automatically generated by json-schema-to-typescript.
2231
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2232
+ * and run json-schema-to-typescript to regenerate this file.
2233
+ */
2234
+ /**
2235
+ * An event tracking the user exiting a generic page.
2236
+ */
2237
+ export interface ILeavePage {
2238
+ consents: IConsents;
2239
+ device: IDevice;
2240
+ /**
2241
+ * Event ID
2242
+ */
2243
+ id: string;
2244
+ leave: ILeave;
2245
+ object: {
2246
+ /**
2247
+ * The location of the page in the brand’s page hierarchy.
2248
+ */
2249
+ category?: string;
2250
+ id: string;
2251
+ /**
2252
+ * The title of the page.
2253
+ */
2254
+ title: string;
2255
+ /**
2256
+ * The type of this page.
2257
+ */
2258
+ type: "Page";
2259
+ };
2260
+ page: {
2261
+ info: IPageRef;
2262
+ /**
2263
+ * The browser navigation that got the user to the current page.
2264
+ */
2265
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
2266
+ /**
2267
+ * The pageviewID.
2268
+ */
2269
+ pageviewId: string;
2270
+ referrer?: IPageRef;
2271
+ utm?: IUtmTags;
2272
+ };
2273
+ provider: IProvider;
2274
+ /**
2275
+ * The schema of the event.
2276
+ */
2277
+ schema: string;
2278
+ session: ISession;
2279
+ time: ITime;
2280
+ tracker: ITracker;
2281
+ /**
2282
+ * The type of event.
2283
+ */
2284
+ type: "Leave";
2285
+ user?: IUser;
2286
+ }
2287
+ /**
2288
+ * This file was automatically generated by json-schema-to-typescript.
2289
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2290
+ * and run json-schema-to-typescript to regenerate this file.
2291
+ */
2292
+ /**
2293
+ * A user leaving a title page. (currently only used by TVnu)
2294
+ */
2295
+ export interface ILeaveTitle {
2296
+ consents: IConsents;
2297
+ device: IDevice;
2298
+ /**
2299
+ * Event ID
2300
+ */
2301
+ id: string;
2302
+ leave: ILeave;
2303
+ object: {
2304
+ /**
2305
+ * The editorial category of this title.
2306
+ */
2307
+ category: string;
2308
+ /**
2309
+ * The unique ID of this page.
2310
+ */
2311
+ id: string;
2312
+ linearChannel?: string[];
2313
+ playProvider?: string[];
2314
+ /**
2315
+ * The name of the company that sponsored the title. Omitted if the title was not sponsored.
2316
+ */
2317
+ sponsor?: string;
2318
+ tags?: string[];
2319
+ /**
2320
+ * The title of the page.
2321
+ */
2322
+ title: string;
2323
+ /**
2324
+ * The type of this page.
2325
+ */
2326
+ type: "Title";
2327
+ };
2328
+ page: {
2329
+ info: IPageRef;
2330
+ /**
2331
+ * The browser navigation that got the user to the current page.
2332
+ */
2333
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
2334
+ /**
2335
+ * The pageviewID.
2336
+ */
2337
+ pageviewId: string;
2338
+ referrer?: IPageRef;
2339
+ utm?: IUtmTags;
2340
+ };
2341
+ provider: IProvider;
2342
+ /**
2343
+ * The schema of the event.
2344
+ */
2345
+ schema: string;
2346
+ session: ISession;
2347
+ time: ITime;
2348
+ tracker: ITracker;
2349
+ /**
2350
+ * The type of event.
2351
+ */
2352
+ type: "Leave";
2353
+ user?: IUser;
2354
+ }
2355
+ /**
2356
+ * This file was automatically generated by json-schema-to-typescript.
2357
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2358
+ * and run json-schema-to-typescript to regenerate this file.
2359
+ */
2360
+ /**
2361
+ * A user leaving a video page.
2362
+ */
2363
+ export interface ILeaveVideo {
2364
+ consents: IConsents;
2365
+ device: IDevice;
2366
+ /**
2367
+ * Event ID
2368
+ */
2369
+ id: string;
2370
+ leave: ILeave;
2371
+ object: {
2372
+ /**
2373
+ * The editorial category of this video.
2374
+ */
2375
+ category: string;
2376
+ /**
2377
+ * The unique ID of this page.
2378
+ */
2379
+ id: string;
2380
+ /**
2381
+ * The ID of the playlist.
2382
+ */
2383
+ playlistId?: string;
2384
+ /**
2385
+ * The position of the video in the playlist.
2386
+ */
2387
+ playlistPosition?: number;
2388
+ /**
2389
+ * The title of the page.
2390
+ */
2391
+ title: string;
2392
+ /**
2393
+ * The type of this page.
2394
+ */
2395
+ type: "Video";
2396
+ /**
2397
+ * The type of Video.
2398
+ */
2399
+ variant: "Story" | "Series" | "Movie";
2400
+ };
2401
+ page: {
2402
+ content: IContent;
2403
+ info: IPageRef;
2404
+ /**
2405
+ * The browser navigation that got the user to the current page.
2406
+ */
2407
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
2408
+ /**
2409
+ * The pageviewID.
2410
+ */
2411
+ pageviewId: string;
2412
+ referrer?: IPageRef;
2413
+ utm?: IUtmTags;
2414
+ };
2415
+ provider: IProvider;
2416
+ /**
2417
+ * The schema of the event.
2418
+ */
2419
+ schema: string;
2420
+ session: ISession;
2421
+ time: ITime;
2422
+ tracker: ITracker;
2423
+ /**
2424
+ * The type of page.
2425
+ */
2426
+ type: "Leave";
2427
+ user?: IUser;
2428
+ }
2429
+ /* eslint-disable */
2430
+ /**
2431
+ * This file was automatically generated by json-schema-to-typescript.
2432
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2433
+ * and run json-schema-to-typescript to regenerate this file.
2434
+ */
2435
+ /**
2436
+ * Information about A/B testing groups.
2437
+ */
2438
+ export type IExperiments = {
2439
+ /**
2440
+ * The name of the experiment
2441
+ */
2442
+ name: string;
2443
+ /**
2444
+ * The level of the experiment variant.
2445
+ */
2446
+ variant: string;
2447
+ }[];
2448
+ /**
2449
+ * A user navigating away from a weather page.
2450
+ */
2451
+ export interface ILeaveWeather {
2452
+ experiments?: IExperiments;
2453
+ /**
2454
+ * Event ID
2455
+ */
2456
+ id: string;
2457
+ leave: ILeave;
2458
+ metrics?: IMetrics;
2459
+ object: {
2460
+ /**
2461
+ * The type of the schema.
2462
+ */
2463
+ type: "Weather";
2464
+ };
2465
+ provider: IProvider;
2466
+ /**
2467
+ * The schema of the event.
2468
+ */
2469
+ schema: string;
2470
+ time: ITime;
2471
+ tracker: ITracker;
2472
+ /**
2473
+ * The type of the event.
2474
+ */
2475
+ type: "Leave";
2476
+ user?: IUser;
2477
+ }
2478
+ /**
2479
+ * This file was automatically generated by json-schema-to-typescript.
2480
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2481
+ * and run json-schema-to-typescript to regenerate this file.
2482
+ */
2483
+ /**
2484
+ * A space where an advertisement can be served.
2485
+ */
2486
+ export interface IViewAdSlot {
2487
+ consents: IConsents;
2488
+ device: IDevice;
2489
+ /**
2490
+ * Event ID
2491
+ */
2492
+ id: string;
2493
+ object: {
2494
+ availableFormats?: ("preroll" | "bumper" | "board" | "netboard" | "wallpaper" | "fullscreen" | "bannerXL" | "broadband" | "skyscraper" | "horseshoe" | "pauseBanner" | "snapchat" | "foodChannel")[];
2495
+ /**
2496
+ * The identifier of the player.
2497
+ */
2498
+ playerId: string;
2499
+ /**
2500
+ * The identifier of the ad request.
2501
+ */
2502
+ queuePointId: string;
2503
+ /**
2504
+ * The type of object.
2505
+ */
2506
+ type: "AdSlot";
2507
+ };
2508
+ page: {
2509
+ content?: IContent;
2510
+ info: IPageRef;
2511
+ /**
2512
+ * The pageviewID.
2513
+ */
2514
+ pageviewId: string;
2515
+ referrer?: IPageRef;
2516
+ utm?: IUtmTags;
2517
+ };
2518
+ provider: IProvider;
2519
+ /**
2520
+ * The schema of the event.
2521
+ */
2522
+ schema: string;
2523
+ session: ISession;
2524
+ time: ITime;
2525
+ tracker: ITracker;
2526
+ /**
2527
+ * The type of event.
2528
+ */
2529
+ type: "View";
2530
+ user?: IUser;
2531
+ }
2532
+ /**
2533
+ * This file was automatically generated by json-schema-to-typescript.
2534
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2535
+ * and run json-schema-to-typescript to regenerate this file.
2536
+ */
2537
+ /**
2538
+ * A page dedicated to presenting an article.
2539
+ */
2540
+ export interface IViewArticle {
2541
+ consents: IConsents;
2542
+ device: IDevice;
2543
+ /**
2544
+ * Event ID
2545
+ */
2546
+ id: string;
2547
+ object: {
2548
+ authors?: string[];
2549
+ /**
2550
+ * The editorial category of this article.
2551
+ */
2552
+ category: string;
2553
+ /**
2554
+ * The hotness value that was set in the CMS.
2555
+ */
2556
+ hotness: number;
2557
+ /**
2558
+ * The unique ID of this page.
2559
+ */
2560
+ id: string;
2561
+ /**
2562
+ * True if scrolling up/down transitions to the next or previous article.
2563
+ */
2564
+ isStacked: boolean;
2565
+ /**
2566
+ * The publication date of this version of the article.
2567
+ */
2568
+ lastUpdatedDate: string;
2569
+ /**
2570
+ * The lifetime value that was set in the CMS.
2571
+ */
2572
+ lifetime: number;
2573
+ /**
2574
+ * The newsroom that published the article.
2575
+ */
2576
+ newsroom: string;
2577
+ /**
2578
+ * The publication date of the article.
2579
+ */
2580
+ publicationDate: string;
2581
+ /**
2582
+ * The name of the company that sponsored the article. Empty if the article was not sponsored.
2583
+ */
2584
+ sponsor?: string;
2585
+ /**
2586
+ * The title of the page.
2587
+ */
2588
+ title: string;
2589
+ /**
2590
+ * The type of this page.
2591
+ */
2592
+ type: "Article";
2593
+ /**
2594
+ * The type of article.
2595
+ */
2596
+ variant: "Article" | "LiveArticle" | "Special";
2597
+ /**
2598
+ * The version counter of the article.
2599
+ */
2600
+ versionCounter: number;
2601
+ /**
2602
+ * The number of words in this version of the article.
2603
+ */
2604
+ wordCount: number;
2605
+ };
2606
+ page: {
2607
+ content: IContent;
2608
+ info: IPageRef;
2609
+ /**
2610
+ * The browser navigation that got the user to the current page.
2611
+ */
2612
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender" | "scroll";
2613
+ /**
2614
+ * The pageviewID.
2615
+ */
2616
+ pageviewId: string;
2617
+ referrer?: IPageRef;
2618
+ utm?: IUtmTags;
2619
+ };
2620
+ provider: IProvider;
2621
+ /**
2622
+ * The schema of the event.
2623
+ */
2624
+ schema: string;
2625
+ session: ISession;
2626
+ time: ITime;
2627
+ tracker: ITracker;
2628
+ /**
2629
+ * The type of the event.
2630
+ */
2631
+ type: "View";
2632
+ user?: IUser;
2633
+ }
2634
+ /**
2635
+ * This file was automatically generated by json-schema-to-typescript.
2636
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2637
+ * and run json-schema-to-typescript to regenerate this file.
2638
+ */
2639
+ /**
2640
+ * A page dedicated to presenting a single piece of audio content.
2641
+ */
2642
+ export interface IViewAudio {
2643
+ consents: IConsents;
2644
+ device: IDevice;
2645
+ /**
2646
+ * Event ID
2647
+ */
2648
+ id: string;
2649
+ object: {
2650
+ /**
2651
+ * The location of the page in the brand’s page hierarchy.
2652
+ */
2653
+ category: string;
2654
+ /**
2655
+ * The unique ID of this page.
2656
+ */
2657
+ id: string;
2658
+ /**
2659
+ * The ID of the playlist.
2660
+ */
2661
+ playlistId?: string;
2662
+ /**
2663
+ * The position of the video in the playlist.
2664
+ */
2665
+ playlistPosition?: number;
2666
+ /**
2667
+ * The title of the page.
2668
+ */
2669
+ title: string;
2670
+ /**
2671
+ * The type of this page.
2672
+ */
2673
+ type: "Audio";
2674
+ /**
2675
+ * The type of audio.
2676
+ */
2677
+ variant: "Podcast" | "Episode" | "Audiobook" | "AudiobookSample";
2678
+ };
2679
+ page: {
2680
+ content: IContent;
2681
+ info: IPageRef;
2682
+ /**
2683
+ * The browser navigation that got the user to the current page.
2684
+ */
2685
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
2686
+ /**
2687
+ * The pageviewID.
2688
+ */
2689
+ pageviewId: string;
2690
+ referrer?: IPageRef;
2691
+ utm?: IUtmTags;
2692
+ };
2693
+ provider: IProvider;
2694
+ /**
2695
+ * The schema of the event.
2696
+ */
2697
+ schema: string;
2698
+ session: ISession;
2699
+ time: ITime;
2700
+ tracker: ITracker;
2701
+ type: "View";
2702
+ user?: IUser;
2703
+ }
2704
+ /**
2705
+ * This file was automatically generated by json-schema-to-typescript.
2706
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2707
+ * and run json-schema-to-typescript to regenerate this file.
2708
+ */
2709
+ /**
2710
+ * A component for audio playback.
2711
+ */
2712
+ export interface IViewAudioPlayer {
2713
+ consents: IConsents;
2714
+ device: IDevice;
2715
+ /**
2716
+ * Event ID
2717
+ */
2718
+ id: string;
2719
+ object: {
2720
+ /**
2721
+ * The closest parent container used for traffic attribution.
2722
+ */
2723
+ containerName?: string;
2724
+ /**
2725
+ * How the content is presented on the page.
2726
+ */
2727
+ displayMode: "normal" | "fullscreen" | "minimized" | "background" | "chromecast" | "airplay" | "carplay";
2728
+ /**
2729
+ * The total duration of the track in milliseconds. Use -1 for live streams with unknown duration.
2730
+ */
2731
+ durationMs: number;
2732
+ /**
2733
+ * The size of the component.
2734
+ */
2735
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
2736
+ /**
2737
+ * The unique ID for this component.
2738
+ */
2739
+ id: string;
2740
+ /**
2741
+ * True if the video starts to play automatically.
2742
+ */
2743
+ isAutoplay: boolean;
2744
+ /**
2745
+ * True if the video is a live stream.
2746
+ */
2747
+ isLive: boolean;
2748
+ /**
2749
+ * True if the player was first created on this page.
2750
+ */
2751
+ isNewPlayer: boolean;
2752
+ /**
2753
+ * True if the video was loaded automatically after a previous video was finished.
2754
+ */
2755
+ isPlayNext: boolean;
2756
+ /**
2757
+ * The name of the component.
2758
+ */
2759
+ name: string;
2760
+ /**
2761
+ * The current playback speed.
2762
+ */
2763
+ playbackSpeed: number;
2764
+ /**
2765
+ * A unique ID for this player instance.
2766
+ */
2767
+ playerId: string;
2768
+ /**
2769
+ * Indicates what the player is doing at the time of impression.
2770
+ */
2771
+ playerState: "playing" | "paused" | "buffering" | "failed";
2772
+ playingBefore?: IContent;
2773
+ playingNow: IContent;
2774
+ /**
2775
+ * The position of the video in the playlist
2776
+ */
2777
+ playlistPosition?: number;
2778
+ /**
2779
+ * The offset of the current playback from the start of the video in seconds. Set to -1 for live events.
2780
+ */
2781
+ position: number;
2782
+ /**
2783
+ * The current playback’s audio quality.
2784
+ */
2785
+ quality: string;
2786
+ /**
2787
+ * The type of the component.
2788
+ */
2789
+ type: "AudioPlayer";
2790
+ };
2791
+ page: {
2792
+ content?: IContent;
2793
+ info: IPageRef;
2794
+ /**
2795
+ * The pageviewID.
2796
+ */
2797
+ pageviewId: string;
2798
+ referrer?: IPageRef;
2799
+ utm?: IUtmTags;
2800
+ };
2801
+ provider: IProvider;
2802
+ /**
2803
+ * The schema of the event.
2804
+ */
2805
+ schema: string;
2806
+ session: ISession;
2807
+ time: ITime;
2808
+ tracker: ITracker;
2809
+ /**
2810
+ * The type of event
2811
+ */
2812
+ type: "View";
2813
+ user?: IUser;
2814
+ }
2815
+ /**
2816
+ * This file was automatically generated by json-schema-to-typescript.
2817
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2818
+ * and run json-schema-to-typescript to regenerate this file.
2819
+ */
2820
+ /**
2821
+ * A error page.
2822
+ */
2823
+ export interface IViewError {
2824
+ consents: IConsents;
2825
+ device: IDevice;
2826
+ /**
2827
+ * Event ID
2828
+ */
2829
+ id: string;
2830
+ object: {
2831
+ /**
2832
+ * The location of the page in the brand’s page hierarchy.
2833
+ */
2834
+ category?: string;
2835
+ /**
2836
+ * The response code of the page.
2837
+ */
2838
+ errorCode: number;
2839
+ /**
2840
+ * The error message.
2841
+ */
2842
+ errorMessage: string;
2843
+ /**
2844
+ * The unique ID of this page.
2845
+ */
2846
+ id: string;
2847
+ /**
2848
+ * The title of the page.
2849
+ */
2850
+ title: string;
2851
+ /**
2852
+ * The type of this page.
2853
+ */
2854
+ type: "Error";
2855
+ };
2856
+ page: {
2857
+ info: IPageRef;
2858
+ /**
2859
+ * The browser navigation that got the user to the current page.
2860
+ */
2861
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender" | "scroll";
2862
+ /**
2863
+ * The pageviewID.
2864
+ */
2865
+ pageviewId: string;
2866
+ referrer?: IPageRef;
2867
+ utm?: IUtmTags;
2868
+ };
2869
+ provider: IProvider;
2870
+ /**
2871
+ * The schema of the event.
2872
+ */
2873
+ schema: string;
2874
+ session: ISession;
2875
+ time: ITime;
2876
+ tracker: ITracker;
2877
+ type: "View";
2878
+ user?: IUser;
2879
+ }
2880
+ /**
2881
+ * This file was automatically generated by json-schema-to-typescript.
2882
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
2883
+ * and run json-schema-to-typescript to regenerate this file.
2884
+ */
2885
+ /**
2886
+ * A form field to collect declared data.
2887
+ */
2888
+ export interface IViewForm {
2889
+ consents: IConsents;
2890
+ device: IDevice;
2891
+ /**
2892
+ * Event ID
2893
+ */
2894
+ id: string;
2895
+ object: {
2896
+ /**
2897
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
2898
+ */
2899
+ containerName: string;
2900
+ /**
2901
+ * The size of the component.
2902
+ */
2903
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
2904
+ fields: {
2905
+ /**
2906
+ * The default value of the field.
2907
+ */
2908
+ default?: string;
2909
+ /**
2910
+ * The name of the field.
2911
+ */
2912
+ name: string;
2913
+ /**
2914
+ * True if the field is required.
2915
+ */
2916
+ required: boolean;
2917
+ /**
2918
+ * The data type of the field.
2919
+ */
2920
+ type: "string" | "number" | "boolean";
2921
+ }[];
2922
+ /**
2923
+ * Indicator if the widget was visible at pageload (“above”) or if the user had to scroll to it (“below”).
2924
+ */
2925
+ foldPosition: "above" | "below" | "unknown";
2926
+ /**
2927
+ * The unique ID for this component.
2928
+ */
2929
+ id: string;
2930
+ /**
2931
+ * The name of the component.
2932
+ */
2933
+ name: string;
2934
+ /**
2935
+ * The type of the component.
2936
+ */
2937
+ type: "Form";
2938
+ };
2939
+ page: {
2940
+ content?: IContent;
2941
+ info: IPageRef;
2942
+ /**
2943
+ * The pageviewID.
2944
+ */
2945
+ pageviewId: string;
2946
+ referrer?: IPageRef;
2947
+ utm?: IUtmTags;
2948
+ };
2949
+ provider: IProvider;
2950
+ /**
2951
+ * The schema of the event.
2952
+ */
2953
+ schema: string;
2954
+ session: ISession;
2955
+ target?: {
2956
+ content: IContent;
2957
+ info?: IPageRef;
2958
+ };
2959
+ time: ITime;
2960
+ tracker: ITracker;
2961
+ /**
2962
+ * The type of event.
2963
+ */
2964
+ type: "View";
2965
+ user?: IUser;
2966
+ }
2967
+ export interface IViewFrontpage {
2968
+ consents: IConsents;
2969
+ device: IDevice;
2970
+ experiments?: IExperiments;
2971
+ /**
2972
+ * Event ID
2973
+ */
2974
+ id: string;
2975
+ metrics?: IMetrics;
2976
+ object: {
2977
+ /**
2978
+ * The location of the page in the brand’s page hierarchy.
2979
+ */
2980
+ category?: string;
2981
+ /**
2982
+ * The engine producing this listing. Use “editorial” for manually curated lists.
2983
+ */
2984
+ contentSource: "capi" | "curate" | "elasticSearch" | "editorial";
2985
+ /**
2986
+ * The unique ID of this page
2987
+ */
2988
+ id: string;
2989
+ /**
2990
+ * True if list is populated indefinitely (doomscroll).
2991
+ */
2992
+ isInfinite: boolean;
2993
+ /**
2994
+ * The total number of items in the listing, or -1 if unknown.
2995
+ */
2996
+ itemsTotal: number;
2997
+ /**
2998
+ * The browser navigation that got the user to the current page.
2999
+ */
3000
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
3001
+ /**
3002
+ * Indicates how results are sorted. Use “editorial” for manually curated lists.
3003
+ */
3004
+ sortingMethod: "time" | "editorial" | "relevance" | "alphabetical";
3005
+ /**
3006
+ * The title of the page.
3007
+ */
3008
+ title: string;
3009
+ /**
3010
+ * The type of this page.
3011
+ */
3012
+ type: "Frontpage";
3013
+ };
3014
+ page: {
3015
+ info: IPageRef;
3016
+ /**
3017
+ * The pageviewID.
3018
+ */
3019
+ pageviewId: string;
3020
+ referrer?: IPageRef;
3021
+ utm?: IUtmTags;
3022
+ };
3023
+ provider: IProvider;
3024
+ /**
3025
+ * The schema of the event.
3026
+ */
3027
+ schema: string;
3028
+ session: ISession;
3029
+ time: ITime;
3030
+ tracker: ITracker;
3031
+ /**
3032
+ * The type of event.
3033
+ */
3034
+ type: "View";
3035
+ user?: IUser;
3036
+ }
3037
+ /**
3038
+ * This file was automatically generated by json-schema-to-typescript.
3039
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3040
+ * and run json-schema-to-typescript to regenerate this file.
3041
+ */
3042
+ /**
3043
+ * Prompt a specific action.
3044
+ */
3045
+ export interface IViewLandingpage {
3046
+ consents: IConsents;
3047
+ device: IDevice;
3048
+ /**
3049
+ * Event ID
3050
+ */
3051
+ id: string;
3052
+ object: {
3053
+ /**
3054
+ * The unique ID of this page.
3055
+ */
3056
+ id: string;
3057
+ /**
3058
+ * The type of this page.
3059
+ */
3060
+ type: "Landingpage";
3061
+ };
3062
+ page: {
3063
+ info: IPageRef;
3064
+ /**
3065
+ * The pageviewID.
3066
+ */
3067
+ pageviewId: string;
3068
+ referrer?: IPageRef;
3069
+ utm?: IUtmTags;
3070
+ };
3071
+ provider: IProvider;
3072
+ /**
3073
+ * The schema of the event.
3074
+ */
3075
+ schema: string;
3076
+ session: ISession;
3077
+ time: ITime;
3078
+ tracker: ITracker;
3079
+ type: "View";
3080
+ user?: IUser;
3081
+ }
3082
+ /**
3083
+ * This file was automatically generated by json-schema-to-typescript.
3084
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3085
+ * and run json-schema-to-typescript to regenerate this file.
3086
+ */
3087
+ /**
3088
+ * Show a collection of content.
3089
+ */
3090
+ export interface IViewListing {
3091
+ consents: IConsents;
3092
+ device: IDevice;
3093
+ /**
3094
+ * Event ID
3095
+ */
3096
+ id: string;
3097
+ object: {
3098
+ /**
3099
+ * The location of the page in the brand’s page hierarchy.
3100
+ */
3101
+ category: string;
3102
+ /**
3103
+ * The engine producing this listing. Use “editorial” for manually curated lists.
3104
+ */
3105
+ contentSource: "capi" | "curate" | "elasticSearch" | "editorial";
3106
+ /**
3107
+ * The unique ID of this page.
3108
+ */
3109
+ id: string;
3110
+ /**
3111
+ * True if list is populated indefinitely (doomscroll).
3112
+ */
3113
+ isInfinite: boolean;
3114
+ /**
3115
+ * The total number of items in the listing, or -1 if unknown.
3116
+ */
3117
+ itemsTotal: number;
3118
+ /**
3119
+ * The browser navigation that got the user to the current page.
3120
+ */
3121
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
3122
+ /**
3123
+ * Current pagination index. Zero if results are not paged.
3124
+ */
3125
+ paginationNumber: number;
3126
+ /**
3127
+ * Indicates how results are sorted. Use “editorial” for manually curated lists.
3128
+ */
3129
+ sortingMethod: "time" | "editorial" | "relevance" | "alphabetical";
3130
+ /**
3131
+ * The title of the page.
3132
+ */
3133
+ title: string;
3134
+ /**
3135
+ * The type of this page.
3136
+ */
3137
+ type: "Listing";
3138
+ };
3139
+ page: {
3140
+ info: IPageRef;
3141
+ /**
3142
+ * The pageviewID.
3143
+ */
3144
+ pageviewId: string;
3145
+ referrer?: IPageRef;
3146
+ utm?: IUtmTags;
3147
+ };
3148
+ provider: IProvider;
3149
+ /**
3150
+ * The schema of the event.
3151
+ */
3152
+ schema: string;
3153
+ session: ISession;
3154
+ time: ITime;
3155
+ tracker: ITracker;
3156
+ type: "View";
3157
+ user?: IUser;
3158
+ }
3159
+ /**
3160
+ * This file was automatically generated by json-schema-to-typescript.
3161
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3162
+ * and run json-schema-to-typescript to regenerate this file.
3163
+ */
3164
+ /**
3165
+ * A page preventing the user from accessing article content.
3166
+ */
3167
+ export interface IViewLockedArticle {
3168
+ consents: IConsents;
3169
+ device: IDevice;
3170
+ /**
3171
+ * Event ID
3172
+ */
3173
+ id: string;
3174
+ object: {
3175
+ authors: string[];
3176
+ /**
3177
+ * The editorial category of this article.
3178
+ */
3179
+ category: string;
3180
+ /**
3181
+ * The hotness value that was set in the CMS.
3182
+ */
3183
+ hotness: number;
3184
+ /**
3185
+ * The unique ID of this page.
3186
+ */
3187
+ id: string;
3188
+ /**
3189
+ * True if scrolling up/down transitions to the next or previous article.
3190
+ */
3191
+ isStacked: boolean;
3192
+ /**
3193
+ * The publication date of this version of the article.
3194
+ */
3195
+ lastUpdatedDate: string;
3196
+ /**
3197
+ * The lifetime value that was set in the CMS.
3198
+ */
3199
+ lifetime: number;
3200
+ /**
3201
+ * The newsroom that published the article.
3202
+ */
3203
+ newsroom: string;
3204
+ /**
3205
+ * The reason the user saw this paywall instead of the content.
3206
+ */
3207
+ paywallType: "paid" | "metered" | "login" | "free" | "dynamic";
3208
+ /**
3209
+ * The publication date of the article.
3210
+ */
3211
+ publicationDate: string;
3212
+ /**
3213
+ * The name of the company that sponsored the article. Omitted if the article was not sponsored.
3214
+ */
3215
+ sponsor?: string;
3216
+ /**
3217
+ * The title of the page.
3218
+ */
3219
+ title: string;
3220
+ /**
3221
+ * The type of this page.
3222
+ */
3223
+ type: "LockedArticle";
3224
+ /**
3225
+ * The type of article.
3226
+ */
3227
+ variant: "Article" | "LiveArticle" | "Special";
3228
+ /**
3229
+ * The version counter of the article.
3230
+ */
3231
+ versionCounter: number;
3232
+ /**
3233
+ * The number of words in this version of the article.
3234
+ */
3235
+ wordCount: number;
3236
+ };
3237
+ page: {
3238
+ content: IContent;
3239
+ info: IPageRef;
3240
+ /**
3241
+ * The browser navigation that got the user to the current page.
3242
+ */
3243
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender" | "scroll";
3244
+ /**
3245
+ * The pageviewID.
3246
+ */
3247
+ pageviewId: string;
3248
+ referrer?: IPageRef;
3249
+ utm?: IUtmTags;
3250
+ };
3251
+ provider: IProvider;
3252
+ /**
3253
+ * The schema of the event.
3254
+ */
3255
+ schema: string;
3256
+ session: ISession;
3257
+ time: ITime;
3258
+ tracker: ITracker;
3259
+ /**
3260
+ * The type of the event.
3261
+ */
3262
+ type: "View";
3263
+ user?: IUser;
3264
+ }
3265
+ /**
3266
+ * This file was automatically generated by json-schema-to-typescript.
3267
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3268
+ * and run json-schema-to-typescript to regenerate this file.
3269
+ */
3270
+ /**
3271
+ * A page preventing the user from accessing a piece of audio content.
3272
+ */
3273
+ export interface IViewLockedAudio {
3274
+ consents: IConsents;
3275
+ device: IDevice;
3276
+ /**
3277
+ * Event ID
3278
+ */
3279
+ id: string;
3280
+ object: {
3281
+ /**
3282
+ * The editorial category of this piece of audio.
3283
+ */
3284
+ category: string;
3285
+ /**
3286
+ * The unique ID of this page.
3287
+ */
3288
+ id: string;
3289
+ /**
3290
+ * The reason the user saw this paywall instead of the content.
3291
+ */
3292
+ paywallType: "paid" | "metered" | "login" | "free" | "dynamic";
3293
+ /**
3294
+ * The ID of the playlist.
3295
+ */
3296
+ playlistId?: string;
3297
+ /**
3298
+ * The position of the video in the playlist.
3299
+ */
3300
+ playlistPosition?: number;
3301
+ /**
3302
+ * The title of the page.
3303
+ */
3304
+ title: string;
3305
+ /**
3306
+ * The type of this page.
3307
+ */
3308
+ type: "LockedAudio";
3309
+ /**
3310
+ * The type of audio.
3311
+ */
3312
+ variant: "Podcast" | "Episode" | "Audiobook" | "AudiobookSample";
3313
+ };
3314
+ page: {
3315
+ content: IContent;
3316
+ info: IPageRef;
3317
+ /**
3318
+ * The browser navigation that got the user to the current page.
3319
+ */
3320
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
3321
+ /**
3322
+ * The pageviewID.
3323
+ */
3324
+ pageviewId: string;
3325
+ referrer?: IPageRef;
3326
+ utm?: IUtmTags;
3327
+ };
3328
+ provider: IProvider;
3329
+ /**
3330
+ * The schema of the event.
3331
+ */
3332
+ schema: string;
3333
+ session: ISession;
3334
+ time: ITime;
3335
+ tracker: ITracker;
3336
+ /**
3337
+ * The type of the event.
3338
+ */
3339
+ type: "View";
3340
+ user?: IUser;
3341
+ }
3342
+ /**
3343
+ * This file was automatically generated by json-schema-to-typescript.
3344
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3345
+ * and run json-schema-to-typescript to regenerate this file.
3346
+ */
3347
+ /**
3348
+ * A page preventing the user from accessing a piece of video content.
3349
+ */
3350
+ export interface IViewLockedVideo {
3351
+ consents: IConsents;
3352
+ device: IDevice;
3353
+ /**
3354
+ * Event ID
3355
+ */
3356
+ id: string;
3357
+ object: {
3358
+ /**
3359
+ * The editorial category of this video.
3360
+ */
3361
+ category: string;
3362
+ /**
3363
+ * The unique ID of this page.
3364
+ */
3365
+ id: string;
3366
+ /**
3367
+ * The reason the user saw this paywall instead of the content.
3368
+ */
3369
+ paywallType: "paid" | "metered" | "login" | "free" | "dynamic";
3370
+ /**
3371
+ * The ID of the playlist.
3372
+ */
3373
+ playlistId?: string;
3374
+ /**
3375
+ * The position of the video in the playlist.
3376
+ */
3377
+ playlistPosition: number;
3378
+ /**
3379
+ * The title of the page.
3380
+ */
3381
+ title: string;
3382
+ /**
3383
+ * The type of this page.
3384
+ */
3385
+ type: "LockedVideo";
3386
+ /**
3387
+ * The type of video.
3388
+ */
3389
+ variant: "Story" | "Series" | "Movie";
3390
+ };
3391
+ page: {
3392
+ content: IContent;
3393
+ info: IPageRef;
3394
+ /**
3395
+ * The browser navigation that got the user to the current page.
3396
+ */
3397
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
3398
+ /**
3399
+ * The pageviewID.
3400
+ */
3401
+ pageviewId: string;
3402
+ referrer?: IPageRef;
3403
+ utm?: IUtmTags;
3404
+ };
3405
+ provider: IProvider;
3406
+ /**
3407
+ * The schema of the event.
3408
+ */
3409
+ schema: string;
3410
+ session: ISession;
3411
+ time: ITime;
3412
+ tracker: ITracker;
3413
+ /**
3414
+ * The type of the event.
3415
+ */
3416
+ type: "View";
3417
+ user?: IUser;
3418
+ }
3419
+ /**
3420
+ * This file was automatically generated by json-schema-to-typescript.
3421
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3422
+ * and run json-schema-to-typescript to regenerate this file.
3423
+ */
3424
+ /**
3425
+ * The user saw a push notification on mobile. (push received, Android only)
3426
+ */
3427
+ export interface IViewNotification {
3428
+ consents: IConsents;
3429
+ device: IDevice;
3430
+ /**
3431
+ * Event ID
3432
+ */
3433
+ id: string;
3434
+ object: {
3435
+ /**
3436
+ * The creative used.
3437
+ */
3438
+ creativeURL: string;
3439
+ /**
3440
+ * The unique ID for this component.
3441
+ */
3442
+ id: string;
3443
+ /**
3444
+ * The name of the component.
3445
+ */
3446
+ name: "PushNotification";
3447
+ relatedTopics?: string[];
3448
+ /**
3449
+ * The text in the notification.
3450
+ */
3451
+ text: string;
3452
+ /**
3453
+ * The title of the notification.
3454
+ */
3455
+ title: string;
3456
+ /**
3457
+ * The topics matching this push.
3458
+ *
3459
+ */
3460
+ topicsMatch: string;
3461
+ /**
3462
+ * The type of the component.
3463
+ */
3464
+ type: "Notification";
3465
+ };
3466
+ provider: IProvider;
3467
+ /**
3468
+ * The schema of the event.
3469
+ */
3470
+ schema: string;
3471
+ session: ISession;
3472
+ target: {
3473
+ content?: IContent;
3474
+ info: IPageRef;
3475
+ };
3476
+ time: ITime;
3477
+ tracker: ITracker;
3478
+ /**
3479
+ * The type of event.
3480
+ */
3481
+ type: "View";
3482
+ user?: IUser;
3483
+ }
3484
+ /**
3485
+ * This file was automatically generated by json-schema-to-typescript.
3486
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3487
+ * and run json-schema-to-typescript to regenerate this file.
3488
+ */
3489
+ /**
3490
+ * A widget asking the user to buy a subscription, often with some discount or other perks.
3491
+ */
3492
+ export interface IViewOffer {
3493
+ consents: IConsents;
3494
+ device: IDevice;
3495
+ /**
3496
+ * Event ID
3497
+ */
3498
+ id: string;
3499
+ object: {
3500
+ /**
3501
+ * The campaign associated with this offer.
3502
+ */
3503
+ campaign: string;
3504
+ /**
3505
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
3506
+ */
3507
+ containerName: string;
3508
+ /**
3509
+ * The size of the component.
3510
+ */
3511
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
3512
+ /**
3513
+ * Indicator if the widget was visible at pageload (“above”) or if the user had to scroll to it (“below”).
3514
+ */
3515
+ foldPosition: "above" | "below" | "unknown";
3516
+ /**
3517
+ * The unique ID for this component.
3518
+ */
3519
+ id: string;
3520
+ /**
3521
+ * The name of the style layout applied to this widget.
3522
+ */
3523
+ layoutName: "coreheader" | "foldup" | "infeed" | "kyststripe" | "podcast" | "salesposter" | "stripe" | "video" | "widget";
3524
+ /**
3525
+ * The name of the component.
3526
+ */
3527
+ name: string;
3528
+ offerCodes?: string[];
3529
+ /**
3530
+ * The variant/layout of the offer.
3531
+ */
3532
+ offerType: "login" | "meter" | "paid";
3533
+ /**
3534
+ * The type of the component.
3535
+ */
3536
+ type: "Offer";
3537
+ };
3538
+ page: {
3539
+ content?: IContent;
3540
+ info: IPageRef;
3541
+ /**
3542
+ * The pageviewID.
3543
+ */
3544
+ pageviewId: string;
3545
+ referrer?: IPageRef;
3546
+ utm?: IUtmTags;
3547
+ };
3548
+ provider: IProvider;
3549
+ /**
3550
+ * The schema of the event.
3551
+ */
3552
+ schema: string;
3553
+ session: ISession;
3554
+ target: {
3555
+ content?: IContent;
3556
+ info: IPageRef;
3557
+ };
3558
+ time: ITime;
3559
+ tracker: ITracker;
3560
+ /**
3561
+ * The type of event.
3562
+ */
3563
+ type: "View";
3564
+ user?: IUser;
3565
+ }
3566
+ /**
3567
+ * A generic pageview event.
3568
+ */
3569
+ export interface IViewPage {
3570
+ consents: IConsents;
3571
+ device: IDevice;
3572
+ experiments?: IExperiments;
3573
+ /**
3574
+ * Event ID
3575
+ */
3576
+ id: string;
3577
+ metrics?: IMetrics;
3578
+ object: {
3579
+ /**
3580
+ * The location of the page in the brand’s page hierarchy.
3581
+ */
3582
+ category: string;
3583
+ /**
3584
+ * The unique ID of this page.
3585
+ */
3586
+ id: string;
3587
+ tags?: string[];
3588
+ /**
3589
+ * The title of the page.
3590
+ */
3591
+ title: string;
3592
+ /**
3593
+ * The type of this page.
3594
+ */
3595
+ type: "Page";
3596
+ };
3597
+ page: {
3598
+ info: IPageRef;
3599
+ /**
3600
+ * The browser navigation that got the user to the current page.
3601
+ */
3602
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
3603
+ /**
3604
+ * The pageviewID.
3605
+ */
3606
+ pageviewId: string;
3607
+ referrer?: IPageRef;
3608
+ utm?: IUtmTags;
3609
+ };
3610
+ provider: IProvider;
3611
+ /**
3612
+ * The schema of the event.
3613
+ */
3614
+ schema: string;
3615
+ session: ISession;
3616
+ time: ITime;
3617
+ tracker: ITracker;
3618
+ /**
3619
+ * The type of event.
3620
+ */
3621
+ type: "View";
3622
+ user?: IUser;
3623
+ }
3624
+ /**
3625
+ * A widget promoting content.
3626
+ */
3627
+ export interface IViewTeaser {
3628
+ consents: IConsents;
3629
+ device: IDevice;
3630
+ experiments?: IExperiments;
3631
+ /**
3632
+ * Event ID
3633
+ */
3634
+ id: string;
3635
+ metrics?: IMetrics;
3636
+ object: {
3637
+ /**
3638
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
3639
+ */
3640
+ containerName: string;
3641
+ /**
3642
+ * The engine producing this teaser. Use “editorial” for manually curated item.
3643
+ */
3644
+ contentSource: "capi" | "curate" | "elasticSearch" | "editorial";
3645
+ /**
3646
+ * The creative of the teaser.
3647
+ */
3648
+ creativeURL: string;
3649
+ /**
3650
+ * The context in which the recommendation was made. (can we remove this?)
3651
+ */
3652
+ curateContext: string;
3653
+ /**
3654
+ * The size of the component.
3655
+ */
3656
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
3657
+ /**
3658
+ * Indicator if the widget was visible at pageload (“above”) or if the user had to scroll to it (“below”).
3659
+ */
3660
+ foldPosition: "above" | "below" | "unknown";
3661
+ /**
3662
+ * The unique ID for this component.
3663
+ */
3664
+ id: string;
3665
+ /**
3666
+ * The name of the component.
3667
+ */
3668
+ name: string;
3669
+ /**
3670
+ * The parent’s primary direction along which components are laid out.
3671
+ */
3672
+ primaryAxis: "horizontal" | "vertical";
3673
+ /**
3674
+ * The position of this component along the primary axis.
3675
+ */
3676
+ primaryPosition: number;
3677
+ /**
3678
+ * The position of this component along the secondary axis.
3679
+ */
3680
+ secondaryPosition: number;
3681
+ /**
3682
+ * The title of the teaser.
3683
+ */
3684
+ title: string;
3685
+ /**
3686
+ * The type of the component.
3687
+ */
3688
+ type: "Teaser";
3689
+ };
3690
+ page: {
3691
+ content?: IContent;
3692
+ info: IPageRef;
3693
+ /**
3694
+ * The pageviewID.
3695
+ */
3696
+ pageviewId: string;
3697
+ referrer?: IPageRef;
3698
+ utm?: IUtmTags;
3699
+ };
3700
+ provider: IProvider;
3701
+ /**
3702
+ * The schema of the event.
3703
+ */
3704
+ schema: string;
3705
+ session: ISession;
3706
+ target: {
3707
+ content?: IContent;
3708
+ info: IPageRef;
3709
+ };
3710
+ time: ITime;
3711
+ tracker: ITracker;
3712
+ /**
3713
+ * The type of event.
3714
+ */
3715
+ type: "View";
3716
+ user?: IUser;
3717
+ }
3718
+ /**
3719
+ * A page showing summary information about a TV series, streaming show, or sport event. (Note: currently only used by TVnu.)
3720
+ */
3721
+ export interface IViewTitle {
3722
+ consents: IConsents;
3723
+ device: IDevice;
3724
+ experiments?: IExperiments;
3725
+ /**
3726
+ * Event ID
3727
+ */
3728
+ id: string;
3729
+ metrics?: IMetrics;
3730
+ object: {
3731
+ /**
3732
+ * The editorial category of this title.
3733
+ */
3734
+ category: string;
3735
+ /**
3736
+ * The unique ID of this page.
3737
+ */
3738
+ id: string;
3739
+ linearChannel?: string[];
3740
+ playProvider?: string[];
3741
+ /**
3742
+ * The name of the company that sponsored the title. Omitted if the title was not sponsored.
3743
+ */
3744
+ sponsor?: string;
3745
+ tags?: string[];
3746
+ /**
3747
+ * The title of the page.
3748
+ */
3749
+ title: string;
3750
+ /**
3751
+ * The type of this page.
3752
+ */
3753
+ type: "Title";
3754
+ };
3755
+ page: {
3756
+ info: IPageRef;
3757
+ /**
3758
+ * The browser navigation that got the user to the current page.
3759
+ */
3760
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
3761
+ /**
3762
+ * The pageviewID.
3763
+ */
3764
+ pageviewId: string;
3765
+ referrer?: IPageRef;
3766
+ utm?: IUtmTags;
3767
+ };
3768
+ provider: IProvider;
3769
+ /**
3770
+ * The schema of the event.
3771
+ */
3772
+ schema: string;
3773
+ session: ISession;
3774
+ time: ITime;
3775
+ tracker: ITracker;
3776
+ /**
3777
+ * The type of the event.
3778
+ */
3779
+ type: "View";
3780
+ user?: IUser;
3781
+ }
3782
+ /**
3783
+ * This file was automatically generated by json-schema-to-typescript.
3784
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
3785
+ * and run json-schema-to-typescript to regenerate this file.
3786
+ */
3787
+ /**
3788
+ * An interactive element within a component or page, e.g., a button, link, or form field.
3789
+ */
3790
+ export interface IViewUIElement {
3791
+ consents: IConsents;
3792
+ device: IDevice;
3793
+ /**
3794
+ * Event ID
3795
+ */
3796
+ id: string;
3797
+ object: {
3798
+ /**
3799
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
3800
+ */
3801
+ containerName: string;
3802
+ /**
3803
+ * The size of the component.
3804
+ */
3805
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
3806
+ /**
3807
+ * The text of the element.
3808
+ */
3809
+ elementText?: string;
3810
+ /**
3811
+ * The type of UIElement (div, span, a, …).
3812
+ */
3813
+ elementType: string;
3814
+ /**
3815
+ * Indicator if the widget was visible at pageload (“above”) or if the user had to scroll to it (“below”).
3816
+ */
3817
+ foldPosition: "above" | "below" | "unknown";
3818
+ /**
3819
+ * The unique ID for this component.
3820
+ */
3821
+ id: string;
3822
+ /**
3823
+ * The name of the component.
3824
+ */
3825
+ name: string;
3826
+ /**
3827
+ * The type of the component.
3828
+ */
3829
+ type: "UIElement";
3830
+ };
3831
+ page: {
3832
+ content?: IContent;
3833
+ info: IPageRef;
3834
+ /**
3835
+ * The pageviewID.
3836
+ */
3837
+ pageviewId: string;
3838
+ referrer?: IPageRef;
3839
+ utm?: IUtmTags;
3840
+ };
3841
+ provider: IProvider;
3842
+ /**
3843
+ * The schema of the event.
3844
+ */
3845
+ schema: string;
3846
+ session: ISession;
3847
+ target?: {
3848
+ content?: IContent;
3849
+ info?: IPageRef;
3850
+ };
3851
+ time: ITime;
3852
+ tracker: ITracker;
3853
+ /**
3854
+ * The type of event.
3855
+ */
3856
+ type: "View";
3857
+ user?: IUser;
3858
+ }
3859
+ /**
3860
+ * A page dedicated to showing video content.
3861
+ */
3862
+ export interface IViewVideo {
3863
+ consents: IConsents;
3864
+ device: IDevice;
3865
+ experiments?: IExperiments;
3866
+ /**
3867
+ * Event ID
3868
+ */
3869
+ id: string;
3870
+ metrics?: IMetrics;
3871
+ object: {
3872
+ /**
3873
+ * The editorial category of this video.
3874
+ */
3875
+ category: string;
3876
+ /**
3877
+ * The unique ID of this page.
3878
+ */
3879
+ id: string;
3880
+ /**
3881
+ * The ID of the playlist.
3882
+ */
3883
+ playlistId?: string;
3884
+ /**
3885
+ * The position of the video in the playlist.
3886
+ */
3887
+ playlistPosition?: number;
3888
+ /**
3889
+ * The title of the page.
3890
+ */
3891
+ title: string;
3892
+ type: "Video";
3893
+ /**
3894
+ * The type of video.
3895
+ */
3896
+ variant: "Story" | "Series" | "Movie";
3897
+ };
3898
+ page: {
3899
+ content: IContent;
3900
+ info: IPageRef;
3901
+ /**
3902
+ * The browser navigation that got the user to the current page.
3903
+ */
3904
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
3905
+ /**
3906
+ * The pageviewID.
3907
+ */
3908
+ pageviewId: string;
3909
+ referrer?: IPageRef;
3910
+ utm?: IUtmTags;
3911
+ };
3912
+ provider: IProvider;
3913
+ /**
3914
+ * The schema of the event.
3915
+ */
3916
+ schema: string;
3917
+ session: ISession;
3918
+ time: ITime;
3919
+ tracker: ITracker;
3920
+ type: "View";
3921
+ user?: IUser;
3922
+ }
3923
+ /**
3924
+ * A video advertisement. (Check if this is needed)
3925
+ */
3926
+ export interface IViewVideoAd {
3927
+ consents: IConsents;
3928
+ device: IDevice;
3929
+ experiments?: IExperiments;
3930
+ /**
3931
+ * Event ID
3932
+ */
3933
+ id: string;
3934
+ metrics?: IMetrics;
3935
+ object: {
3936
+ /**
3937
+ * The format of the display ad.
3938
+ */
3939
+ adFormat: "preroll" | "bumper" | "board" | "netboard" | "wallpaper" | "fullscreen" | "bannerXL" | "broadband" | "skyscraper" | "horseshoe" | "pauseBanner" | "snapchat" | "foodChannel";
3940
+ /**
3941
+ * The identifier of the ad request.
3942
+ */
3943
+ adSlotId: string;
3944
+ /**
3945
+ * The identifier of the advertiser.
3946
+ */
3947
+ advertiserId: string;
3948
+ /**
3949
+ * Which pool the advertisement came from?
3950
+ */
3951
+ contentSource: string;
3952
+ /**
3953
+ * The identifier of the creative.
3954
+ */
3955
+ creativeId: string;
3956
+ /**
3957
+ * True if the queue point was after the video ended.
3958
+ */
3959
+ isPostroll: boolean;
3960
+ /**
3961
+ * True if the queue point was before the video started.
3962
+ */
3963
+ isPreroll: boolean;
3964
+ /**
3965
+ * The index of the queue point in the video.
3966
+ */
3967
+ queuePointIdx: number;
3968
+ type: "VideoAd";
3969
+ };
3970
+ page: {
3971
+ content?: IContent;
3972
+ info: IPageRef;
3973
+ /**
3974
+ * The pageviewID.
3975
+ */
3976
+ pageviewId: string;
3977
+ referrer?: IPageRef;
3978
+ utm?: IUtmTags;
3979
+ };
3980
+ provider: IProvider;
3981
+ /**
3982
+ * The schema of the event.
3983
+ */
3984
+ schema: string;
3985
+ session: ISession;
3986
+ time: ITime;
3987
+ tracker: ITracker;
3988
+ /**
3989
+ * The type of event.
3990
+ */
3991
+ type: "View";
3992
+ user?: IUser;
3993
+ }
3994
+ /**
3995
+ * A component used for video playback.
3996
+ */
3997
+ export interface IViewVideoPlayer {
3998
+ consents: IConsents;
3999
+ device: IDevice;
4000
+ experiments?: IExperiments;
4001
+ /**
4002
+ * Event ID
4003
+ */
4004
+ id: string;
4005
+ metrics?: IMetrics;
4006
+ object: {
4007
+ /**
4008
+ * The language of the current audio track.
4009
+ */
4010
+ audioLanguage?: "Norwegian" | "Swedish" | "English";
4011
+ /**
4012
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
4013
+ */
4014
+ containerName: string;
4015
+ /**
4016
+ * How the content is presented on the page.
4017
+ */
4018
+ displayMode: "normal" | "fullscreen" | "minimized" | "picture-in-picture" | "chromecast" | "airplay" | "carplay" | "background";
4019
+ /**
4020
+ * The total duration of the track in milliseconds. Use -1 for live streams with unknown duration.
4021
+ */
4022
+ durationMs: number;
4023
+ /**
4024
+ * The size of the component.
4025
+ */
4026
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
4027
+ /**
4028
+ * Indicator if the widget was visible at pageload (“above”) or if the user had to scroll to it (“below”).
4029
+ */
4030
+ foldPosition: "above" | "below" | "unknown";
4031
+ /**
4032
+ * The unique ID for this component.
4033
+ */
4034
+ id: string;
4035
+ /**
4036
+ * True if the video starts to play automatically.
4037
+ */
4038
+ isAutoplay: boolean;
4039
+ /**
4040
+ * True if the video is a live stream.
4041
+ */
4042
+ isLive: boolean;
4043
+ /**
4044
+ * True if the playback is muted.
4045
+ */
4046
+ isMuted: boolean;
4047
+ /**
4048
+ * True if the player was first created on this page.
4049
+ */
4050
+ isNewPlayer: boolean;
4051
+ /**
4052
+ * True if the video was loaded automatically after a previous video was finished.
4053
+ */
4054
+ isPlayNext: boolean;
4055
+ /**
4056
+ * The number of times the video has automatically repeated itself.
4057
+ */
4058
+ loopCount: number;
4059
+ /**
4060
+ * The name of the component.
4061
+ */
4062
+ name: string;
4063
+ /**
4064
+ * The current playback speed.
4065
+ */
4066
+ playbackSpeed: number;
4067
+ /**
4068
+ * A unique ID for this player instance.
4069
+ */
4070
+ playerId: string;
4071
+ /**
4072
+ * Indicates what the player is doing at the time of impression.
4073
+ */
4074
+ playerState: "playing" | "paused" | "buffering" | "failed";
4075
+ playingBefore?: IContent;
4076
+ playingNow: IContent;
4077
+ /**
4078
+ * The ID of the playlist.
4079
+ */
4080
+ playlistId?: string;
4081
+ /**
4082
+ * The position of the video in the playlist.
4083
+ */
4084
+ playlistPosition?: number;
4085
+ /**
4086
+ * The current playback quality.
4087
+ */
4088
+ quality: "144p" | "120p" | "360p" | "480p" | "720p" | "1080p" | "1440p" | "4k" | "8k";
4089
+ /**
4090
+ * The index of the CC stream in the file.
4091
+ */
4092
+ subtitleLanguage?: "None" | "Norwegian" | "Swedish" | "English";
4093
+ /**
4094
+ * The type of the component.
4095
+ */
4096
+ type: "VideoPlayer";
4097
+ };
4098
+ page: {
4099
+ content?: IContent;
4100
+ info: IPageRef;
4101
+ /**
4102
+ * The pageviewID.
4103
+ */
4104
+ pageviewId: string;
4105
+ referrer?: IPageRef;
4106
+ utm?: IUtmTags;
4107
+ };
4108
+ provider: IProvider;
4109
+ /**
4110
+ * The schema of the event.
4111
+ */
4112
+ schema: string;
4113
+ session: ISession;
4114
+ time: ITime;
4115
+ tracker: ITracker;
4116
+ /**
4117
+ * The event type.
4118
+ */
4119
+ type: "View";
4120
+ user?: IUser;
4121
+ }
4122
+ /**
4123
+ * A page showing a weather forecast.
4124
+ */
4125
+ export interface IViewWeather {
4126
+ consents: IConsents;
4127
+ device: IDevice;
4128
+ experiments?: IExperiments;
4129
+ /**
4130
+ * Event ID
4131
+ */
4132
+ id: string;
4133
+ metrics?: IMetrics;
4134
+ object: {
4135
+ /**
4136
+ * The editorial category of this forecast.
4137
+ */
4138
+ category?: string;
4139
+ /**
4140
+ * The country within which the forecast is done.
4141
+ */
4142
+ country: string;
4143
+ /**
4144
+ * The unique ID of this page.
4145
+ */
4146
+ id: string;
4147
+ /**
4148
+ * The location within the region covered by this forecast.
4149
+ */
4150
+ location?: string;
4151
+ /**
4152
+ * The region covered by the forecast.
4153
+ */
4154
+ region: string;
4155
+ tags?: string[];
4156
+ /**
4157
+ * The type of this page.
4158
+ */
4159
+ type: "Weather";
4160
+ };
4161
+ page: {
4162
+ info: IPageRef;
4163
+ /**
4164
+ * The browser navigation that got the user to the current page.
4165
+ */
4166
+ navigationType: "navigate" | "reload" | "back_forward" | "prerender";
4167
+ /**
4168
+ * The pageviewID.
4169
+ */
4170
+ pageviewId: string;
4171
+ referrer?: IPageRef;
4172
+ utm?: IUtmTags;
4173
+ };
4174
+ provider: IProvider;
4175
+ /**
4176
+ * The schema of the event.
4177
+ */
4178
+ schema: string;
4179
+ session: ISession;
4180
+ time: ITime;
4181
+ tracker: ITracker;
4182
+ /**
4183
+ * The type of event.
4184
+ */
4185
+ type: "View";
4186
+ user?: IUser;
4187
+ }
4188
+ /**
4189
+ * A reusable component on a page.
4190
+ */
4191
+ export interface IViewWidget {
4192
+ consents: IConsents;
4193
+ device: IDevice;
4194
+ experiments?: IExperiments;
4195
+ /**
4196
+ * Event ID
4197
+ */
4198
+ id: string;
4199
+ metrics?: IMetrics;
4200
+ object: {
4201
+ /**
4202
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
4203
+ */
4204
+ containerName: string;
4205
+ /**
4206
+ * The size of the component.
4207
+ */
4208
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
4209
+ /**
4210
+ * Indicator if the widget was visible at pageload (“above”) or if the user had to scroll to it (“below”).
4211
+ */
4212
+ foldPosition: "above" | "below" | "unknown";
4213
+ /**
4214
+ * The unique ID for this component.
4215
+ */
4216
+ id: string;
4217
+ /**
4218
+ * The name of the component.
4219
+ */
4220
+ name: string;
4221
+ /**
4222
+ * The parent’s primary direction along which components are laid out.
4223
+ */
4224
+ primaryAxis: "horizontal" | "vertical";
4225
+ /**
4226
+ * The position of this component along the primary axis.
4227
+ */
4228
+ primaryPosition: number;
4229
+ /**
4230
+ * The position of this component along the secondary axis.
4231
+ */
4232
+ secondaryPosition: number;
4233
+ /**
4234
+ * The type of the component.
4235
+ */
4236
+ type: "Widget";
4237
+ };
4238
+ page: {
4239
+ content?: IContent;
4240
+ info: IPageRef;
4241
+ /**
4242
+ * The pageviewID.
4243
+ */
4244
+ pageviewId: string;
4245
+ referrer?: IPageRef;
4246
+ utm?: IUtmTags;
4247
+ };
4248
+ provider: IProvider;
4249
+ /**
4250
+ * The schema of the event.
4251
+ */
4252
+ schema: string;
4253
+ session: ISession;
4254
+ target?: {
4255
+ content?: IContent;
4256
+ info?: IPageRef;
4257
+ };
4258
+ time: ITime;
4259
+ tracker: ITracker;
4260
+ /**
4261
+ * The type of the event.
4262
+ */
4263
+ type: "View";
4264
+ user?: IUser;
4265
+ }
4266
+ /**
4267
+ * A progress event from an audio player component.
4268
+ */
4269
+ export interface IWatchAudioPlayer {
4270
+ consents: IConsents;
4271
+ device: IDevice;
4272
+ experiments?: IExperiments;
4273
+ /**
4274
+ * Event ID
4275
+ */
4276
+ id: string;
4277
+ metrics?: IMetrics;
4278
+ object: {
4279
+ /**
4280
+ * The closest parent container used for traffic attribution.
4281
+ */
4282
+ containerName: string;
4283
+ /**
4284
+ * How the content is presented on the page.
4285
+ */
4286
+ displayMode: "normal" | "fullscreen" | "minimized" | "background" | "chromecast" | "airplay" | "carplay";
4287
+ /**
4288
+ * The total duration of the track in milliseconds. Use -1 for live streams with unknown duration.
4289
+ */
4290
+ durationMs: number;
4291
+ /**
4292
+ * The size of the component.
4293
+ */
4294
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
4295
+ /**
4296
+ * The unique ID for this component.
4297
+ */
4298
+ id: string;
4299
+ /**
4300
+ * True if the video starts to play automatically.
4301
+ */
4302
+ isAutoplay: boolean;
4303
+ /**
4304
+ * True if the video is a live stream.
4305
+ */
4306
+ isLive: boolean;
4307
+ /**
4308
+ * True if the player was first created on this page.
4309
+ */
4310
+ isNewPlayer: boolean;
4311
+ /**
4312
+ * True if the video was loaded automatically after a previous video was finished.
4313
+ */
4314
+ isPlayNext: boolean;
4315
+ /**
4316
+ * The name of the component.
4317
+ */
4318
+ name: string;
4319
+ /**
4320
+ * The current playback speed.
4321
+ */
4322
+ playbackSpeed: number;
4323
+ /**
4324
+ * A unique ID for this player instance.
4325
+ */
4326
+ playerId: string;
4327
+ /**
4328
+ * Indicates what the player is doing at the time of impression.
4329
+ */
4330
+ playerState: "playing" | "paused" | "buffering" | "failed";
4331
+ playingBefore?: IContent;
4332
+ playingNow: IContent;
4333
+ /**
4334
+ * The ID of the playlist.
4335
+ */
4336
+ playlistId?: string;
4337
+ /**
4338
+ * The position of the video in the playlist.
4339
+ */
4340
+ playlistPosition?: number;
4341
+ /**
4342
+ * The offset of the current playback from the start of the video in seconds.
4343
+ */
4344
+ position: number;
4345
+ /**
4346
+ * The current playback’s audio quality.
4347
+ */
4348
+ quality: string;
4349
+ /**
4350
+ * True if playerState has changed compared to the previous component or watch event.
4351
+ */
4352
+ stateChange: boolean;
4353
+ /**
4354
+ * The type of the component.
4355
+ */
4356
+ type: "AudioPlayer";
4357
+ };
4358
+ page: {
4359
+ content?: IContent;
4360
+ info: IPageRef;
4361
+ /**
4362
+ * The pageviewID.
4363
+ */
4364
+ pageviewId: string;
4365
+ referrer?: IPageRef;
4366
+ utm?: IUtmTags;
4367
+ };
4368
+ provider: IProvider;
4369
+ /**
4370
+ * The schema of the event.
4371
+ */
4372
+ schema: string;
4373
+ session: ISession;
4374
+ time: ITime;
4375
+ tracker: ITracker;
4376
+ /**
4377
+ * The type of event.
4378
+ */
4379
+ type: "Watch";
4380
+ user?: IUser;
4381
+ }
4382
+ /**
4383
+ * A progress event of a video player component.
4384
+ */
4385
+ export interface IWatchVideoPlayer {
4386
+ consents: IConsents;
4387
+ device: IDevice;
4388
+ experiments?: IExperiments;
4389
+ /**
4390
+ * Event ID
4391
+ */
4392
+ id: string;
4393
+ metrics?: IMetrics;
4394
+ object: {
4395
+ /**
4396
+ * The language of the current audio track.
4397
+ */
4398
+ audioLanguage: "Norwegian" | "Swedish" | "English";
4399
+ /**
4400
+ * The closest parent container used for traffic attribution. When in doubt use “page”.
4401
+ */
4402
+ containerName: string;
4403
+ /**
4404
+ * How the content is presented on the page.
4405
+ */
4406
+ displayMode: "normal" | "fullscreen" | "minimized" | "picture-in-picture" | "chromecast" | "airplay" | "carplay" | "background";
4407
+ /**
4408
+ * The total duration of the track in milliseconds. Use -1 for live streams with unknown duration.
4409
+ */
4410
+ durationMs: number;
4411
+ /**
4412
+ * The size of the component.
4413
+ */
4414
+ elementSize: "XS" | "S" | "M" | "L" | "XL";
4415
+ /**
4416
+ * The unique ID for this component.
4417
+ */
4418
+ id: string;
4419
+ /**
4420
+ * True if the video starts to play automatically.
4421
+ */
4422
+ isAutoplay: boolean;
4423
+ /**
4424
+ * True if the video is a live stream.
4425
+ */
4426
+ isLive: boolean;
4427
+ /**
4428
+ * True if the playback is muted.
4429
+ */
4430
+ isMuted: boolean;
4431
+ /**
4432
+ * True if the player was first created on this page.
4433
+ */
4434
+ isNewPlayer: boolean;
4435
+ /**
4436
+ * True if the video was loaded automatically after a previous video was finished.
4437
+ */
4438
+ isPlayNext: boolean;
4439
+ /**
4440
+ * True if playerState has changed compared to the previous component or watch event.
4441
+ */
4442
+ isStateChange: boolean;
4443
+ /**
4444
+ * The number of times the video has automatically repeated itself.
4445
+ */
4446
+ loopCount: number;
4447
+ /**
4448
+ * The name of the component.
4449
+ */
4450
+ name: string;
4451
+ /**
4452
+ * The current playback speed.
4453
+ */
4454
+ playbackSpeed: number;
4455
+ /**
4456
+ * A unique ID for this player instance.
4457
+ */
4458
+ playerId: string;
4459
+ /**
4460
+ * Indicates what the player is doing at the time of impression.
4461
+ */
4462
+ playerState: "playing" | "paused" | "buffering" | "failed";
4463
+ playingBefore?: IContent;
4464
+ playingNow: IContent;
4465
+ /**
4466
+ * The ID of the playlist.
4467
+ */
4468
+ playlistId?: string;
4469
+ /**
4470
+ * The position of the video in the playlist.
4471
+ */
4472
+ playlistPosition?: number;
4473
+ /**
4474
+ * The offset of the current playback from the start of the video in seconds.
4475
+ */
4476
+ position: number;
4477
+ /**
4478
+ * The current playback quality.
4479
+ */
4480
+ quality: string;
4481
+ /**
4482
+ * The index of the CC stream in the file.
4483
+ */
4484
+ subtitleLanguage: "None" | "Norwegian" | "Swedish" | "English";
4485
+ /**
4486
+ * The type of the component.
4487
+ */
4488
+ type: "VideoPlayer";
4489
+ };
4490
+ page: {
4491
+ content?: IContent;
4492
+ info: IPageRef;
4493
+ /**
4494
+ * The pageviewID.
4495
+ *
4496
+ *
4497
+ */
4498
+ pageviewId: string;
4499
+ referrer?: IPageRef;
4500
+ utm?: IUtmTags;
4501
+ };
4502
+ provider: IProvider;
4503
+ /**
4504
+ * The schema of the event.
4505
+ */
4506
+ schema: string;
4507
+ session: ISession;
4508
+ time: ITime;
4509
+ tracker: ITracker;
4510
+ type: "Watch";
4511
+ user?: IUser;
4512
+ }
4513
+ export type ITpaasEvent = IEngagementAudioPlayer | IEngagementForm | IEngagementNotification | IEngagementOffer | IEngagementTeaser | IEngagementUIElement | IEngagementVideoPlayer | IEngagementWidget | IInternalProbe | ILeaveArticle | ILeaveAudio | ILeaveError | ILeaveFrontpage | ILeaveLandingpage | ILeaveListing | ILeaveLockedArticle | ILeaveLockedAudio | ILeaveLockedVideo | ILeavePage | ILeaveTitle | ILeaveVideo | ILeaveWeather | IViewAdSlot | IViewArticle | IViewAudio | IViewAudioPlayer | IViewError | IViewForm | IViewFrontpage | IViewLandingpage | IViewListing | IViewLockedArticle | IViewLockedAudio | IViewLockedVideo | IViewNotification | IViewOffer | IViewPage | IViewTeaser | IViewTitle | IViewUIElement | IViewVideo | IViewVideoAd | IViewVideoPlayer | IViewWeather | IViewWidget | IWatchAudioPlayer | IWatchVideoPlayer;
4514
+ /* eslint-disable */
4515
+ /**
4516
+ * This file was automatically generated by json-schema-to-typescript.
4517
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
4518
+ * and run json-schema-to-typescript to regenerate this file.
4519
+ */
4520
+ /**
4521
+ * Information about the user.
4522
+ */
4523
+ export interface IActor {
4524
+ /**
4525
+ * True if the user has an active subscription
4526
+ */
4527
+ isSubscribed: boolean;
4528
+ productFeatures?: string[];
4529
+ /**
4530
+ * The region of primary belonging
4531
+ */
4532
+ region?: "Norway" | "Sweden" | "Finland";
4533
+ /**
4534
+ * The userId.
4535
+ */
4536
+ userId: string;
4537
+ }
4538
+ /* eslint-disable */
4539
+ /**
4540
+ * This file was automatically generated by json-schema-to-typescript.
4541
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
4542
+ * and run json-schema-to-typescript to regenerate this file.
4543
+ */
4544
+ /**
4545
+ * Performance metrics of frontend-facing systems.
4546
+ */
4547
+ export type IMetrics2 = {
4548
+ /**
4549
+ * A grouping key for the metric, e.g. curate’s blendId.
4550
+ */
4551
+ key: string;
4552
+ /**
4553
+ * Name of the metric, e.g., "topKScore".
4554
+ */
4555
+ name: string;
4556
+ /**
4557
+ * Source of the metric, e.g., "Curate".
4558
+ */
4559
+ source: string;
4560
+ /**
4561
+ * The value of the metric.
4562
+ */
4563
+ value: number;
4564
+ }[];
4565
+
4566
+ export {};