late-sdk 0.0.1403 → 0.0.1404
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/README.md +2 -0
- data/docs/AdAnalyticsResponseAnalytics.md +12 -2
- data/docs/AdInsightsApi.md +8 -8
- data/docs/CampaignAnalyticsResponseAnalytics.md +12 -2
- data/docs/CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner.md +20 -0
- data/docs/CampaignAnalyticsResponseAnalyticsBreakdownsRange.md +20 -0
- data/lib/zernio-sdk/api/ad_insights_api.rb +10 -10
- data/lib/zernio-sdk/models/ad_analytics_response_analytics.rb +62 -5
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics.rb +62 -5
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics_breakdown_errors_inner.rb +157 -0
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics_breakdowns_range.rb +157 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +2 -0
- data/openapi.yaml +1 -1
- data/spec/api/ad_insights_api_spec.rb +5 -5
- data/spec/models/ad_analytics_response_analytics_spec.rb +30 -0
- data/spec/models/campaign_analytics_response_analytics_breakdown_errors_inner_spec.rb +42 -0
- data/spec/models/campaign_analytics_response_analytics_breakdowns_range_spec.rb +42 -0
- data/spec/models/campaign_analytics_response_analytics_spec.rb +30 -0
- data/zernio-sdk-0.0.1404.gem +0 -0
- metadata +10 -2
- data/zernio-sdk-0.0.1403.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: 8510d16cc8e7290a7b4a225ffd0278824a63c3c9b2ae23b43a085973fc8e3e3f
|
|
4
|
+
data.tar.gz: 9eb7a35b71116a34e42d7339f227770045b14942aab2a60688e48015f5ace3f1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4a01e3c64d8e05a4e8126fa18203ed3d16da915fdaf937362860f0e5ece5eacc87b3b5fbcb8002955b4834d9ec8973ef7b377d61b0e69e5318ddc05e8e6fbdbb
|
|
7
|
+
data.tar.gz: 24952b6d468321c6f173d975237c87164a7f51704e1414103cff078aa46d9f9f6e14607675b0c767742d0cd5446f2b700157d33ef9a88749056dee6583d4bfae
|
data/README.md
CHANGED
|
@@ -1295,6 +1295,8 @@ Class | Method | HTTP request | Description
|
|
|
1295
1295
|
- [Zernio::CallRecordTranscriptInner](docs/CallRecordTranscriptInner.md)
|
|
1296
1296
|
- [Zernio::CampaignAnalyticsResponse](docs/CampaignAnalyticsResponse.md)
|
|
1297
1297
|
- [Zernio::CampaignAnalyticsResponseAnalytics](docs/CampaignAnalyticsResponseAnalytics.md)
|
|
1298
|
+
- [Zernio::CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner](docs/CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner.md)
|
|
1299
|
+
- [Zernio::CampaignAnalyticsResponseAnalyticsBreakdownsRange](docs/CampaignAnalyticsResponseAnalyticsBreakdownsRange.md)
|
|
1298
1300
|
- [Zernio::CampaignAnalyticsResponseAnalyticsDailyInner](docs/CampaignAnalyticsResponseAnalyticsDailyInner.md)
|
|
1299
1301
|
- [Zernio::CampaignAnalyticsResponseAnalyticsImpressionShareCache](docs/CampaignAnalyticsResponseAnalyticsImpressionShareCache.md)
|
|
1300
1302
|
- [Zernio::CampaignAnalyticsResponseAnalyticsSummary](docs/CampaignAnalyticsResponseAnalyticsSummary.md)
|
|
@@ -6,7 +6,12 @@
|
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **summary** | [**AdMetrics**](AdMetrics.md) | | [optional] |
|
|
8
8
|
| **daily** | [**Array<CampaignAnalyticsResponseAnalyticsDailyInner>**](CampaignAnalyticsResponseAnalyticsDailyInner.md) | | [optional] |
|
|
9
|
-
| **breakdowns** | **Hash<String, Array<Object>>** | Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series. | [optional] |
|
|
9
|
+
| **breakdowns** | **Hash<String, Array<Object>>** | Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series. TikTok rows are keyed by TikTok's own dimension name (`country_code` for `country`, `platform` for `publisher_platform`). `placement` rows carry the label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`) in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`, `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label carries the raw value in both. A requested dimension with no data in the range is an empty array. | [optional] |
|
|
10
|
+
| **unsupported_breakdowns** | **Array<String>** | Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported. | [optional] |
|
|
11
|
+
| **breakdown_hints** | **Hash<String, String>** | Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint. | [optional] |
|
|
12
|
+
| **breakdown_errors** | [**Array<CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner>**](CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner.md) | TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered. | [optional] |
|
|
13
|
+
| **breakdown_dropped_metrics** | **Hash<String, Array<String>>** | TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused. | [optional] |
|
|
14
|
+
| **breakdowns_range** | [**CampaignAnalyticsResponseAnalyticsBreakdownsRange**](CampaignAnalyticsResponseAnalyticsBreakdownsRange.md) | | [optional] |
|
|
10
15
|
|
|
11
16
|
## Example
|
|
12
17
|
|
|
@@ -16,7 +21,12 @@ require 'zernio-sdk'
|
|
|
16
21
|
instance = Zernio::AdAnalyticsResponseAnalytics.new(
|
|
17
22
|
summary: null,
|
|
18
23
|
daily: null,
|
|
19
|
-
breakdowns: null
|
|
24
|
+
breakdowns: null,
|
|
25
|
+
unsupported_breakdowns: null,
|
|
26
|
+
breakdown_hints: null,
|
|
27
|
+
breakdown_errors: null,
|
|
28
|
+
breakdown_dropped_metrics: {publisher_platform=[total_purchase, total_purchase_value, total_initiate_checkout_value]},
|
|
29
|
+
breakdowns_range: null
|
|
20
30
|
)
|
|
21
31
|
```
|
|
22
32
|
|
data/docs/AdInsightsApi.md
CHANGED
|
@@ -230,7 +230,7 @@ end
|
|
|
230
230
|
|
|
231
231
|
Get ad analytics
|
|
232
232
|
|
|
233
|
-
Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta and
|
|
233
|
+
Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta, TikTok and LinkedIn. Includes summary metrics, a daily timeline over the requested date range, and optional demographic breakdowns (Meta, TikTok and LinkedIn only). If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
|
|
234
234
|
|
|
235
235
|
### Examples
|
|
236
236
|
|
|
@@ -248,7 +248,7 @@ ad_id = 'ad_id_example' # String |
|
|
|
248
248
|
opts = {
|
|
249
249
|
from_date: Date.parse('2013-10-20'), # Date | Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
|
|
250
250
|
to_date: Date.parse('2013-10-20'), # Date | End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
251
|
-
breakdowns: 'breakdowns_example' # String | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region. **TikTok**: gender, age, country_code, platform, ac, language. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
|
|
251
|
+
breakdowns: 'breakdowns_example' # String | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null.
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
begin
|
|
@@ -285,7 +285,7 @@ end
|
|
|
285
285
|
| **ad_id** | **String** | | |
|
|
286
286
|
| **from_date** | **Date** | Start of date range (YYYY-MM-DD). Defaults to 90 days ago. | [optional] |
|
|
287
287
|
| **to_date** | **Date** | End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range. | [optional] |
|
|
288
|
-
| **breakdowns** | **String** | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region. **TikTok**: gender, age, country_code, platform, ac, language. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. | [optional] |
|
|
288
|
+
| **breakdowns** | **String** | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null. | [optional] |
|
|
289
289
|
|
|
290
290
|
### Return type
|
|
291
291
|
|
|
@@ -471,7 +471,7 @@ end
|
|
|
471
471
|
|
|
472
472
|
Get campaign analytics
|
|
473
473
|
|
|
474
|
-
Returns a campaign's performance summary and daily timeline, with optional breakdowns by age, gender and other audience dimensions. Returns performance analytics for a whole campaign in one call: summary metrics, a daily timeline over the requested date range (summed across the campaign's ads), and optional demographic breakdowns. Breakdowns are fetched live from Meta at the campaign level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass `platform` when a campaign id could be ambiguous across platforms. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. Google adds searchImpressionShare, searchBudgetLostImpressionShare, searchRankLostImpressionShare, searchTopImpressionShare and searchAbsoluteTopImpressionShare under analytics.summary for the requested inclusive range. These ratios are queried together without daily segmentation and cached for 10 minutes. Unavailable values are null. analytics.impressionShareCache reports cachedAt and stale independently of synced metrics.
|
|
474
|
+
Returns a campaign's performance summary and daily timeline, with optional breakdowns by age, gender and other audience dimensions. Returns performance analytics for a whole campaign in one call: summary metrics, a daily timeline over the requested date range (summed across the campaign's ads), and optional demographic breakdowns. Breakdowns are fetched live from Meta, TikTok or LinkedIn at the campaign level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/placement/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass `platform` when a campaign id could be ambiguous across platforms. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. Google adds searchImpressionShare, searchBudgetLostImpressionShare, searchRankLostImpressionShare, searchTopImpressionShare and searchAbsoluteTopImpressionShare under analytics.summary for the requested inclusive range. These ratios are queried together without daily segmentation and cached for 10 minutes. Unavailable values are null. analytics.impressionShareCache reports cachedAt and stale independently of synced metrics.
|
|
475
475
|
|
|
476
476
|
### Examples
|
|
477
477
|
|
|
@@ -490,7 +490,7 @@ opts = {
|
|
|
490
490
|
platform: 'platform_example', # String | Disambiguate when the campaign id exists across platforms (e.g. facebook, instagram).
|
|
491
491
|
from_date: Date.parse('2013-10-20'), # Date | Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
|
|
492
492
|
to_date: Date.parse('2013-10-20'), # Date | End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
493
|
-
breakdowns: 'breakdowns_example' # String | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
|
|
493
|
+
breakdowns: 'breakdowns_example' # String | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null.
|
|
494
494
|
}
|
|
495
495
|
|
|
496
496
|
begin
|
|
@@ -528,7 +528,7 @@ end
|
|
|
528
528
|
| **platform** | **String** | Disambiguate when the campaign id exists across platforms (e.g. facebook, instagram). | [optional] |
|
|
529
529
|
| **from_date** | **Date** | Start of date range (YYYY-MM-DD). Defaults to 90 days ago. | [optional] |
|
|
530
530
|
| **to_date** | **Date** | End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range. | [optional] |
|
|
531
|
-
| **breakdowns** | **String** | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. | [optional] |
|
|
531
|
+
| **breakdowns** | **String** | Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null. | [optional] |
|
|
532
532
|
|
|
533
533
|
### Return type
|
|
534
534
|
|
|
@@ -832,7 +832,7 @@ opts = {
|
|
|
832
832
|
page_token: 'page_token_example', # String | Google only: cursor from paging.nextPageToken of the previous page.
|
|
833
833
|
level: 'ad', # String | Row granularity
|
|
834
834
|
fields: 'fields_example', # String | Comma-separated Graph insights fields (e.g. spend,impressions,frequency,website_purchase_roas). Omitted = Meta's default set.
|
|
835
|
-
breakdowns: 'breakdowns_example', # String |
|
|
835
|
+
breakdowns: 'breakdowns_example', # String | Meta only: comma-separated Graph breakdowns (e.g. age,gender or publisher_platform). Returns 400 on TikTok (add the breakdown to dimensions with reportType=AUDIENCE, e.g. dimensions=campaign_id,placement) and on Google (select segments.* in the query).
|
|
836
836
|
action_breakdowns: 'action_breakdowns_example', # String | Comma-separated Graph action breakdowns; segments the actions[] arrays in each row. Pass `none` to clear Meta's default action_type breakdown, required to combine some non-action breakdowns such as instagram_ads_follow_type (otherwise Meta returns a (#100) invalid-combination error).
|
|
837
837
|
action_attribution_windows: 'action_attribution_windows_example', # String | Comma-separated Meta attribution windows. Action values are returned keyed per window.
|
|
838
838
|
action_report_time: 'action_report_time_example', # String | When actions are counted: impression, conversion or mixed.
|
|
@@ -891,7 +891,7 @@ end
|
|
|
891
891
|
| **page_token** | **String** | Google only: cursor from paging.nextPageToken of the previous page. | [optional] |
|
|
892
892
|
| **level** | **String** | Row granularity | [optional] |
|
|
893
893
|
| **fields** | **String** | Comma-separated Graph insights fields (e.g. spend,impressions,frequency,website_purchase_roas). Omitted = Meta's default set. | [optional] |
|
|
894
|
-
| **breakdowns** | **String** |
|
|
894
|
+
| **breakdowns** | **String** | Meta only: comma-separated Graph breakdowns (e.g. age,gender or publisher_platform). Returns 400 on TikTok (add the breakdown to dimensions with reportType=AUDIENCE, e.g. dimensions=campaign_id,placement) and on Google (select segments.* in the query). | [optional] |
|
|
895
895
|
| **action_breakdowns** | **String** | Comma-separated Graph action breakdowns; segments the actions[] arrays in each row. Pass `none` to clear Meta's default action_type breakdown, required to combine some non-action breakdowns such as instagram_ads_follow_type (otherwise Meta returns a (#100) invalid-combination error). | [optional] |
|
|
896
896
|
| **action_attribution_windows** | **String** | Comma-separated Meta attribution windows. Action values are returned keyed per window. | [optional] |
|
|
897
897
|
| **action_report_time** | **String** | When actions are counted: impression, conversion or mixed. | [optional] |
|
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
| **summary** | [**CampaignAnalyticsResponseAnalyticsSummary**](CampaignAnalyticsResponseAnalyticsSummary.md) | | [optional] |
|
|
8
8
|
| **impression_share_cache** | [**CampaignAnalyticsResponseAnalyticsImpressionShareCache**](CampaignAnalyticsResponseAnalyticsImpressionShareCache.md) | | [optional] |
|
|
9
9
|
| **daily** | [**Array<CampaignAnalyticsResponseAnalyticsDailyInner>**](CampaignAnalyticsResponseAnalyticsDailyInner.md) | | [optional] |
|
|
10
|
-
| **breakdowns** | **Hash<String, Array<Object>>** | Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series. | [optional] |
|
|
10
|
+
| **breakdowns** | **Hash<String, Array<Object>>** | Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series. TikTok rows are keyed by TikTok's own dimension name (`country_code` for `country`, `platform` for `publisher_platform`). `placement` rows carry the label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`) in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`, `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label carries the raw value in both. A requested dimension with no data in the range is an empty array. | [optional] |
|
|
11
|
+
| **unsupported_breakdowns** | **Array<String>** | Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported. | [optional] |
|
|
12
|
+
| **breakdown_hints** | **Hash<String, String>** | Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint. | [optional] |
|
|
13
|
+
| **breakdown_errors** | [**Array<CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner>**](CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner.md) | TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered. | [optional] |
|
|
14
|
+
| **breakdown_dropped_metrics** | **Hash<String, Array<String>>** | TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused. | [optional] |
|
|
15
|
+
| **breakdowns_range** | [**CampaignAnalyticsResponseAnalyticsBreakdownsRange**](CampaignAnalyticsResponseAnalyticsBreakdownsRange.md) | | [optional] |
|
|
11
16
|
|
|
12
17
|
## Example
|
|
13
18
|
|
|
@@ -18,7 +23,12 @@ instance = Zernio::CampaignAnalyticsResponseAnalytics.new(
|
|
|
18
23
|
summary: null,
|
|
19
24
|
impression_share_cache: null,
|
|
20
25
|
daily: null,
|
|
21
|
-
breakdowns: null
|
|
26
|
+
breakdowns: null,
|
|
27
|
+
unsupported_breakdowns: null,
|
|
28
|
+
breakdown_hints: null,
|
|
29
|
+
breakdown_errors: null,
|
|
30
|
+
breakdown_dropped_metrics: {publisher_platform=[total_purchase, total_purchase_value, total_initiate_checkout_value]},
|
|
31
|
+
breakdowns_range: null
|
|
22
32
|
)
|
|
23
33
|
```
|
|
24
34
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **breakdown** | **String** | | [optional] |
|
|
8
|
+
| **message** | **String** | The platform's error message. | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner.new(
|
|
16
|
+
breakdown: null,
|
|
17
|
+
message: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::CampaignAnalyticsResponseAnalyticsBreakdownsRange
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **from_date** | **Date** | | [optional] |
|
|
8
|
+
| **to_date** | **Date** | | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::CampaignAnalyticsResponseAnalyticsBreakdownsRange.new(
|
|
16
|
+
from_date: null,
|
|
17
|
+
to_date: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -224,12 +224,12 @@ module Zernio
|
|
|
224
224
|
end
|
|
225
225
|
|
|
226
226
|
# Get ad analytics
|
|
227
|
-
# Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta and
|
|
227
|
+
# Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta, TikTok and LinkedIn. Includes summary metrics, a daily timeline over the requested date range, and optional demographic breakdowns (Meta, TikTok and LinkedIn only). If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
|
|
228
228
|
# @param ad_id [String]
|
|
229
229
|
# @param [Hash] opts the optional parameters
|
|
230
230
|
# @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
|
|
231
231
|
# @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
232
|
-
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region. **TikTok**: gender, age, country_code, platform, ac, language. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
|
|
232
|
+
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null.
|
|
233
233
|
# @return [AdAnalyticsResponse]
|
|
234
234
|
def get_ad_analytics(ad_id, opts = {})
|
|
235
235
|
data, _status_code, _headers = get_ad_analytics_with_http_info(ad_id, opts)
|
|
@@ -237,12 +237,12 @@ module Zernio
|
|
|
237
237
|
end
|
|
238
238
|
|
|
239
239
|
# Get ad analytics
|
|
240
|
-
# Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta and
|
|
240
|
+
# Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta, TikTok and LinkedIn. Includes summary metrics, a daily timeline over the requested date range, and optional demographic breakdowns (Meta, TikTok and LinkedIn only). If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
|
|
241
241
|
# @param ad_id [String]
|
|
242
242
|
# @param [Hash] opts the optional parameters
|
|
243
243
|
# @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
|
|
244
244
|
# @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
245
|
-
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region. **TikTok**: gender, age, country_code, platform, ac, language. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
|
|
245
|
+
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null.
|
|
246
246
|
# @return [Array<(AdAnalyticsResponse, Integer, Hash)>] AdAnalyticsResponse data, response status code and response headers
|
|
247
247
|
def get_ad_analytics_with_http_info(ad_id, opts = {})
|
|
248
248
|
if @api_client.config.debugging
|
|
@@ -468,13 +468,13 @@ module Zernio
|
|
|
468
468
|
end
|
|
469
469
|
|
|
470
470
|
# Get campaign analytics
|
|
471
|
-
# Returns a campaign's performance summary and daily timeline, with optional breakdowns by age, gender and other audience dimensions. Returns performance analytics for a whole campaign in one call: summary metrics, a daily timeline over the requested date range (summed across the campaign's ads), and optional demographic breakdowns. Breakdowns are fetched live from Meta at the campaign level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass `platform` when a campaign id could be ambiguous across platforms. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. Google adds searchImpressionShare, searchBudgetLostImpressionShare, searchRankLostImpressionShare, searchTopImpressionShare and searchAbsoluteTopImpressionShare under analytics.summary for the requested inclusive range. These ratios are queried together without daily segmentation and cached for 10 minutes. Unavailable values are null. analytics.impressionShareCache reports cachedAt and stale independently of synced metrics.
|
|
471
|
+
# Returns a campaign's performance summary and daily timeline, with optional breakdowns by age, gender and other audience dimensions. Returns performance analytics for a whole campaign in one call: summary metrics, a daily timeline over the requested date range (summed across the campaign's ads), and optional demographic breakdowns. Breakdowns are fetched live from Meta, TikTok or LinkedIn at the campaign level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/placement/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass `platform` when a campaign id could be ambiguous across platforms. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. Google adds searchImpressionShare, searchBudgetLostImpressionShare, searchRankLostImpressionShare, searchTopImpressionShare and searchAbsoluteTopImpressionShare under analytics.summary for the requested inclusive range. These ratios are queried together without daily segmentation and cached for 10 minutes. Unavailable values are null. analytics.impressionShareCache reports cachedAt and stale independently of synced metrics.
|
|
472
472
|
# @param campaign_id [String] Platform campaign id (platformCampaignId).
|
|
473
473
|
# @param [Hash] opts the optional parameters
|
|
474
474
|
# @option opts [String] :platform Disambiguate when the campaign id exists across platforms (e.g. facebook, instagram).
|
|
475
475
|
# @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
|
|
476
476
|
# @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
477
|
-
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
|
|
477
|
+
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null.
|
|
478
478
|
# @return [CampaignAnalyticsResponse]
|
|
479
479
|
def get_campaign_analytics(campaign_id, opts = {})
|
|
480
480
|
data, _status_code, _headers = get_campaign_analytics_with_http_info(campaign_id, opts)
|
|
@@ -482,13 +482,13 @@ module Zernio
|
|
|
482
482
|
end
|
|
483
483
|
|
|
484
484
|
# Get campaign analytics
|
|
485
|
-
# Returns a campaign's performance summary and daily timeline, with optional breakdowns by age, gender and other audience dimensions. Returns performance analytics for a whole campaign in one call: summary metrics, a daily timeline over the requested date range (summed across the campaign's ads), and optional demographic breakdowns. Breakdowns are fetched live from Meta at the campaign level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass `platform` when a campaign id could be ambiguous across platforms. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. Google adds searchImpressionShare, searchBudgetLostImpressionShare, searchRankLostImpressionShare, searchTopImpressionShare and searchAbsoluteTopImpressionShare under analytics.summary for the requested inclusive range. These ratios are queried together without daily segmentation and cached for 10 minutes. Unavailable values are null. analytics.impressionShareCache reports cachedAt and stale independently of synced metrics.
|
|
485
|
+
# Returns a campaign's performance summary and daily timeline, with optional breakdowns by age, gender and other audience dimensions. Returns performance analytics for a whole campaign in one call: summary metrics, a daily timeline over the requested date range (summed across the campaign's ads), and optional demographic breakdowns. Breakdowns are fetched live from Meta, TikTok or LinkedIn at the campaign level (one call per dimension, no per-ad fan-out), so an agency dashboard gets campaign-level age/gender/placement/etc. without summing thousands of per-ad reads. `campaignId` is the platform campaign id; pass `platform` when a campaign id could be ambiguous across platforms. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. Google adds searchImpressionShare, searchBudgetLostImpressionShare, searchRankLostImpressionShare, searchTopImpressionShare and searchAbsoluteTopImpressionShare under analytics.summary for the requested inclusive range. These ratios are queried together without daily segmentation and cached for 10 minutes. Unavailable values are null. analytics.impressionShareCache reports cachedAt and stale independently of synced metrics.
|
|
486
486
|
# @param campaign_id [String] Platform campaign id (platformCampaignId).
|
|
487
487
|
# @param [Hash] opts the optional parameters
|
|
488
488
|
# @option opts [String] :platform Disambiguate when the campaign id exists across platforms (e.g. facebook, instagram).
|
|
489
489
|
# @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
|
|
490
490
|
# @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
491
|
-
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
|
|
491
|
+
# @option opts [String] :breakdowns Comma-separated breakdown dimensions. **Meta**: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset. **TikTok**: gender, age, country (or country_code), publisher_platform (or platform), ac, language, placement. TikTok serves at most 365 days per breakdown, so a longer range is read over its last 365 days and `analytics.breakdownsRange` says which window. **LinkedIn** (firmographics): job_title, job_function, seniority, industry, company, company_size, country, region. Rows carry the raw pivot `value` plus a resolved `name`. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events. A known dimension the platform cannot break down by is listed in `analytics.unsupportedBreakdowns` instead of being dropped (with guidance in `analytics.breakdownHints` where there is an alternative); the rest of the response is unchanged. An unknown name returns 400. A TikTok dimension that fails is listed in `analytics.breakdownErrors` and the response stays 200. Metrics TikTok refuses for a dimension are listed in `analytics.breakdownDroppedMetrics`, and the row values derived from them are null.
|
|
492
492
|
# @return [Array<(CampaignAnalyticsResponse, Integer, Hash)>] CampaignAnalyticsResponse data, response status code and response headers
|
|
493
493
|
def get_campaign_analytics_with_http_info(campaign_id, opts = {})
|
|
494
494
|
if @api_client.config.debugging
|
|
@@ -846,7 +846,7 @@ module Zernio
|
|
|
846
846
|
# @option opts [String] :page_token Google only: cursor from paging.nextPageToken of the previous page.
|
|
847
847
|
# @option opts [String] :level Row granularity
|
|
848
848
|
# @option opts [String] :fields Comma-separated Graph insights fields (e.g. spend,impressions,frequency,website_purchase_roas). Omitted = Meta's default set.
|
|
849
|
-
# @option opts [String] :breakdowns
|
|
849
|
+
# @option opts [String] :breakdowns Meta only: comma-separated Graph breakdowns (e.g. age,gender or publisher_platform). Returns 400 on TikTok (add the breakdown to dimensions with reportType=AUDIENCE, e.g. dimensions=campaign_id,placement) and on Google (select segments.* in the query).
|
|
850
850
|
# @option opts [String] :action_breakdowns Comma-separated Graph action breakdowns; segments the actions[] arrays in each row. Pass `none` to clear Meta's default action_type breakdown, required to combine some non-action breakdowns such as instagram_ads_follow_type (otherwise Meta returns a (#100) invalid-combination error).
|
|
851
851
|
# @option opts [String] :action_attribution_windows Comma-separated Meta attribution windows. Action values are returned keyed per window.
|
|
852
852
|
# @option opts [String] :action_report_time When actions are counted: impression, conversion or mixed.
|
|
@@ -881,7 +881,7 @@ module Zernio
|
|
|
881
881
|
# @option opts [String] :page_token Google only: cursor from paging.nextPageToken of the previous page.
|
|
882
882
|
# @option opts [String] :level Row granularity
|
|
883
883
|
# @option opts [String] :fields Comma-separated Graph insights fields (e.g. spend,impressions,frequency,website_purchase_roas). Omitted = Meta's default set.
|
|
884
|
-
# @option opts [String] :breakdowns
|
|
884
|
+
# @option opts [String] :breakdowns Meta only: comma-separated Graph breakdowns (e.g. age,gender or publisher_platform). Returns 400 on TikTok (add the breakdown to dimensions with reportType=AUDIENCE, e.g. dimensions=campaign_id,placement) and on Google (select segments.* in the query).
|
|
885
885
|
# @option opts [String] :action_breakdowns Comma-separated Graph action breakdowns; segments the actions[] arrays in each row. Pass `none` to clear Meta's default action_type breakdown, required to combine some non-action breakdowns such as instagram_ads_follow_type (otherwise Meta returns a (#100) invalid-combination error).
|
|
886
886
|
# @option opts [String] :action_attribution_windows Comma-separated Meta attribution windows. Action values are returned keyed per window.
|
|
887
887
|
# @option opts [String] :action_report_time When actions are counted: impression, conversion or mixed.
|
|
@@ -19,15 +19,34 @@ module Zernio
|
|
|
19
19
|
|
|
20
20
|
attr_accessor :daily
|
|
21
21
|
|
|
22
|
-
# Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series.
|
|
22
|
+
# Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series. TikTok rows are keyed by TikTok's own dimension name (`country_code` for `country`, `platform` for `publisher_platform`). `placement` rows carry the label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`) in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`, `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label carries the raw value in both. A requested dimension with no data in the range is an empty array.
|
|
23
23
|
attr_accessor :breakdowns
|
|
24
24
|
|
|
25
|
+
# Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
|
|
26
|
+
attr_accessor :unsupported_breakdowns
|
|
27
|
+
|
|
28
|
+
# Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
|
|
29
|
+
attr_accessor :breakdown_hints
|
|
30
|
+
|
|
31
|
+
# TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
|
|
32
|
+
attr_accessor :breakdown_errors
|
|
33
|
+
|
|
34
|
+
# TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
|
|
35
|
+
attr_accessor :breakdown_dropped_metrics
|
|
36
|
+
|
|
37
|
+
attr_accessor :breakdowns_range
|
|
38
|
+
|
|
25
39
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
26
40
|
def self.attribute_map
|
|
27
41
|
{
|
|
28
42
|
:'summary' => :'summary',
|
|
29
43
|
:'daily' => :'daily',
|
|
30
|
-
:'breakdowns' => :'breakdowns'
|
|
44
|
+
:'breakdowns' => :'breakdowns',
|
|
45
|
+
:'unsupported_breakdowns' => :'unsupportedBreakdowns',
|
|
46
|
+
:'breakdown_hints' => :'breakdownHints',
|
|
47
|
+
:'breakdown_errors' => :'breakdownErrors',
|
|
48
|
+
:'breakdown_dropped_metrics' => :'breakdownDroppedMetrics',
|
|
49
|
+
:'breakdowns_range' => :'breakdownsRange'
|
|
31
50
|
}
|
|
32
51
|
end
|
|
33
52
|
|
|
@@ -46,7 +65,12 @@ module Zernio
|
|
|
46
65
|
{
|
|
47
66
|
:'summary' => :'AdMetrics',
|
|
48
67
|
:'daily' => :'Array<CampaignAnalyticsResponseAnalyticsDailyInner>',
|
|
49
|
-
:'breakdowns' => :'Hash<String, Array<Object>>'
|
|
68
|
+
:'breakdowns' => :'Hash<String, Array<Object>>',
|
|
69
|
+
:'unsupported_breakdowns' => :'Array<String>',
|
|
70
|
+
:'breakdown_hints' => :'Hash<String, String>',
|
|
71
|
+
:'breakdown_errors' => :'Array<CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner>',
|
|
72
|
+
:'breakdown_dropped_metrics' => :'Hash<String, Array<String>>',
|
|
73
|
+
:'breakdowns_range' => :'CampaignAnalyticsResponseAnalyticsBreakdownsRange'
|
|
50
74
|
}
|
|
51
75
|
end
|
|
52
76
|
|
|
@@ -87,6 +111,34 @@ module Zernio
|
|
|
87
111
|
self.breakdowns = value
|
|
88
112
|
end
|
|
89
113
|
end
|
|
114
|
+
|
|
115
|
+
if attributes.key?(:'unsupported_breakdowns')
|
|
116
|
+
if (value = attributes[:'unsupported_breakdowns']).is_a?(Array)
|
|
117
|
+
self.unsupported_breakdowns = value
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
if attributes.key?(:'breakdown_hints')
|
|
122
|
+
if (value = attributes[:'breakdown_hints']).is_a?(Hash)
|
|
123
|
+
self.breakdown_hints = value
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
if attributes.key?(:'breakdown_errors')
|
|
128
|
+
if (value = attributes[:'breakdown_errors']).is_a?(Array)
|
|
129
|
+
self.breakdown_errors = value
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
if attributes.key?(:'breakdown_dropped_metrics')
|
|
134
|
+
if (value = attributes[:'breakdown_dropped_metrics']).is_a?(Hash)
|
|
135
|
+
self.breakdown_dropped_metrics = value
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
if attributes.key?(:'breakdowns_range')
|
|
140
|
+
self.breakdowns_range = attributes[:'breakdowns_range']
|
|
141
|
+
end
|
|
90
142
|
end
|
|
91
143
|
|
|
92
144
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -111,7 +163,12 @@ module Zernio
|
|
|
111
163
|
self.class == o.class &&
|
|
112
164
|
summary == o.summary &&
|
|
113
165
|
daily == o.daily &&
|
|
114
|
-
breakdowns == o.breakdowns
|
|
166
|
+
breakdowns == o.breakdowns &&
|
|
167
|
+
unsupported_breakdowns == o.unsupported_breakdowns &&
|
|
168
|
+
breakdown_hints == o.breakdown_hints &&
|
|
169
|
+
breakdown_errors == o.breakdown_errors &&
|
|
170
|
+
breakdown_dropped_metrics == o.breakdown_dropped_metrics &&
|
|
171
|
+
breakdowns_range == o.breakdowns_range
|
|
115
172
|
end
|
|
116
173
|
|
|
117
174
|
# @see the `==` method
|
|
@@ -123,7 +180,7 @@ module Zernio
|
|
|
123
180
|
# Calculates hash code according to all attributes.
|
|
124
181
|
# @return [Integer] Hash code
|
|
125
182
|
def hash
|
|
126
|
-
[summary, daily, breakdowns].hash
|
|
183
|
+
[summary, daily, breakdowns, unsupported_breakdowns, breakdown_hints, breakdown_errors, breakdown_dropped_metrics, breakdowns_range].hash
|
|
127
184
|
end
|
|
128
185
|
|
|
129
186
|
# Builds the object from hash
|
|
@@ -21,16 +21,35 @@ module Zernio
|
|
|
21
21
|
|
|
22
22
|
attr_accessor :daily
|
|
23
23
|
|
|
24
|
-
# Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series.
|
|
24
|
+
# Requested demographic breakdowns, keyed by dimension. Fetched live from the platform per request and never stored, so these rows can carry fields the stored `summary` and `daily` series do not. LinkedIn rows carry `value` (the pivot URN), `name` (resolved label where LinkedIn provides one), the usual spend/impressions/clicks/ctr/cpc/cpm/engagement figures, plus two reach fields: - `reach`: the segment's `approximateMemberReach`. - `audiencePenetration`: LinkedIn's own ratio of members reached to the size of the targeted audience, passed through verbatim. LinkedIn withholds both below its audience privacy threshold, in which case the keys are ABSENT rather than 0. `audiencePenetration` is available here only: it is not part of the stored metrics series. TikTok rows are keyed by TikTok's own dimension name (`country_code` for `country`, `platform` for `publisher_platform`). `placement` rows carry the label TikTok Ads Manager shows (`TikTok`, `TikTok Ad Network`, `News Feed App Series`) in `placement` and TikTok's API value (`PLACEMENT_TIKTOK`, `PLACEMENT_PANGLE`, `PLACEMENT_GLOBAL_APP_BUNDLE`) in `placementRaw`; a value without a known label carries the raw value in both. A requested dimension with no data in the range is an empty array.
|
|
25
25
|
attr_accessor :breakdowns
|
|
26
26
|
|
|
27
|
+
# Requested breakdowns this platform cannot break down by (e.g. region on TikTok, any breakdown on Google). Absent when every requested breakdown is supported.
|
|
28
|
+
attr_accessor :unsupported_breakdowns
|
|
29
|
+
|
|
30
|
+
# Guidance for some names in unsupportedBreakdowns, keyed by that name (e.g. placement on Meta points at publisher_platform and platform_position; platform_position on TikTok points at placement). Absent when no unsupported name has a hint.
|
|
31
|
+
attr_accessor :breakdown_hints
|
|
32
|
+
|
|
33
|
+
# TikTok only: breakdowns the platform failed to return (rate limit, permission, rejected query). Each one is an empty array under breakdowns; summary and daily are unaffected. Absent when every breakdown answered.
|
|
34
|
+
attr_accessor :breakdown_errors
|
|
35
|
+
|
|
36
|
+
# TikTok only: TikTok metric names TikTok refused for a breakdown, keyed by the requested breakdown (e.g. total_purchase and total_purchase_value have no relation to platform, ac or language). Every row value derived from a refused metric is null in that breakdown (purchaseValue and roas, or the matching actions and actionValues entries), never a number computed without it. Absent when no metric was refused.
|
|
37
|
+
attr_accessor :breakdown_dropped_metrics
|
|
38
|
+
|
|
39
|
+
attr_accessor :breakdowns_range
|
|
40
|
+
|
|
27
41
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
28
42
|
def self.attribute_map
|
|
29
43
|
{
|
|
30
44
|
:'summary' => :'summary',
|
|
31
45
|
:'impression_share_cache' => :'impressionShareCache',
|
|
32
46
|
:'daily' => :'daily',
|
|
33
|
-
:'breakdowns' => :'breakdowns'
|
|
47
|
+
:'breakdowns' => :'breakdowns',
|
|
48
|
+
:'unsupported_breakdowns' => :'unsupportedBreakdowns',
|
|
49
|
+
:'breakdown_hints' => :'breakdownHints',
|
|
50
|
+
:'breakdown_errors' => :'breakdownErrors',
|
|
51
|
+
:'breakdown_dropped_metrics' => :'breakdownDroppedMetrics',
|
|
52
|
+
:'breakdowns_range' => :'breakdownsRange'
|
|
34
53
|
}
|
|
35
54
|
end
|
|
36
55
|
|
|
@@ -50,7 +69,12 @@ module Zernio
|
|
|
50
69
|
:'summary' => :'CampaignAnalyticsResponseAnalyticsSummary',
|
|
51
70
|
:'impression_share_cache' => :'CampaignAnalyticsResponseAnalyticsImpressionShareCache',
|
|
52
71
|
:'daily' => :'Array<CampaignAnalyticsResponseAnalyticsDailyInner>',
|
|
53
|
-
:'breakdowns' => :'Hash<String, Array<Object>>'
|
|
72
|
+
:'breakdowns' => :'Hash<String, Array<Object>>',
|
|
73
|
+
:'unsupported_breakdowns' => :'Array<String>',
|
|
74
|
+
:'breakdown_hints' => :'Hash<String, String>',
|
|
75
|
+
:'breakdown_errors' => :'Array<CampaignAnalyticsResponseAnalyticsBreakdownErrorsInner>',
|
|
76
|
+
:'breakdown_dropped_metrics' => :'Hash<String, Array<String>>',
|
|
77
|
+
:'breakdowns_range' => :'CampaignAnalyticsResponseAnalyticsBreakdownsRange'
|
|
54
78
|
}
|
|
55
79
|
end
|
|
56
80
|
|
|
@@ -95,6 +119,34 @@ module Zernio
|
|
|
95
119
|
self.breakdowns = value
|
|
96
120
|
end
|
|
97
121
|
end
|
|
122
|
+
|
|
123
|
+
if attributes.key?(:'unsupported_breakdowns')
|
|
124
|
+
if (value = attributes[:'unsupported_breakdowns']).is_a?(Array)
|
|
125
|
+
self.unsupported_breakdowns = value
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
if attributes.key?(:'breakdown_hints')
|
|
130
|
+
if (value = attributes[:'breakdown_hints']).is_a?(Hash)
|
|
131
|
+
self.breakdown_hints = value
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
if attributes.key?(:'breakdown_errors')
|
|
136
|
+
if (value = attributes[:'breakdown_errors']).is_a?(Array)
|
|
137
|
+
self.breakdown_errors = value
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
if attributes.key?(:'breakdown_dropped_metrics')
|
|
142
|
+
if (value = attributes[:'breakdown_dropped_metrics']).is_a?(Hash)
|
|
143
|
+
self.breakdown_dropped_metrics = value
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
if attributes.key?(:'breakdowns_range')
|
|
148
|
+
self.breakdowns_range = attributes[:'breakdowns_range']
|
|
149
|
+
end
|
|
98
150
|
end
|
|
99
151
|
|
|
100
152
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -120,7 +172,12 @@ module Zernio
|
|
|
120
172
|
summary == o.summary &&
|
|
121
173
|
impression_share_cache == o.impression_share_cache &&
|
|
122
174
|
daily == o.daily &&
|
|
123
|
-
breakdowns == o.breakdowns
|
|
175
|
+
breakdowns == o.breakdowns &&
|
|
176
|
+
unsupported_breakdowns == o.unsupported_breakdowns &&
|
|
177
|
+
breakdown_hints == o.breakdown_hints &&
|
|
178
|
+
breakdown_errors == o.breakdown_errors &&
|
|
179
|
+
breakdown_dropped_metrics == o.breakdown_dropped_metrics &&
|
|
180
|
+
breakdowns_range == o.breakdowns_range
|
|
124
181
|
end
|
|
125
182
|
|
|
126
183
|
# @see the `==` method
|
|
@@ -132,7 +189,7 @@ module Zernio
|
|
|
132
189
|
# Calculates hash code according to all attributes.
|
|
133
190
|
# @return [Integer] Hash code
|
|
134
191
|
def hash
|
|
135
|
-
[summary, impression_share_cache, daily, breakdowns].hash
|
|
192
|
+
[summary, impression_share_cache, daily, breakdowns, unsupported_breakdowns, breakdown_hints, breakdown_errors, breakdown_dropped_metrics, breakdowns_range].hash
|
|
136
193
|
end
|
|
137
194
|
|
|
138
195
|
# Builds the object from hash
|