zernio-sdk 0.0.1341 → 0.0.1342

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 647351afddf0c3a531df333e4266e82bc370243d938a5c10b2c3c2d7cbc244c0
4
- data.tar.gz: 9ecd316c840283d2391d23575889c54502e90f3a9e245b0df4741d0e3ef4c780
3
+ metadata.gz: cea8f22e788bedd63baccb3b2aefa2c02d53d9324bf471d382b91a626ce88673
4
+ data.tar.gz: f5a1bd86bbc4fd2ada4dbb1916a79f5b2004344f1be23e66e48e1dba6891e3f6
5
5
  SHA512:
6
- metadata.gz: 6e74cce12a414c78a254b219402f8d6576b7797394af5f7e09177c5f8eff0181d6be6906d1202d1dcfdc21ec4c39eed25c079cf02f760950ba36f7e4e3b7ec47
7
- data.tar.gz: c22c16d2b99b3e5f2fb534a4ed3ec0870991c66a3b1994abf8a01efdf69fbbd2cebfbf4b308d8556424fdb645656974ae98a1b371daba8a1cb5daceb0addfb34
6
+ metadata.gz: faa6af2cd577b0ce10ccd2bc7c49be373562e029613569b7b7287f5b8c5604d8301ed883821e47f1ab14a0eb51a5039bed16b89ba5adf696369e3d2ffb5226e2
7
+ data.tar.gz: df276f2dd652b31a43cb127f0e8f49be68710ad40c8de44f52a79f8fa865740acafd2d17d3bb053631ee5338f189eea91f5c9c6f76ac5a475a3af86dfad7ad1c
@@ -34,6 +34,9 @@
34
34
  | **video_p75_watched_actions** | **Integer** | Views reaching 75% of the video's length. Sources: Meta `video_p75_watched_actions`, TikTok `video_views_p75`. | [optional] |
35
35
  | **video_p95_watched_actions** | **Integer** | Views reaching 95% of the video's length. Sources: Meta `video_p95_watched_actions` (Meta only). | [optional] |
36
36
  | **video_p100_watched_actions** | **Integer** | Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`. | [optional] |
37
+ | **video2_sec_watched_actions** | **Integer** | Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0. | [optional] |
38
+ | **video6_sec_watched_actions** | **Integer** | Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
39
+ | **video6_sec_focused_views** | **Integer** | TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
37
40
  | **video_avg_time_watched_actions** | **Float** | Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`. | [optional] |
38
41
  | **cost_per_thruplay** | **Float** | Derived `spend / videoThruplayWatchedActions`, in ad-account native currency. Rounded to 4 decimals rather than the usual 2 because a ThruPlay routinely costs well under a cent. 0 when the ad has no ThruPlays (ThruPlay is Meta-only). | [optional] |
39
42
  | **funnel** | [**AdFunnelCounts**](AdFunnelCounts.md) | | [optional] |
