late-sdk 0.0.713 → 0.0.715
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 +14 -0
- data/docs/AdEngagementCounts.md +1 -1
- data/docs/AdMetrics.md +14 -0
- data/docs/ContactsApi.md +3 -3
- data/docs/GetCampaignAnalytics200ResponseAnalyticsDailyInner.md +14 -0
- data/docs/WebhookPayloadMessageSentMessageSender.md +1 -1
- data/lib/zernio-sdk/api/contacts_api.rb +4 -4
- data/lib/zernio-sdk/models/ad_daily_metrics.rb +73 -1
- data/lib/zernio-sdk/models/ad_engagement_counts.rb +1 -1
- data/lib/zernio-sdk/models/ad_metrics.rb +73 -1
- data/lib/zernio-sdk/models/get_campaign_analytics200_response_analytics_daily_inner.rb +73 -1
- data/lib/zernio-sdk/models/webhook_payload_message_sent_message_sender.rb +1 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/openapi.yaml +18 -4
- data/spec/api/contacts_api_spec.rb +2 -2
- data/spec/models/ad_daily_metrics_spec.rb +42 -0
- data/spec/models/ad_metrics_spec.rb +42 -0
- data/spec/models/get_campaign_analytics200_response_analytics_daily_inner_spec.rb +42 -0
- data/zernio-sdk-0.0.715.gem +0 -0
- metadata +3 -3
- data/zernio-sdk-0.0.713.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5b1da97d182877ef9205f03e013ea863718df3480442903d47395fcbe11f6029
|
|
4
|
+
data.tar.gz: 99263fe1df8286f58d6df8aa77ebb2100e64160f26860eae98ba5d572c3716c4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f854642f6281091dea0a7fd7c6fa37484da523808ef7f70a851e01064b73263c9c217a39087d67a783ff33bff0a6447a352cac94d1a5893994c8cda4b6825a2c
|
|
7
|
+
data.tar.gz: c356b8f1104b841de0041a423892ef5a8ca45e1f154ee1ad22ac5a8a06de11673e1f152cd3b542821fe2027d8894540e3b9c32e2ba37b1481333a8789b6bfa11
|
data/docs/AdDailyMetrics.md
CHANGED
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
| **action_values** | **Hash<String, Float>** | Monetary mirror of `actions`, from Meta's Insights `action_values[]` array. Same keying — values are the revenue attributed to each action_type, in ad-account native currency (same unit as `spend`; see the campaign node's `currency` field). Use this to compute revenue-per-event (e.g. avg purchase value). Meta-only; other platforms return {}. | [optional] |
|
|
19
19
|
| **purchase_value** | **Float** | Convenience sum of purchase-type action values — picked from `actionValues` via the same priority list as `conversions` so both fields describe the same events. In ad-account native currency. 0 when the campaign has no purchase event configured. Meta-only. | [optional] |
|
|
20
20
|
| **roas** | **Float** | Return on ad spend — derived as `purchaseValue / spend`. 0 when `spend` is 0. Equivalent to Meta's `purchase_roas` under default attribution. At ad-set and campaign levels this is recomputed from summed purchaseValue + spend (NOT averaged across children) so it's mathematically correct at every rollup level. | [optional] |
|
|
21
|
+
| **cost_per_action** | **Hash<String, Float>** | Derived `spend / actions[type]` for every action type with a non-zero count, in ad-account native currency. Same keys as `actions`. Rounded to 4 decimals because cheap actions cost well under a cent. Recomputed from summed spend + counts at every rollup level. Empty object when spend is 0 or no actions are reported. | [optional] |
|
|
22
|
+
| **outbound_clicks** | **Integer** | Clicks leading off Meta's surfaces to the advertiser's destination. Meta-only; other platforms report 0. | [optional] |
|
|
23
|
+
| **outbound_clicks_ctr** | **Float** | Derived `outboundClicks / impressions * 100`, recomputed from sums at every rollup level. | [optional] |
|
|
24
|
+
| **inline_link_clicks** | **Integer** | In-session link clicks. Differs from the attributed `link_click` count in `actions`/`engagementBreakdown.linkClicks`, which uses the attribution window. Meta-only. | [optional] |
|
|
25
|
+
| **inline_link_click_ctr** | **Float** | Derived `inlineLinkClicks / impressions * 100`, recomputed from sums at every rollup level. | [optional] |
|
|
26
|
+
| **unique_clicks** | **Integer** | People who clicked at least once. NOT additive: summed across days/children it overcounts people who clicked on multiple days or ads, so treat rollups as an upper bound (same caveat as `reach`). Meta-only. | [optional] |
|
|
27
|
+
| **unique_ctr** | **Float** | Derived `uniqueClicks / impressions * 100` (NOT Meta's reach-based unique_ctr). Inherits the non-additivity caveat of `uniqueClicks`. | [optional] |
|
|
21
28
|
| **video_play_actions** | **Integer** | Number of times the video started playing, summed over the date range and across children at ad-set/campaign level. 0 for non-video ads. Sources: Meta `video_play_actions`, TikTok `video_play_actions`. | [optional] |
|
|
22
29
|
| **video30_sec_watched_actions** | **Integer** | Views of at least 30 seconds (or to the end, for shorter videos). Sources: Meta `video_30_sec_watched_actions` (Meta only). | [optional] |
|
|
23
30
|
| **video_thruplay_watched_actions** | **Integer** | ThruPlays (watched to completion, or at least 15 seconds). Sources: Meta `video_thruplay_watched_actions` (Meta only). | [optional] |
|
|
@@ -53,6 +60,13 @@ instance = Zernio::AdDailyMetrics.new(
|
|
|
53
60
|
action_values: {offsite_conversion.fb_pixel_purchase=2456.78, offsite_conversion.fb_pixel_add_to_cart=980.5},
|
|
54
61
|
purchase_value: null,
|
|
55
62
|
roas: null,
|
|
63
|
+
cost_per_action: {link_click=0.1052, offsite_conversion.fb_pixel_purchase=4.0114},
|
|
64
|
+
outbound_clicks: null,
|
|
65
|
+
outbound_clicks_ctr: null,
|
|
66
|
+
inline_link_clicks: null,
|
|
67
|
+
inline_link_click_ctr: null,
|
|
68
|
+
unique_clicks: null,
|
|
69
|
+
unique_ctr: null,
|
|
56
70
|
video_play_actions: null,
|
|
57
71
|
video30_sec_watched_actions: null,
|
|
58
72
|
video_thruplay_watched_actions: null,
|
data/docs/AdEngagementCounts.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
| **saves** | **Integer** | Saves of the ad's post (`onsite_conversion.post_save`). | [optional] |
|
|
13
13
|
| **page_likes** | **Integer** | New Page likes attributed to the ad (`like`). | [optional] |
|
|
14
14
|
| **video_views** | **Integer** | 3-second video views (`video_view`). For completion-based counts use `videoThruplayWatchedActions`. | [optional] |
|
|
15
|
-
| **link_clicks** | **Integer** | Attributed link clicks (`link_click`). This is the attribution-window count, which differs from the in-session
|
|
15
|
+
| **link_clicks** | **Integer** | Attributed link clicks (`link_click`). This is the attribution-window count, which differs from the in-session count in the sibling `inlineLinkClicks` field. | [optional] |
|
|
16
16
|
|
|
17
17
|
## Example
|
|
18
18
|
|
data/docs/AdMetrics.md
CHANGED
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
| **action_values** | **Hash<String, Float>** | Monetary mirror of `actions`, from Meta's Insights `action_values[]` array. Same keying — values are the revenue attributed to each action_type, in ad-account native currency (same unit as `spend`; see the campaign node's `currency` field). Use this to compute revenue-per-event (e.g. avg purchase value). Meta-only; other platforms return {}. | [optional] |
|
|
19
19
|
| **purchase_value** | **Float** | Convenience sum of purchase-type action values — picked from `actionValues` via the same priority list as `conversions` so both fields describe the same events. In ad-account native currency. 0 when the campaign has no purchase event configured. Meta-only. | [optional] |
|
|
20
20
|
| **roas** | **Float** | Return on ad spend — derived as `purchaseValue / spend`. 0 when `spend` is 0. Equivalent to Meta's `purchase_roas` under default attribution. At ad-set and campaign levels this is recomputed from summed purchaseValue + spend (NOT averaged across children) so it's mathematically correct at every rollup level. | [optional] |
|
|
21
|
+
| **cost_per_action** | **Hash<String, Float>** | Derived `spend / actions[type]` for every action type with a non-zero count, in ad-account native currency. Same keys as `actions`. Rounded to 4 decimals because cheap actions cost well under a cent. Recomputed from summed spend + counts at every rollup level. Empty object when spend is 0 or no actions are reported. | [optional] |
|
|
22
|
+
| **outbound_clicks** | **Integer** | Clicks leading off Meta's surfaces to the advertiser's destination. Meta-only; other platforms report 0. | [optional] |
|
|
23
|
+
| **outbound_clicks_ctr** | **Float** | Derived `outboundClicks / impressions * 100`, recomputed from sums at every rollup level. | [optional] |
|
|
24
|
+
| **inline_link_clicks** | **Integer** | In-session link clicks. Differs from the attributed `link_click` count in `actions`/`engagementBreakdown.linkClicks`, which uses the attribution window. Meta-only. | [optional] |
|
|
25
|
+
| **inline_link_click_ctr** | **Float** | Derived `inlineLinkClicks / impressions * 100`, recomputed from sums at every rollup level. | [optional] |
|
|
26
|
+
| **unique_clicks** | **Integer** | People who clicked at least once. NOT additive: summed across days/children it overcounts people who clicked on multiple days or ads, so treat rollups as an upper bound (same caveat as `reach`). Meta-only. | [optional] |
|
|
27
|
+
| **unique_ctr** | **Float** | Derived `uniqueClicks / impressions * 100` (NOT Meta's reach-based unique_ctr). Inherits the non-additivity caveat of `uniqueClicks`. | [optional] |
|
|
21
28
|
| **video_play_actions** | **Integer** | Number of times the video started playing, summed over the date range and across children at ad-set/campaign level. 0 for non-video ads. Sources: Meta `video_play_actions`, TikTok `video_play_actions`. | [optional] |
|
|
22
29
|
| **video30_sec_watched_actions** | **Integer** | Views of at least 30 seconds (or to the end, for shorter videos). Sources: Meta `video_30_sec_watched_actions` (Meta only). | [optional] |
|
|
23
30
|
| **video_thruplay_watched_actions** | **Integer** | ThruPlays (watched to completion, or at least 15 seconds). Sources: Meta `video_thruplay_watched_actions` (Meta only). | [optional] |
|
|
@@ -52,6 +59,13 @@ instance = Zernio::AdMetrics.new(
|
|
|
52
59
|
action_values: {offsite_conversion.fb_pixel_purchase=2456.78, offsite_conversion.fb_pixel_add_to_cart=980.5},
|
|
53
60
|
purchase_value: null,
|
|
54
61
|
roas: null,
|
|
62
|
+
cost_per_action: {link_click=0.1052, offsite_conversion.fb_pixel_purchase=4.0114},
|
|
63
|
+
outbound_clicks: null,
|
|
64
|
+
outbound_clicks_ctr: null,
|
|
65
|
+
inline_link_clicks: null,
|
|
66
|
+
inline_link_click_ctr: null,
|
|
67
|
+
unique_clicks: null,
|
|
68
|
+
unique_ctr: null,
|
|
55
69
|
video_play_actions: null,
|
|
56
70
|
video30_sec_watched_actions: null,
|
|
57
71
|
video_thruplay_watched_actions: null,
|
data/docs/ContactsApi.md
CHANGED
|
@@ -363,7 +363,7 @@ end
|
|
|
363
363
|
|
|
364
364
|
List contacts
|
|
365
365
|
|
|
366
|
-
List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and
|
|
366
|
+
List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and text search on name, email and company.
|
|
367
367
|
|
|
368
368
|
### Examples
|
|
369
369
|
|
|
@@ -380,7 +380,7 @@ api_instance = Zernio::ContactsApi.new
|
|
|
380
380
|
opts = {
|
|
381
381
|
profile_id: 'profile_id_example', # String | Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
|
|
382
382
|
account_id: 'account_id_example', # String | Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list.
|
|
383
|
-
search: 'search_example', # String |
|
|
383
|
+
search: 'search_example', # String | Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries.
|
|
384
384
|
tag: 'tag_example', # String |
|
|
385
385
|
tags: 'tags_example', # String | Comma-separated tags, matches contacts carrying any of them
|
|
386
386
|
platform: 'instagram', # String |
|
|
@@ -422,7 +422,7 @@ end
|
|
|
422
422
|
| ---- | ---- | ----------- | ----- |
|
|
423
423
|
| **profile_id** | **String** | Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead. | [optional] |
|
|
424
424
|
| **account_id** | **String** | Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list. | [optional] |
|
|
425
|
-
| **search** | **String** |
|
|
425
|
+
| **search** | **String** | Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries. | [optional] |
|
|
426
426
|
| **tag** | **String** | | [optional] |
|
|
427
427
|
| **tags** | **String** | Comma-separated tags, matches contacts carrying any of them | [optional] |
|
|
428
428
|
| **platform** | **String** | | [optional] |
|
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
| **action_values** | **Hash<String, Float>** | Monetary mirror of `actions`, from Meta's Insights `action_values[]` array. Same keying — values are the revenue attributed to each action_type, in ad-account native currency (same unit as `spend`; see the campaign node's `currency` field). Use this to compute revenue-per-event (e.g. avg purchase value). Meta-only; other platforms return {}. | [optional] |
|
|
19
19
|
| **purchase_value** | **Float** | Convenience sum of purchase-type action values — picked from `actionValues` via the same priority list as `conversions` so both fields describe the same events. In ad-account native currency. 0 when the campaign has no purchase event configured. Meta-only. | [optional] |
|
|
20
20
|
| **roas** | **Float** | Return on ad spend — derived as `purchaseValue / spend`. 0 when `spend` is 0. Equivalent to Meta's `purchase_roas` under default attribution. At ad-set and campaign levels this is recomputed from summed purchaseValue + spend (NOT averaged across children) so it's mathematically correct at every rollup level. | [optional] |
|
|
21
|
+
| **cost_per_action** | **Hash<String, Float>** | Derived `spend / actions[type]` for every action type with a non-zero count, in ad-account native currency. Same keys as `actions`. Rounded to 4 decimals because cheap actions cost well under a cent. Recomputed from summed spend + counts at every rollup level. Empty object when spend is 0 or no actions are reported. | [optional] |
|
|
22
|
+
| **outbound_clicks** | **Integer** | Clicks leading off Meta's surfaces to the advertiser's destination. Meta-only; other platforms report 0. | [optional] |
|
|
23
|
+
| **outbound_clicks_ctr** | **Float** | Derived `outboundClicks / impressions * 100`, recomputed from sums at every rollup level. | [optional] |
|
|
24
|
+
| **inline_link_clicks** | **Integer** | In-session link clicks. Differs from the attributed `link_click` count in `actions`/`engagementBreakdown.linkClicks`, which uses the attribution window. Meta-only. | [optional] |
|
|
25
|
+
| **inline_link_click_ctr** | **Float** | Derived `inlineLinkClicks / impressions * 100`, recomputed from sums at every rollup level. | [optional] |
|
|
26
|
+
| **unique_clicks** | **Integer** | People who clicked at least once. NOT additive: summed across days/children it overcounts people who clicked on multiple days or ads, so treat rollups as an upper bound (same caveat as `reach`). Meta-only. | [optional] |
|
|
27
|
+
| **unique_ctr** | **Float** | Derived `uniqueClicks / impressions * 100` (NOT Meta's reach-based unique_ctr). Inherits the non-additivity caveat of `uniqueClicks`. | [optional] |
|
|
21
28
|
| **video_play_actions** | **Integer** | Number of times the video started playing, summed over the date range and across children at ad-set/campaign level. 0 for non-video ads. Sources: Meta `video_play_actions`, TikTok `video_play_actions`. | [optional] |
|
|
22
29
|
| **video30_sec_watched_actions** | **Integer** | Views of at least 30 seconds (or to the end, for shorter videos). Sources: Meta `video_30_sec_watched_actions` (Meta only). | [optional] |
|
|
23
30
|
| **video_thruplay_watched_actions** | **Integer** | ThruPlays (watched to completion, or at least 15 seconds). Sources: Meta `video_thruplay_watched_actions` (Meta only). | [optional] |
|
|
@@ -53,6 +60,13 @@ instance = Zernio::GetCampaignAnalytics200ResponseAnalyticsDailyInner.new(
|
|
|
53
60
|
action_values: {offsite_conversion.fb_pixel_purchase=2456.78, offsite_conversion.fb_pixel_add_to_cart=980.5},
|
|
54
61
|
purchase_value: null,
|
|
55
62
|
roas: null,
|
|
63
|
+
cost_per_action: {link_click=0.1052, offsite_conversion.fb_pixel_purchase=4.0114},
|
|
64
|
+
outbound_clicks: null,
|
|
65
|
+
outbound_clicks_ctr: null,
|
|
66
|
+
inline_link_clicks: null,
|
|
67
|
+
inline_link_click_ctr: null,
|
|
68
|
+
unique_clicks: null,
|
|
69
|
+
unique_ctr: null,
|
|
56
70
|
video_play_actions: null,
|
|
57
71
|
video30_sec_watched_actions: null,
|
|
58
72
|
video_thruplay_watched_actions: null,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **id** | **String** | | |
|
|
8
|
-
| **contact_id** | **String** |
|
|
8
|
+
| **contact_id** | **String** | Always omitted on this event: the sender is the business, not a contact. Use conversation.contactId to join back to the CRM Contact. | [optional] |
|
|
9
9
|
| **name** | **String** | | [optional] |
|
|
10
10
|
| **username** | **String** | | [optional] |
|
|
11
11
|
| **picture** | **String** | | [optional] |
|
|
@@ -345,11 +345,11 @@ module Zernio
|
|
|
345
345
|
end
|
|
346
346
|
|
|
347
347
|
# List contacts
|
|
348
|
-
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and
|
|
348
|
+
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and text search on name, email and company.
|
|
349
349
|
# @param [Hash] opts the optional parameters
|
|
350
350
|
# @option opts [String] :profile_id Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
|
|
351
351
|
# @option opts [String] :account_id Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list.
|
|
352
|
-
# @option opts [String] :search
|
|
352
|
+
# @option opts [String] :search Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries.
|
|
353
353
|
# @option opts [String] :tag
|
|
354
354
|
# @option opts [String] :tags Comma-separated tags, matches contacts carrying any of them
|
|
355
355
|
# @option opts [String] :platform
|
|
@@ -363,11 +363,11 @@ module Zernio
|
|
|
363
363
|
end
|
|
364
364
|
|
|
365
365
|
# List contacts
|
|
366
|
-
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and
|
|
366
|
+
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and text search on name, email and company.
|
|
367
367
|
# @param [Hash] opts the optional parameters
|
|
368
368
|
# @option opts [String] :profile_id Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
|
|
369
369
|
# @option opts [String] :account_id Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list.
|
|
370
|
-
# @option opts [String] :search
|
|
370
|
+
# @option opts [String] :search Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries.
|
|
371
371
|
# @option opts [String] :tag
|
|
372
372
|
# @option opts [String] :tags Comma-separated tags, matches contacts carrying any of them
|
|
373
373
|
# @option opts [String] :platform
|
|
@@ -54,6 +54,27 @@ module Zernio
|
|
|
54
54
|
# Return on ad spend — derived as `purchaseValue / spend`. 0 when `spend` is 0. Equivalent to Meta's `purchase_roas` under default attribution. At ad-set and campaign levels this is recomputed from summed purchaseValue + spend (NOT averaged across children) so it's mathematically correct at every rollup level.
|
|
55
55
|
attr_accessor :roas
|
|
56
56
|
|
|
57
|
+
# Derived `spend / actions[type]` for every action type with a non-zero count, in ad-account native currency. Same keys as `actions`. Rounded to 4 decimals because cheap actions cost well under a cent. Recomputed from summed spend + counts at every rollup level. Empty object when spend is 0 or no actions are reported.
|
|
58
|
+
attr_accessor :cost_per_action
|
|
59
|
+
|
|
60
|
+
# Clicks leading off Meta's surfaces to the advertiser's destination. Meta-only; other platforms report 0.
|
|
61
|
+
attr_accessor :outbound_clicks
|
|
62
|
+
|
|
63
|
+
# Derived `outboundClicks / impressions * 100`, recomputed from sums at every rollup level.
|
|
64
|
+
attr_accessor :outbound_clicks_ctr
|
|
65
|
+
|
|
66
|
+
# In-session link clicks. Differs from the attributed `link_click` count in `actions`/`engagementBreakdown.linkClicks`, which uses the attribution window. Meta-only.
|
|
67
|
+
attr_accessor :inline_link_clicks
|
|
68
|
+
|
|
69
|
+
# Derived `inlineLinkClicks / impressions * 100`, recomputed from sums at every rollup level.
|
|
70
|
+
attr_accessor :inline_link_click_ctr
|
|
71
|
+
|
|
72
|
+
# People who clicked at least once. NOT additive: summed across days/children it overcounts people who clicked on multiple days or ads, so treat rollups as an upper bound (same caveat as `reach`). Meta-only.
|
|
73
|
+
attr_accessor :unique_clicks
|
|
74
|
+
|
|
75
|
+
# Derived `uniqueClicks / impressions * 100` (NOT Meta's reach-based unique_ctr). Inherits the non-additivity caveat of `uniqueClicks`.
|
|
76
|
+
attr_accessor :unique_ctr
|
|
77
|
+
|
|
57
78
|
# Number of times the video started playing, summed over the date range and across children at ad-set/campaign level. 0 for non-video ads. Sources: Meta `video_play_actions`, TikTok `video_play_actions`.
|
|
58
79
|
attr_accessor :video_play_actions
|
|
59
80
|
|
|
@@ -111,6 +132,13 @@ module Zernio
|
|
|
111
132
|
:'action_values' => :'actionValues',
|
|
112
133
|
:'purchase_value' => :'purchaseValue',
|
|
113
134
|
:'roas' => :'roas',
|
|
135
|
+
:'cost_per_action' => :'costPerAction',
|
|
136
|
+
:'outbound_clicks' => :'outboundClicks',
|
|
137
|
+
:'outbound_clicks_ctr' => :'outboundClicksCtr',
|
|
138
|
+
:'inline_link_clicks' => :'inlineLinkClicks',
|
|
139
|
+
:'inline_link_click_ctr' => :'inlineLinkClickCtr',
|
|
140
|
+
:'unique_clicks' => :'uniqueClicks',
|
|
141
|
+
:'unique_ctr' => :'uniqueCtr',
|
|
114
142
|
:'video_play_actions' => :'videoPlayActions',
|
|
115
143
|
:'video30_sec_watched_actions' => :'video30SecWatchedActions',
|
|
116
144
|
:'video_thruplay_watched_actions' => :'videoThruplayWatchedActions',
|
|
@@ -155,6 +183,13 @@ module Zernio
|
|
|
155
183
|
:'action_values' => :'Hash<String, Float>',
|
|
156
184
|
:'purchase_value' => :'Float',
|
|
157
185
|
:'roas' => :'Float',
|
|
186
|
+
:'cost_per_action' => :'Hash<String, Float>',
|
|
187
|
+
:'outbound_clicks' => :'Integer',
|
|
188
|
+
:'outbound_clicks_ctr' => :'Float',
|
|
189
|
+
:'inline_link_clicks' => :'Integer',
|
|
190
|
+
:'inline_link_click_ctr' => :'Float',
|
|
191
|
+
:'unique_clicks' => :'Integer',
|
|
192
|
+
:'unique_ctr' => :'Float',
|
|
158
193
|
:'video_play_actions' => :'Integer',
|
|
159
194
|
:'video30_sec_watched_actions' => :'Integer',
|
|
160
195
|
:'video_thruplay_watched_actions' => :'Integer',
|
|
@@ -261,6 +296,36 @@ module Zernio
|
|
|
261
296
|
self.roas = attributes[:'roas']
|
|
262
297
|
end
|
|
263
298
|
|
|
299
|
+
if attributes.key?(:'cost_per_action')
|
|
300
|
+
if (value = attributes[:'cost_per_action']).is_a?(Hash)
|
|
301
|
+
self.cost_per_action = value
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
if attributes.key?(:'outbound_clicks')
|
|
306
|
+
self.outbound_clicks = attributes[:'outbound_clicks']
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
if attributes.key?(:'outbound_clicks_ctr')
|
|
310
|
+
self.outbound_clicks_ctr = attributes[:'outbound_clicks_ctr']
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
if attributes.key?(:'inline_link_clicks')
|
|
314
|
+
self.inline_link_clicks = attributes[:'inline_link_clicks']
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
if attributes.key?(:'inline_link_click_ctr')
|
|
318
|
+
self.inline_link_click_ctr = attributes[:'inline_link_click_ctr']
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
if attributes.key?(:'unique_clicks')
|
|
322
|
+
self.unique_clicks = attributes[:'unique_clicks']
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
if attributes.key?(:'unique_ctr')
|
|
326
|
+
self.unique_ctr = attributes[:'unique_ctr']
|
|
327
|
+
end
|
|
328
|
+
|
|
264
329
|
if attributes.key?(:'video_play_actions')
|
|
265
330
|
self.video_play_actions = attributes[:'video_play_actions']
|
|
266
331
|
end
|
|
@@ -352,6 +417,13 @@ module Zernio
|
|
|
352
417
|
action_values == o.action_values &&
|
|
353
418
|
purchase_value == o.purchase_value &&
|
|
354
419
|
roas == o.roas &&
|
|
420
|
+
cost_per_action == o.cost_per_action &&
|
|
421
|
+
outbound_clicks == o.outbound_clicks &&
|
|
422
|
+
outbound_clicks_ctr == o.outbound_clicks_ctr &&
|
|
423
|
+
inline_link_clicks == o.inline_link_clicks &&
|
|
424
|
+
inline_link_click_ctr == o.inline_link_click_ctr &&
|
|
425
|
+
unique_clicks == o.unique_clicks &&
|
|
426
|
+
unique_ctr == o.unique_ctr &&
|
|
355
427
|
video_play_actions == o.video_play_actions &&
|
|
356
428
|
video30_sec_watched_actions == o.video30_sec_watched_actions &&
|
|
357
429
|
video_thruplay_watched_actions == o.video_thruplay_watched_actions &&
|
|
@@ -377,7 +449,7 @@ module Zernio
|
|
|
377
449
|
# Calculates hash code according to all attributes.
|
|
378
450
|
# @return [Integer] Hash code
|
|
379
451
|
def hash
|
|
380
|
-
[spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, cost_per_conversion, actions, action_values, purchase_value, roas, 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
|
|
452
|
+
[spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, 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
|
|
381
453
|
end
|
|
382
454
|
|
|
383
455
|
# Builds the object from hash
|
|
@@ -40,7 +40,7 @@ module Zernio
|
|
|
40
40
|
# 3-second video views (`video_view`). For completion-based counts use `videoThruplayWatchedActions`.
|
|
41
41
|
attr_accessor :video_views
|
|
42
42
|
|
|
43
|
-
# Attributed link clicks (`link_click`). This is the attribution-window count, which differs from the in-session
|
|
43
|
+
# Attributed link clicks (`link_click`). This is the attribution-window count, which differs from the in-session count in the sibling `inlineLinkClicks` field.
|
|
44
44
|
attr_accessor :link_clicks
|
|
45
45
|
|
|
46
46
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
@@ -53,6 +53,27 @@ module Zernio
|
|
|
53
53
|
# Return on ad spend — derived as `purchaseValue / spend`. 0 when `spend` is 0. Equivalent to Meta's `purchase_roas` under default attribution. At ad-set and campaign levels this is recomputed from summed purchaseValue + spend (NOT averaged across children) so it's mathematically correct at every rollup level.
|
|
54
54
|
attr_accessor :roas
|
|
55
55
|
|
|
56
|
+
# Derived `spend / actions[type]` for every action type with a non-zero count, in ad-account native currency. Same keys as `actions`. Rounded to 4 decimals because cheap actions cost well under a cent. Recomputed from summed spend + counts at every rollup level. Empty object when spend is 0 or no actions are reported.
|
|
57
|
+
attr_accessor :cost_per_action
|
|
58
|
+
|
|
59
|
+
# Clicks leading off Meta's surfaces to the advertiser's destination. Meta-only; other platforms report 0.
|
|
60
|
+
attr_accessor :outbound_clicks
|
|
61
|
+
|
|
62
|
+
# Derived `outboundClicks / impressions * 100`, recomputed from sums at every rollup level.
|
|
63
|
+
attr_accessor :outbound_clicks_ctr
|
|
64
|
+
|
|
65
|
+
# In-session link clicks. Differs from the attributed `link_click` count in `actions`/`engagementBreakdown.linkClicks`, which uses the attribution window. Meta-only.
|
|
66
|
+
attr_accessor :inline_link_clicks
|
|
67
|
+
|
|
68
|
+
# Derived `inlineLinkClicks / impressions * 100`, recomputed from sums at every rollup level.
|
|
69
|
+
attr_accessor :inline_link_click_ctr
|
|
70
|
+
|
|
71
|
+
# People who clicked at least once. NOT additive: summed across days/children it overcounts people who clicked on multiple days or ads, so treat rollups as an upper bound (same caveat as `reach`). Meta-only.
|
|
72
|
+
attr_accessor :unique_clicks
|
|
73
|
+
|
|
74
|
+
# Derived `uniqueClicks / impressions * 100` (NOT Meta's reach-based unique_ctr). Inherits the non-additivity caveat of `uniqueClicks`.
|
|
75
|
+
attr_accessor :unique_ctr
|
|
76
|
+
|
|
56
77
|
# Number of times the video started playing, summed over the date range and across children at ad-set/campaign level. 0 for non-video ads. Sources: Meta `video_play_actions`, TikTok `video_play_actions`.
|
|
57
78
|
attr_accessor :video_play_actions
|
|
58
79
|
|
|
@@ -107,6 +128,13 @@ module Zernio
|
|
|
107
128
|
:'action_values' => :'actionValues',
|
|
108
129
|
:'purchase_value' => :'purchaseValue',
|
|
109
130
|
:'roas' => :'roas',
|
|
131
|
+
:'cost_per_action' => :'costPerAction',
|
|
132
|
+
:'outbound_clicks' => :'outboundClicks',
|
|
133
|
+
:'outbound_clicks_ctr' => :'outboundClicksCtr',
|
|
134
|
+
:'inline_link_clicks' => :'inlineLinkClicks',
|
|
135
|
+
:'inline_link_click_ctr' => :'inlineLinkClickCtr',
|
|
136
|
+
:'unique_clicks' => :'uniqueClicks',
|
|
137
|
+
:'unique_ctr' => :'uniqueCtr',
|
|
110
138
|
:'video_play_actions' => :'videoPlayActions',
|
|
111
139
|
:'video30_sec_watched_actions' => :'video30SecWatchedActions',
|
|
112
140
|
:'video_thruplay_watched_actions' => :'videoThruplayWatchedActions',
|
|
@@ -150,6 +178,13 @@ module Zernio
|
|
|
150
178
|
:'action_values' => :'Hash<String, Float>',
|
|
151
179
|
:'purchase_value' => :'Float',
|
|
152
180
|
:'roas' => :'Float',
|
|
181
|
+
:'cost_per_action' => :'Hash<String, Float>',
|
|
182
|
+
:'outbound_clicks' => :'Integer',
|
|
183
|
+
:'outbound_clicks_ctr' => :'Float',
|
|
184
|
+
:'inline_link_clicks' => :'Integer',
|
|
185
|
+
:'inline_link_click_ctr' => :'Float',
|
|
186
|
+
:'unique_clicks' => :'Integer',
|
|
187
|
+
:'unique_ctr' => :'Float',
|
|
153
188
|
:'video_play_actions' => :'Integer',
|
|
154
189
|
:'video30_sec_watched_actions' => :'Integer',
|
|
155
190
|
:'video_thruplay_watched_actions' => :'Integer',
|
|
@@ -248,6 +283,36 @@ module Zernio
|
|
|
248
283
|
self.roas = attributes[:'roas']
|
|
249
284
|
end
|
|
250
285
|
|
|
286
|
+
if attributes.key?(:'cost_per_action')
|
|
287
|
+
if (value = attributes[:'cost_per_action']).is_a?(Hash)
|
|
288
|
+
self.cost_per_action = value
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
if attributes.key?(:'outbound_clicks')
|
|
293
|
+
self.outbound_clicks = attributes[:'outbound_clicks']
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
if attributes.key?(:'outbound_clicks_ctr')
|
|
297
|
+
self.outbound_clicks_ctr = attributes[:'outbound_clicks_ctr']
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
if attributes.key?(:'inline_link_clicks')
|
|
301
|
+
self.inline_link_clicks = attributes[:'inline_link_clicks']
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
if attributes.key?(:'inline_link_click_ctr')
|
|
305
|
+
self.inline_link_click_ctr = attributes[:'inline_link_click_ctr']
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
if attributes.key?(:'unique_clicks')
|
|
309
|
+
self.unique_clicks = attributes[:'unique_clicks']
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
if attributes.key?(:'unique_ctr')
|
|
313
|
+
self.unique_ctr = attributes[:'unique_ctr']
|
|
314
|
+
end
|
|
315
|
+
|
|
251
316
|
if attributes.key?(:'video_play_actions')
|
|
252
317
|
self.video_play_actions = attributes[:'video_play_actions']
|
|
253
318
|
end
|
|
@@ -335,6 +400,13 @@ module Zernio
|
|
|
335
400
|
action_values == o.action_values &&
|
|
336
401
|
purchase_value == o.purchase_value &&
|
|
337
402
|
roas == o.roas &&
|
|
403
|
+
cost_per_action == o.cost_per_action &&
|
|
404
|
+
outbound_clicks == o.outbound_clicks &&
|
|
405
|
+
outbound_clicks_ctr == o.outbound_clicks_ctr &&
|
|
406
|
+
inline_link_clicks == o.inline_link_clicks &&
|
|
407
|
+
inline_link_click_ctr == o.inline_link_click_ctr &&
|
|
408
|
+
unique_clicks == o.unique_clicks &&
|
|
409
|
+
unique_ctr == o.unique_ctr &&
|
|
338
410
|
video_play_actions == o.video_play_actions &&
|
|
339
411
|
video30_sec_watched_actions == o.video30_sec_watched_actions &&
|
|
340
412
|
video_thruplay_watched_actions == o.video_thruplay_watched_actions &&
|
|
@@ -359,7 +431,7 @@ module Zernio
|
|
|
359
431
|
# Calculates hash code according to all attributes.
|
|
360
432
|
# @return [Integer] Hash code
|
|
361
433
|
def hash
|
|
362
|
-
[spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, cost_per_conversion, actions, action_values, purchase_value, roas, 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
|
|
434
|
+
[spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, 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
|
|
363
435
|
end
|
|
364
436
|
|
|
365
437
|
# Builds the object from hash
|
|
@@ -53,6 +53,27 @@ module Zernio
|
|
|
53
53
|
# Return on ad spend — derived as `purchaseValue / spend`. 0 when `spend` is 0. Equivalent to Meta's `purchase_roas` under default attribution. At ad-set and campaign levels this is recomputed from summed purchaseValue + spend (NOT averaged across children) so it's mathematically correct at every rollup level.
|
|
54
54
|
attr_accessor :roas
|
|
55
55
|
|
|
56
|
+
# Derived `spend / actions[type]` for every action type with a non-zero count, in ad-account native currency. Same keys as `actions`. Rounded to 4 decimals because cheap actions cost well under a cent. Recomputed from summed spend + counts at every rollup level. Empty object when spend is 0 or no actions are reported.
|
|
57
|
+
attr_accessor :cost_per_action
|
|
58
|
+
|
|
59
|
+
# Clicks leading off Meta's surfaces to the advertiser's destination. Meta-only; other platforms report 0.
|
|
60
|
+
attr_accessor :outbound_clicks
|
|
61
|
+
|
|
62
|
+
# Derived `outboundClicks / impressions * 100`, recomputed from sums at every rollup level.
|
|
63
|
+
attr_accessor :outbound_clicks_ctr
|
|
64
|
+
|
|
65
|
+
# In-session link clicks. Differs from the attributed `link_click` count in `actions`/`engagementBreakdown.linkClicks`, which uses the attribution window. Meta-only.
|
|
66
|
+
attr_accessor :inline_link_clicks
|
|
67
|
+
|
|
68
|
+
# Derived `inlineLinkClicks / impressions * 100`, recomputed from sums at every rollup level.
|
|
69
|
+
attr_accessor :inline_link_click_ctr
|
|
70
|
+
|
|
71
|
+
# People who clicked at least once. NOT additive: summed across days/children it overcounts people who clicked on multiple days or ads, so treat rollups as an upper bound (same caveat as `reach`). Meta-only.
|
|
72
|
+
attr_accessor :unique_clicks
|
|
73
|
+
|
|
74
|
+
# Derived `uniqueClicks / impressions * 100` (NOT Meta's reach-based unique_ctr). Inherits the non-additivity caveat of `uniqueClicks`.
|
|
75
|
+
attr_accessor :unique_ctr
|
|
76
|
+
|
|
56
77
|
# Number of times the video started playing, summed over the date range and across children at ad-set/campaign level. 0 for non-video ads. Sources: Meta `video_play_actions`, TikTok `video_play_actions`.
|
|
57
78
|
attr_accessor :video_play_actions
|
|
58
79
|
|
|
@@ -109,6 +130,13 @@ module Zernio
|
|
|
109
130
|
:'action_values' => :'actionValues',
|
|
110
131
|
:'purchase_value' => :'purchaseValue',
|
|
111
132
|
:'roas' => :'roas',
|
|
133
|
+
:'cost_per_action' => :'costPerAction',
|
|
134
|
+
:'outbound_clicks' => :'outboundClicks',
|
|
135
|
+
:'outbound_clicks_ctr' => :'outboundClicksCtr',
|
|
136
|
+
:'inline_link_clicks' => :'inlineLinkClicks',
|
|
137
|
+
:'inline_link_click_ctr' => :'inlineLinkClickCtr',
|
|
138
|
+
:'unique_clicks' => :'uniqueClicks',
|
|
139
|
+
:'unique_ctr' => :'uniqueCtr',
|
|
112
140
|
:'video_play_actions' => :'videoPlayActions',
|
|
113
141
|
:'video30_sec_watched_actions' => :'video30SecWatchedActions',
|
|
114
142
|
:'video_thruplay_watched_actions' => :'videoThruplayWatchedActions',
|
|
@@ -153,6 +181,13 @@ module Zernio
|
|
|
153
181
|
:'action_values' => :'Hash<String, Float>',
|
|
154
182
|
:'purchase_value' => :'Float',
|
|
155
183
|
:'roas' => :'Float',
|
|
184
|
+
:'cost_per_action' => :'Hash<String, Float>',
|
|
185
|
+
:'outbound_clicks' => :'Integer',
|
|
186
|
+
:'outbound_clicks_ctr' => :'Float',
|
|
187
|
+
:'inline_link_clicks' => :'Integer',
|
|
188
|
+
:'inline_link_click_ctr' => :'Float',
|
|
189
|
+
:'unique_clicks' => :'Integer',
|
|
190
|
+
:'unique_ctr' => :'Float',
|
|
156
191
|
:'video_play_actions' => :'Integer',
|
|
157
192
|
:'video30_sec_watched_actions' => :'Integer',
|
|
158
193
|
:'video_thruplay_watched_actions' => :'Integer',
|
|
@@ -259,6 +294,36 @@ module Zernio
|
|
|
259
294
|
self.roas = attributes[:'roas']
|
|
260
295
|
end
|
|
261
296
|
|
|
297
|
+
if attributes.key?(:'cost_per_action')
|
|
298
|
+
if (value = attributes[:'cost_per_action']).is_a?(Hash)
|
|
299
|
+
self.cost_per_action = value
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
if attributes.key?(:'outbound_clicks')
|
|
304
|
+
self.outbound_clicks = attributes[:'outbound_clicks']
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
if attributes.key?(:'outbound_clicks_ctr')
|
|
308
|
+
self.outbound_clicks_ctr = attributes[:'outbound_clicks_ctr']
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
if attributes.key?(:'inline_link_clicks')
|
|
312
|
+
self.inline_link_clicks = attributes[:'inline_link_clicks']
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
if attributes.key?(:'inline_link_click_ctr')
|
|
316
|
+
self.inline_link_click_ctr = attributes[:'inline_link_click_ctr']
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
if attributes.key?(:'unique_clicks')
|
|
320
|
+
self.unique_clicks = attributes[:'unique_clicks']
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
if attributes.key?(:'unique_ctr')
|
|
324
|
+
self.unique_ctr = attributes[:'unique_ctr']
|
|
325
|
+
end
|
|
326
|
+
|
|
262
327
|
if attributes.key?(:'video_play_actions')
|
|
263
328
|
self.video_play_actions = attributes[:'video_play_actions']
|
|
264
329
|
end
|
|
@@ -350,6 +415,13 @@ module Zernio
|
|
|
350
415
|
action_values == o.action_values &&
|
|
351
416
|
purchase_value == o.purchase_value &&
|
|
352
417
|
roas == o.roas &&
|
|
418
|
+
cost_per_action == o.cost_per_action &&
|
|
419
|
+
outbound_clicks == o.outbound_clicks &&
|
|
420
|
+
outbound_clicks_ctr == o.outbound_clicks_ctr &&
|
|
421
|
+
inline_link_clicks == o.inline_link_clicks &&
|
|
422
|
+
inline_link_click_ctr == o.inline_link_click_ctr &&
|
|
423
|
+
unique_clicks == o.unique_clicks &&
|
|
424
|
+
unique_ctr == o.unique_ctr &&
|
|
353
425
|
video_play_actions == o.video_play_actions &&
|
|
354
426
|
video30_sec_watched_actions == o.video30_sec_watched_actions &&
|
|
355
427
|
video_thruplay_watched_actions == o.video_thruplay_watched_actions &&
|
|
@@ -375,7 +447,7 @@ module Zernio
|
|
|
375
447
|
# Calculates hash code according to all attributes.
|
|
376
448
|
# @return [Integer] Hash code
|
|
377
449
|
def hash
|
|
378
|
-
[spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, conversions, cost_per_conversion, actions, action_values, purchase_value, roas, 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
|
|
450
|
+
[spend, impressions, reach, clicks, ctr, cpc, cpm, engagement, 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
|
|
379
451
|
end
|
|
380
452
|
|
|
381
453
|
# Builds the object from hash
|
|
@@ -17,7 +17,7 @@ module Zernio
|
|
|
17
17
|
class WebhookPayloadMessageSentMessageSender < ApiModelBase
|
|
18
18
|
attr_accessor :id
|
|
19
19
|
|
|
20
|
-
#
|
|
20
|
+
# Always omitted on this event: the sender is the business, not a contact. Use conversation.contactId to join back to the CRM Contact.
|
|
21
21
|
attr_accessor :contact_id
|
|
22
22
|
|
|
23
23
|
attr_accessor :name
|
data/lib/zernio-sdk/version.rb
CHANGED
data/openapi.yaml
CHANGED
|
@@ -3738,7 +3738,7 @@ components:
|
|
|
3738
3738
|
type: string
|
|
3739
3739
|
contactId:
|
|
3740
3740
|
type: string
|
|
3741
|
-
description:
|
|
3741
|
+
description: 'Always omitted on this event: the sender is the business, not a contact. Use conversation.contactId to join back to the CRM Contact.'
|
|
3742
3742
|
name:
|
|
3743
3743
|
type: string
|
|
3744
3744
|
username:
|
|
@@ -6908,6 +6908,20 @@ components:
|
|
|
6908
6908
|
roas:
|
|
6909
6909
|
type: number
|
|
6910
6910
|
description: "Return on ad spend — derived as `purchaseValue / spend`. 0 when `spend` is 0. Equivalent to Meta's `purchase_roas` under default attribution. At ad-set and campaign levels this is recomputed from summed purchaseValue + spend (NOT averaged across children) so it's mathematically correct at every rollup level."
|
|
6911
|
+
costPerAction:
|
|
6912
|
+
type: object
|
|
6913
|
+
additionalProperties:
|
|
6914
|
+
type: number
|
|
6915
|
+
description: "Derived `spend / actions[type]` for every action type with a non-zero count, in ad-account native currency. Same keys as `actions`. Rounded to 4 decimals because cheap actions cost well under a cent. Recomputed from summed spend + counts at every rollup level. Empty object when spend is 0 or no actions are reported."
|
|
6916
|
+
example:
|
|
6917
|
+
link_click: 0.1052
|
|
6918
|
+
offsite_conversion.fb_pixel_purchase: 4.0114
|
|
6919
|
+
outboundClicks: { type: integer, description: "Clicks leading off Meta's surfaces to the advertiser's destination. Meta-only; other platforms report 0." }
|
|
6920
|
+
outboundClicksCtr: { type: number, description: "Derived `outboundClicks / impressions * 100`, recomputed from sums at every rollup level." }
|
|
6921
|
+
inlineLinkClicks: { type: integer, description: "In-session link clicks. Differs from the attributed `link_click` count in `actions`/`engagementBreakdown.linkClicks`, which uses the attribution window. Meta-only." }
|
|
6922
|
+
inlineLinkClickCtr: { type: number, description: "Derived `inlineLinkClicks / impressions * 100`, recomputed from sums at every rollup level." }
|
|
6923
|
+
uniqueClicks: { type: integer, description: "People who clicked at least once. NOT additive: summed across days/children it overcounts people who clicked on multiple days or ads, so treat rollups as an upper bound (same caveat as `reach`). Meta-only." }
|
|
6924
|
+
uniqueCtr: { type: number, description: "Derived `uniqueClicks / impressions * 100` (NOT Meta's reach-based unique_ctr). Inherits the non-additivity caveat of `uniqueClicks`." }
|
|
6911
6925
|
videoPlayActions:
|
|
6912
6926
|
type: integer
|
|
6913
6927
|
description: "Number of times the video started playing, summed over the date range and across children at ad-set/campaign level. 0 for non-video ads. Sources: Meta `video_play_actions`, TikTok `video_play_actions`."
|
|
@@ -6982,7 +6996,7 @@ components:
|
|
|
6982
6996
|
saves: { type: integer, description: "Saves of the ad's post (`onsite_conversion.post_save`)." }
|
|
6983
6997
|
pageLikes: { type: integer, description: "New Page likes attributed to the ad (`like`)." }
|
|
6984
6998
|
videoViews: { type: integer, description: "3-second video views (`video_view`). For completion-based counts use `videoThruplayWatchedActions`." }
|
|
6985
|
-
linkClicks: { type: integer, description: "Attributed link clicks (`link_click`). This is the attribution-window count, which differs from the in-session
|
|
6999
|
+
linkClicks: { type: integer, description: "Attributed link clicks (`link_click`). This is the attribution-window count, which differs from the in-session count in the sibling `inlineLinkClicks` field." }
|
|
6986
7000
|
AdDailyMetrics:
|
|
6987
7001
|
description: |
|
|
6988
7002
|
One day of metrics. Same fields as `AdMetrics` plus the `date` they
|
|
@@ -34620,12 +34634,12 @@ paths:
|
|
|
34620
34634
|
x-resource-group: "contacts"
|
|
34621
34635
|
operationId: listContacts
|
|
34622
34636
|
summary: List contacts
|
|
34623
|
-
description: List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and
|
|
34637
|
+
description: List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and text search on name, email and company.
|
|
34624
34638
|
tags: [Contacts]
|
|
34625
34639
|
parameters:
|
|
34626
34640
|
- { name: profileId, in: query, schema: { type: string }, description: 'Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.' }
|
|
34627
34641
|
- { name: accountId, in: query, schema: { type: string }, description: 'Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list.' }
|
|
34628
|
-
- { name: search, in: query, schema: { type: string } }
|
|
34642
|
+
- { name: search, in: query, schema: { type: string }, description: 'Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries.' }
|
|
34629
34643
|
- { name: tag, in: query, schema: { type: string } }
|
|
34630
34644
|
- { name: tags, in: query, schema: { type: string }, description: 'Comma-separated tags, matches contacts carrying any of them' }
|
|
34631
34645
|
- { name: platform, in: query, schema: { type: string, enum: [instagram, facebook, telegram, twitter, bluesky, reddit, whatsapp] } }
|
|
@@ -94,11 +94,11 @@ describe 'ContactsApi' do
|
|
|
94
94
|
|
|
95
95
|
# unit tests for list_contacts
|
|
96
96
|
# List contacts
|
|
97
|
-
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and
|
|
97
|
+
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and text search on name, email and company.
|
|
98
98
|
# @param [Hash] opts the optional parameters
|
|
99
99
|
# @option opts [String] :profile_id Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
|
|
100
100
|
# @option opts [String] :account_id Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list.
|
|
101
|
-
# @option opts [String] :search
|
|
101
|
+
# @option opts [String] :search Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries.
|
|
102
102
|
# @option opts [String] :tag
|
|
103
103
|
# @option opts [String] :tags Comma-separated tags, matches contacts carrying any of them
|
|
104
104
|
# @option opts [String] :platform
|
|
@@ -111,6 +111,48 @@ describe Zernio::AdDailyMetrics do
|
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
+
describe 'test attribute "cost_per_action"' do
|
|
115
|
+
it 'should work' do
|
|
116
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
describe 'test attribute "outbound_clicks"' do
|
|
121
|
+
it 'should work' do
|
|
122
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
describe 'test attribute "outbound_clicks_ctr"' do
|
|
127
|
+
it 'should work' do
|
|
128
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe 'test attribute "inline_link_clicks"' do
|
|
133
|
+
it 'should work' do
|
|
134
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe 'test attribute "inline_link_click_ctr"' do
|
|
139
|
+
it 'should work' do
|
|
140
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
describe 'test attribute "unique_clicks"' do
|
|
145
|
+
it 'should work' do
|
|
146
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe 'test attribute "unique_ctr"' do
|
|
151
|
+
it 'should work' do
|
|
152
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
114
156
|
describe 'test attribute "video_play_actions"' do
|
|
115
157
|
it 'should work' do
|
|
116
158
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -111,6 +111,48 @@ describe Zernio::AdMetrics do
|
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
+
describe 'test attribute "cost_per_action"' do
|
|
115
|
+
it 'should work' do
|
|
116
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
describe 'test attribute "outbound_clicks"' do
|
|
121
|
+
it 'should work' do
|
|
122
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
describe 'test attribute "outbound_clicks_ctr"' do
|
|
127
|
+
it 'should work' do
|
|
128
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe 'test attribute "inline_link_clicks"' do
|
|
133
|
+
it 'should work' do
|
|
134
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe 'test attribute "inline_link_click_ctr"' do
|
|
139
|
+
it 'should work' do
|
|
140
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
describe 'test attribute "unique_clicks"' do
|
|
145
|
+
it 'should work' do
|
|
146
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe 'test attribute "unique_ctr"' do
|
|
151
|
+
it 'should work' do
|
|
152
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
114
156
|
describe 'test attribute "video_play_actions"' do
|
|
115
157
|
it 'should work' do
|
|
116
158
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -111,6 +111,48 @@ describe Zernio::GetCampaignAnalytics200ResponseAnalyticsDailyInner do
|
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
+
describe 'test attribute "cost_per_action"' do
|
|
115
|
+
it 'should work' do
|
|
116
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
describe 'test attribute "outbound_clicks"' do
|
|
121
|
+
it 'should work' do
|
|
122
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
describe 'test attribute "outbound_clicks_ctr"' do
|
|
127
|
+
it 'should work' do
|
|
128
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe 'test attribute "inline_link_clicks"' do
|
|
133
|
+
it 'should work' do
|
|
134
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe 'test attribute "inline_link_click_ctr"' do
|
|
139
|
+
it 'should work' do
|
|
140
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
describe 'test attribute "unique_clicks"' do
|
|
145
|
+
it 'should work' do
|
|
146
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe 'test attribute "unique_ctr"' do
|
|
151
|
+
it 'should work' do
|
|
152
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
114
156
|
describe 'test attribute "video_play_actions"' do
|
|
115
157
|
it 'should work' do
|
|
116
158
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: late-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.715
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenAPI-Generator
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-08-
|
|
11
|
+
date: 2026-08-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: typhoeus
|
|
@@ -5108,7 +5108,7 @@ files:
|
|
|
5108
5108
|
- spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
|
|
5109
5109
|
- spec/models/you_tube_video_retention_response_spec.rb
|
|
5110
5110
|
- spec/spec_helper.rb
|
|
5111
|
-
- zernio-sdk-0.0.
|
|
5111
|
+
- zernio-sdk-0.0.715.gem
|
|
5112
5112
|
- zernio-sdk.gemspec
|
|
5113
5113
|
homepage: https://openapi-generator.tech
|
|
5114
5114
|
licenses:
|
data/zernio-sdk-0.0.713.gem
DELETED
|
Binary file
|