@wistia/bottler-helpers 1.0.31 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/schema.graphql +726 -724
package/schema.graphql CHANGED
@@ -1,67 +1,291 @@
1
- "Represents a schema"
2
1
  schema {
3
- query: RootQueryType
4
2
  mutation: RootMutationType
3
+ query: RootQueryType
5
4
  }
6
5
 
7
- type PageInfo {
8
- startCursor: String
9
- endCursor: String
10
- hasNextPage: Boolean!
11
- hasPreviousPage: Boolean!
6
+ input Interval {
7
+ startDate: Date
8
+ endDate: Date
12
9
  }
13
10
 
14
- input Pagination {
15
- limit: Int!
16
- cursor: String
17
- direction: CursorDirection
11
+ type RootQueryType {
12
+ channel(channelHashedId: String!, interval: Interval): Channel
13
+ channels(channelGlobalIds: [String]!): [ChannelMetrics!]!
14
+ episodes(episodeGlobalIds: [String]!): [EpisodeMetrics!]!
15
+ media(mediaId: Int!): Media
16
+ medias(searchFilter: SearchFilter): Medias
17
+ projectsCount: Int
18
+ channelsCount: Int
19
+ liveStreamEventsCount(interval: Interval): Int
20
+ mediaEvents(interval: Interval, searchFilter: SearchFilter): MediaEvents
21
+ liveEvents(liveStreamEventIds: [Int]!, includePostEvent: Boolean): LiveEvents
22
+ liveEvent(liveStreamEventId: Int!, includePostEvent: Boolean): LiveEvent
23
+ liveStreamEvents(limit: Int, interval: Interval, orderBy: LiveStreamEventOrderMetric, order: Order): [LiveStreamEvent!]!
24
+ liveStreamEventsAccountAggregate(limit: Int, interval: Interval): LiveStreamEventAccountAggregate!
25
+ liveEventContacts(liveStreamEventId: Int!): LiveEventContacts
26
+ mediaFormConversions(mediaGlobalId: String!, interval: Interval!, pagination: Pagination): MediaFormAggregateResult
27
+ relativeMediaEvents(relativePeriod: RelativePeriod!, searchFilter: SearchFilter): RelativeMediaEvents
28
+ exportStatus(exportId: Int!): ExportStatus
18
29
  }
19
30
 
20
- type PollOption {
21
- id: Int!
22
- text: String!
23
- count: Int!
24
- percent: Float!
31
+ type RootMutationType {
32
+ exportMedia(contactId: Int!, interval: Interval, searchFilter: SearchFilter, aggregate: ExportAggregate): ExportStatus
33
+ exportRelativeMedia(contactId: Int!, relativePeriod: RelativePeriod!, searchFilter: SearchFilter): ExportStatus
34
+ accountDigest(contactId: Int!, interval: Interval!, overrideEmail: String): AccountDigestStatus
35
+ liveExport(liveStreamEventId: Int!, type: LiveExportType!, contactId: Int!): ExportStatus
25
36
  }
26
37
 
27
- input Interval {
28
- startDate: Date
29
- endDate: Date
38
+ """
39
+ The `DateTime` scalar type represents a date and time in the UTC
40
+ timezone. The DateTime appears in a JSON response as an ISO8601 formatted
41
+ string, including UTC timezone ("Z"). The parsed date and time string will
42
+ be converted to UTC if there is an offset.
43
+ """
44
+ scalar DateTime
45
+
46
+ """
47
+ The `Date` scalar type represents a date. The Date appears in a JSON
48
+ response as an ISO8601 formatted string, without a time component.
49
+ """
50
+ scalar Date
51
+
52
+ type MediaEmbedLanguageAggregate {
53
+ mediaGlobalId: String
54
+ plays: Int
55
+ language: String
56
+ percentOfTotalPlays: Float
57
+ captionsSupport: Boolean
30
58
  }
31
59
 
32
- type LiveEventReferrerDomainAggregate {
60
+ type AccountEmbedLocationAggregate {
33
61
  accountKey: String
34
62
  accountName: String
35
- liveStreamEventId: Int
63
+ embedLocationCount: Int
64
+ plays: Int
65
+ playRate: Float
66
+ engagementRate: Float
67
+ playedTime: Int
68
+ loads: Int
69
+ uniqueVisitors: Int
70
+ ctaConversionRate: Float
71
+ }
72
+
73
+ type MediaEmbedLocationAggregate {
74
+ accountKey: String
75
+ accountName: String
76
+ containerGlobalId: String
77
+ containerHashedId: String
78
+ containerName: String
79
+ episodeHashedId: String
80
+ episodeGlobalId: String
81
+ episodeTitle: String
82
+ mediaHashedId: String
83
+ mediaGlobalId: String
84
+ mediaName: String
85
+ mediaThumbnailUrl: String
86
+ embedDomain: String
87
+ embedPath: String
88
+ embedUrl: String
89
+ plays: Int
90
+ playRate: Float
91
+ engagementRate: Float
92
+ playedTime: Int
93
+ loads: Int
94
+ uniqueVisitors: Int
95
+ ctaConversionRate: Float
96
+ pageTitle: String
97
+ placement: String
98
+ size: String
99
+ }
100
+
101
+ type MediaReferrerDomainAggregate {
102
+ accountKey: String
103
+ accountName: String
104
+ containerGlobalId: String
105
+ containerHashedId: String
106
+ containerName: String
107
+ episodeHashedId: String
108
+ episodeGlobalId: String
109
+ episodeTitle: String
110
+ mediaHashedId: String
111
+ mediaGlobalId: String
112
+ mediaName: String
36
113
  referrerDomain: String
37
- impressions: Int
38
- registrations: Int
39
- attendees: Int
114
+ plays: Int
115
+ playRate: Float
116
+ engagementRate: Float
117
+ playedTime: Int
118
+ loads: Int
119
+ uniqueVisitors: Int
120
+ ctaConversionRate: Float
40
121
  }
41
122
 
42
- type LiveEventUtmCampaignAggregate {
123
+ type MediaViewerScreenSizeAggregate {
43
124
  accountKey: String
44
125
  accountName: String
45
- liveStreamEventId: Int
126
+ containerGlobalId: String
127
+ containerHashedId: String
128
+ containerName: String
129
+ episodeHashedId: String
130
+ episodeGlobalId: String
131
+ episodeTitle: String
132
+ mediaHashedId: String
133
+ mediaGlobalId: String
134
+ mediaName: String
135
+ viewerScreenSize: String
136
+ plays: Int
137
+ playRate: Float
138
+ engagementRate: Float
139
+ playedTime: Int
140
+ loads: Int
141
+ uniqueVisitors: Int
142
+ ctaConversionRate: Float
143
+ }
144
+
145
+ type MediaUtmCampaignAggregate {
146
+ accountKey: String
147
+ accountName: String
148
+ containerGlobalId: String
149
+ containerHashedId: String
150
+ containerName: String
151
+ episodeHashedId: String
152
+ episodeGlobalId: String
153
+ episodeTitle: String
154
+ mediaHashedId: String
155
+ mediaGlobalId: String
156
+ mediaName: String
46
157
  utmCampaign: String
47
- impressions: Int
48
- registrations: Int
49
- attendees: Int
158
+ plays: Int
159
+ playRate: Float
160
+ engagementRate: Float
161
+ playedTime: Int
162
+ loads: Int
163
+ uniqueVisitors: Int
164
+ ctaConversionRate: Float
50
165
  }
51
166
 
52
- type PodcastEpisodeApplicationAggregate {
167
+ type MediaUtmSourceAggregate {
53
168
  accountKey: String
54
169
  accountName: String
55
- application: String
56
- downloads: Int
57
- playableTimeDownloaded: Int
58
- percentOfDownloads: Float
170
+ containerGlobalId: String
171
+ containerHashedId: String
172
+ containerName: String
173
+ episodeHashedId: String
174
+ episodeGlobalId: String
175
+ episodeTitle: String
176
+ mediaHashedId: String
177
+ mediaGlobalId: String
178
+ mediaName: String
179
+ utmSource: String
180
+ plays: Int
181
+ playRate: Float
182
+ engagementRate: Float
183
+ playedTime: Int
184
+ loads: Int
185
+ uniqueVisitors: Int
186
+ ctaConversionRate: Float
59
187
  }
60
188
 
61
- type PlayedTimeDatapointEpisode {
62
- episodeId: Int!
189
+ type MediaUtmMediumAggregate {
190
+ accountKey: String
191
+ accountName: String
192
+ containerGlobalId: String
193
+ containerHashedId: String
194
+ containerName: String
195
+ episodeHashedId: String
196
+ episodeGlobalId: String
197
+ episodeTitle: String
198
+ mediaHashedId: String
199
+ mediaGlobalId: String
200
+ mediaName: String
201
+ utmMedium: String
202
+ plays: Int
203
+ playRate: Float
204
+ engagementRate: Float
205
+ playedTime: Int
206
+ loads: Int
207
+ uniqueVisitors: Int
208
+ ctaConversionRate: Float
209
+ }
210
+
211
+ type LiveEvent {
212
+ aggregate(includePostEvent: Boolean): LiveStreamEventAggregate
213
+ timeseries(granularity: Granularity!): [LiveEventDataPoint]
214
+ referrerDomainRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventReferrerDomainAggregate]
215
+ utmCampaignRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventUtmCampaignAggregate]
216
+ utmSourceRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventUtmSourceAggregate]
217
+ utmMediumRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventUtmMediumAggregate]
218
+ }
219
+
220
+ type LiveStreamEvent {
221
+ liveStreamEventGlobalId: String!
222
+ liveStreamEventHashedId: String!
223
+ liveStreamEventTitle: String!
224
+ liveStreamEventRegistrationStatus: String!
225
+ liveStreamEventCreatedAt: DateTime!
226
+ liveStreamEventEndedAt: DateTime
227
+ liveStreamEventScheduledFor: DateTime!
228
+ liveStreamEventDuration: Int!
229
+ liveRecapUrl: String!
230
+ mediaHashedId: String
231
+ mediaName: String
232
+ mediaThumbnailUrl: String
233
+ mediaPlays: Int!
234
+ impressions: Int!
235
+ uniqueRegistrations: Int!
236
+ attendees: Int!
237
+ registrationRate: Float!
238
+ attendanceRate: Float!
239
+ }
240
+
241
+ type LiveStreamEventAccountAggregate {
242
+ accountKey: String!
243
+ accountName: String!
244
+ impressions: Int!
245
+ registrations: Int!
246
+ uniqueRegistrations: Int!
247
+ attendees: Int!
248
+ engagedAttendees: Int!
249
+ chatParticipants: Int!
63
250
  playedTime: Int!
64
- episodeName: String!
251
+ uniquePlayedTime: Int!
252
+ mediaPlays: Int!
253
+ }
254
+
255
+ type LiveEvents {
256
+ aggregate: LiveStreamEventAggregate
257
+ }
258
+
259
+ type LiveEventDataPoint {
260
+ timestamp: String
261
+ entries: [LiveEventTimeseriesAggregate]
262
+ }
263
+
264
+ type LiveEventTimeseriesAggregate {
265
+ impressions: Int
266
+ registrations: Int
267
+ completionRate: Float
268
+ }
269
+
270
+ type PollQuestion {
271
+ id: Int!
272
+ pollId: Int!
273
+ text: String!
274
+ responseCount: Int!
275
+ options: [PollOption!]
276
+ }
277
+
278
+ type PollOption {
279
+ id: Int!
280
+ text: String!
281
+ count: Int!
282
+ percent: Float!
283
+ }
284
+
285
+ type PollResponse {
286
+ pollId: Int!
287
+ pollQuestionId: Int!
288
+ pollOptionId: Int!
65
289
  }
66
290
 
67
291
  type VisitorPollResponse {
@@ -76,135 +300,131 @@ type VisitorPollResponse {
76
300
  pollOptionText: String!
77
301
  }
78
302
 
79
- type LivePollResponse {
80
- pollQuestionText: String
81
- pollOptionText: String
303
+ type LiveStreamEventAggregate {
304
+ registrations: Int
305
+ restrictedRegistrations: Int
306
+ chats: Int
307
+ totalWatchTime: Int
308
+ averageWatchTime: Int
309
+ chattedAttendees: Int
310
+ attendance: Int
311
+ engagementRate: Float
312
+ currentlyWatching: Int
313
+ engagedAttendees: Int
314
+ impressions: Int
315
+ eventTime: Int
316
+ attendeesHistogram: [Int]
317
+ chatHistogram: [Int]
318
+ visualFocusPlayedHistogram: [Int]
319
+ pollQuestions: [PollQuestion!]
320
+ pollResponses(visitorKey: String!): [PollResponse!]
321
+ visitorPollResponses: [VisitorPollResponse!]
322
+ qaQuestions: Int
323
+ qaAnswers: Int
324
+ annotationImpressions: Int
325
+ annotationClicks: Int
326
+ uniqueAnnotationImpressions: Int
327
+ uniqueAnnotationClicks: Int
82
328
  }
83
329
 
84
- type RelativeMediaAggregate {
330
+ type LiveEventReferrerDomainAggregate {
85
331
  accountKey: String
86
332
  accountName: String
87
- date: DateTime
88
- projectHashedId: String
89
- projectName: String
90
- mediaGlobalId: String
91
- mediaHashedId: String
92
- mediaName: String
93
- mediaType: String
94
- mediaUploadedAt: DateTime
95
- mediaDeletedAt: DateTime
96
- mediaDuration: Float
97
- mediaGroupGlobalId: String
98
- mediaThumbnailUrl: String
99
- episodeGlobalId: String
100
- episodeHashedId: String
101
- episodeTitle: String
102
- episodeUploadedAt: DateTime
103
- episodeDeletedAt: DateTime
104
- episodePublishedAt: DateTime
105
- startDate: Date!
106
- endDate: Date!
107
333
  liveStreamEventId: Int
108
- containerIsPodcastEnabled: Boolean
109
- loads: Int
110
- uniqueLoads: Int
111
- plays: Int
112
- uniquePlays: Int
113
- playedTime: Int
114
- uniquePlayedTime: Int
115
- playRate: Float
116
- uniqueVisitors: Int
117
- ctaImpressions: Int
118
- ctaConversions: Int
119
- ctaConversionRate: Float
120
- engagementRate: Float
121
- cumulativePlays: Int
122
- cumulativePlayedTime: Int
334
+ referrerDomain: String
335
+ impressions: Int
336
+ registrations: Int
337
+ attendees: Int
123
338
  }
124
339
 
125
- "Whether a lead is new or existing to Wistia"
126
- enum WistiaLeadType {
127
- NEW
128
- EXISTING
340
+ type LiveEventUtmCampaignAggregate {
341
+ accountKey: String
342
+ accountName: String
343
+ liveStreamEventId: Int
344
+ utmCampaign: String
345
+ impressions: Int
346
+ registrations: Int
347
+ attendees: Int
129
348
  }
130
349
 
131
- type ProjectAggregate {
132
- accountId: Int
350
+ type LiveEventUtmSourceAggregate {
133
351
  accountKey: String
134
352
  accountName: String
135
- projectId: Int
136
- projectHashedId: String
137
- projectName: String
138
- projectUrl: String
139
- projectCreatedAt: DateTime
140
- projectVideoCount: Int
141
- loads: Int
142
- uniqueLoads: Int
143
- plays: Int
144
- uniquePlays: Int
145
- playedTime: Int
146
- uniquePlayedTime: Int
147
- playedTimeHumanReadable: String
148
- uniquePlayedTimeHumanReadable: String
149
- replayedTimeHumanReadable: String
150
- playRate: Float
151
- uniqueVisitors: Int
152
- ctaImpressions: Int
153
- ctaConversions: Int
154
- ctaConversionRate: Float
155
- engagementRate: Float
353
+ liveStreamEventId: Int
354
+ utmSource: String
355
+ impressions: Int
356
+ registrations: Int
357
+ attendees: Int
358
+ }
359
+
360
+ type LiveEventUtmMediumAggregate {
361
+ accountKey: String
362
+ accountName: String
363
+ liveStreamEventId: Int
364
+ utmMedium: String
365
+ impressions: Int
366
+ registrations: Int
367
+ attendees: Int
156
368
  }
157
369
 
158
- type MediaFormAggregate {
370
+ type LiveEventContacts {
371
+ orderedEntriesResult(pagination: Pagination!): LiveEventContactAggregateResult
372
+ }
373
+
374
+ type LiveEventContactAggregate {
375
+ visitorKey: String
376
+ accountId: Int
377
+ correlationId: String
378
+ liveStreamEventId: Int
379
+ mediaId: Int
380
+ uniqueId: String
159
381
  firstName: String
160
382
  lastName: String
161
- email: String!
162
- convertedAt: DateTime!
163
- wistiaLeadType: WistiaLeadType!
383
+ email: String
384
+ phoneNumber: String
385
+ company: String
386
+ jobTitle: String
387
+ country: String
388
+ formFieldData: [FormFieldResponse!]!
389
+ registeredAt: DateTime
390
+ attendedAt: DateTime
391
+ attendanceStatus: String
392
+ utmCampaign: String
393
+ utmSource: String
394
+ utmMedium: String
395
+ referrerDomain: String
396
+ ipRegion: String
397
+ ipCountry: String
398
+ ipCity: String
399
+ qaAnswers: Int
400
+ engagementRate: Float
401
+ focusedRate: Float
402
+ playedTime: Int
403
+ focusedPlayedTime: Int
404
+ pollResponses: [LivePollResponse]
405
+ pollResponsesCount: Int
406
+ chatCount: Int
407
+ annotationClickCount: Int
164
408
  }
165
409
 
166
- type MediaEmbedLanguageAggregate {
167
- mediaGlobalId: String
168
- plays: Int
169
- language: String
170
- percentOfTotalPlays: Float
171
- captionsSupport: Boolean
410
+ type LivePollResponse {
411
+ pollQuestionText: String
412
+ pollOptionText: String
172
413
  }
173
414
 
174
- type LiveStreamEventAggregate {
175
- registrations: Int
176
- restrictedRegistrations: Int
177
- chats: Int
178
- totalWatchTime: Int
179
- averageWatchTime: Int
180
- chattedAttendees: Int
181
- attendance: Int
182
- engagementRate: Float
183
- currentlyWatching: Int
184
- engagedAttendees: Int
185
- impressions: Int
186
- eventTime: Int
187
- attendeesHistogram: [Int]
188
- chatHistogram: [Int]
189
- visualFocusPlayedHistogram: [Int]
190
- pollQuestions: [PollQuestion!]
191
- pollResponses(visitorKey: String!): [PollResponse!]
192
- visitorPollResponses: [VisitorPollResponse!]
193
- qaQuestions: Int
194
- qaAnswers: Int
195
- annotationImpressions: Int
196
- annotationClicks: Int
197
- uniqueAnnotationImpressions: Int
198
- uniqueAnnotationClicks: Int
415
+ type FormFieldResponse {
416
+ id: Int!
417
+ value: String!
418
+ label: String!
199
419
  }
200
420
 
201
- union RelativeMediaEventAggregateResult = RelativeAggregateEntries | AggregateError
202
-
203
421
  type LiveEventContactAggregateEntries {
204
422
  entries: [LiveEventContactAggregate]
205
423
  pageInfo: PageInfo!
206
424
  }
207
425
 
426
+ union LiveEventContactAggregateResult = LiveEventContactAggregateEntries | AggregateError
427
+
208
428
  "A metric to order traffic aggregates"
209
429
  enum TrafficMetric {
210
430
  IMPRESSIONS
@@ -212,165 +432,100 @@ enum TrafficMetric {
212
432
  ATTENDEES
213
433
  }
214
434
 
215
- "Filter by certain types in aggregation queries"
216
- enum TypeFilter {
217
- PROJECTS
218
- CHANNELS
219
- MEDIA
220
- PODCAST_EPISODE
221
- PODCAST_EPISODE_APPLICATION
222
- ACCOUNT_EMBED_LOCATION
223
- MEDIA_EMBED_LOCATION
224
- }
225
-
226
- input SearchFilter {
227
- annotations: [Boolean]
228
- autoplays: [Boolean]
229
- cta: [Boolean]
230
- eventbrite: [Boolean]
231
- loops: [Boolean]
232
- marketo: [Boolean]
233
- mediaTypes: [String]
234
- turnstile: [Boolean]
235
- contentIds: [String]
236
- tags: [String]
237
- }
238
-
239
- type Media {
240
- podcastPlays: Int
241
- }
242
-
243
- type DownloadsDatapointTimestamp {
244
- timestamp: DateTime!
245
- downloads: Int!
435
+ "The type of live export"
436
+ enum LiveExportType {
437
+ LIVE_VISITOR_POLL_RESPONSE
438
+ LIVE_EVENT_CONTACTS
246
439
  }
247
440
 
248
- type PollQuestion {
249
- id: Int!
250
- pollId: Int!
251
- text: String!
252
- responseCount: Int!
253
- options: [PollOption!]
441
+ "A metric to order live stream event entries by"
442
+ enum LiveStreamEventOrderMetric {
443
+ IMPRESSIONS
444
+ UNIQUE_REGISTRATIONS
445
+ ATTENDEES
446
+ REGISTRATION_RATE
447
+ ATTENDANCE_RATE
448
+ MEDIA_PLAYS
254
449
  }
255
450
 
256
451
  "An interval of time to aggregate metrics into datapoints"
257
- enum Granularity {
258
- "1 day"
259
- P1D
260
-
452
+ enum RelativePeriod {
261
453
  "1 week (7 days)"
262
- P1W
263
-
264
- "4 weeks (28 days)"
265
- P4W
266
-
267
- "1 month"
268
- P1M
269
-
270
- "3 months (90 days)"
271
- P3M
272
-
273
- "1 year (265 days)"
274
- P1Y
275
- }
454
+ P7D
276
455
 
277
- type LiveEventTimeseriesAggregate {
278
- impressions: Int
279
- registrations: Int
280
- completionRate: Float
456
+ "30 days"
457
+ P30D
281
458
  }
282
459
 
283
- "Type of aggregate error"
284
- enum AggregateErrorType {
285
- "The queried interval exceeds the data retention period for the aggregate."
286
- INTERVAL_EXCEEDS_RETENTION
460
+ type RelativeMediaEvents {
461
+ timeseries(granularity: Granularity!, limit: Int, orderBy: MediaEventMetric): [RelativeMediaEventDatapoint]
462
+ orderedEntriesResult(orderBy: MediaEventMetric!, order: Order!, limit: Int!): RelativeMediaEventAggregateResult
463
+ aggregate: RelativeAggregate
287
464
  }
288
465
 
289
- """
290
- The `Date` scalar type represents a date. The Date appears in a JSON
291
- response as an ISO8601 formatted string, without a time component.
292
- """
293
- scalar Date
294
-
295
- type AccountEmbedLocationAggregate {
296
- accountKey: String
297
- accountName: String
298
- embedLocationCount: Int
299
- plays: Int
300
- playRate: Float
301
- engagementRate: Float
302
- playedTime: Int
303
- loads: Int
304
- uniqueVisitors: Int
305
- ctaConversionRate: Float
466
+ type RelativeMediaEventDatapoint {
467
+ relativePeriod: String
468
+ entries: [RelativeMediaAggregate]
306
469
  }
307
470
 
308
- type DownloadsDatapointEpisode {
309
- episodeId: Int!
310
- downloads: Int!
311
- episodeName: String!
471
+ type RelativeAggregateEntries {
472
+ entries: [RelativeMediaAggregate]
312
473
  }
313
474
 
314
- type PollResponse {
315
- pollId: Int!
316
- pollQuestionId: Int!
317
- pollOptionId: Int!
318
- }
475
+ union RelativeMediaEventAggregateResult = RelativeAggregateEntries | AggregateError
319
476
 
320
- type PlaysDatapointEpisode {
321
- episodeId: Int!
322
- plays: Int!
323
- episodeName: String!
324
- }
477
+ union RelativeAggregate = RelativeAccountAggregate
325
478
 
326
- type MediaEmbedLocationAggregate {
479
+ type RelativeMediaAggregate {
327
480
  accountKey: String
328
481
  accountName: String
329
- containerGlobalId: String
330
- containerHashedId: String
331
- containerName: String
332
- episodeHashedId: String
333
- episodeGlobalId: String
334
- episodeTitle: String
335
- mediaHashedId: String
482
+ date: DateTime
483
+ projectHashedId: String
484
+ projectName: String
336
485
  mediaGlobalId: String
486
+ mediaHashedId: String
337
487
  mediaName: String
488
+ mediaType: String
489
+ mediaUploadedAt: DateTime
490
+ mediaDeletedAt: DateTime
491
+ mediaDuration: Float
492
+ mediaGroupGlobalId: String
338
493
  mediaThumbnailUrl: String
339
- embedDomain: String
340
- embedPath: String
341
- embedUrl: String
494
+ episodeGlobalId: String
495
+ episodeHashedId: String
496
+ episodeTitle: String
497
+ episodeUploadedAt: DateTime
498
+ episodeDeletedAt: DateTime
499
+ episodePublishedAt: DateTime
500
+ startDate: Date!
501
+ endDate: Date!
502
+ liveStreamEventId: Int
503
+ containerIsPodcastEnabled: Boolean
504
+ loads: Int
505
+ uniqueLoads: Int
342
506
  plays: Int
343
- playRate: Float
344
- engagementRate: Float
507
+ uniquePlays: Int
345
508
  playedTime: Int
346
- loads: Int
509
+ uniquePlayedTime: Int
510
+ playRate: Float
347
511
  uniqueVisitors: Int
512
+ ctaImpressions: Int
513
+ ctaConversions: Int
348
514
  ctaConversionRate: Float
349
- pageTitle: String
350
- placement: String
351
- size: String
515
+ engagementRate: Float
516
+ cumulativePlays: Int
517
+ cumulativePlayedTime: Int
352
518
  }
353
519
 
354
- type ChannelAggregate {
355
- accountId: Int
356
- accountKey: String
357
- accountName: String
358
- channelId: Int
359
- channelHashedId: String
360
- channelCreatedAt: DateTime
361
- channelEpisodeCount: Int
362
- channelTitle: String
363
- channelPodcastEnabled: Boolean
364
- channelUrl: String
520
+ type RelativeAccountAggregate {
521
+ accountKey: String
522
+ accountName: String
365
523
  loads: Int
366
524
  uniqueLoads: Int
367
525
  plays: Int
368
526
  uniquePlays: Int
369
527
  playedTime: Int
370
528
  uniquePlayedTime: Int
371
- playedTimeHumanReadable: String
372
- uniquePlayedTimeHumanReadable: String
373
- replayedTimeHumanReadable: String
374
529
  playRate: Float
375
530
  uniqueVisitors: Int
376
531
  ctaImpressions: Int
@@ -379,157 +534,217 @@ type ChannelAggregate {
379
534
  engagementRate: Float
380
535
  }
381
536
 
382
- type PodcastEpisodeAggregate {
383
- accountKey: String
384
- accountName: String
385
- downloads: Int
386
- playableTimeDownloaded: Int
537
+ "An interval of time to aggregate metrics into datapoints"
538
+ enum Granularity {
539
+ "1 day"
540
+ P1D
541
+
542
+ "1 week (7 days)"
543
+ P1W
544
+
545
+ "4 weeks (28 days)"
546
+ P4W
547
+
548
+ "1 month"
549
+ P1M
550
+
551
+ "3 months (90 days)"
552
+ P3M
553
+
554
+ "1 year (265 days)"
555
+ P1Y
387
556
  }
388
557
 
389
- type TopEpisodesDatapoint {
390
- plays: Int!
391
- playedTime: Int!
392
- episodeId: Int!
393
- episodeName: String!
394
- mediaHashedId: String!
395
- averageEngagement: Float!
396
- publishedAt: String!
558
+ "A field to group entries by"
559
+ enum MediaEventDimension {
560
+ ACCOUNT
561
+ PROJECT
562
+ CHANNEL
563
+ EPISODE
564
+ MEDIA
565
+ ACCOUNT_EMBED_LOCATION
566
+ MEDIA_EMBED_LOCATION
567
+ MEDIA_EMBED_LANGUAGE
568
+ PODCAST_EPISODE_APPLICATION
569
+ MEDIA_REFERRER_DOMAIN
570
+ MEDIA_VIEWER_SCREEN_SIZE
571
+ MEDIA_UTM_CAMPAIGN
572
+ MEDIA_UTM_SOURCE
573
+ MEDIA_UTM_MEDIUM
397
574
  }
398
575
 
399
- type MediaEventDatapoint {
400
- timestamp: String
401
- entries: [MediaEventAggregate]
576
+ "A metric to order entries by"
577
+ enum MediaEventMetric {
578
+ PLAYS
579
+ PLAYED_TIME
580
+ PLAY_RATE
581
+ ENGAGEMENT_RATE
582
+ CTA_CONVERSION_RATE
583
+ LOADS
584
+ UNIQUE_VISITORS
585
+ DOWNLOADS
586
+ PERCENT_OF_DOWNLOADS
587
+ PLAYABLE_TIME_DOWNLOADED
588
+ PLACEMENT
589
+ SIZE
590
+ FORM_CONVERSIONS
402
591
  }
403
592
 
404
- type LiveEventDataPoint {
405
- timestamp: String
406
- entries: [LiveEventTimeseriesAggregate]
593
+ "Sort order"
594
+ enum Order {
595
+ "Ascending sort order"
596
+ ASC
597
+
598
+ "Descending sort order"
599
+ DESC
407
600
  }
408
601
 
409
- union LiveEventContactAggregateResult = LiveEventContactAggregateEntries | AggregateError
602
+ "Type of export aggregate"
603
+ enum ExportAggregate {
604
+ MEDIA
605
+ PROJECT_MEDIA
606
+ MEDIA_EMBED_LOCATION
607
+ PROJECTS
608
+ CHANNELS
609
+ PODCAST_EPISODE_APPLICATION
610
+ CHANNEL_EPISODE
611
+ PODCAST_EPISODE
612
+ MEDIA_FORM_CONVERSION
613
+ MEDIA_COMPARISON
614
+ }
410
615
 
411
- "An interval of time to aggregate metrics into datapoints"
412
- enum RelativePeriod {
413
- "1 week (7 days)"
414
- P7D
616
+ "A field to filter entries by"
617
+ enum FilterDimension {
618
+ EMBED_DOMAIN
619
+ }
415
620
 
416
- "30 days"
417
- P30D
621
+ "Operation to perform on filter"
622
+ enum Operator {
623
+ EQUALS
624
+ NOT_EQUALS
418
625
  }
419
626
 
420
- type AccountDigestStatus {
421
- name: String!
422
- status: String!
627
+ "Filter by certain types in aggregation queries"
628
+ enum TypeFilter {
629
+ PROJECTS
630
+ CHANNELS
631
+ MEDIA
632
+ PODCAST_EPISODE
633
+ PODCAST_EPISODE_APPLICATION
634
+ ACCOUNT_EMBED_LOCATION
635
+ MEDIA_EMBED_LOCATION
423
636
  }
424
637
 
425
- type ChannelMetrics {
426
- channelGlobalId: String!
427
- channelHashedId: String!
428
- plays: Int!
638
+ "Type of aggregate error"
639
+ enum AggregateErrorType {
640
+ "The queried interval exceeds the data retention period for the aggregate."
641
+ INTERVAL_EXCEEDS_RETENTION
642
+ }
643
+
644
+ "Whether a lead is new or existing to Wistia"
645
+ enum WistiaLeadType {
646
+ NEW
647
+ EXISTING
648
+ }
649
+
650
+ "Which way to paginate from a cursor"
651
+ enum CursorDirection {
652
+ BEFORE
653
+ AFTER
654
+ }
655
+
656
+ input SearchFilter {
657
+ annotations: [Boolean]
658
+ autoplays: [Boolean]
659
+ cta: [Boolean]
660
+ eventbrite: [Boolean]
661
+ loops: [Boolean]
662
+ marketo: [Boolean]
663
+ mediaTypes: [String]
664
+ turnstile: [Boolean]
665
+ contentIds: [String]
666
+ tags: [String]
429
667
  }
430
668
 
431
- type KeyValuePair {
432
- key: String
669
+ input Filter {
670
+ dimension: FilterDimension!
433
671
  value: String
672
+ operator: Operator
434
673
  }
435
674
 
436
- type RootMutationType {
437
- exportMedia(contactId: Int!, interval: Interval, searchFilter: SearchFilter, aggregate: ExportAggregate): ExportStatus
438
- exportRelativeMedia(contactId: Int!, relativePeriod: RelativePeriod!, searchFilter: SearchFilter): ExportStatus
439
- accountDigest(contactId: Int!, interval: Interval!, overrideEmail: String): AccountDigestStatus
440
- liveExport(liveStreamEventId: Int!, type: LiveExportType!, contactId: Int!): ExportStatus
675
+ input Pagination {
676
+ limit: Int!
677
+ cursor: String
678
+ direction: CursorDirection
441
679
  }
442
680
 
443
- type Channel {
444
- channelId: String
445
- interval: String
446
- priorInterval: String
447
- currentPlays: Int
448
- priorPlays: Int
449
- currentDownloads: Int
450
- priorDownloads: Int
451
- currentPlayedTime: Int
452
- priorPlayedTime: Int
453
- currentAverageSessionDuration: Int
454
- priorAverageSessionDuration: Int
455
- playsByEpisode: [PlaysDatapointEpisode]
456
- downloadsByEpisode: [DownloadsDatapointEpisode]
457
- topPlaysByApplication(limit: Int): [PlaysDatapointApplication]
458
- playsByApplication: [PlaysDatapointApplication]
459
- downloadsByApplication: [DownloadsDatapointApplication]
460
- playsOverTime: [PlaysDatapointTimestamp]
461
- downloadsOverTime: [DownloadsDatapointTimestamp]
462
- currentEmbedPlayedTime: Int
463
- currentPodcastPlayedTime: Int
464
- priorEmbedPlayedTime: Int
465
- priorPodcastPlayedTime: Int
466
- embedPlayedTimeOverTime: [PlayedTimeDatapointTimestamp]
467
- podcastPlayedTimeOverTime: [PlayedTimeDatapointTimestamp]
468
- playedTimeOverTime: [PlayedTimeDatapointTimestamp]
469
- playedTimeByEpisode: [PlayedTimeDatapointEpisode]
470
- topEpisodes: [TopEpisodesDatapoint]
681
+ type MediaEvents {
682
+ aggregate(typeFilter: TypeFilter): MediaEventAggregate
683
+ timeseries(
684
+ for: MediaEventMetric!, over: MediaEventDimension!, granularity: Granularity!, typeFilter: TypeFilter, limit: Int
685
+ ): [MediaEventDatapoint]
686
+ orderedEntries(
687
+ groupBy: MediaEventDimension!, orderBy: MediaEventMetric!, order: Order!, limit: Int!, excludeAggregatesWithoutStats: Boolean, filters: [Filter]
688
+ ): [MediaEventAggregate]
689
+ orderedEntriesResult(
690
+ groupBy: MediaEventDimension!, orderBy: MediaEventMetric!, order: Order!, limit: Int!, excludeAggregatesWithoutStats: Boolean, filters: [Filter]
691
+ ): MediaEventAggregateResult
471
692
  }
472
693
 
473
- type RootQueryType {
474
- channel(channelHashedId: String!, interval: Interval): Channel
475
- channels(channelGlobalIds: [String]!): [ChannelMetrics!]!
476
- episodes(episodeGlobalIds: [String]!): [EpisodeMetrics!]!
477
- media(mediaId: Int!): Media
478
- medias(searchFilter: SearchFilter): Medias
479
- projectsCount: Int
480
- channelsCount: Int
481
- liveStreamEventsCount(interval: Interval): Int
482
- mediaEvents(interval: Interval, searchFilter: SearchFilter): MediaEvents
483
- liveEvents(liveStreamEventIds: [Int]!, includePostEvent: Boolean): LiveEvents
484
- liveEvent(liveStreamEventId: Int!, includePostEvent: Boolean): LiveEvent
485
- liveStreamEvents(limit: Int, interval: Interval, orderBy: LiveStreamEventOrderMetric, order: Order): [LiveStreamEvent!]!
486
- liveStreamEventsAccountAggregate(limit: Int, interval: Interval): LiveStreamEventAccountAggregate!
487
- liveEventContacts(liveStreamEventId: Int!): LiveEventContacts
488
- mediaFormConversions(mediaGlobalId: String!, interval: Interval!, pagination: Pagination): MediaFormAggregateResult
489
- relativeMediaEvents(relativePeriod: RelativePeriod!, searchFilter: SearchFilter): RelativeMediaEvents
490
- exportStatus(exportId: Int!): ExportStatus
694
+ type MediaEventDatapoint {
695
+ timestamp: String
696
+ entries: [MediaEventAggregate]
491
697
  }
492
698
 
493
- type MediaReferrerDomainAggregate {
699
+ union MediaEventAggregate = AccountAggregate | ChannelAggregate | EpisodeAggregate | MediaAggregate | PodcastEpisodeAggregate | PodcastEpisodeApplicationAggregate | ProjectAggregate | AccountEmbedLocationAggregate | MediaEmbedLocationAggregate | MediaReferrerDomainAggregate | MediaEmbedLanguageAggregate | MediaViewerScreenSizeAggregate | MediaUtmCampaignAggregate | MediaUtmSourceAggregate | MediaUtmMediumAggregate
700
+
701
+ type AggregateEntries {
702
+ entries: [MediaEventAggregate]
703
+ }
704
+
705
+ union MediaEventAggregateResult = AggregateEntries | AggregateError
706
+
707
+ type AccountAggregate {
494
708
  accountKey: String
495
709
  accountName: String
496
- containerGlobalId: String
497
- containerHashedId: String
498
- containerName: String
499
- episodeHashedId: String
500
- episodeGlobalId: String
501
- episodeTitle: String
502
- mediaHashedId: String
503
- mediaGlobalId: String
504
- mediaName: String
505
- referrerDomain: String
710
+ loads: Int
711
+ uniqueLoads: Int
506
712
  plays: Int
507
- playRate: Float
508
- engagementRate: Float
713
+ uniquePlays: Int
509
714
  playedTime: Int
510
- loads: Int
715
+ uniquePlayedTime: Int
716
+ playRate: Float
511
717
  uniqueVisitors: Int
718
+ mediaCount: Int
719
+ ctaImpressions: Int
720
+ ctaConversions: Int
512
721
  ctaConversionRate: Float
722
+ engagementRate: Float
723
+ formImpressions: Int
724
+ formConversions: Int
725
+ formConversionRate: Float
513
726
  }
514
727
 
515
- type EpisodeAggregate {
728
+ type ChannelAggregate {
729
+ accountId: Int
516
730
  accountKey: String
517
731
  accountName: String
732
+ channelId: Int
518
733
  channelHashedId: String
734
+ channelCreatedAt: DateTime
735
+ channelEpisodeCount: Int
519
736
  channelTitle: String
520
737
  channelPodcastEnabled: Boolean
521
- episodeGlobalId: String
522
- episodeHashedId: String
523
- episodeTitle: String
524
- episodePublishedAt: DateTime
525
- projectHashedId: String
526
- projectName: String
738
+ channelUrl: String
527
739
  loads: Int
528
740
  uniqueLoads: Int
529
741
  plays: Int
530
742
  uniquePlays: Int
531
743
  playedTime: Int
532
744
  uniquePlayedTime: Int
745
+ playedTimeHumanReadable: String
746
+ uniquePlayedTimeHumanReadable: String
747
+ replayedTimeHumanReadable: String
533
748
  playRate: Float
534
749
  uniqueVisitors: Int
535
750
  ctaImpressions: Int
@@ -538,63 +753,18 @@ type EpisodeAggregate {
538
753
  engagementRate: Float
539
754
  }
540
755
 
541
- """
542
- The `DateTime` scalar type represents a date and time in the UTC
543
- timezone. The DateTime appears in a JSON response as an ISO8601 formatted
544
- string, including UTC timezone ("Z"). The parsed date and time string will
545
- be converted to UTC if there is an offset.
546
- """
547
- scalar DateTime
548
-
549
- type MediaUtmCampaignAggregate {
756
+ type EpisodeAggregate {
550
757
  accountKey: String
551
758
  accountName: String
552
- containerGlobalId: String
553
- containerHashedId: String
554
- containerName: String
555
- episodeHashedId: String
759
+ channelHashedId: String
760
+ channelTitle: String
761
+ channelPodcastEnabled: Boolean
556
762
  episodeGlobalId: String
763
+ episodeHashedId: String
557
764
  episodeTitle: String
558
- mediaHashedId: String
559
- mediaGlobalId: String
560
- mediaName: String
561
- utmCampaign: String
562
- plays: Int
563
- playRate: Float
564
- engagementRate: Float
565
- playedTime: Int
566
- loads: Int
567
- uniqueVisitors: Int
568
- ctaConversionRate: Float
569
- }
570
-
571
- type LiveStreamEventAccountAggregate {
572
- accountKey: String!
573
- accountName: String!
574
- impressions: Int!
575
- registrations: Int!
576
- uniqueRegistrations: Int!
577
- attendees: Int!
578
- engagedAttendees: Int!
579
- chatParticipants: Int!
580
- playedTime: Int!
581
- uniquePlayedTime: Int!
582
- mediaPlays: Int!
583
- }
584
-
585
- type LiveEventUtmMediumAggregate {
586
- accountKey: String
587
- accountName: String
588
- liveStreamEventId: Int
589
- utmMedium: String
590
- impressions: Int
591
- registrations: Int
592
- attendees: Int
593
- }
594
-
595
- type RelativeAccountAggregate {
596
- accountKey: String
597
- accountName: String
765
+ episodePublishedAt: DateTime
766
+ projectHashedId: String
767
+ projectName: String
598
768
  loads: Int
599
769
  uniqueLoads: Int
600
770
  plays: Int
@@ -609,181 +779,49 @@ type RelativeAccountAggregate {
609
779
  engagementRate: Float
610
780
  }
611
781
 
612
- type MediaViewerScreenSizeAggregate {
782
+ type PodcastEpisodeAggregate {
613
783
  accountKey: String
614
784
  accountName: String
615
- containerGlobalId: String
616
- containerHashedId: String
617
- containerName: String
618
- episodeHashedId: String
619
- episodeGlobalId: String
620
- episodeTitle: String
621
- mediaHashedId: String
622
- mediaGlobalId: String
623
- mediaName: String
624
- viewerScreenSize: String
625
- plays: Int
626
- playRate: Float
627
- engagementRate: Float
628
- playedTime: Int
629
- loads: Int
630
- uniqueVisitors: Int
631
- ctaConversionRate: Float
785
+ downloads: Int
786
+ playableTimeDownloaded: Int
632
787
  }
633
788
 
634
- type MediaUtmMediumAggregate {
789
+ type PodcastEpisodeApplicationAggregate {
635
790
  accountKey: String
636
791
  accountName: String
637
- containerGlobalId: String
638
- containerHashedId: String
639
- containerName: String
640
- episodeHashedId: String
641
- episodeGlobalId: String
642
- episodeTitle: String
643
- mediaHashedId: String
644
- mediaGlobalId: String
645
- mediaName: String
646
- utmMedium: String
647
- plays: Int
648
- playRate: Float
649
- engagementRate: Float
650
- playedTime: Int
651
- loads: Int
652
- uniqueVisitors: Int
653
- ctaConversionRate: Float
792
+ application: String
793
+ downloads: Int
794
+ playableTimeDownloaded: Int
795
+ percentOfDownloads: Float
654
796
  }
655
797
 
656
- type AccountAggregate {
798
+ type ProjectAggregate {
799
+ accountId: Int
657
800
  accountKey: String
658
801
  accountName: String
802
+ projectId: Int
803
+ projectHashedId: String
804
+ projectName: String
805
+ projectUrl: String
806
+ projectCreatedAt: DateTime
807
+ projectVideoCount: Int
659
808
  loads: Int
660
809
  uniqueLoads: Int
661
810
  plays: Int
662
811
  uniquePlays: Int
663
812
  playedTime: Int
664
813
  uniquePlayedTime: Int
814
+ playedTimeHumanReadable: String
815
+ uniquePlayedTimeHumanReadable: String
816
+ replayedTimeHumanReadable: String
665
817
  playRate: Float
666
- uniqueVisitors: Int
667
- mediaCount: Int
668
- ctaImpressions: Int
669
- ctaConversions: Int
670
- ctaConversionRate: Float
671
- engagementRate: Float
672
- formImpressions: Int
673
- formConversions: Int
674
- formConversionRate: Float
675
- }
676
-
677
- type LiveEvent {
678
- aggregate(includePostEvent: Boolean): LiveStreamEventAggregate
679
- timeseries(granularity: Granularity!): [LiveEventDataPoint]
680
- referrerDomainRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventReferrerDomainAggregate]
681
- utmCampaignRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventUtmCampaignAggregate]
682
- utmSourceRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventUtmSourceAggregate]
683
- utmMediumRegistrations(orderBy: TrafficMetric!, order: Order!): [LiveEventUtmMediumAggregate]
684
- }
685
-
686
- type MediaFormAggregateResult {
687
- pageInfo: PageInfo!
688
- entries: [MediaFormAggregate]
689
- }
690
-
691
- type RelativeMediaEventDatapoint {
692
- relativePeriod: String
693
- entries: [RelativeMediaAggregate]
694
- }
695
-
696
- type RelativeMediaEvents {
697
- timeseries(granularity: Granularity!, limit: Int, orderBy: MediaEventMetric): [RelativeMediaEventDatapoint]
698
- orderedEntriesResult(orderBy: MediaEventMetric!, order: Order!, limit: Int!): RelativeMediaEventAggregateResult
699
- aggregate: RelativeAggregate
700
- }
701
-
702
- type EpisodeMetrics {
703
- episodeGlobalId: String!
704
- episodeHashedId: String!
705
- plays: Int!
706
- }
707
-
708
- type RelativeAggregateEntries {
709
- entries: [RelativeMediaAggregate]
710
- }
711
-
712
- type AggregateEntries {
713
- entries: [MediaEventAggregate]
714
- }
715
-
716
- type AggregateError {
717
- error: AggregateErrorType!
718
- message: String!
719
- }
720
-
721
- type PlaysDatapointTimestamp {
722
- timestamp: DateTime!
723
- plays: Int!
724
- }
725
-
726
- type PlayedTimeDatapointTimestamp {
727
- timestamp: DateTime!
728
- playedTime: Int!
729
- }
730
-
731
- "A field to group entries by"
732
- enum MediaEventDimension {
733
- ACCOUNT
734
- PROJECT
735
- CHANNEL
736
- EPISODE
737
- MEDIA
738
- ACCOUNT_EMBED_LOCATION
739
- MEDIA_EMBED_LOCATION
740
- MEDIA_EMBED_LANGUAGE
741
- PODCAST_EPISODE_APPLICATION
742
- MEDIA_REFERRER_DOMAIN
743
- MEDIA_VIEWER_SCREEN_SIZE
744
- MEDIA_UTM_CAMPAIGN
745
- MEDIA_UTM_SOURCE
746
- MEDIA_UTM_MEDIUM
747
- }
748
-
749
- "Which way to paginate from a cursor"
750
- enum CursorDirection {
751
- BEFORE
752
- AFTER
753
- }
754
-
755
- "A field to filter entries by"
756
- enum FilterDimension {
757
- EMBED_DOMAIN
758
- }
759
-
760
- type DownloadsDatapointApplication {
761
- application: String!
762
- downloads: Int!
763
- }
764
-
765
- type PlaysDatapointApplication {
766
- application: String!
767
- plays: Int!
768
- }
769
-
770
- type LiveEventUtmSourceAggregate {
771
- accountKey: String
772
- accountName: String
773
- liveStreamEventId: Int
774
- utmSource: String
775
- impressions: Int
776
- registrations: Int
777
- attendees: Int
778
- }
779
-
780
- "The type of live export"
781
- enum LiveExportType {
782
- LIVE_VISITOR_POLL_RESPONSE
818
+ uniqueVisitors: Int
819
+ ctaImpressions: Int
820
+ ctaConversions: Int
821
+ ctaConversionRate: Float
822
+ engagementRate: Float
783
823
  }
784
824
 
785
- union RelativeAggregate = RelativeAccountAggregate
786
-
787
825
  type MediaAggregate {
788
826
  accountKey: String
789
827
  accountName: String
@@ -823,178 +861,142 @@ type MediaAggregate {
823
861
  formConversionRate: Float
824
862
  }
825
863
 
826
- type MediaUtmSourceAggregate {
827
- accountKey: String
828
- accountName: String
829
- containerGlobalId: String
830
- containerHashedId: String
831
- containerName: String
832
- episodeHashedId: String
833
- episodeGlobalId: String
834
- episodeTitle: String
835
- mediaHashedId: String
836
- mediaGlobalId: String
837
- mediaName: String
838
- utmSource: String
839
- plays: Int
840
- playRate: Float
841
- engagementRate: Float
842
- playedTime: Int
843
- loads: Int
844
- uniqueVisitors: Int
845
- ctaConversionRate: Float
864
+ type PageInfo {
865
+ startCursor: String
866
+ endCursor: String
867
+ hasNextPage: Boolean!
868
+ hasPreviousPage: Boolean!
846
869
  }
847
870
 
848
- type LiveEventContactAggregate {
849
- visitorKey: String
850
- accountId: Int
851
- correlationId: String
852
- liveStreamEventId: Int
853
- mediaId: Int
854
- uniqueId: String
871
+ type MediaFormAggregateResult {
872
+ pageInfo: PageInfo!
873
+ entries: [MediaFormAggregate]
874
+ }
875
+
876
+ type MediaFormAggregate {
855
877
  firstName: String
856
878
  lastName: String
857
- email: String
858
- phoneNumber: String
859
- company: String
860
- jobTitle: String
861
- country: String
862
- formFieldData: [KeyValuePair!]!
863
- registeredAt: DateTime
864
- attendedAt: DateTime
865
- attendanceStatus: String
866
- utmCampaign: String
867
- utmSource: String
868
- utmMedium: String
869
- referrerDomain: String
870
- ipRegion: String
871
- ipCountry: String
872
- ipCity: String
873
- qaAnswers: Int
874
- engagementRate: Float
875
- focusedRate: Float
876
- playedTime: Int
877
- focusedPlayedTime: Int
878
- pollResponses: [LivePollResponse]
879
- chatCount: Int
880
- annotationClickCount: Int
879
+ email: String!
880
+ convertedAt: DateTime!
881
+ wistiaLeadType: WistiaLeadType!
881
882
  }
882
883
 
883
- "Type of export aggregate"
884
- enum ExportAggregate {
885
- MEDIA
886
- PROJECT_MEDIA
887
- MEDIA_EMBED_LOCATION
888
- PROJECTS
889
- CHANNELS
890
- PODCAST_EPISODE_APPLICATION
891
- CHANNEL_EPISODE
892
- PODCAST_EPISODE
893
- MEDIA_FORM_CONVERSION
894
- MEDIA_COMPARISON
884
+ type AggregateError {
885
+ error: AggregateErrorType!
886
+ message: String!
895
887
  }
896
888
 
897
- union MediaEventAggregate = AccountAggregate | ChannelAggregate | EpisodeAggregate | MediaAggregate | PodcastEpisodeAggregate | PodcastEpisodeApplicationAggregate | ProjectAggregate | AccountEmbedLocationAggregate | MediaEmbedLocationAggregate | MediaReferrerDomainAggregate | MediaEmbedLanguageAggregate | MediaViewerScreenSizeAggregate | MediaUtmCampaignAggregate | MediaUtmSourceAggregate | MediaUtmMediumAggregate
889
+ type PlaysDatapointTimestamp {
890
+ timestamp: DateTime!
891
+ plays: Int!
892
+ }
898
893
 
899
- type LiveStreamEvent {
900
- liveStreamEventGlobalId: String!
901
- liveStreamEventHashedId: String!
902
- liveStreamEventTitle: String!
903
- liveStreamEventRegistrationStatus: String!
904
- liveStreamEventCreatedAt: DateTime!
905
- liveStreamEventEndedAt: DateTime
906
- liveStreamEventScheduledFor: DateTime!
907
- liveStreamEventDuration: Int!
908
- liveRecapUrl: String!
909
- mediaHashedId: String
910
- mediaName: String
911
- mediaThumbnailUrl: String
912
- mediaPlays: Int!
913
- impressions: Int!
914
- uniqueRegistrations: Int!
915
- attendees: Int!
916
- registrationRate: Float!
917
- attendanceRate: Float!
894
+ type DownloadsDatapointTimestamp {
895
+ timestamp: DateTime!
896
+ downloads: Int!
918
897
  }
919
898
 
920
- union MediaEventAggregateResult = AggregateEntries | AggregateError
899
+ type PlaysDatapointEpisode {
900
+ episodeId: Int!
901
+ plays: Int!
902
+ episodeName: String!
903
+ }
921
904
 
922
- type MediaEvents {
923
- aggregate(typeFilter: TypeFilter): MediaEventAggregate
924
- timeseries(
925
- for: MediaEventMetric!, over: MediaEventDimension!, granularity: Granularity!, typeFilter: TypeFilter, limit: Int
926
- ): [MediaEventDatapoint]
927
- orderedEntries(
928
- groupBy: MediaEventDimension!, orderBy: MediaEventMetric!, order: Order!, limit: Int!, excludeAggregatesWithoutStats: Boolean, filters: [Filter]
929
- ): [MediaEventAggregate]
930
- orderedEntriesResult(
931
- groupBy: MediaEventDimension!, orderBy: MediaEventMetric!, order: Order!, limit: Int!, excludeAggregatesWithoutStats: Boolean, filters: [Filter]
932
- ): MediaEventAggregateResult
905
+ type DownloadsDatapointEpisode {
906
+ episodeId: Int!
907
+ downloads: Int!
908
+ episodeName: String!
933
909
  }
934
910
 
935
- type ExportStatus {
936
- exportId: Int
937
- name: String!
938
- status: String!
939
- url: String
911
+ type DownloadsDatapointApplication {
912
+ application: String!
913
+ downloads: Int!
940
914
  }
941
915
 
942
- type LiveEventContacts {
943
- orderedEntriesResult(pagination: Pagination!): LiveEventContactAggregateResult
916
+ type PlaysDatapointApplication {
917
+ application: String!
918
+ plays: Int!
944
919
  }
945
920
 
946
- type Medias {
947
- totalCount: Int
921
+ type PlayedTimeDatapointTimestamp {
922
+ timestamp: DateTime!
923
+ playedTime: Int!
948
924
  }
949
925
 
950
- "A metric to order live stream event entries by"
951
- enum LiveStreamEventOrderMetric {
952
- IMPRESSIONS
953
- UNIQUE_REGISTRATIONS
954
- ATTENDEES
955
- REGISTRATION_RATE
956
- ATTENDANCE_RATE
957
- MEDIA_PLAYS
926
+ type PlayedTimeDatapointEpisode {
927
+ episodeId: Int!
928
+ playedTime: Int!
929
+ episodeName: String!
958
930
  }
959
931
 
960
- type LiveEvents {
961
- aggregate: LiveStreamEventAggregate
932
+ type TopEpisodesDatapoint {
933
+ plays: Int!
934
+ playedTime: Int!
935
+ episodeId: Int!
936
+ episodeName: String!
937
+ mediaHashedId: String!
938
+ averageEngagement: Float!
939
+ publishedAt: String!
962
940
  }
963
941
 
964
- "A metric to order entries by"
965
- enum MediaEventMetric {
966
- PLAYS
967
- PLAYED_TIME
968
- PLAY_RATE
969
- ENGAGEMENT_RATE
970
- CTA_CONVERSION_RATE
971
- LOADS
972
- UNIQUE_VISITORS
973
- DOWNLOADS
974
- PERCENT_OF_DOWNLOADS
975
- PLAYABLE_TIME_DOWNLOADED
976
- PLACEMENT
977
- SIZE
978
- FORM_CONVERSIONS
942
+ type Channel {
943
+ channelId: String
944
+ interval: String
945
+ priorInterval: String
946
+ currentPlays: Int
947
+ priorPlays: Int
948
+ currentDownloads: Int
949
+ priorDownloads: Int
950
+ currentPlayedTime: Int
951
+ priorPlayedTime: Int
952
+ currentAverageSessionDuration: Int
953
+ priorAverageSessionDuration: Int
954
+ playsByEpisode: [PlaysDatapointEpisode]
955
+ downloadsByEpisode: [DownloadsDatapointEpisode]
956
+ topPlaysByApplication(limit: Int): [PlaysDatapointApplication]
957
+ playsByApplication: [PlaysDatapointApplication]
958
+ downloadsByApplication: [DownloadsDatapointApplication]
959
+ playsOverTime: [PlaysDatapointTimestamp]
960
+ downloadsOverTime: [DownloadsDatapointTimestamp]
961
+ currentEmbedPlayedTime: Int
962
+ currentPodcastPlayedTime: Int
963
+ priorEmbedPlayedTime: Int
964
+ priorPodcastPlayedTime: Int
965
+ embedPlayedTimeOverTime: [PlayedTimeDatapointTimestamp]
966
+ podcastPlayedTimeOverTime: [PlayedTimeDatapointTimestamp]
967
+ playedTimeOverTime: [PlayedTimeDatapointTimestamp]
968
+ playedTimeByEpisode: [PlayedTimeDatapointEpisode]
969
+ topEpisodes: [TopEpisodesDatapoint]
979
970
  }
980
971
 
981
- "Sort order"
982
- enum Order {
983
- "Ascending sort order"
984
- ASC
972
+ type Media {
973
+ podcastPlays: Int
974
+ }
985
975
 
986
- "Descending sort order"
987
- DESC
976
+ type Medias {
977
+ totalCount: Int
988
978
  }
989
979
 
990
- input Filter {
991
- dimension: FilterDimension!
992
- value: String
993
- operator: Operator
980
+ type ExportStatus {
981
+ exportId: Int
982
+ name: String!
983
+ status: String!
984
+ url: String
994
985
  }
995
986
 
996
- "Operation to perform on filter"
997
- enum Operator {
998
- EQUALS
999
- NOT_EQUALS
987
+ type AccountDigestStatus {
988
+ name: String!
989
+ status: String!
990
+ }
991
+
992
+ type ChannelMetrics {
993
+ channelGlobalId: String!
994
+ channelHashedId: String!
995
+ plays: Int!
996
+ }
997
+
998
+ type EpisodeMetrics {
999
+ episodeGlobalId: String!
1000
+ episodeHashedId: String!
1001
+ plays: Int!
1000
1002
  }