post-for-me 0.1.0.pre.alpha.10 → 0.1.0.pre.alpha.12
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/CHANGELOG.md +42 -0
- data/README.md +10 -1
- data/lib/post_for_me/client.rb +4 -0
- data/lib/post_for_me/internal/transport/pooled_net_requester.rb +12 -10
- data/lib/post_for_me/internal/util.rb +7 -2
- data/lib/post_for_me/models/create_social_post.rb +158 -8
- data/lib/post_for_me/models/platform_post.rb +843 -0
- data/lib/post_for_me/models/social_account_create_auth_url_params.rb +245 -9
- data/lib/post_for_me/models/social_account_feed_list_params.rb +81 -0
- data/lib/post_for_me/models/social_account_feed_list_response.rb +58 -0
- data/lib/post_for_me/models/social_post.rb +155 -8
- data/lib/post_for_me/models/social_post_list_params.rb +9 -1
- data/lib/post_for_me/models/social_post_result_list_params.rb +10 -1
- data/lib/post_for_me/models/youtube_configuration_dto.rb +31 -1
- data/lib/post_for_me/models.rb +4 -0
- data/lib/post_for_me/resources/social_account_feeds.rb +51 -0
- data/lib/post_for_me/resources/social_accounts.rb +8 -1
- data/lib/post_for_me/resources/social_post_results.rb +3 -1
- data/lib/post_for_me/resources/social_posts.rb +3 -1
- data/lib/post_for_me/version.rb +1 -1
- data/lib/post_for_me.rb +5 -0
- data/manifest.yaml +1 -0
- data/rbi/post_for_me/client.rbi +3 -0
- data/rbi/post_for_me/models/create_social_post.rbi +328 -8
- data/rbi/post_for_me/models/platform_post.rbi +1287 -0
- data/rbi/post_for_me/models/social_account_create_auth_url_params.rbi +545 -15
- data/rbi/post_for_me/models/social_account_feed_list_params.rbi +157 -0
- data/rbi/post_for_me/models/social_account_feed_list_response.rbi +110 -0
- data/rbi/post_for_me/models/social_post.rbi +328 -8
- data/rbi/post_for_me/models/social_post_list_params.rbi +11 -0
- data/rbi/post_for_me/models/social_post_result_list_params.rbi +13 -0
- data/rbi/post_for_me/models/youtube_configuration_dto.rbi +63 -0
- data/rbi/post_for_me/models.rbi +4 -0
- data/rbi/post_for_me/resources/social_account_feeds.rbi +51 -0
- data/rbi/post_for_me/resources/social_accounts.rbi +13 -0
- data/rbi/post_for_me/resources/social_post_results.rbi +4 -0
- data/rbi/post_for_me/resources/social_posts.rbi +3 -0
- data/sig/post_for_me/client.rbs +2 -0
- data/sig/post_for_me/models/create_social_post.rbs +120 -8
- data/sig/post_for_me/models/platform_post.rbs +660 -0
- data/sig/post_for_me/models/social_account_create_auth_url_params.rbs +193 -10
- data/sig/post_for_me/models/social_account_feed_list_params.rbs +75 -0
- data/sig/post_for_me/models/social_account_feed_list_response.rbs +54 -0
- data/sig/post_for_me/models/social_post.rbs +120 -8
- data/sig/post_for_me/models/social_post_list_params.rbs +7 -0
- data/sig/post_for_me/models/social_post_result_list_params.rbs +8 -1
- data/sig/post_for_me/models/youtube_configuration_dto.rbs +22 -0
- data/sig/post_for_me/models.rbs +4 -0
- data/sig/post_for_me/resources/social_account_feeds.rbs +18 -0
- data/sig/post_for_me/resources/social_accounts.rbs +2 -0
- data/sig/post_for_me/resources/social_post_results.rbs +1 -0
- data/sig/post_for_me/resources/social_posts.rbs +1 -0
- metadata +28 -2
|
@@ -0,0 +1,1287 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module PostForMe
|
|
4
|
+
module Models
|
|
5
|
+
class PlatformPost < PostForMe::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(PostForMe::PlatformPost, PostForMe::Internal::AnyHash)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Caption or text content of the post
|
|
12
|
+
sig { returns(String) }
|
|
13
|
+
attr_accessor :caption
|
|
14
|
+
|
|
15
|
+
# Array of media items attached to the post
|
|
16
|
+
sig { returns(T::Array[T::Array[T.anything]]) }
|
|
17
|
+
attr_accessor :media
|
|
18
|
+
|
|
19
|
+
# Social media platform name
|
|
20
|
+
sig { returns(String) }
|
|
21
|
+
attr_accessor :platform
|
|
22
|
+
|
|
23
|
+
# Platform-specific account ID
|
|
24
|
+
sig { returns(String) }
|
|
25
|
+
attr_accessor :platform_account_id
|
|
26
|
+
|
|
27
|
+
# Platform-specific post ID
|
|
28
|
+
sig { returns(String) }
|
|
29
|
+
attr_accessor :platform_post_id
|
|
30
|
+
|
|
31
|
+
# URL to the post on the platform
|
|
32
|
+
sig { returns(String) }
|
|
33
|
+
attr_accessor :platform_url
|
|
34
|
+
|
|
35
|
+
# ID of the social account
|
|
36
|
+
sig { returns(String) }
|
|
37
|
+
attr_accessor :social_account_id
|
|
38
|
+
|
|
39
|
+
# External account ID from the platform
|
|
40
|
+
sig { returns(T.nilable(String)) }
|
|
41
|
+
attr_accessor :external_account_id
|
|
42
|
+
|
|
43
|
+
# External post ID from the platform
|
|
44
|
+
sig { returns(T.nilable(String)) }
|
|
45
|
+
attr_accessor :external_post_id
|
|
46
|
+
|
|
47
|
+
# Post metrics and analytics data
|
|
48
|
+
sig { returns(T.nilable(PostForMe::PlatformPost::Metrics::Variants)) }
|
|
49
|
+
attr_reader :metrics
|
|
50
|
+
|
|
51
|
+
sig do
|
|
52
|
+
params(
|
|
53
|
+
metrics:
|
|
54
|
+
T.any(
|
|
55
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::OrHash,
|
|
56
|
+
PostForMe::PlatformPost::Metrics::TikTokPostMetricsDto::OrHash,
|
|
57
|
+
PostForMe::PlatformPost::Metrics::InstagramPostMetricsDto::OrHash,
|
|
58
|
+
PostForMe::PlatformPost::Metrics::YouTubePostMetricsDto::OrHash
|
|
59
|
+
)
|
|
60
|
+
).void
|
|
61
|
+
end
|
|
62
|
+
attr_writer :metrics
|
|
63
|
+
|
|
64
|
+
# Date the post was published
|
|
65
|
+
sig { returns(T.nilable(Time)) }
|
|
66
|
+
attr_reader :posted_at
|
|
67
|
+
|
|
68
|
+
sig { params(posted_at: Time).void }
|
|
69
|
+
attr_writer :posted_at
|
|
70
|
+
|
|
71
|
+
# ID of the social post
|
|
72
|
+
sig { returns(T.nilable(String)) }
|
|
73
|
+
attr_accessor :social_post_id
|
|
74
|
+
|
|
75
|
+
# ID of the social post result
|
|
76
|
+
sig { returns(T.nilable(String)) }
|
|
77
|
+
attr_accessor :social_post_result_id
|
|
78
|
+
|
|
79
|
+
sig do
|
|
80
|
+
params(
|
|
81
|
+
caption: String,
|
|
82
|
+
media: T::Array[T::Array[T.anything]],
|
|
83
|
+
platform: String,
|
|
84
|
+
platform_account_id: String,
|
|
85
|
+
platform_post_id: String,
|
|
86
|
+
platform_url: String,
|
|
87
|
+
social_account_id: String,
|
|
88
|
+
external_account_id: T.nilable(String),
|
|
89
|
+
external_post_id: T.nilable(String),
|
|
90
|
+
metrics:
|
|
91
|
+
T.any(
|
|
92
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::OrHash,
|
|
93
|
+
PostForMe::PlatformPost::Metrics::TikTokPostMetricsDto::OrHash,
|
|
94
|
+
PostForMe::PlatformPost::Metrics::InstagramPostMetricsDto::OrHash,
|
|
95
|
+
PostForMe::PlatformPost::Metrics::YouTubePostMetricsDto::OrHash
|
|
96
|
+
),
|
|
97
|
+
posted_at: Time,
|
|
98
|
+
social_post_id: T.nilable(String),
|
|
99
|
+
social_post_result_id: T.nilable(String)
|
|
100
|
+
).returns(T.attached_class)
|
|
101
|
+
end
|
|
102
|
+
def self.new(
|
|
103
|
+
# Caption or text content of the post
|
|
104
|
+
caption:,
|
|
105
|
+
# Array of media items attached to the post
|
|
106
|
+
media:,
|
|
107
|
+
# Social media platform name
|
|
108
|
+
platform:,
|
|
109
|
+
# Platform-specific account ID
|
|
110
|
+
platform_account_id:,
|
|
111
|
+
# Platform-specific post ID
|
|
112
|
+
platform_post_id:,
|
|
113
|
+
# URL to the post on the platform
|
|
114
|
+
platform_url:,
|
|
115
|
+
# ID of the social account
|
|
116
|
+
social_account_id:,
|
|
117
|
+
# External account ID from the platform
|
|
118
|
+
external_account_id: nil,
|
|
119
|
+
# External post ID from the platform
|
|
120
|
+
external_post_id: nil,
|
|
121
|
+
# Post metrics and analytics data
|
|
122
|
+
metrics: nil,
|
|
123
|
+
# Date the post was published
|
|
124
|
+
posted_at: nil,
|
|
125
|
+
# ID of the social post
|
|
126
|
+
social_post_id: nil,
|
|
127
|
+
# ID of the social post result
|
|
128
|
+
social_post_result_id: nil
|
|
129
|
+
)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
sig do
|
|
133
|
+
override.returns(
|
|
134
|
+
{
|
|
135
|
+
caption: String,
|
|
136
|
+
media: T::Array[T::Array[T.anything]],
|
|
137
|
+
platform: String,
|
|
138
|
+
platform_account_id: String,
|
|
139
|
+
platform_post_id: String,
|
|
140
|
+
platform_url: String,
|
|
141
|
+
social_account_id: String,
|
|
142
|
+
external_account_id: T.nilable(String),
|
|
143
|
+
external_post_id: T.nilable(String),
|
|
144
|
+
metrics: PostForMe::PlatformPost::Metrics::Variants,
|
|
145
|
+
posted_at: Time,
|
|
146
|
+
social_post_id: T.nilable(String),
|
|
147
|
+
social_post_result_id: T.nilable(String)
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
end
|
|
151
|
+
def to_hash
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Post metrics and analytics data
|
|
155
|
+
module Metrics
|
|
156
|
+
extend PostForMe::Internal::Type::Union
|
|
157
|
+
|
|
158
|
+
Variants =
|
|
159
|
+
T.type_alias do
|
|
160
|
+
T.any(
|
|
161
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto,
|
|
162
|
+
PostForMe::PlatformPost::Metrics::TikTokPostMetricsDto,
|
|
163
|
+
PostForMe::PlatformPost::Metrics::InstagramPostMetricsDto,
|
|
164
|
+
PostForMe::PlatformPost::Metrics::YouTubePostMetricsDto
|
|
165
|
+
)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
class TikTokBusinessMetricsDto < PostForMe::Internal::Type::BaseModel
|
|
169
|
+
OrHash =
|
|
170
|
+
T.type_alias do
|
|
171
|
+
T.any(
|
|
172
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto,
|
|
173
|
+
PostForMe::Internal::AnyHash
|
|
174
|
+
)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Number of address clicks
|
|
178
|
+
sig { returns(Float) }
|
|
179
|
+
attr_accessor :address_clicks
|
|
180
|
+
|
|
181
|
+
# Number of app download clicks
|
|
182
|
+
sig { returns(Float) }
|
|
183
|
+
attr_accessor :app_download_clicks
|
|
184
|
+
|
|
185
|
+
# Audience cities breakdown
|
|
186
|
+
sig do
|
|
187
|
+
returns(
|
|
188
|
+
T::Array[
|
|
189
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCity
|
|
190
|
+
]
|
|
191
|
+
)
|
|
192
|
+
end
|
|
193
|
+
attr_accessor :audience_cities
|
|
194
|
+
|
|
195
|
+
# Audience countries breakdown
|
|
196
|
+
sig do
|
|
197
|
+
returns(
|
|
198
|
+
T::Array[
|
|
199
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCountry
|
|
200
|
+
]
|
|
201
|
+
)
|
|
202
|
+
end
|
|
203
|
+
attr_accessor :audience_countries
|
|
204
|
+
|
|
205
|
+
# Audience genders breakdown
|
|
206
|
+
sig do
|
|
207
|
+
returns(
|
|
208
|
+
T::Array[
|
|
209
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceGender
|
|
210
|
+
]
|
|
211
|
+
)
|
|
212
|
+
end
|
|
213
|
+
attr_accessor :audience_genders
|
|
214
|
+
|
|
215
|
+
# Audience types breakdown
|
|
216
|
+
sig do
|
|
217
|
+
returns(
|
|
218
|
+
T::Array[
|
|
219
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceType
|
|
220
|
+
]
|
|
221
|
+
)
|
|
222
|
+
end
|
|
223
|
+
attr_accessor :audience_types
|
|
224
|
+
|
|
225
|
+
# Average time watched in seconds
|
|
226
|
+
sig { returns(Float) }
|
|
227
|
+
attr_accessor :average_time_watched
|
|
228
|
+
|
|
229
|
+
# Number of comments on the post
|
|
230
|
+
sig { returns(Float) }
|
|
231
|
+
attr_accessor :comments
|
|
232
|
+
|
|
233
|
+
# Number of email clicks
|
|
234
|
+
sig { returns(Float) }
|
|
235
|
+
attr_accessor :email_clicks
|
|
236
|
+
|
|
237
|
+
# Engagement likes data by percentage and time
|
|
238
|
+
sig do
|
|
239
|
+
returns(
|
|
240
|
+
T::Array[
|
|
241
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::EngagementLike
|
|
242
|
+
]
|
|
243
|
+
)
|
|
244
|
+
end
|
|
245
|
+
attr_accessor :engagement_likes
|
|
246
|
+
|
|
247
|
+
# Number of favorites on the post
|
|
248
|
+
sig { returns(Float) }
|
|
249
|
+
attr_accessor :favorites
|
|
250
|
+
|
|
251
|
+
# Rate of full video watches as a percentage
|
|
252
|
+
sig { returns(Float) }
|
|
253
|
+
attr_accessor :full_video_watched_rate
|
|
254
|
+
|
|
255
|
+
# Impression sources breakdown
|
|
256
|
+
sig do
|
|
257
|
+
returns(
|
|
258
|
+
T::Array[
|
|
259
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::ImpressionSource
|
|
260
|
+
]
|
|
261
|
+
)
|
|
262
|
+
end
|
|
263
|
+
attr_accessor :impression_sources
|
|
264
|
+
|
|
265
|
+
# Number of lead submissions
|
|
266
|
+
sig { returns(Float) }
|
|
267
|
+
attr_accessor :lead_submissions
|
|
268
|
+
|
|
269
|
+
# Number of likes on the post
|
|
270
|
+
sig { returns(Float) }
|
|
271
|
+
attr_accessor :likes
|
|
272
|
+
|
|
273
|
+
# Number of new followers gained from the post
|
|
274
|
+
sig { returns(Float) }
|
|
275
|
+
attr_accessor :new_followers
|
|
276
|
+
|
|
277
|
+
# Number of phone number clicks
|
|
278
|
+
sig { returns(Float) }
|
|
279
|
+
attr_accessor :phone_number_clicks
|
|
280
|
+
|
|
281
|
+
# Number of profile views generated
|
|
282
|
+
sig { returns(Float) }
|
|
283
|
+
attr_accessor :profile_views
|
|
284
|
+
|
|
285
|
+
# Total reach of the post
|
|
286
|
+
sig { returns(Float) }
|
|
287
|
+
attr_accessor :reach
|
|
288
|
+
|
|
289
|
+
# Number of shares on the post
|
|
290
|
+
sig { returns(Float) }
|
|
291
|
+
attr_accessor :shares
|
|
292
|
+
|
|
293
|
+
# Total time watched in seconds
|
|
294
|
+
sig { returns(Float) }
|
|
295
|
+
attr_accessor :total_time_watched
|
|
296
|
+
|
|
297
|
+
# Video view retention data by percentage and time
|
|
298
|
+
sig do
|
|
299
|
+
returns(
|
|
300
|
+
T::Array[
|
|
301
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::VideoViewRetention
|
|
302
|
+
]
|
|
303
|
+
)
|
|
304
|
+
end
|
|
305
|
+
attr_accessor :video_view_retention
|
|
306
|
+
|
|
307
|
+
# Total number of video views
|
|
308
|
+
sig { returns(Float) }
|
|
309
|
+
attr_accessor :video_views
|
|
310
|
+
|
|
311
|
+
# Number of website clicks
|
|
312
|
+
sig { returns(Float) }
|
|
313
|
+
attr_accessor :website_clicks
|
|
314
|
+
|
|
315
|
+
sig do
|
|
316
|
+
params(
|
|
317
|
+
address_clicks: Float,
|
|
318
|
+
app_download_clicks: Float,
|
|
319
|
+
audience_cities:
|
|
320
|
+
T::Array[
|
|
321
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCity::OrHash
|
|
322
|
+
],
|
|
323
|
+
audience_countries:
|
|
324
|
+
T::Array[
|
|
325
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCountry::OrHash
|
|
326
|
+
],
|
|
327
|
+
audience_genders:
|
|
328
|
+
T::Array[
|
|
329
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceGender::OrHash
|
|
330
|
+
],
|
|
331
|
+
audience_types:
|
|
332
|
+
T::Array[
|
|
333
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceType::OrHash
|
|
334
|
+
],
|
|
335
|
+
average_time_watched: Float,
|
|
336
|
+
comments: Float,
|
|
337
|
+
email_clicks: Float,
|
|
338
|
+
engagement_likes:
|
|
339
|
+
T::Array[
|
|
340
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::EngagementLike::OrHash
|
|
341
|
+
],
|
|
342
|
+
favorites: Float,
|
|
343
|
+
full_video_watched_rate: Float,
|
|
344
|
+
impression_sources:
|
|
345
|
+
T::Array[
|
|
346
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::ImpressionSource::OrHash
|
|
347
|
+
],
|
|
348
|
+
lead_submissions: Float,
|
|
349
|
+
likes: Float,
|
|
350
|
+
new_followers: Float,
|
|
351
|
+
phone_number_clicks: Float,
|
|
352
|
+
profile_views: Float,
|
|
353
|
+
reach: Float,
|
|
354
|
+
shares: Float,
|
|
355
|
+
total_time_watched: Float,
|
|
356
|
+
video_view_retention:
|
|
357
|
+
T::Array[
|
|
358
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::VideoViewRetention::OrHash
|
|
359
|
+
],
|
|
360
|
+
video_views: Float,
|
|
361
|
+
website_clicks: Float
|
|
362
|
+
).returns(T.attached_class)
|
|
363
|
+
end
|
|
364
|
+
def self.new(
|
|
365
|
+
# Number of address clicks
|
|
366
|
+
address_clicks:,
|
|
367
|
+
# Number of app download clicks
|
|
368
|
+
app_download_clicks:,
|
|
369
|
+
# Audience cities breakdown
|
|
370
|
+
audience_cities:,
|
|
371
|
+
# Audience countries breakdown
|
|
372
|
+
audience_countries:,
|
|
373
|
+
# Audience genders breakdown
|
|
374
|
+
audience_genders:,
|
|
375
|
+
# Audience types breakdown
|
|
376
|
+
audience_types:,
|
|
377
|
+
# Average time watched in seconds
|
|
378
|
+
average_time_watched:,
|
|
379
|
+
# Number of comments on the post
|
|
380
|
+
comments:,
|
|
381
|
+
# Number of email clicks
|
|
382
|
+
email_clicks:,
|
|
383
|
+
# Engagement likes data by percentage and time
|
|
384
|
+
engagement_likes:,
|
|
385
|
+
# Number of favorites on the post
|
|
386
|
+
favorites:,
|
|
387
|
+
# Rate of full video watches as a percentage
|
|
388
|
+
full_video_watched_rate:,
|
|
389
|
+
# Impression sources breakdown
|
|
390
|
+
impression_sources:,
|
|
391
|
+
# Number of lead submissions
|
|
392
|
+
lead_submissions:,
|
|
393
|
+
# Number of likes on the post
|
|
394
|
+
likes:,
|
|
395
|
+
# Number of new followers gained from the post
|
|
396
|
+
new_followers:,
|
|
397
|
+
# Number of phone number clicks
|
|
398
|
+
phone_number_clicks:,
|
|
399
|
+
# Number of profile views generated
|
|
400
|
+
profile_views:,
|
|
401
|
+
# Total reach of the post
|
|
402
|
+
reach:,
|
|
403
|
+
# Number of shares on the post
|
|
404
|
+
shares:,
|
|
405
|
+
# Total time watched in seconds
|
|
406
|
+
total_time_watched:,
|
|
407
|
+
# Video view retention data by percentage and time
|
|
408
|
+
video_view_retention:,
|
|
409
|
+
# Total number of video views
|
|
410
|
+
video_views:,
|
|
411
|
+
# Number of website clicks
|
|
412
|
+
website_clicks:
|
|
413
|
+
)
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
sig do
|
|
417
|
+
override.returns(
|
|
418
|
+
{
|
|
419
|
+
address_clicks: Float,
|
|
420
|
+
app_download_clicks: Float,
|
|
421
|
+
audience_cities:
|
|
422
|
+
T::Array[
|
|
423
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCity
|
|
424
|
+
],
|
|
425
|
+
audience_countries:
|
|
426
|
+
T::Array[
|
|
427
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCountry
|
|
428
|
+
],
|
|
429
|
+
audience_genders:
|
|
430
|
+
T::Array[
|
|
431
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceGender
|
|
432
|
+
],
|
|
433
|
+
audience_types:
|
|
434
|
+
T::Array[
|
|
435
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceType
|
|
436
|
+
],
|
|
437
|
+
average_time_watched: Float,
|
|
438
|
+
comments: Float,
|
|
439
|
+
email_clicks: Float,
|
|
440
|
+
engagement_likes:
|
|
441
|
+
T::Array[
|
|
442
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::EngagementLike
|
|
443
|
+
],
|
|
444
|
+
favorites: Float,
|
|
445
|
+
full_video_watched_rate: Float,
|
|
446
|
+
impression_sources:
|
|
447
|
+
T::Array[
|
|
448
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::ImpressionSource
|
|
449
|
+
],
|
|
450
|
+
lead_submissions: Float,
|
|
451
|
+
likes: Float,
|
|
452
|
+
new_followers: Float,
|
|
453
|
+
phone_number_clicks: Float,
|
|
454
|
+
profile_views: Float,
|
|
455
|
+
reach: Float,
|
|
456
|
+
shares: Float,
|
|
457
|
+
total_time_watched: Float,
|
|
458
|
+
video_view_retention:
|
|
459
|
+
T::Array[
|
|
460
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::VideoViewRetention
|
|
461
|
+
],
|
|
462
|
+
video_views: Float,
|
|
463
|
+
website_clicks: Float
|
|
464
|
+
}
|
|
465
|
+
)
|
|
466
|
+
end
|
|
467
|
+
def to_hash
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
class AudienceCity < PostForMe::Internal::Type::BaseModel
|
|
471
|
+
OrHash =
|
|
472
|
+
T.type_alias do
|
|
473
|
+
T.any(
|
|
474
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCity,
|
|
475
|
+
PostForMe::Internal::AnyHash
|
|
476
|
+
)
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
# City name
|
|
480
|
+
sig { returns(String) }
|
|
481
|
+
attr_accessor :city_name
|
|
482
|
+
|
|
483
|
+
# Percentage of audience from this city
|
|
484
|
+
sig { returns(Float) }
|
|
485
|
+
attr_accessor :percentage
|
|
486
|
+
|
|
487
|
+
sig do
|
|
488
|
+
params(city_name: String, percentage: Float).returns(
|
|
489
|
+
T.attached_class
|
|
490
|
+
)
|
|
491
|
+
end
|
|
492
|
+
def self.new(
|
|
493
|
+
# City name
|
|
494
|
+
city_name:,
|
|
495
|
+
# Percentage of audience from this city
|
|
496
|
+
percentage:
|
|
497
|
+
)
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
sig { override.returns({ city_name: String, percentage: Float }) }
|
|
501
|
+
def to_hash
|
|
502
|
+
end
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
class AudienceCountry < PostForMe::Internal::Type::BaseModel
|
|
506
|
+
OrHash =
|
|
507
|
+
T.type_alias do
|
|
508
|
+
T.any(
|
|
509
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceCountry,
|
|
510
|
+
PostForMe::Internal::AnyHash
|
|
511
|
+
)
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
# Country name
|
|
515
|
+
sig { returns(String) }
|
|
516
|
+
attr_accessor :country
|
|
517
|
+
|
|
518
|
+
# Percentage of audience from this country
|
|
519
|
+
sig { returns(Float) }
|
|
520
|
+
attr_accessor :percentage
|
|
521
|
+
|
|
522
|
+
sig do
|
|
523
|
+
params(country: String, percentage: Float).returns(
|
|
524
|
+
T.attached_class
|
|
525
|
+
)
|
|
526
|
+
end
|
|
527
|
+
def self.new(
|
|
528
|
+
# Country name
|
|
529
|
+
country:,
|
|
530
|
+
# Percentage of audience from this country
|
|
531
|
+
percentage:
|
|
532
|
+
)
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
sig { override.returns({ country: String, percentage: Float }) }
|
|
536
|
+
def to_hash
|
|
537
|
+
end
|
|
538
|
+
end
|
|
539
|
+
|
|
540
|
+
class AudienceGender < PostForMe::Internal::Type::BaseModel
|
|
541
|
+
OrHash =
|
|
542
|
+
T.type_alias do
|
|
543
|
+
T.any(
|
|
544
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceGender,
|
|
545
|
+
PostForMe::Internal::AnyHash
|
|
546
|
+
)
|
|
547
|
+
end
|
|
548
|
+
|
|
549
|
+
# Gender category
|
|
550
|
+
sig { returns(String) }
|
|
551
|
+
attr_accessor :gender
|
|
552
|
+
|
|
553
|
+
# Percentage of audience of this gender
|
|
554
|
+
sig { returns(Float) }
|
|
555
|
+
attr_accessor :percentage
|
|
556
|
+
|
|
557
|
+
sig do
|
|
558
|
+
params(gender: String, percentage: Float).returns(
|
|
559
|
+
T.attached_class
|
|
560
|
+
)
|
|
561
|
+
end
|
|
562
|
+
def self.new(
|
|
563
|
+
# Gender category
|
|
564
|
+
gender:,
|
|
565
|
+
# Percentage of audience of this gender
|
|
566
|
+
percentage:
|
|
567
|
+
)
|
|
568
|
+
end
|
|
569
|
+
|
|
570
|
+
sig { override.returns({ gender: String, percentage: Float }) }
|
|
571
|
+
def to_hash
|
|
572
|
+
end
|
|
573
|
+
end
|
|
574
|
+
|
|
575
|
+
class AudienceType < PostForMe::Internal::Type::BaseModel
|
|
576
|
+
OrHash =
|
|
577
|
+
T.type_alias do
|
|
578
|
+
T.any(
|
|
579
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::AudienceType,
|
|
580
|
+
PostForMe::Internal::AnyHash
|
|
581
|
+
)
|
|
582
|
+
end
|
|
583
|
+
|
|
584
|
+
# Percentage of audience of this type
|
|
585
|
+
sig { returns(Float) }
|
|
586
|
+
attr_accessor :percentage
|
|
587
|
+
|
|
588
|
+
# Type of audience
|
|
589
|
+
sig { returns(String) }
|
|
590
|
+
attr_accessor :type
|
|
591
|
+
|
|
592
|
+
sig do
|
|
593
|
+
params(percentage: Float, type: String).returns(T.attached_class)
|
|
594
|
+
end
|
|
595
|
+
def self.new(
|
|
596
|
+
# Percentage of audience of this type
|
|
597
|
+
percentage:,
|
|
598
|
+
# Type of audience
|
|
599
|
+
type:
|
|
600
|
+
)
|
|
601
|
+
end
|
|
602
|
+
|
|
603
|
+
sig { override.returns({ percentage: Float, type: String }) }
|
|
604
|
+
def to_hash
|
|
605
|
+
end
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
class EngagementLike < PostForMe::Internal::Type::BaseModel
|
|
609
|
+
OrHash =
|
|
610
|
+
T.type_alias do
|
|
611
|
+
T.any(
|
|
612
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::EngagementLike,
|
|
613
|
+
PostForMe::Internal::AnyHash
|
|
614
|
+
)
|
|
615
|
+
end
|
|
616
|
+
|
|
617
|
+
# Percentage value for the metric
|
|
618
|
+
sig { returns(Float) }
|
|
619
|
+
attr_accessor :percentage
|
|
620
|
+
|
|
621
|
+
# Time in seconds for the metric
|
|
622
|
+
sig { returns(String) }
|
|
623
|
+
attr_accessor :second
|
|
624
|
+
|
|
625
|
+
sig do
|
|
626
|
+
params(percentage: Float, second: String).returns(
|
|
627
|
+
T.attached_class
|
|
628
|
+
)
|
|
629
|
+
end
|
|
630
|
+
def self.new(
|
|
631
|
+
# Percentage value for the metric
|
|
632
|
+
percentage:,
|
|
633
|
+
# Time in seconds for the metric
|
|
634
|
+
second:
|
|
635
|
+
)
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
sig { override.returns({ percentage: Float, second: String }) }
|
|
639
|
+
def to_hash
|
|
640
|
+
end
|
|
641
|
+
end
|
|
642
|
+
|
|
643
|
+
class ImpressionSource < PostForMe::Internal::Type::BaseModel
|
|
644
|
+
OrHash =
|
|
645
|
+
T.type_alias do
|
|
646
|
+
T.any(
|
|
647
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::ImpressionSource,
|
|
648
|
+
PostForMe::Internal::AnyHash
|
|
649
|
+
)
|
|
650
|
+
end
|
|
651
|
+
|
|
652
|
+
# Name of the impression source
|
|
653
|
+
sig { returns(String) }
|
|
654
|
+
attr_accessor :impression_source
|
|
655
|
+
|
|
656
|
+
# Percentage of impressions from this source
|
|
657
|
+
sig { returns(Float) }
|
|
658
|
+
attr_accessor :percentage
|
|
659
|
+
|
|
660
|
+
sig do
|
|
661
|
+
params(impression_source: String, percentage: Float).returns(
|
|
662
|
+
T.attached_class
|
|
663
|
+
)
|
|
664
|
+
end
|
|
665
|
+
def self.new(
|
|
666
|
+
# Name of the impression source
|
|
667
|
+
impression_source:,
|
|
668
|
+
# Percentage of impressions from this source
|
|
669
|
+
percentage:
|
|
670
|
+
)
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
sig do
|
|
674
|
+
override.returns({ impression_source: String, percentage: Float })
|
|
675
|
+
end
|
|
676
|
+
def to_hash
|
|
677
|
+
end
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
class VideoViewRetention < PostForMe::Internal::Type::BaseModel
|
|
681
|
+
OrHash =
|
|
682
|
+
T.type_alias do
|
|
683
|
+
T.any(
|
|
684
|
+
PostForMe::PlatformPost::Metrics::TikTokBusinessMetricsDto::VideoViewRetention,
|
|
685
|
+
PostForMe::Internal::AnyHash
|
|
686
|
+
)
|
|
687
|
+
end
|
|
688
|
+
|
|
689
|
+
# Percentage value for the metric
|
|
690
|
+
sig { returns(Float) }
|
|
691
|
+
attr_accessor :percentage
|
|
692
|
+
|
|
693
|
+
# Time in seconds for the metric
|
|
694
|
+
sig { returns(String) }
|
|
695
|
+
attr_accessor :second
|
|
696
|
+
|
|
697
|
+
sig do
|
|
698
|
+
params(percentage: Float, second: String).returns(
|
|
699
|
+
T.attached_class
|
|
700
|
+
)
|
|
701
|
+
end
|
|
702
|
+
def self.new(
|
|
703
|
+
# Percentage value for the metric
|
|
704
|
+
percentage:,
|
|
705
|
+
# Time in seconds for the metric
|
|
706
|
+
second:
|
|
707
|
+
)
|
|
708
|
+
end
|
|
709
|
+
|
|
710
|
+
sig { override.returns({ percentage: Float, second: String }) }
|
|
711
|
+
def to_hash
|
|
712
|
+
end
|
|
713
|
+
end
|
|
714
|
+
end
|
|
715
|
+
|
|
716
|
+
class TikTokPostMetricsDto < PostForMe::Internal::Type::BaseModel
|
|
717
|
+
OrHash =
|
|
718
|
+
T.type_alias do
|
|
719
|
+
T.any(
|
|
720
|
+
PostForMe::PlatformPost::Metrics::TikTokPostMetricsDto,
|
|
721
|
+
PostForMe::Internal::AnyHash
|
|
722
|
+
)
|
|
723
|
+
end
|
|
724
|
+
|
|
725
|
+
# Number of comments on the video
|
|
726
|
+
sig { returns(Float) }
|
|
727
|
+
attr_accessor :comment_count
|
|
728
|
+
|
|
729
|
+
# Number of likes on the video
|
|
730
|
+
sig { returns(Float) }
|
|
731
|
+
attr_accessor :like_count
|
|
732
|
+
|
|
733
|
+
# Number of shares of the video
|
|
734
|
+
sig { returns(Float) }
|
|
735
|
+
attr_accessor :share_count
|
|
736
|
+
|
|
737
|
+
# Number of views on the video
|
|
738
|
+
sig { returns(Float) }
|
|
739
|
+
attr_accessor :view_count
|
|
740
|
+
|
|
741
|
+
sig do
|
|
742
|
+
params(
|
|
743
|
+
comment_count: Float,
|
|
744
|
+
like_count: Float,
|
|
745
|
+
share_count: Float,
|
|
746
|
+
view_count: Float
|
|
747
|
+
).returns(T.attached_class)
|
|
748
|
+
end
|
|
749
|
+
def self.new(
|
|
750
|
+
# Number of comments on the video
|
|
751
|
+
comment_count:,
|
|
752
|
+
# Number of likes on the video
|
|
753
|
+
like_count:,
|
|
754
|
+
# Number of shares of the video
|
|
755
|
+
share_count:,
|
|
756
|
+
# Number of views on the video
|
|
757
|
+
view_count:
|
|
758
|
+
)
|
|
759
|
+
end
|
|
760
|
+
|
|
761
|
+
sig do
|
|
762
|
+
override.returns(
|
|
763
|
+
{
|
|
764
|
+
comment_count: Float,
|
|
765
|
+
like_count: Float,
|
|
766
|
+
share_count: Float,
|
|
767
|
+
view_count: Float
|
|
768
|
+
}
|
|
769
|
+
)
|
|
770
|
+
end
|
|
771
|
+
def to_hash
|
|
772
|
+
end
|
|
773
|
+
end
|
|
774
|
+
|
|
775
|
+
class InstagramPostMetricsDto < PostForMe::Internal::Type::BaseModel
|
|
776
|
+
OrHash =
|
|
777
|
+
T.type_alias do
|
|
778
|
+
T.any(
|
|
779
|
+
PostForMe::PlatformPost::Metrics::InstagramPostMetricsDto,
|
|
780
|
+
PostForMe::Internal::AnyHash
|
|
781
|
+
)
|
|
782
|
+
end
|
|
783
|
+
|
|
784
|
+
# Number of comments on the post
|
|
785
|
+
sig { returns(T.nilable(Float)) }
|
|
786
|
+
attr_reader :comments
|
|
787
|
+
|
|
788
|
+
sig { params(comments: Float).void }
|
|
789
|
+
attr_writer :comments
|
|
790
|
+
|
|
791
|
+
# Number of new follows from this post
|
|
792
|
+
sig { returns(T.nilable(Float)) }
|
|
793
|
+
attr_reader :follows
|
|
794
|
+
|
|
795
|
+
sig { params(follows: Float).void }
|
|
796
|
+
attr_writer :follows
|
|
797
|
+
|
|
798
|
+
# Average watch time for Reels (in milliseconds)
|
|
799
|
+
sig { returns(T.nilable(Float)) }
|
|
800
|
+
attr_reader :ig_reels_avg_watch_time
|
|
801
|
+
|
|
802
|
+
sig { params(ig_reels_avg_watch_time: Float).void }
|
|
803
|
+
attr_writer :ig_reels_avg_watch_time
|
|
804
|
+
|
|
805
|
+
# Total watch time for Reels (in milliseconds)
|
|
806
|
+
sig { returns(T.nilable(Float)) }
|
|
807
|
+
attr_reader :ig_reels_video_view_total_time
|
|
808
|
+
|
|
809
|
+
sig { params(ig_reels_video_view_total_time: Float).void }
|
|
810
|
+
attr_writer :ig_reels_video_view_total_time
|
|
811
|
+
|
|
812
|
+
# Number of likes on the post
|
|
813
|
+
sig { returns(T.nilable(Float)) }
|
|
814
|
+
attr_reader :likes
|
|
815
|
+
|
|
816
|
+
sig { params(likes: Float).void }
|
|
817
|
+
attr_writer :likes
|
|
818
|
+
|
|
819
|
+
# Navigation actions taken on the media
|
|
820
|
+
sig { returns(T.nilable(Float)) }
|
|
821
|
+
attr_reader :navigation
|
|
822
|
+
|
|
823
|
+
sig { params(navigation: Float).void }
|
|
824
|
+
attr_writer :navigation
|
|
825
|
+
|
|
826
|
+
# Profile activity generated from this post
|
|
827
|
+
sig { returns(T.nilable(Float)) }
|
|
828
|
+
attr_reader :profile_activity
|
|
829
|
+
|
|
830
|
+
sig { params(profile_activity: Float).void }
|
|
831
|
+
attr_writer :profile_activity
|
|
832
|
+
|
|
833
|
+
# Number of profile visits from this post
|
|
834
|
+
sig { returns(T.nilable(Float)) }
|
|
835
|
+
attr_reader :profile_visits
|
|
836
|
+
|
|
837
|
+
sig { params(profile_visits: Float).void }
|
|
838
|
+
attr_writer :profile_visits
|
|
839
|
+
|
|
840
|
+
# Total number of unique accounts that have seen the media
|
|
841
|
+
sig { returns(T.nilable(Float)) }
|
|
842
|
+
attr_reader :reach
|
|
843
|
+
|
|
844
|
+
sig { params(reach: Float).void }
|
|
845
|
+
attr_writer :reach
|
|
846
|
+
|
|
847
|
+
# Number of replies to the story (story media only)
|
|
848
|
+
sig { returns(T.nilable(Float)) }
|
|
849
|
+
attr_reader :replies
|
|
850
|
+
|
|
851
|
+
sig { params(replies: Float).void }
|
|
852
|
+
attr_writer :replies
|
|
853
|
+
|
|
854
|
+
# Total number of unique accounts that have saved the media
|
|
855
|
+
sig { returns(T.nilable(Float)) }
|
|
856
|
+
attr_reader :saved
|
|
857
|
+
|
|
858
|
+
sig { params(saved: Float).void }
|
|
859
|
+
attr_writer :saved
|
|
860
|
+
|
|
861
|
+
# Total number of shares of the media
|
|
862
|
+
sig { returns(T.nilable(Float)) }
|
|
863
|
+
attr_reader :shares
|
|
864
|
+
|
|
865
|
+
sig { params(shares: Float).void }
|
|
866
|
+
attr_writer :shares
|
|
867
|
+
|
|
868
|
+
# Total interactions on the post
|
|
869
|
+
sig { returns(T.nilable(Float)) }
|
|
870
|
+
attr_reader :total_interactions
|
|
871
|
+
|
|
872
|
+
sig { params(total_interactions: Float).void }
|
|
873
|
+
attr_writer :total_interactions
|
|
874
|
+
|
|
875
|
+
# Number of views on the post
|
|
876
|
+
sig { returns(T.nilable(Float)) }
|
|
877
|
+
attr_reader :views
|
|
878
|
+
|
|
879
|
+
sig { params(views: Float).void }
|
|
880
|
+
attr_writer :views
|
|
881
|
+
|
|
882
|
+
sig do
|
|
883
|
+
params(
|
|
884
|
+
comments: Float,
|
|
885
|
+
follows: Float,
|
|
886
|
+
ig_reels_avg_watch_time: Float,
|
|
887
|
+
ig_reels_video_view_total_time: Float,
|
|
888
|
+
likes: Float,
|
|
889
|
+
navigation: Float,
|
|
890
|
+
profile_activity: Float,
|
|
891
|
+
profile_visits: Float,
|
|
892
|
+
reach: Float,
|
|
893
|
+
replies: Float,
|
|
894
|
+
saved: Float,
|
|
895
|
+
shares: Float,
|
|
896
|
+
total_interactions: Float,
|
|
897
|
+
views: Float
|
|
898
|
+
).returns(T.attached_class)
|
|
899
|
+
end
|
|
900
|
+
def self.new(
|
|
901
|
+
# Number of comments on the post
|
|
902
|
+
comments: nil,
|
|
903
|
+
# Number of new follows from this post
|
|
904
|
+
follows: nil,
|
|
905
|
+
# Average watch time for Reels (in milliseconds)
|
|
906
|
+
ig_reels_avg_watch_time: nil,
|
|
907
|
+
# Total watch time for Reels (in milliseconds)
|
|
908
|
+
ig_reels_video_view_total_time: nil,
|
|
909
|
+
# Number of likes on the post
|
|
910
|
+
likes: nil,
|
|
911
|
+
# Navigation actions taken on the media
|
|
912
|
+
navigation: nil,
|
|
913
|
+
# Profile activity generated from this post
|
|
914
|
+
profile_activity: nil,
|
|
915
|
+
# Number of profile visits from this post
|
|
916
|
+
profile_visits: nil,
|
|
917
|
+
# Total number of unique accounts that have seen the media
|
|
918
|
+
reach: nil,
|
|
919
|
+
# Number of replies to the story (story media only)
|
|
920
|
+
replies: nil,
|
|
921
|
+
# Total number of unique accounts that have saved the media
|
|
922
|
+
saved: nil,
|
|
923
|
+
# Total number of shares of the media
|
|
924
|
+
shares: nil,
|
|
925
|
+
# Total interactions on the post
|
|
926
|
+
total_interactions: nil,
|
|
927
|
+
# Number of views on the post
|
|
928
|
+
views: nil
|
|
929
|
+
)
|
|
930
|
+
end
|
|
931
|
+
|
|
932
|
+
sig do
|
|
933
|
+
override.returns(
|
|
934
|
+
{
|
|
935
|
+
comments: Float,
|
|
936
|
+
follows: Float,
|
|
937
|
+
ig_reels_avg_watch_time: Float,
|
|
938
|
+
ig_reels_video_view_total_time: Float,
|
|
939
|
+
likes: Float,
|
|
940
|
+
navigation: Float,
|
|
941
|
+
profile_activity: Float,
|
|
942
|
+
profile_visits: Float,
|
|
943
|
+
reach: Float,
|
|
944
|
+
replies: Float,
|
|
945
|
+
saved: Float,
|
|
946
|
+
shares: Float,
|
|
947
|
+
total_interactions: Float,
|
|
948
|
+
views: Float
|
|
949
|
+
}
|
|
950
|
+
)
|
|
951
|
+
end
|
|
952
|
+
def to_hash
|
|
953
|
+
end
|
|
954
|
+
end
|
|
955
|
+
|
|
956
|
+
class YouTubePostMetricsDto < PostForMe::Internal::Type::BaseModel
|
|
957
|
+
OrHash =
|
|
958
|
+
T.type_alias do
|
|
959
|
+
T.any(
|
|
960
|
+
PostForMe::PlatformPost::Metrics::YouTubePostMetricsDto,
|
|
961
|
+
PostForMe::Internal::AnyHash
|
|
962
|
+
)
|
|
963
|
+
end
|
|
964
|
+
|
|
965
|
+
# Number of comments on the video
|
|
966
|
+
sig { returns(Float) }
|
|
967
|
+
attr_accessor :comments
|
|
968
|
+
|
|
969
|
+
# Number of dislikes on the video
|
|
970
|
+
sig { returns(Float) }
|
|
971
|
+
attr_accessor :dislikes
|
|
972
|
+
|
|
973
|
+
# Number of likes on the video
|
|
974
|
+
sig { returns(Float) }
|
|
975
|
+
attr_accessor :likes
|
|
976
|
+
|
|
977
|
+
# Number of views on the video
|
|
978
|
+
sig { returns(Float) }
|
|
979
|
+
attr_accessor :views
|
|
980
|
+
|
|
981
|
+
# Number of clickable annotation impressions
|
|
982
|
+
sig { returns(T.nilable(Float)) }
|
|
983
|
+
attr_reader :annotation_clickable_impressions
|
|
984
|
+
|
|
985
|
+
sig { params(annotation_clickable_impressions: Float).void }
|
|
986
|
+
attr_writer :annotation_clickable_impressions
|
|
987
|
+
|
|
988
|
+
# Number of annotation clicks
|
|
989
|
+
sig { returns(T.nilable(Float)) }
|
|
990
|
+
attr_reader :annotation_clicks
|
|
991
|
+
|
|
992
|
+
sig { params(annotation_clicks: Float).void }
|
|
993
|
+
attr_writer :annotation_clicks
|
|
994
|
+
|
|
995
|
+
# Annotation click-through rate
|
|
996
|
+
sig { returns(T.nilable(Float)) }
|
|
997
|
+
attr_reader :annotation_click_through_rate
|
|
998
|
+
|
|
999
|
+
sig { params(annotation_click_through_rate: Float).void }
|
|
1000
|
+
attr_writer :annotation_click_through_rate
|
|
1001
|
+
|
|
1002
|
+
# Number of closable annotation impressions
|
|
1003
|
+
sig { returns(T.nilable(Float)) }
|
|
1004
|
+
attr_reader :annotation_closable_impressions
|
|
1005
|
+
|
|
1006
|
+
sig { params(annotation_closable_impressions: Float).void }
|
|
1007
|
+
attr_writer :annotation_closable_impressions
|
|
1008
|
+
|
|
1009
|
+
# Annotation close rate
|
|
1010
|
+
sig { returns(T.nilable(Float)) }
|
|
1011
|
+
attr_reader :annotation_close_rate
|
|
1012
|
+
|
|
1013
|
+
sig { params(annotation_close_rate: Float).void }
|
|
1014
|
+
attr_writer :annotation_close_rate
|
|
1015
|
+
|
|
1016
|
+
# Number of annotation closes
|
|
1017
|
+
sig { returns(T.nilable(Float)) }
|
|
1018
|
+
attr_reader :annotation_closes
|
|
1019
|
+
|
|
1020
|
+
sig { params(annotation_closes: Float).void }
|
|
1021
|
+
attr_writer :annotation_closes
|
|
1022
|
+
|
|
1023
|
+
# Number of annotation impressions
|
|
1024
|
+
sig { returns(T.nilable(Float)) }
|
|
1025
|
+
attr_reader :annotation_impressions
|
|
1026
|
+
|
|
1027
|
+
sig { params(annotation_impressions: Float).void }
|
|
1028
|
+
attr_writer :annotation_impressions
|
|
1029
|
+
|
|
1030
|
+
# Average view duration in seconds
|
|
1031
|
+
sig { returns(T.nilable(Float)) }
|
|
1032
|
+
attr_reader :average_view_duration
|
|
1033
|
+
|
|
1034
|
+
sig { params(average_view_duration: Float).void }
|
|
1035
|
+
attr_writer :average_view_duration
|
|
1036
|
+
|
|
1037
|
+
# Average percentage of the video watched
|
|
1038
|
+
sig { returns(T.nilable(Float)) }
|
|
1039
|
+
attr_reader :average_view_percentage
|
|
1040
|
+
|
|
1041
|
+
sig { params(average_view_percentage: Float).void }
|
|
1042
|
+
attr_writer :average_view_percentage
|
|
1043
|
+
|
|
1044
|
+
# Card click-through rate
|
|
1045
|
+
sig { returns(T.nilable(Float)) }
|
|
1046
|
+
attr_reader :card_click_rate
|
|
1047
|
+
|
|
1048
|
+
sig { params(card_click_rate: Float).void }
|
|
1049
|
+
attr_writer :card_click_rate
|
|
1050
|
+
|
|
1051
|
+
# Number of card clicks
|
|
1052
|
+
sig { returns(T.nilable(Float)) }
|
|
1053
|
+
attr_reader :card_clicks
|
|
1054
|
+
|
|
1055
|
+
sig { params(card_clicks: Float).void }
|
|
1056
|
+
attr_writer :card_clicks
|
|
1057
|
+
|
|
1058
|
+
# Number of card impressions
|
|
1059
|
+
sig { returns(T.nilable(Float)) }
|
|
1060
|
+
attr_reader :card_impressions
|
|
1061
|
+
|
|
1062
|
+
sig { params(card_impressions: Float).void }
|
|
1063
|
+
attr_writer :card_impressions
|
|
1064
|
+
|
|
1065
|
+
# Card teaser click-through rate
|
|
1066
|
+
sig { returns(T.nilable(Float)) }
|
|
1067
|
+
attr_reader :card_teaser_click_rate
|
|
1068
|
+
|
|
1069
|
+
sig { params(card_teaser_click_rate: Float).void }
|
|
1070
|
+
attr_writer :card_teaser_click_rate
|
|
1071
|
+
|
|
1072
|
+
# Number of card teaser clicks
|
|
1073
|
+
sig { returns(T.nilable(Float)) }
|
|
1074
|
+
attr_reader :card_teaser_clicks
|
|
1075
|
+
|
|
1076
|
+
sig { params(card_teaser_clicks: Float).void }
|
|
1077
|
+
attr_writer :card_teaser_clicks
|
|
1078
|
+
|
|
1079
|
+
# Number of card teaser impressions
|
|
1080
|
+
sig { returns(T.nilable(Float)) }
|
|
1081
|
+
attr_reader :card_teaser_impressions
|
|
1082
|
+
|
|
1083
|
+
sig { params(card_teaser_impressions: Float).void }
|
|
1084
|
+
attr_writer :card_teaser_impressions
|
|
1085
|
+
|
|
1086
|
+
# Number of engaged views
|
|
1087
|
+
sig { returns(T.nilable(Float)) }
|
|
1088
|
+
attr_reader :engaged_views
|
|
1089
|
+
|
|
1090
|
+
sig { params(engaged_views: Float).void }
|
|
1091
|
+
attr_writer :engaged_views
|
|
1092
|
+
|
|
1093
|
+
# Estimated minutes watched
|
|
1094
|
+
sig { returns(T.nilable(Float)) }
|
|
1095
|
+
attr_reader :estimated_minutes_watched
|
|
1096
|
+
|
|
1097
|
+
sig { params(estimated_minutes_watched: Float).void }
|
|
1098
|
+
attr_writer :estimated_minutes_watched
|
|
1099
|
+
|
|
1100
|
+
# Estimated minutes watched by YouTube Premium (Red) members
|
|
1101
|
+
sig { returns(T.nilable(Float)) }
|
|
1102
|
+
attr_reader :estimated_red_minutes_watched
|
|
1103
|
+
|
|
1104
|
+
sig { params(estimated_red_minutes_watched: Float).void }
|
|
1105
|
+
attr_writer :estimated_red_minutes_watched
|
|
1106
|
+
|
|
1107
|
+
# Number of views from YouTube Premium (Red) members
|
|
1108
|
+
sig { returns(T.nilable(Float)) }
|
|
1109
|
+
attr_reader :red_views
|
|
1110
|
+
|
|
1111
|
+
sig { params(red_views: Float).void }
|
|
1112
|
+
attr_writer :red_views
|
|
1113
|
+
|
|
1114
|
+
# Number of shares
|
|
1115
|
+
sig { returns(T.nilable(Float)) }
|
|
1116
|
+
attr_reader :shares
|
|
1117
|
+
|
|
1118
|
+
sig { params(shares: Float).void }
|
|
1119
|
+
attr_writer :shares
|
|
1120
|
+
|
|
1121
|
+
# Subscribers gained
|
|
1122
|
+
sig { returns(T.nilable(Float)) }
|
|
1123
|
+
attr_reader :subscribers_gained
|
|
1124
|
+
|
|
1125
|
+
sig { params(subscribers_gained: Float).void }
|
|
1126
|
+
attr_writer :subscribers_gained
|
|
1127
|
+
|
|
1128
|
+
# Subscribers lost
|
|
1129
|
+
sig { returns(T.nilable(Float)) }
|
|
1130
|
+
attr_reader :subscribers_lost
|
|
1131
|
+
|
|
1132
|
+
sig { params(subscribers_lost: Float).void }
|
|
1133
|
+
attr_writer :subscribers_lost
|
|
1134
|
+
|
|
1135
|
+
# Number of times the video was added to playlists
|
|
1136
|
+
sig { returns(T.nilable(Float)) }
|
|
1137
|
+
attr_reader :videos_added_to_playlists
|
|
1138
|
+
|
|
1139
|
+
sig { params(videos_added_to_playlists: Float).void }
|
|
1140
|
+
attr_writer :videos_added_to_playlists
|
|
1141
|
+
|
|
1142
|
+
# Number of times the video was removed from playlists
|
|
1143
|
+
sig { returns(T.nilable(Float)) }
|
|
1144
|
+
attr_reader :videos_removed_from_playlists
|
|
1145
|
+
|
|
1146
|
+
sig { params(videos_removed_from_playlists: Float).void }
|
|
1147
|
+
attr_writer :videos_removed_from_playlists
|
|
1148
|
+
|
|
1149
|
+
sig do
|
|
1150
|
+
params(
|
|
1151
|
+
comments: Float,
|
|
1152
|
+
dislikes: Float,
|
|
1153
|
+
likes: Float,
|
|
1154
|
+
views: Float,
|
|
1155
|
+
annotation_clickable_impressions: Float,
|
|
1156
|
+
annotation_clicks: Float,
|
|
1157
|
+
annotation_click_through_rate: Float,
|
|
1158
|
+
annotation_closable_impressions: Float,
|
|
1159
|
+
annotation_close_rate: Float,
|
|
1160
|
+
annotation_closes: Float,
|
|
1161
|
+
annotation_impressions: Float,
|
|
1162
|
+
average_view_duration: Float,
|
|
1163
|
+
average_view_percentage: Float,
|
|
1164
|
+
card_click_rate: Float,
|
|
1165
|
+
card_clicks: Float,
|
|
1166
|
+
card_impressions: Float,
|
|
1167
|
+
card_teaser_click_rate: Float,
|
|
1168
|
+
card_teaser_clicks: Float,
|
|
1169
|
+
card_teaser_impressions: Float,
|
|
1170
|
+
engaged_views: Float,
|
|
1171
|
+
estimated_minutes_watched: Float,
|
|
1172
|
+
estimated_red_minutes_watched: Float,
|
|
1173
|
+
red_views: Float,
|
|
1174
|
+
shares: Float,
|
|
1175
|
+
subscribers_gained: Float,
|
|
1176
|
+
subscribers_lost: Float,
|
|
1177
|
+
videos_added_to_playlists: Float,
|
|
1178
|
+
videos_removed_from_playlists: Float
|
|
1179
|
+
).returns(T.attached_class)
|
|
1180
|
+
end
|
|
1181
|
+
def self.new(
|
|
1182
|
+
# Number of comments on the video
|
|
1183
|
+
comments:,
|
|
1184
|
+
# Number of dislikes on the video
|
|
1185
|
+
dislikes:,
|
|
1186
|
+
# Number of likes on the video
|
|
1187
|
+
likes:,
|
|
1188
|
+
# Number of views on the video
|
|
1189
|
+
views:,
|
|
1190
|
+
# Number of clickable annotation impressions
|
|
1191
|
+
annotation_clickable_impressions: nil,
|
|
1192
|
+
# Number of annotation clicks
|
|
1193
|
+
annotation_clicks: nil,
|
|
1194
|
+
# Annotation click-through rate
|
|
1195
|
+
annotation_click_through_rate: nil,
|
|
1196
|
+
# Number of closable annotation impressions
|
|
1197
|
+
annotation_closable_impressions: nil,
|
|
1198
|
+
# Annotation close rate
|
|
1199
|
+
annotation_close_rate: nil,
|
|
1200
|
+
# Number of annotation closes
|
|
1201
|
+
annotation_closes: nil,
|
|
1202
|
+
# Number of annotation impressions
|
|
1203
|
+
annotation_impressions: nil,
|
|
1204
|
+
# Average view duration in seconds
|
|
1205
|
+
average_view_duration: nil,
|
|
1206
|
+
# Average percentage of the video watched
|
|
1207
|
+
average_view_percentage: nil,
|
|
1208
|
+
# Card click-through rate
|
|
1209
|
+
card_click_rate: nil,
|
|
1210
|
+
# Number of card clicks
|
|
1211
|
+
card_clicks: nil,
|
|
1212
|
+
# Number of card impressions
|
|
1213
|
+
card_impressions: nil,
|
|
1214
|
+
# Card teaser click-through rate
|
|
1215
|
+
card_teaser_click_rate: nil,
|
|
1216
|
+
# Number of card teaser clicks
|
|
1217
|
+
card_teaser_clicks: nil,
|
|
1218
|
+
# Number of card teaser impressions
|
|
1219
|
+
card_teaser_impressions: nil,
|
|
1220
|
+
# Number of engaged views
|
|
1221
|
+
engaged_views: nil,
|
|
1222
|
+
# Estimated minutes watched
|
|
1223
|
+
estimated_minutes_watched: nil,
|
|
1224
|
+
# Estimated minutes watched by YouTube Premium (Red) members
|
|
1225
|
+
estimated_red_minutes_watched: nil,
|
|
1226
|
+
# Number of views from YouTube Premium (Red) members
|
|
1227
|
+
red_views: nil,
|
|
1228
|
+
# Number of shares
|
|
1229
|
+
shares: nil,
|
|
1230
|
+
# Subscribers gained
|
|
1231
|
+
subscribers_gained: nil,
|
|
1232
|
+
# Subscribers lost
|
|
1233
|
+
subscribers_lost: nil,
|
|
1234
|
+
# Number of times the video was added to playlists
|
|
1235
|
+
videos_added_to_playlists: nil,
|
|
1236
|
+
# Number of times the video was removed from playlists
|
|
1237
|
+
videos_removed_from_playlists: nil
|
|
1238
|
+
)
|
|
1239
|
+
end
|
|
1240
|
+
|
|
1241
|
+
sig do
|
|
1242
|
+
override.returns(
|
|
1243
|
+
{
|
|
1244
|
+
comments: Float,
|
|
1245
|
+
dislikes: Float,
|
|
1246
|
+
likes: Float,
|
|
1247
|
+
views: Float,
|
|
1248
|
+
annotation_clickable_impressions: Float,
|
|
1249
|
+
annotation_clicks: Float,
|
|
1250
|
+
annotation_click_through_rate: Float,
|
|
1251
|
+
annotation_closable_impressions: Float,
|
|
1252
|
+
annotation_close_rate: Float,
|
|
1253
|
+
annotation_closes: Float,
|
|
1254
|
+
annotation_impressions: Float,
|
|
1255
|
+
average_view_duration: Float,
|
|
1256
|
+
average_view_percentage: Float,
|
|
1257
|
+
card_click_rate: Float,
|
|
1258
|
+
card_clicks: Float,
|
|
1259
|
+
card_impressions: Float,
|
|
1260
|
+
card_teaser_click_rate: Float,
|
|
1261
|
+
card_teaser_clicks: Float,
|
|
1262
|
+
card_teaser_impressions: Float,
|
|
1263
|
+
engaged_views: Float,
|
|
1264
|
+
estimated_minutes_watched: Float,
|
|
1265
|
+
estimated_red_minutes_watched: Float,
|
|
1266
|
+
red_views: Float,
|
|
1267
|
+
shares: Float,
|
|
1268
|
+
subscribers_gained: Float,
|
|
1269
|
+
subscribers_lost: Float,
|
|
1270
|
+
videos_added_to_playlists: Float,
|
|
1271
|
+
videos_removed_from_playlists: Float
|
|
1272
|
+
}
|
|
1273
|
+
)
|
|
1274
|
+
end
|
|
1275
|
+
def to_hash
|
|
1276
|
+
end
|
|
1277
|
+
end
|
|
1278
|
+
|
|
1279
|
+
sig do
|
|
1280
|
+
override.returns(T::Array[PostForMe::PlatformPost::Metrics::Variants])
|
|
1281
|
+
end
|
|
1282
|
+
def self.variants
|
|
1283
|
+
end
|
|
1284
|
+
end
|
|
1285
|
+
end
|
|
1286
|
+
end
|
|
1287
|
+
end
|