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 +4 -4
- data/docs/AdDailyMetrics.md +6 -0
- data/docs/AdMetrics.md +6 -0
- data/docs/CampaignAnalyticsResponseAnalyticsDailyInner.md +6 -0
- data/docs/CampaignAnalyticsResponseAnalyticsSummary.md +6 -0
- data/lib/zernio-sdk/models/ad_daily_metrics.rb +31 -1
- data/lib/zernio-sdk/models/ad_metrics.rb +31 -1
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics_daily_inner.rb +31 -1
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics_summary.rb +31 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/openapi.yaml +1 -1
- data/spec/models/ad_daily_metrics_spec.rb +18 -0
- data/spec/models/ad_metrics_spec.rb +18 -0
- data/spec/models/campaign_analytics_response_analytics_daily_inner_spec.rb +18 -0
- data/spec/models/campaign_analytics_response_analytics_summary_spec.rb +18 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cea8f22e788bedd63baccb3b2aefa2c02d53d9324bf471d382b91a626ce88673
|
|
4
|
+
data.tar.gz: f5a1bd86bbc4fd2ada4dbb1916a79f5b2004344f1be23e66e48e1dba6891e3f6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: faa6af2cd577b0ce10ccd2bc7c49be373562e029613569b7b7287f5b8c5604d8301ed883821e47f1ab14a0eb51a5039bed16b89ba5adf696369e3d2ffb5226e2
|
|
7
|
+
data.tar.gz: df276f2dd652b31a43cb127f0e8f49be68710ad40c8de44f52a79f8fa865740acafd2d17d3bb053631ee5338f189eea91f5c9c6f76ac5a475a3af86dfad7ad1c
|
data/docs/AdDailyMetrics.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] |
|
|
@@ -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
|
data/lib/zernio-sdk/version.rb
CHANGED