@wistia/bottler-helpers 1.0.31 → 1.1.0

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 +724 -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,130 @@ 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
+ chatCount: Int
406
+ annotationClickCount: Int
164
407
  }
165
408
 
166
- type MediaEmbedLanguageAggregate {
167
- mediaGlobalId: String
168
- plays: Int
169
- language: String
170
- percentOfTotalPlays: Float
171
- captionsSupport: Boolean
409
+ type LivePollResponse {
410
+ pollQuestionText: String
411
+ pollOptionText: String
172
412
  }
173
413
 
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
414
+ type FormFieldResponse {
415
+ id: Int!
416
+ value: String!
417
+ label: String!
199
418
  }
200
419
 
201
- union RelativeMediaEventAggregateResult = RelativeAggregateEntries | AggregateError
202
-
203
420
  type LiveEventContactAggregateEntries {
204
421
  entries: [LiveEventContactAggregate]
205
422
  pageInfo: PageInfo!
206
423
  }
207
424
 
425
+ union LiveEventContactAggregateResult = LiveEventContactAggregateEntries | AggregateError
426
+
208
427
  "A metric to order traffic aggregates"
209
428
  enum TrafficMetric {
210
429
  IMPRESSIONS
@@ -212,165 +431,99 @@ enum TrafficMetric {
212
431
  ATTENDEES
213
432
  }
214
433
 
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!
434
+ "The type of live export"
435
+ enum LiveExportType {
436
+ LIVE_VISITOR_POLL_RESPONSE
246
437
  }
247
438
 
248
- type PollQuestion {
249
- id: Int!
250
- pollId: Int!
251
- text: String!
252
- responseCount: Int!
253
- options: [PollOption!]
439
+ "A metric to order live stream event entries by"
440
+ enum LiveStreamEventOrderMetric {
441
+ IMPRESSIONS
442
+ UNIQUE_REGISTRATIONS
443
+ ATTENDEES
444
+ REGISTRATION_RATE
445
+ ATTENDANCE_RATE
446
+ MEDIA_PLAYS
254
447
  }
255
448
 
256
449
  "An interval of time to aggregate metrics into datapoints"
257
- enum Granularity {
258
- "1 day"
259
- P1D
260
-
450
+ enum RelativePeriod {
261
451
  "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
- }
452
+ P7D
276
453
 
277
- type LiveEventTimeseriesAggregate {
278
- impressions: Int
279
- registrations: Int
280
- completionRate: Float
454
+ "30 days"
455
+ P30D
281
456
  }
282
457
 
283
- "Type of aggregate error"
284
- enum AggregateErrorType {
285
- "The queried interval exceeds the data retention period for the aggregate."
286
- INTERVAL_EXCEEDS_RETENTION
458
+ type RelativeMediaEvents {
459
+ timeseries(granularity: Granularity!, limit: Int, orderBy: MediaEventMetric): [RelativeMediaEventDatapoint]
460
+ orderedEntriesResult(orderBy: MediaEventMetric!, order: Order!, limit: Int!): RelativeMediaEventAggregateResult
461
+ aggregate: RelativeAggregate
287
462
  }
288
463
 
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
464
+ type RelativeMediaEventDatapoint {
465
+ relativePeriod: String
466
+ entries: [RelativeMediaAggregate]
306
467
  }
307
468
 
308
- type DownloadsDatapointEpisode {
309
- episodeId: Int!
310
- downloads: Int!
311
- episodeName: String!
469
+ type RelativeAggregateEntries {
470
+ entries: [RelativeMediaAggregate]
312
471
  }
313
472
 
314
- type PollResponse {
315
- pollId: Int!
316
- pollQuestionId: Int!
317
- pollOptionId: Int!
318
- }
473
+ union RelativeMediaEventAggregateResult = RelativeAggregateEntries | AggregateError
319
474
 
320
- type PlaysDatapointEpisode {
321
- episodeId: Int!
322
- plays: Int!
323
- episodeName: String!
324
- }
475
+ union RelativeAggregate = RelativeAccountAggregate
325
476
 
326
- type MediaEmbedLocationAggregate {
477
+ type RelativeMediaAggregate {
327
478
  accountKey: String
328
479
  accountName: String
329
- containerGlobalId: String
330
- containerHashedId: String
331
- containerName: String
332
- episodeHashedId: String
333
- episodeGlobalId: String
334
- episodeTitle: String
335
- mediaHashedId: String
480
+ date: DateTime
481
+ projectHashedId: String
482
+ projectName: String
336
483
  mediaGlobalId: String
484
+ mediaHashedId: String
337
485
  mediaName: String
486
+ mediaType: String
487
+ mediaUploadedAt: DateTime
488
+ mediaDeletedAt: DateTime
489
+ mediaDuration: Float
490
+ mediaGroupGlobalId: String
338
491
  mediaThumbnailUrl: String
339
- embedDomain: String
340
- embedPath: String
341
- embedUrl: String
492
+ episodeGlobalId: String
493
+ episodeHashedId: String
494
+ episodeTitle: String
495
+ episodeUploadedAt: DateTime
496
+ episodeDeletedAt: DateTime
497
+ episodePublishedAt: DateTime
498
+ startDate: Date!
499
+ endDate: Date!
500
+ liveStreamEventId: Int
501
+ containerIsPodcastEnabled: Boolean
502
+ loads: Int
503
+ uniqueLoads: Int
342
504
  plays: Int
343
- playRate: Float
344
- engagementRate: Float
505
+ uniquePlays: Int
345
506
  playedTime: Int
346
- loads: Int
507
+ uniquePlayedTime: Int
508
+ playRate: Float
347
509
  uniqueVisitors: Int
510
+ ctaImpressions: Int
511
+ ctaConversions: Int
348
512
  ctaConversionRate: Float
349
- pageTitle: String
350
- placement: String
351
- size: String
513
+ engagementRate: Float
514
+ cumulativePlays: Int
515
+ cumulativePlayedTime: Int
352
516
  }
353
517
 
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
518
+ type RelativeAccountAggregate {
519
+ accountKey: String
520
+ accountName: String
365
521
  loads: Int
366
522
  uniqueLoads: Int
367
523
  plays: Int
368
524
  uniquePlays: Int
369
525
  playedTime: Int
370
526
  uniquePlayedTime: Int
371
- playedTimeHumanReadable: String
372
- uniquePlayedTimeHumanReadable: String
373
- replayedTimeHumanReadable: String
374
527
  playRate: Float
375
528
  uniqueVisitors: Int
376
529
  ctaImpressions: Int
@@ -379,157 +532,217 @@ type ChannelAggregate {
379
532
  engagementRate: Float
380
533
  }
381
534
 
382
- type PodcastEpisodeAggregate {
383
- accountKey: String
384
- accountName: String
385
- downloads: Int
386
- playableTimeDownloaded: Int
535
+ "An interval of time to aggregate metrics into datapoints"
536
+ enum Granularity {
537
+ "1 day"
538
+ P1D
539
+
540
+ "1 week (7 days)"
541
+ P1W
542
+
543
+ "4 weeks (28 days)"
544
+ P4W
545
+
546
+ "1 month"
547
+ P1M
548
+
549
+ "3 months (90 days)"
550
+ P3M
551
+
552
+ "1 year (265 days)"
553
+ P1Y
387
554
  }
388
555
 
389
- type TopEpisodesDatapoint {
390
- plays: Int!
391
- playedTime: Int!
392
- episodeId: Int!
393
- episodeName: String!
394
- mediaHashedId: String!
395
- averageEngagement: Float!
396
- publishedAt: String!
556
+ "A field to group entries by"
557
+ enum MediaEventDimension {
558
+ ACCOUNT
559
+ PROJECT
560
+ CHANNEL
561
+ EPISODE
562
+ MEDIA
563
+ ACCOUNT_EMBED_LOCATION
564
+ MEDIA_EMBED_LOCATION
565
+ MEDIA_EMBED_LANGUAGE
566
+ PODCAST_EPISODE_APPLICATION
567
+ MEDIA_REFERRER_DOMAIN
568
+ MEDIA_VIEWER_SCREEN_SIZE
569
+ MEDIA_UTM_CAMPAIGN
570
+ MEDIA_UTM_SOURCE
571
+ MEDIA_UTM_MEDIUM
397
572
  }
398
573
 
399
- type MediaEventDatapoint {
400
- timestamp: String
401
- entries: [MediaEventAggregate]
574
+ "A metric to order entries by"
575
+ enum MediaEventMetric {
576
+ PLAYS
577
+ PLAYED_TIME
578
+ PLAY_RATE
579
+ ENGAGEMENT_RATE
580
+ CTA_CONVERSION_RATE
581
+ LOADS
582
+ UNIQUE_VISITORS
583
+ DOWNLOADS
584
+ PERCENT_OF_DOWNLOADS
585
+ PLAYABLE_TIME_DOWNLOADED
586
+ PLACEMENT
587
+ SIZE
588
+ FORM_CONVERSIONS
402
589
  }
403
590
 
404
- type LiveEventDataPoint {
405
- timestamp: String
406
- entries: [LiveEventTimeseriesAggregate]
591
+ "Sort order"
592
+ enum Order {
593
+ "Ascending sort order"
594
+ ASC
595
+
596
+ "Descending sort order"
597
+ DESC
407
598
  }
408
599
 
409
- union LiveEventContactAggregateResult = LiveEventContactAggregateEntries | AggregateError
600
+ "Type of export aggregate"
601
+ enum ExportAggregate {
602
+ MEDIA
603
+ PROJECT_MEDIA
604
+ MEDIA_EMBED_LOCATION
605
+ PROJECTS
606
+ CHANNELS
607
+ PODCAST_EPISODE_APPLICATION
608
+ CHANNEL_EPISODE
609
+ PODCAST_EPISODE
610
+ MEDIA_FORM_CONVERSION
611
+ MEDIA_COMPARISON
612
+ }
410
613
 
411
- "An interval of time to aggregate metrics into datapoints"
412
- enum RelativePeriod {
413
- "1 week (7 days)"
414
- P7D
614
+ "A field to filter entries by"
615
+ enum FilterDimension {
616
+ EMBED_DOMAIN
617
+ }
415
618
 
416
- "30 days"
417
- P30D
619
+ "Operation to perform on filter"
620
+ enum Operator {
621
+ EQUALS
622
+ NOT_EQUALS
418
623
  }
419
624
 
420
- type AccountDigestStatus {
421
- name: String!
422
- status: String!
625
+ "Filter by certain types in aggregation queries"
626
+ enum TypeFilter {
627
+ PROJECTS
628
+ CHANNELS
629
+ MEDIA
630
+ PODCAST_EPISODE
631
+ PODCAST_EPISODE_APPLICATION
632
+ ACCOUNT_EMBED_LOCATION
633
+ MEDIA_EMBED_LOCATION
423
634
  }
424
635
 
425
- type ChannelMetrics {
426
- channelGlobalId: String!
427
- channelHashedId: String!
428
- plays: Int!
636
+ "Type of aggregate error"
637
+ enum AggregateErrorType {
638
+ "The queried interval exceeds the data retention period for the aggregate."
639
+ INTERVAL_EXCEEDS_RETENTION
640
+ }
641
+
642
+ "Whether a lead is new or existing to Wistia"
643
+ enum WistiaLeadType {
644
+ NEW
645
+ EXISTING
646
+ }
647
+
648
+ "Which way to paginate from a cursor"
649
+ enum CursorDirection {
650
+ BEFORE
651
+ AFTER
652
+ }
653
+
654
+ input SearchFilter {
655
+ annotations: [Boolean]
656
+ autoplays: [Boolean]
657
+ cta: [Boolean]
658
+ eventbrite: [Boolean]
659
+ loops: [Boolean]
660
+ marketo: [Boolean]
661
+ mediaTypes: [String]
662
+ turnstile: [Boolean]
663
+ contentIds: [String]
664
+ tags: [String]
429
665
  }
430
666
 
431
- type KeyValuePair {
432
- key: String
667
+ input Filter {
668
+ dimension: FilterDimension!
433
669
  value: String
670
+ operator: Operator
434
671
  }
435
672
 
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
673
+ input Pagination {
674
+ limit: Int!
675
+ cursor: String
676
+ direction: CursorDirection
441
677
  }
442
678
 
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]
679
+ type MediaEvents {
680
+ aggregate(typeFilter: TypeFilter): MediaEventAggregate
681
+ timeseries(
682
+ for: MediaEventMetric!, over: MediaEventDimension!, granularity: Granularity!, typeFilter: TypeFilter, limit: Int
683
+ ): [MediaEventDatapoint]
684
+ orderedEntries(
685
+ groupBy: MediaEventDimension!, orderBy: MediaEventMetric!, order: Order!, limit: Int!, excludeAggregatesWithoutStats: Boolean, filters: [Filter]
686
+ ): [MediaEventAggregate]
687
+ orderedEntriesResult(
688
+ groupBy: MediaEventDimension!, orderBy: MediaEventMetric!, order: Order!, limit: Int!, excludeAggregatesWithoutStats: Boolean, filters: [Filter]
689
+ ): MediaEventAggregateResult
471
690
  }
472
691
 
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
692
+ type MediaEventDatapoint {
693
+ timestamp: String
694
+ entries: [MediaEventAggregate]
491
695
  }
492
696
 
493
- type MediaReferrerDomainAggregate {
697
+ union MediaEventAggregate = AccountAggregate | ChannelAggregate | EpisodeAggregate | MediaAggregate | PodcastEpisodeAggregate | PodcastEpisodeApplicationAggregate | ProjectAggregate | AccountEmbedLocationAggregate | MediaEmbedLocationAggregate | MediaReferrerDomainAggregate | MediaEmbedLanguageAggregate | MediaViewerScreenSizeAggregate | MediaUtmCampaignAggregate | MediaUtmSourceAggregate | MediaUtmMediumAggregate
698
+
699
+ type AggregateEntries {
700
+ entries: [MediaEventAggregate]
701
+ }
702
+
703
+ union MediaEventAggregateResult = AggregateEntries | AggregateError
704
+
705
+ type AccountAggregate {
494
706
  accountKey: String
495
707
  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
708
+ loads: Int
709
+ uniqueLoads: Int
506
710
  plays: Int
507
- playRate: Float
508
- engagementRate: Float
711
+ uniquePlays: Int
509
712
  playedTime: Int
510
- loads: Int
713
+ uniquePlayedTime: Int
714
+ playRate: Float
511
715
  uniqueVisitors: Int
716
+ mediaCount: Int
717
+ ctaImpressions: Int
718
+ ctaConversions: Int
512
719
  ctaConversionRate: Float
720
+ engagementRate: Float
721
+ formImpressions: Int
722
+ formConversions: Int
723
+ formConversionRate: Float
513
724
  }
514
725
 
515
- type EpisodeAggregate {
726
+ type ChannelAggregate {
727
+ accountId: Int
516
728
  accountKey: String
517
729
  accountName: String
730
+ channelId: Int
518
731
  channelHashedId: String
732
+ channelCreatedAt: DateTime
733
+ channelEpisodeCount: Int
519
734
  channelTitle: String
520
735
  channelPodcastEnabled: Boolean
521
- episodeGlobalId: String
522
- episodeHashedId: String
523
- episodeTitle: String
524
- episodePublishedAt: DateTime
525
- projectHashedId: String
526
- projectName: String
736
+ channelUrl: String
527
737
  loads: Int
528
738
  uniqueLoads: Int
529
739
  plays: Int
530
740
  uniquePlays: Int
531
741
  playedTime: Int
532
742
  uniquePlayedTime: Int
743
+ playedTimeHumanReadable: String
744
+ uniquePlayedTimeHumanReadable: String
745
+ replayedTimeHumanReadable: String
533
746
  playRate: Float
534
747
  uniqueVisitors: Int
535
748
  ctaImpressions: Int
@@ -538,63 +751,18 @@ type EpisodeAggregate {
538
751
  engagementRate: Float
539
752
  }
540
753
 
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 {
754
+ type EpisodeAggregate {
550
755
  accountKey: String
551
756
  accountName: String
552
- containerGlobalId: String
553
- containerHashedId: String
554
- containerName: String
555
- episodeHashedId: String
757
+ channelHashedId: String
758
+ channelTitle: String
759
+ channelPodcastEnabled: Boolean
556
760
  episodeGlobalId: String
761
+ episodeHashedId: String
557
762
  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
763
+ episodePublishedAt: DateTime
764
+ projectHashedId: String
765
+ projectName: String
598
766
  loads: Int
599
767
  uniqueLoads: Int
600
768
  plays: Int
@@ -609,181 +777,49 @@ type RelativeAccountAggregate {
609
777
  engagementRate: Float
610
778
  }
611
779
 
612
- type MediaViewerScreenSizeAggregate {
780
+ type PodcastEpisodeAggregate {
613
781
  accountKey: String
614
782
  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
783
+ downloads: Int
784
+ playableTimeDownloaded: Int
632
785
  }
633
786
 
634
- type MediaUtmMediumAggregate {
787
+ type PodcastEpisodeApplicationAggregate {
635
788
  accountKey: String
636
789
  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
790
+ application: String
791
+ downloads: Int
792
+ playableTimeDownloaded: Int
793
+ percentOfDownloads: Float
654
794
  }
655
795
 
656
- type AccountAggregate {
796
+ type ProjectAggregate {
797
+ accountId: Int
657
798
  accountKey: String
658
799
  accountName: String
800
+ projectId: Int
801
+ projectHashedId: String
802
+ projectName: String
803
+ projectUrl: String
804
+ projectCreatedAt: DateTime
805
+ projectVideoCount: Int
659
806
  loads: Int
660
807
  uniqueLoads: Int
661
808
  plays: Int
662
809
  uniquePlays: Int
663
810
  playedTime: Int
664
811
  uniquePlayedTime: Int
812
+ playedTimeHumanReadable: String
813
+ uniquePlayedTimeHumanReadable: String
814
+ replayedTimeHumanReadable: String
665
815
  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
816
+ uniqueVisitors: Int
817
+ ctaImpressions: Int
818
+ ctaConversions: Int
819
+ ctaConversionRate: Float
820
+ engagementRate: Float
783
821
  }
784
822
 
785
- union RelativeAggregate = RelativeAccountAggregate
786
-
787
823
  type MediaAggregate {
788
824
  accountKey: String
789
825
  accountName: String
@@ -823,178 +859,142 @@ type MediaAggregate {
823
859
  formConversionRate: Float
824
860
  }
825
861
 
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
862
+ type PageInfo {
863
+ startCursor: String
864
+ endCursor: String
865
+ hasNextPage: Boolean!
866
+ hasPreviousPage: Boolean!
846
867
  }
847
868
 
848
- type LiveEventContactAggregate {
849
- visitorKey: String
850
- accountId: Int
851
- correlationId: String
852
- liveStreamEventId: Int
853
- mediaId: Int
854
- uniqueId: String
869
+ type MediaFormAggregateResult {
870
+ pageInfo: PageInfo!
871
+ entries: [MediaFormAggregate]
872
+ }
873
+
874
+ type MediaFormAggregate {
855
875
  firstName: String
856
876
  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
877
+ email: String!
878
+ convertedAt: DateTime!
879
+ wistiaLeadType: WistiaLeadType!
881
880
  }
882
881
 
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
882
+ type AggregateError {
883
+ error: AggregateErrorType!
884
+ message: String!
895
885
  }
896
886
 
897
- union MediaEventAggregate = AccountAggregate | ChannelAggregate | EpisodeAggregate | MediaAggregate | PodcastEpisodeAggregate | PodcastEpisodeApplicationAggregate | ProjectAggregate | AccountEmbedLocationAggregate | MediaEmbedLocationAggregate | MediaReferrerDomainAggregate | MediaEmbedLanguageAggregate | MediaViewerScreenSizeAggregate | MediaUtmCampaignAggregate | MediaUtmSourceAggregate | MediaUtmMediumAggregate
887
+ type PlaysDatapointTimestamp {
888
+ timestamp: DateTime!
889
+ plays: Int!
890
+ }
898
891
 
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!
892
+ type DownloadsDatapointTimestamp {
893
+ timestamp: DateTime!
894
+ downloads: Int!
918
895
  }
919
896
 
920
- union MediaEventAggregateResult = AggregateEntries | AggregateError
897
+ type PlaysDatapointEpisode {
898
+ episodeId: Int!
899
+ plays: Int!
900
+ episodeName: String!
901
+ }
921
902
 
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
903
+ type DownloadsDatapointEpisode {
904
+ episodeId: Int!
905
+ downloads: Int!
906
+ episodeName: String!
933
907
  }
934
908
 
935
- type ExportStatus {
936
- exportId: Int
937
- name: String!
938
- status: String!
939
- url: String
909
+ type DownloadsDatapointApplication {
910
+ application: String!
911
+ downloads: Int!
940
912
  }
941
913
 
942
- type LiveEventContacts {
943
- orderedEntriesResult(pagination: Pagination!): LiveEventContactAggregateResult
914
+ type PlaysDatapointApplication {
915
+ application: String!
916
+ plays: Int!
944
917
  }
945
918
 
946
- type Medias {
947
- totalCount: Int
919
+ type PlayedTimeDatapointTimestamp {
920
+ timestamp: DateTime!
921
+ playedTime: Int!
948
922
  }
949
923
 
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
924
+ type PlayedTimeDatapointEpisode {
925
+ episodeId: Int!
926
+ playedTime: Int!
927
+ episodeName: String!
958
928
  }
959
929
 
960
- type LiveEvents {
961
- aggregate: LiveStreamEventAggregate
930
+ type TopEpisodesDatapoint {
931
+ plays: Int!
932
+ playedTime: Int!
933
+ episodeId: Int!
934
+ episodeName: String!
935
+ mediaHashedId: String!
936
+ averageEngagement: Float!
937
+ publishedAt: String!
962
938
  }
963
939
 
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
940
+ type Channel {
941
+ channelId: String
942
+ interval: String
943
+ priorInterval: String
944
+ currentPlays: Int
945
+ priorPlays: Int
946
+ currentDownloads: Int
947
+ priorDownloads: Int
948
+ currentPlayedTime: Int
949
+ priorPlayedTime: Int
950
+ currentAverageSessionDuration: Int
951
+ priorAverageSessionDuration: Int
952
+ playsByEpisode: [PlaysDatapointEpisode]
953
+ downloadsByEpisode: [DownloadsDatapointEpisode]
954
+ topPlaysByApplication(limit: Int): [PlaysDatapointApplication]
955
+ playsByApplication: [PlaysDatapointApplication]
956
+ downloadsByApplication: [DownloadsDatapointApplication]
957
+ playsOverTime: [PlaysDatapointTimestamp]
958
+ downloadsOverTime: [DownloadsDatapointTimestamp]
959
+ currentEmbedPlayedTime: Int
960
+ currentPodcastPlayedTime: Int
961
+ priorEmbedPlayedTime: Int
962
+ priorPodcastPlayedTime: Int
963
+ embedPlayedTimeOverTime: [PlayedTimeDatapointTimestamp]
964
+ podcastPlayedTimeOverTime: [PlayedTimeDatapointTimestamp]
965
+ playedTimeOverTime: [PlayedTimeDatapointTimestamp]
966
+ playedTimeByEpisode: [PlayedTimeDatapointEpisode]
967
+ topEpisodes: [TopEpisodesDatapoint]
979
968
  }
980
969
 
981
- "Sort order"
982
- enum Order {
983
- "Ascending sort order"
984
- ASC
970
+ type Media {
971
+ podcastPlays: Int
972
+ }
985
973
 
986
- "Descending sort order"
987
- DESC
974
+ type Medias {
975
+ totalCount: Int
988
976
  }
989
977
 
990
- input Filter {
991
- dimension: FilterDimension!
992
- value: String
993
- operator: Operator
978
+ type ExportStatus {
979
+ exportId: Int
980
+ name: String!
981
+ status: String!
982
+ url: String
994
983
  }
995
984
 
996
- "Operation to perform on filter"
997
- enum Operator {
998
- EQUALS
999
- NOT_EQUALS
985
+ type AccountDigestStatus {
986
+ name: String!
987
+ status: String!
988
+ }
989
+
990
+ type ChannelMetrics {
991
+ channelGlobalId: String!
992
+ channelHashedId: String!
993
+ plays: Int!
994
+ }
995
+
996
+ type EpisodeMetrics {
997
+ episodeGlobalId: String!
998
+ episodeHashedId: String!
999
+ plays: Int!
1000
1000
  }