@@ -77,6 +80,9 @@ instance = Zernio::AdDailyMetrics.new(
77
80
  video_p75_watched_actions: null,
78
81
  video_p95_watched_actions: null,
79
82
  video_p100_watched_actions: null,
83
+ video2_sec_watched_actions: null,
84
+ video6_sec_watched_actions: null,
85
+ video6_sec_focused_views: null,
80
86
  video_avg_time_watched_actions: null,
81
87
  cost_per_thruplay: null,
82
88
  funnel: null,
data/docs/AdMetrics.md CHANGED
@@ -34,6 +34,9 @@
34
34
  | **video_p75_watched_actions** | **Integer** | Views reaching 75% of the video's length. Sources: Meta `video_p75_watched_actions`, TikTok `video_views_p75`. | [optional] |
35
35
  | **video_p95_watched_actions** | **Integer** | Views reaching 95% of the video's length. Sources: Meta `video_p95_watched_actions` (Meta only). | [optional] |
36
36
  | **video_p100_watched_actions** | **Integer** | Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`. | [optional] |
37
+ | **video2_sec_watched_actions** | **Integer** | Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0. | [optional] |
38
+ | **video6_sec_watched_actions** | **Integer** | Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
39
+ | **video6_sec_focused_views** | **Integer** | TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
37
40
  | **video_avg_time_watched_actions** | **Float** | Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`. | [optional] |
38
41
  | **cost_per_thruplay** | **Float** | Derived `spend / videoThruplayWatchedActions`, in ad-account native currency. Rounded to 4 decimals rather than the usual 2 because a ThruPlay routinely costs well under a cent. 0 when the ad has no ThruPlays (ThruPlay is Meta-only). | [optional] |
39
42
  | **funnel** | [**AdFunnelCounts**](AdFunnelCounts.md) | | [optional] |
@@ -76,6 +79,9 @@ instance = Zernio::AdMetrics.new(
76
79
  video_p75_watched_actions: null,
77
80
  video_p95_watched_actions: null,
78
81
  video_p100_watched_actions: null,
82
+ video2_sec_watched_actions: null,
83
+ video6_sec_watched_actions: null,
84
+ video6_sec_focused_views: null,
79
85
  video_avg_time_watched_actions: null,
80
86
  cost_per_thruplay: null,
81
87
  funnel: null,
@@ -34,6 +34,9 @@
34
34
  | **video_p75_watched_actions** | **Integer** | Views reaching 75% of the video's length. Sources: Meta `video_p75_watched_actions`, TikTok `video_views_p75`. | [optional] |
35
35
  | **video_p95_watched_actions** | **Integer** | Views reaching 95% of the video's length. Sources: Meta `video_p95_watched_actions` (Meta only). | [optional] |
36
36
  | **video_p100_watched_actions** | **Integer** | Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`. | [optional] |
37
+ | **video2_sec_watched_actions** | **Integer** | Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0. | [optional] |
38
+ | **video6_sec_watched_actions** | **Integer** | Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
39
+ | **video6_sec_focused_views** | **Integer** | TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
37
40
  | **video_avg_time_watched_actions** | **Float** | Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`. | [optional] |
38
41
  | **cost_per_thruplay** | **Float** | Derived `spend / videoThruplayWatchedActions`, in ad-account native currency. Rounded to 4 decimals rather than the usual 2 because a ThruPlay routinely costs well under a cent. 0 when the ad has no ThruPlays (ThruPlay is Meta-only). | [optional] |
39
42
  | **funnel** | [**AdFunnelCounts**](AdFunnelCounts.md) | | [optional] |
@@ -77,6 +80,9 @@ instance = Zernio::CampaignAnalyticsResponseAnalyticsDailyInner.new(
77
80
  video_p75_watched_actions: null,
78
81
  video_p95_watched_actions: null,
79
82
  video_p100_watched_actions: null,
83
+ video2_sec_watched_actions: null,
84
+ video6_sec_watched_actions: null,
85
+ video6_sec_focused_views: null,
80
86
  video_avg_time_watched_actions: null,
81
87
  cost_per_thruplay: null,
82
88
  funnel: null,
@@ -34,6 +34,9 @@
34
34
  | **video_p75_watched_actions** | **Integer** | Views reaching 75% of the video's length. Sources: Meta `video_p75_watched_actions`, TikTok `video_views_p75`. | [optional] |
35
35
  | **video_p95_watched_actions** | **Integer** | Views reaching 95% of the video's length. Sources: Meta `video_p95_watched_actions` (Meta only). | [optional] |
36
36
  | **video_p100_watched_actions** | **Integer** | Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`. | [optional] |
37
+ | **video2_sec_watched_actions** | **Integer** | Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0. | [optional] |
38
+ | **video6_sec_watched_actions** | **Integer** | Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
39
+ | **video6_sec_focused_views** | **Integer** | TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`. | [optional] |
37
40
  | **video_avg_time_watched_actions** | **Float** | Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`. | [optional] |
38
41
  | **cost_per_thruplay** | **Float** | Derived `spend / videoThruplayWatchedActions`, in ad-account native currency. Rounded to 4 decimals rather than the usual 2 because a ThruPlay routinely costs well under a cent. 0 when the ad has no ThruPlays (ThruPlay is Meta-only). | [optional] |
39
42
  | **funnel** | [**AdFunnelCounts**](AdFunnelCounts.md) | | [optional] |
@@ -81,6 +84,9 @@ instance = Zernio::CampaignAnalyticsResponseAnalyticsSummary.new(
81
84
  video_p75_watched_actions: null,
82
85
  video_p95_watched_actions: null,
83
86
  video_p100_watched_actions: null,
87
+ video2_sec_watched_actions: null,
88
+ video6_sec_watched_actions: null,
89
+ video6_sec_focused_views: null,
84
90
  video_avg_time_watched_actions: null,
85
91
  cost_per_thruplay: null,
86
92
  funnel: null,
@@ -102,6 +102,15 @@ module Zernio
102
102
  # Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`.
103
103
  attr_accessor :video_p100_watched_actions
104
104
 
105
+ # Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0.
106
+ attr_accessor :video2_sec_watched_actions
107
+
108
+ # Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`.
109
+ attr_accessor :video6_sec_watched_actions
110
+
111
+ # TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`.
112
+ attr_accessor :video6_sec_focused_views
113
+
105
114
  # Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`.
106
115
  attr_accessor :video_avg_time_watched_actions
107
116
 
@@ -151,6 +160,9 @@ module Zernio
151
160
  :'video_p75_watched_actions' => :'videoP75WatchedActions',
152
161
  :'video_p95_watched_actions' => :'videoP95WatchedActions',
153
162
  :'video_p100_watched_actions' => :'videoP100WatchedActions',
163
+ :'video2_sec_watched_actions' => :'video2SecWatchedActions',
164
+ :'video6_sec_watched_actions' => :'video6SecWatchedActions',
165
+ :'video6_sec_focused_views' => :'video6SecFocusedViews',
154
166
  :'video_avg_time_watched_actions' => :'videoAvgTimeWatchedActions',
155
167
  :'cost_per_thruplay' => :'costPerThruplay',
156
168
  :'funnel' => :'funnel',
@@ -203,6 +215,9 @@ module Zernio
203
215
  :'video_p75_watched_actions' => :'Integer',
204
216
  :'video_p95_watched_actions' => :'Integer',
205
217
  :'video_p100_watched_actions' => :'Integer',
218
+ :'video2_sec_watched_actions' => :'Integer',
219
+ :'video6_sec_watched_actions' => :'Integer',
220
+ :'video6_sec_focused_views' => :'Integer',
206
221
  :'video_avg_time_watched_actions' => :'Float',
207
222
  :'cost_per_thruplay' => :'Float',
208
223
  :'funnel' => :'AdFunnelCounts',
@@ -367,6 +382,18 @@ module Zernio
367
382
  self.video_p100_watched_actions = attributes[:'video_p100_watched_actions']
368
383
  end
369
384
 
385
+ if attributes.key?(:'video2_sec_watched_actions')
386
+ self.video2_sec_watched_actions = attributes[:'video2_sec_watched_actions']
387
+ end
388
+
389
+ if attributes.key?(:'video6_sec_watched_actions')
390
+ self.video6_sec_watched_actions = attributes[:'video6_sec_watched_actions']
391
+ end
392
+
393
+ if attributes.key?(:'video6_sec_focused_views')
394
+ self.video6_sec_focused_views = attributes[:'video6_sec_focused_views']
395
+ end
396
+
370
397
  if attributes.key?(:'video_avg_time_watched_actions')
371
398
  self.video_avg_time_watched_actions = attributes[:'video_avg_time_watched_actions']
372
399
  end
@@ -442,6 +469,9 @@ module Zernio
442
469
  video_p75_watched_actions == o.video_p75_watched_actions &&
443
470
  video_p95_watched_actions == o.video_p95_watched_actions &&
444
471
  video_p100_watched_actions == o.video_p100_watched_actions &&
472
+ video2_sec_watched_actions == o.video2_sec_watched_actions &&
473
+ video6_sec_watched_actions == o.video6_sec_watched_actions &&
474
+ video6_sec_focused_views == o.video6_sec_focused_views &&
445
475
  video_avg_time_watched_actions == o.video_avg_time_watched_actions &&
446
476
  cost_per_thruplay == o.cost_per_thruplay &&
447
477
  funnel == o.funnel &&
@@ -459,7 +489,7 @@ module Zernio
459
489
  # Calculates hash code according to all attributes.
460
490
  # @return [Integer] Hash code
461
491
  def hash
462
- [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at, date].hash
492
+ [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video2_sec_watched_actions, video6_sec_watched_actions, video6_sec_focused_views, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at, date].hash
463
493
  end
464
494
 
465
495
  # Builds the object from hash
@@ -101,6 +101,15 @@ module Zernio
101
101
  # Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`.
102
102
  attr_accessor :video_p100_watched_actions
103
103
 
104
+ # Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0.
105
+ attr_accessor :video2_sec_watched_actions
106
+
107
+ # Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`.
108
+ attr_accessor :video6_sec_watched_actions
109
+
110
+ # TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`.
111
+ attr_accessor :video6_sec_focused_views
112
+
104
113
  # Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`.
105
114
  attr_accessor :video_avg_time_watched_actions
106
115
 
@@ -147,6 +156,9 @@ module Zernio
147
156
  :'video_p75_watched_actions' => :'videoP75WatchedActions',
148
157
  :'video_p95_watched_actions' => :'videoP95WatchedActions',
149
158
  :'video_p100_watched_actions' => :'videoP100WatchedActions',
159
+ :'video2_sec_watched_actions' => :'video2SecWatchedActions',
160
+ :'video6_sec_watched_actions' => :'video6SecWatchedActions',
161
+ :'video6_sec_focused_views' => :'video6SecFocusedViews',
150
162
  :'video_avg_time_watched_actions' => :'videoAvgTimeWatchedActions',
151
163
  :'cost_per_thruplay' => :'costPerThruplay',
152
164
  :'funnel' => :'funnel',
@@ -198,6 +210,9 @@ module Zernio
198
210
  :'video_p75_watched_actions' => :'Integer',
199
211
  :'video_p95_watched_actions' => :'Integer',
200
212
  :'video_p100_watched_actions' => :'Integer',
213
+ :'video2_sec_watched_actions' => :'Integer',
214
+ :'video6_sec_watched_actions' => :'Integer',
215
+ :'video6_sec_focused_views' => :'Integer',
201
216
  :'video_avg_time_watched_actions' => :'Float',
202
217
  :'cost_per_thruplay' => :'Float',
203
218
  :'funnel' => :'AdFunnelCounts',
@@ -354,6 +369,18 @@ module Zernio
354
369
  self.video_p100_watched_actions = attributes[:'video_p100_watched_actions']
355
370
  end
356
371
 
372
+ if attributes.key?(:'video2_sec_watched_actions')
373
+ self.video2_sec_watched_actions = attributes[:'video2_sec_watched_actions']
374
+ end
375
+
376
+ if attributes.key?(:'video6_sec_watched_actions')
377
+ self.video6_sec_watched_actions = attributes[:'video6_sec_watched_actions']
378
+ end
379
+
380
+ if attributes.key?(:'video6_sec_focused_views')
381
+ self.video6_sec_focused_views = attributes[:'video6_sec_focused_views']
382
+ end
383
+
357
384
  if attributes.key?(:'video_avg_time_watched_actions')
358
385
  self.video_avg_time_watched_actions = attributes[:'video_avg_time_watched_actions']
359
386
  end
@@ -425,6 +452,9 @@ module Zernio
425
452
  video_p75_watched_actions == o.video_p75_watched_actions &&
426
453
  video_p95_watched_actions == o.video_p95_watched_actions &&
427
454
  video_p100_watched_actions == o.video_p100_watched_actions &&
455
+ video2_sec_watched_actions == o.video2_sec_watched_actions &&
456
+ video6_sec_watched_actions == o.video6_sec_watched_actions &&
457
+ video6_sec_focused_views == o.video6_sec_focused_views &&
428
458
  video_avg_time_watched_actions == o.video_avg_time_watched_actions &&
429
459
  cost_per_thruplay == o.cost_per_thruplay &&
430
460
  funnel == o.funnel &&
@@ -441,7 +471,7 @@ module Zernio
441
471
  # Calculates hash code according to all attributes.
442
472
  # @return [Integer] Hash code
443
473
  def hash
444
- [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at].hash
474
+ [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video2_sec_watched_actions, video6_sec_watched_actions, video6_sec_focused_views, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at].hash
445
475
  end
446
476
 
447
477
  # Builds the object from hash
@@ -101,6 +101,15 @@ module Zernio
101
101
  # Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`.
102
102
  attr_accessor :video_p100_watched_actions
103
103
 
104
+ # Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0.
105
+ attr_accessor :video2_sec_watched_actions
106
+
107
+ # Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`.
108
+ attr_accessor :video6_sec_watched_actions
109
+
110
+ # TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`.
111
+ attr_accessor :video6_sec_focused_views
112
+
104
113
  # Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`.
105
114
  attr_accessor :video_avg_time_watched_actions
106
115
 
@@ -149,6 +158,9 @@ module Zernio
149
158
  :'video_p75_watched_actions' => :'videoP75WatchedActions',
150
159
  :'video_p95_watched_actions' => :'videoP95WatchedActions',
151
160
  :'video_p100_watched_actions' => :'videoP100WatchedActions',
161
+ :'video2_sec_watched_actions' => :'video2SecWatchedActions',
162
+ :'video6_sec_watched_actions' => :'video6SecWatchedActions',
163
+ :'video6_sec_focused_views' => :'video6SecFocusedViews',
152
164
  :'video_avg_time_watched_actions' => :'videoAvgTimeWatchedActions',
153
165
  :'cost_per_thruplay' => :'costPerThruplay',
154
166
  :'funnel' => :'funnel',
@@ -201,6 +213,9 @@ module Zernio
201
213
  :'video_p75_watched_actions' => :'Integer',
202
214
  :'video_p95_watched_actions' => :'Integer',
203
215
  :'video_p100_watched_actions' => :'Integer',
216
+ :'video2_sec_watched_actions' => :'Integer',
217
+ :'video6_sec_watched_actions' => :'Integer',
218
+ :'video6_sec_focused_views' => :'Integer',
204
219
  :'video_avg_time_watched_actions' => :'Float',
205
220
  :'cost_per_thruplay' => :'Float',
206
221
  :'funnel' => :'AdFunnelCounts',
@@ -365,6 +380,18 @@ module Zernio
365
380
  self.video_p100_watched_actions = attributes[:'video_p100_watched_actions']
366
381
  end
367
382
 
383
+ if attributes.key?(:'video2_sec_watched_actions')
384
+ self.video2_sec_watched_actions = attributes[:'video2_sec_watched_actions']
385
+ end
386
+
387
+ if attributes.key?(:'video6_sec_watched_actions')
388
+ self.video6_sec_watched_actions = attributes[:'video6_sec_watched_actions']
389
+ end
390
+
391
+ if attributes.key?(:'video6_sec_focused_views')
392
+ self.video6_sec_focused_views = attributes[:'video6_sec_focused_views']
393
+ end
394
+
368
395
  if attributes.key?(:'video_avg_time_watched_actions')
369
396
  self.video_avg_time_watched_actions = attributes[:'video_avg_time_watched_actions']
370
397
  end
@@ -440,6 +467,9 @@ module Zernio
440
467
  video_p75_watched_actions == o.video_p75_watched_actions &&
441
468
  video_p95_watched_actions == o.video_p95_watched_actions &&
442
469
  video_p100_watched_actions == o.video_p100_watched_actions &&
470
+ video2_sec_watched_actions == o.video2_sec_watched_actions &&
471
+ video6_sec_watched_actions == o.video6_sec_watched_actions &&
472
+ video6_sec_focused_views == o.video6_sec_focused_views &&
443
473
  video_avg_time_watched_actions == o.video_avg_time_watched_actions &&
444
474
  cost_per_thruplay == o.cost_per_thruplay &&
445
475
  funnel == o.funnel &&
@@ -457,7 +487,7 @@ module Zernio
457
487
  # Calculates hash code according to all attributes.
458
488
  # @return [Integer] Hash code
459
489
  def hash
460
- [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at, date].hash
490
+ [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video2_sec_watched_actions, video6_sec_watched_actions, video6_sec_focused_views, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at, date].hash
461
491
  end
462
492
 
463
493
  # Builds the object from hash
@@ -101,6 +101,15 @@ module Zernio
101
101
  # Views reaching 100% of the video's length. Sources: Meta `video_p100_watched_actions`, TikTok `video_views_p100`.
102
102
  attr_accessor :video_p100_watched_actions
103
103
 
104
+ # Plays of at least 2 seconds, replays excluded. Hook rate = video2SecWatchedActions / impressions. Sources: TikTok `video_watched_2s` (TikTok only; Meta's closest field, 2-second continuous plays, is not synced). TikTok history note: added 2026-10, and each sync re-fetches only the last 7 days, so older days read 0.
105
+ attr_accessor :video2_sec_watched_actions
106
+
107
+ # Plays of at least 6 seconds, replays excluded. Hold rate = video6SecWatchedActions / video2SecWatchedActions. Sources: TikTok `video_watched_6s` (TikTok only). Same history note as `video2SecWatchedActions`.
108
+ attr_accessor :video6_sec_watched_actions
109
+
110
+ # TikTok's 6-second focused views: plays of at least 6 seconds (or to the end, for shorter videos) or with an interaction in the first 6 seconds, so it is at least `video6SecWatchedActions`. Sources: TikTok `engaged_view` (TikTok only). Same history note as `video2SecWatchedActions`.
111
+ attr_accessor :video6_sec_focused_views
112
+
104
113
  # Average seconds watched per play. Aggregated over date ranges and across children as a play-weighted average (total watch time / total plays), never a plain average of averages. Sources: Meta `video_avg_time_watched_actions`, TikTok `average_video_play`.
105
114
  attr_accessor :video_avg_time_watched_actions
106
115
 
@@ -162,6 +171,9 @@ module Zernio
162
171
  :'video_p75_watched_actions' => :'videoP75WatchedActions',
163
172
  :'video_p95_watched_actions' => :'videoP95WatchedActions',
164
173
  :'video_p100_watched_actions' => :'videoP100WatchedActions',
174
+ :'video2_sec_watched_actions' => :'video2SecWatchedActions',
175
+ :'video6_sec_watched_actions' => :'video6SecWatchedActions',
176
+ :'video6_sec_focused_views' => :'video6SecFocusedViews',
165
177
  :'video_avg_time_watched_actions' => :'videoAvgTimeWatchedActions',
166
178
  :'cost_per_thruplay' => :'costPerThruplay',
167
179
  :'funnel' => :'funnel',
@@ -218,6 +230,9 @@ module Zernio
218
230
  :'video_p75_watched_actions' => :'Integer',
219
231
  :'video_p95_watched_actions' => :'Integer',
220
232
  :'video_p100_watched_actions' => :'Integer',
233
+ :'video2_sec_watched_actions' => :'Integer',
234
+ :'video6_sec_watched_actions' => :'Integer',
235
+ :'video6_sec_focused_views' => :'Integer',
221
236
  :'video_avg_time_watched_actions' => :'Float',
222
237
  :'cost_per_thruplay' => :'Float',
223
238
  :'funnel' => :'AdFunnelCounts',
@@ -391,6 +406,18 @@ module Zernio
391
406
  self.video_p100_watched_actions = attributes[:'video_p100_watched_actions']
392
407
  end
393
408
 
409
+ if attributes.key?(:'video2_sec_watched_actions')
410
+ self.video2_sec_watched_actions = attributes[:'video2_sec_watched_actions']
411
+ end
412
+
413
+ if attributes.key?(:'video6_sec_watched_actions')
414
+ self.video6_sec_watched_actions = attributes[:'video6_sec_watched_actions']
415
+ end
416
+
417
+ if attributes.key?(:'video6_sec_focused_views')
418
+ self.video6_sec_focused_views = attributes[:'video6_sec_focused_views']
419
+ end
420
+
394
421
  if attributes.key?(:'video_avg_time_watched_actions')
395
422
  self.video_avg_time_watched_actions = attributes[:'video_avg_time_watched_actions']
396
423
  end
@@ -482,6 +509,9 @@ module Zernio
482
509
  video_p75_watched_actions == o.video_p75_watched_actions &&
483
510
  video_p95_watched_actions == o.video_p95_watched_actions &&
484
511
  video_p100_watched_actions == o.video_p100_watched_actions &&
512
+ video2_sec_watched_actions == o.video2_sec_watched_actions &&
513
+ video6_sec_watched_actions == o.video6_sec_watched_actions &&
514
+ video6_sec_focused_views == o.video6_sec_focused_views &&
485
515
  video_avg_time_watched_actions == o.video_avg_time_watched_actions &&
486
516
  cost_per_thruplay == o.cost_per_thruplay &&
487
517
  funnel == o.funnel &&
@@ -503,7 +533,7 @@ module Zernio
503
533
  # Calculates hash code according to all attributes.
504
534
  # @return [Integer] Hash code
505
535
  def hash
506
- [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at, search_impression_share, search_budget_lost_impression_share, search_rank_lost_impression_share, search_top_impression_share, search_absolute_top_impression_share].hash
536
+ [spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, all_conversions, cost_per_conversion, actions, action_values, purchase_value, roas, cost_per_action, outbound_clicks, outbound_clicks_ctr, inline_link_clicks, inline_link_click_ctr, unique_clicks, unique_ctr, video_play_actions, video30_sec_watched_actions, video_thruplay_watched_actions, video_p25_watched_actions, video_p50_watched_actions, video_p75_watched_actions, video_p95_watched_actions, video_p100_watched_actions, video2_sec_watched_actions, video6_sec_watched_actions, video6_sec_focused_views, video_avg_time_watched_actions, cost_per_thruplay, funnel, engagement_breakdown, last_synced_at, search_impression_share, search_budget_lost_impression_share, search_rank_lost_impression_share, search_top_impression_share, search_absolute_top_impression_share].hash
507
537
  end
508
538
 
509
539
  # Builds the object from hash
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.1341'
14
+ VERSION = '0.0.1342'
15
15
  end