late-sdk 0.0.714 → 0.0.716

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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -10
  3. data/docs/AdAnalyticsResponse.md +22 -0
  4. data/docs/{GetAdAnalytics200ResponseAd.md → AdAnalyticsResponseAd.md} +2 -4
  5. data/docs/AdCampaignsApi.md +12 -12
  6. data/docs/AdDailyMetrics.md +14 -0
  7. data/docs/AdEngagementCounts.md +1 -1
  8. data/docs/AdInsightsApi.md +8 -8
  9. data/docs/AdMetrics.md +14 -0
  10. data/docs/AdTreeResponse.md +22 -0
  11. data/docs/AdsListResponse.md +22 -0
  12. data/docs/AdsTimelineResponse.md +20 -0
  13. data/docs/{GetAdsTimeline200ResponseRowsInner.md → AdsTimelineResponseRowsInner.md} +2 -2
  14. data/docs/CampaignAnalyticsResponse.md +22 -0
  15. data/docs/{GetCampaignAnalytics200ResponseAnalytics.md → CampaignAnalyticsResponseAnalytics.md} +3 -3
  16. data/docs/{GetCampaignAnalytics200ResponseAnalyticsDailyInner.md → CampaignAnalyticsResponseAnalyticsDailyInner.md} +16 -2
  17. data/docs/{GetCampaignAnalytics200ResponseCampaign.md → CampaignAnalyticsResponseCampaign.md} +2 -2
  18. data/docs/GetAdAnalytics202Response.md +22 -0
  19. data/docs/GetAdTree202Response.md +22 -0
  20. data/docs/GetAdsTimeline202Response.md +20 -0
  21. data/docs/GetCampaignAnalytics202Response.md +22 -0
  22. data/docs/ListAds202Response.md +22 -0
  23. data/lib/zernio-sdk/api/ad_campaigns_api.rb +9 -9
  24. data/lib/zernio-sdk/api/ad_insights_api.rb +6 -6
  25. data/lib/zernio-sdk/models/{get_ad_analytics200_response.rb → ad_analytics_response.rb} +15 -15
  26. data/lib/zernio-sdk/models/{get_ad_analytics200_response_ad.rb → ad_analytics_response_ad.rb} +4 -47
  27. data/lib/zernio-sdk/models/ad_daily_metrics.rb +73 -1
  28. data/lib/zernio-sdk/models/ad_engagement_counts.rb +1 -1
  29. data/lib/zernio-sdk/models/ad_metrics.rb +73 -1
  30. data/lib/zernio-sdk/models/{get_ad_tree200_response.rb → ad_tree_response.rb} +17 -17
  31. data/lib/zernio-sdk/models/{list_ads200_response.rb → ads_list_response.rb} +17 -17
  32. data/lib/zernio-sdk/models/{get_ads_timeline200_response.rb → ads_timeline_response.rb} +17 -17
  33. data/lib/zernio-sdk/models/{get_ads_timeline200_response_rows_inner.rb → ads_timeline_response_rows_inner.rb} +3 -3
  34. data/lib/zernio-sdk/models/{get_campaign_analytics200_response.rb → campaign_analytics_response.rb} +15 -15
  35. data/lib/zernio-sdk/models/{get_campaign_analytics200_response_analytics.rb → campaign_analytics_response_analytics.rb} +4 -4
  36. data/lib/zernio-sdk/models/{get_campaign_analytics200_response_analytics_daily_inner.rb → campaign_analytics_response_analytics_daily_inner.rb} +76 -4
  37. data/lib/zernio-sdk/models/{get_campaign_analytics200_response_campaign.rb → campaign_analytics_response_campaign.rb} +3 -3
  38. data/lib/zernio-sdk/models/get_ad_analytics202_response.rb +213 -0
  39. data/lib/zernio-sdk/models/get_ad_tree202_response.rb +215 -0
  40. data/lib/zernio-sdk/models/get_ads_timeline202_response.rb +206 -0
  41. data/lib/zernio-sdk/models/get_campaign_analytics202_response.rb +213 -0
  42. data/lib/zernio-sdk/models/list_ads202_response.rb +215 -0
  43. data/lib/zernio-sdk/version.rb +1 -1
  44. data/lib/zernio-sdk.rb +15 -10
  45. data/openapi.yaml +205 -123
  46. data/spec/api/ad_campaigns_api_spec.rb +3 -3
  47. data/spec/api/ad_insights_api_spec.rb +2 -2
  48. data/spec/models/{get_campaign_analytics200_response_campaign_spec.rb → ad_analytics_response_ad_spec.rb} +6 -6
  49. data/spec/models/{get_ad_analytics200_response_spec.rb → ad_analytics_response_spec.rb} +8 -8
  50. data/spec/models/ad_daily_metrics_spec.rb +42 -0
  51. data/spec/models/ad_metrics_spec.rb +42 -0
  52. data/spec/models/{get_ad_tree200_response_spec.rb → ad_tree_response_spec.rb} +8 -8
  53. data/spec/models/{list_ads200_response_spec.rb → ads_list_response_spec.rb} +8 -8
  54. data/spec/models/{get_ads_timeline200_response_rows_inner_spec.rb → ads_timeline_response_rows_inner_spec.rb} +6 -6
  55. data/spec/models/{get_ads_timeline200_response_spec.rb → ads_timeline_response_spec.rb} +8 -8
  56. data/spec/models/{get_campaign_analytics200_response_analytics_daily_inner_spec.rb → campaign_analytics_response_analytics_daily_inner_spec.rb} +48 -6
  57. data/spec/models/{get_campaign_analytics200_response_analytics_spec.rb → campaign_analytics_response_analytics_spec.rb} +6 -6
  58. data/spec/models/{get_ad_analytics200_response_ad_spec.rb → campaign_analytics_response_campaign_spec.rb} +6 -16
  59. data/spec/models/{get_campaign_analytics200_response_spec.rb → campaign_analytics_response_spec.rb} +8 -8
  60. data/spec/models/get_ad_analytics202_response_spec.rb +52 -0
  61. data/spec/models/get_ad_tree202_response_spec.rb +52 -0
  62. data/spec/models/get_ads_timeline202_response_spec.rb +46 -0
  63. data/spec/models/get_campaign_analytics202_response_spec.rb +52 -0
  64. data/spec/models/list_ads202_response_spec.rb +52 -0
  65. data/zernio-sdk-0.0.716.gem +0 -0
  66. metadata +1654 -1634
  67. data/docs/GetAdAnalytics200Response.md +0 -22
  68. data/docs/GetAdTree200Response.md +0 -22
  69. data/docs/GetAdsTimeline200Response.md +0 -20
  70. data/docs/GetCampaignAnalytics200Response.md +0 -22
  71. data/docs/ListAds200Response.md +0 -22
  72. data/zernio-sdk-0.0.714.gem +0 -0
@@ -0,0 +1,22 @@
1
+ # Zernio::GetCampaignAnalytics202Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **backfill_pending** | **Boolean** | | |
8
+ | **campaign** | [**CampaignAnalyticsResponseCampaign**](CampaignAnalyticsResponseCampaign.md) | | [optional] |
9
+ | **analytics** | [**CampaignAnalyticsResponseAnalytics**](CampaignAnalyticsResponseAnalytics.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'zernio-sdk'
15
+
16
+ instance = Zernio::GetCampaignAnalytics202Response.new(
17
+ backfill_pending: null,
18
+ campaign: null,
19
+ analytics: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # Zernio::ListAds202Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **ads** | [**Array<Ad>**](Ad.md) | | [optional] |
8
+ | **pagination** | [**Pagination**](Pagination.md) | | [optional] |
9
+ | **backfill_pending** | **Boolean** | | |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'zernio-sdk'
15
+
16
+ instance = Zernio::ListAds202Response.new(
17
+ ads: null,
18
+ pagination: null,
19
+ backfill_pending: null
20
+ )
21
+ ```
22
+
@@ -835,7 +835,7 @@ module Zernio
835
835
  # @option opts [String] :sort Campaign-level sort order. `newest` (default) / `oldest` order by the campaign's newest-ad createdAt. `spend_desc` / `spend_asc` order by aggregated spend in the requested date range; campaigns with no spend land at the end. (default to 'newest')
836
836
  # @option opts [Integer] :time_increment Set to `1` to also return a daily breakdown. Mirrors Meta Insights' `time_increment=1`: each node gains a `daily[]` array of per-day metrics (same fields as the aggregated `metrics`) alongside the range total, so you get per-entity daily trends in ONE call instead of calling the tree once per day. Only `1` (daily) is supported. The daily series covers the same date range and uses the same source data as `metrics`, except `reach` on Meta and TikTok: the range total is the platform's de-duplicated value, so daily reach does not sum to it. See `dailyLevel` to control which levels carry it.
837
837
  # @option opts [String] :daily_level Which tree levels get the `daily[]` series when `timeIncrement=1`. `campaign` (default) attaches it on campaign nodes only — the common per-campaign-trend case, and the smallest payload. `adset` adds it on ad sets too; `ad` adds it on every ad in `ads[]` as well (heaviest — a long range × up to 100 ads per ad set). Scope with `campaignId` to keep `ad`-level responses small. Ignored when `timeIncrement` is unset. (default to 'campaign')
838
- # @return [GetAdTree200Response]
838
+ # @return [AdTreeResponse]
839
839
  def get_ad_tree(opts = {})
840
840
  data, _status_code, _headers = get_ad_tree_with_http_info(opts)
841
841
  data
@@ -859,7 +859,7 @@ module Zernio
859
859
  # @option opts [String] :sort Campaign-level sort order. `newest` (default) / `oldest` order by the campaign's newest-ad createdAt. `spend_desc` / `spend_asc` order by aggregated spend in the requested date range; campaigns with no spend land at the end. (default to 'newest')
860
860
  # @option opts [Integer] :time_increment Set to `1` to also return a daily breakdown. Mirrors Meta Insights' `time_increment=1`: each node gains a `daily[]` array of per-day metrics (same fields as the aggregated `metrics`) alongside the range total, so you get per-entity daily trends in ONE call instead of calling the tree once per day. Only `1` (daily) is supported. The daily series covers the same date range and uses the same source data as `metrics`, except `reach` on Meta and TikTok: the range total is the platform's de-duplicated value, so daily reach does not sum to it. See `dailyLevel` to control which levels carry it.
861
861
  # @option opts [String] :daily_level Which tree levels get the `daily[]` series when `timeIncrement=1`. `campaign` (default) attaches it on campaign nodes only — the common per-campaign-trend case, and the smallest payload. `adset` adds it on ad sets too; `ad` adds it on every ad in `ads[]` as well (heaviest — a long range × up to 100 ads per ad set). Scope with `campaignId` to keep `ad`-level responses small. Ignored when `timeIncrement` is unset. (default to 'campaign')
862
- # @return [Array<(GetAdTree200Response, Integer, Hash)>] GetAdTree200Response data, response status code and response headers
862
+ # @return [Array<(AdTreeResponse, Integer, Hash)>] AdTreeResponse data, response status code and response headers
863
863
  def get_ad_tree_with_http_info(opts = {})
864
864
  if @api_client.config.debugging
865
865
  @api_client.config.logger.debug 'Calling API: AdCampaignsApi.get_ad_tree ...'
@@ -929,7 +929,7 @@ module Zernio
929
929
  post_body = opts[:debug_body]
930
930
 
931
931
  # return_type
932
- return_type = opts[:debug_return_type] || 'GetAdTree200Response'
932
+ return_type = opts[:debug_return_type] || 'AdTreeResponse'
933
933
 
934
934
  # auth_names
935
935
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -959,7 +959,7 @@ module Zernio
959
959
  # @option opts [Date] :from_date Inclusive start of metrics range (YYYY-MM-DD). Defaults to 90 days ago.
960
960
  # @option opts [Date] :to_date Inclusive end of metrics range (YYYY-MM-DD). Defaults to today. Max 730-day range.
961
961
  # @option opts [String] :platform Restrict to one platform.
962
- # @return [GetAdsTimeline200Response]
962
+ # @return [AdsTimelineResponse]
963
963
  def get_ads_timeline(account_id, opts = {})
964
964
  data, _status_code, _headers = get_ads_timeline_with_http_info(account_id, opts)
965
965
  data
@@ -973,7 +973,7 @@ module Zernio
973
973
  # @option opts [Date] :from_date Inclusive start of metrics range (YYYY-MM-DD). Defaults to 90 days ago.
974
974
  # @option opts [Date] :to_date Inclusive end of metrics range (YYYY-MM-DD). Defaults to today. Max 730-day range.
975
975
  # @option opts [String] :platform Restrict to one platform.
976
- # @return [Array<(GetAdsTimeline200Response, Integer, Hash)>] GetAdsTimeline200Response data, response status code and response headers
976
+ # @return [Array<(AdsTimelineResponse, Integer, Hash)>] AdsTimelineResponse data, response status code and response headers
977
977
  def get_ads_timeline_with_http_info(account_id, opts = {})
978
978
  if @api_client.config.debugging
979
979
  @api_client.config.logger.debug 'Calling API: AdCampaignsApi.get_ads_timeline ...'
@@ -1009,7 +1009,7 @@ module Zernio
1009
1009
  post_body = opts[:debug_body]
1010
1010
 
1011
1011
  # return_type
1012
- return_type = opts[:debug_return_type] || 'GetAdsTimeline200Response'
1012
+ return_type = opts[:debug_return_type] || 'AdsTimelineResponse'
1013
1013
 
1014
1014
  # auth_names
1015
1015
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -1276,7 +1276,7 @@ module Zernio
1276
1276
  # @option opts [String] :effective_instagram_media_id Instagram media ID of the boosted post (Meta &#x60;effective_instagram_media_id&#x60;). Use to map a Business-Manager-visible IG post back to the Zernio ad.
1277
1277
  # @option opts [Date] :from_date Start of metrics date range (YYYY-MM-DD). Defaults to 90 days ago.
1278
1278
  # @option opts [Date] :to_date End of metrics date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
1279
- # @return [ListAds200Response]
1279
+ # @return [AdsListResponse]
1280
1280
  def list_ads(opts = {})
1281
1281
  data, _status_code, _headers = list_ads_with_http_info(opts)
1282
1282
  data
@@ -1300,7 +1300,7 @@ module Zernio
1300
1300
  # @option opts [String] :effective_instagram_media_id Instagram media ID of the boosted post (Meta &#x60;effective_instagram_media_id&#x60;). Use to map a Business-Manager-visible IG post back to the Zernio ad.
1301
1301
  # @option opts [Date] :from_date Start of metrics date range (YYYY-MM-DD). Defaults to 90 days ago.
1302
1302
  # @option opts [Date] :to_date End of metrics date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
1303
- # @return [Array<(ListAds200Response, Integer, Hash)>] ListAds200Response data, response status code and response headers
1303
+ # @return [Array<(AdsListResponse, Integer, Hash)>] AdsListResponse data, response status code and response headers
1304
1304
  def list_ads_with_http_info(opts = {})
1305
1305
  if @api_client.config.debugging
1306
1306
  @api_client.config.logger.debug 'Calling API: AdCampaignsApi.list_ads ...'
@@ -1358,7 +1358,7 @@ module Zernio
1358
1358
  post_body = opts[:debug_body]
1359
1359
 
1360
1360
  # return_type
1361
- return_type = opts[:debug_return_type] || 'ListAds200Response'
1361
+ return_type = opts[:debug_return_type] || 'AdsListResponse'
1362
1362
 
1363
1363
  # auth_names
1364
1364
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -230,7 +230,7 @@ module Zernio
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
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 &#x60;value&#x60; plus a resolved &#x60;name&#x60;. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
233
- # @return [GetAdAnalytics200Response]
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)
236
236
  data
@@ -243,7 +243,7 @@ module Zernio
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
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 &#x60;value&#x60; plus a resolved &#x60;name&#x60;. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
246
- # @return [Array<(GetAdAnalytics200Response, Integer, Hash)>] GetAdAnalytics200Response data, response status code and response headers
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
249
249
  @api_client.config.logger.debug 'Calling API: AdInsightsApi.get_ad_analytics ...'
@@ -273,7 +273,7 @@ module Zernio
273
273
  post_body = opts[:debug_body]
274
274
 
275
275
  # return_type
276
- return_type = opts[:debug_return_type] || 'GetAdAnalytics200Response'
276
+ return_type = opts[:debug_return_type] || 'AdAnalyticsResponse'
277
277
 
278
278
  # auth_names
279
279
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -469,7 +469,7 @@ module Zernio
469
469
  # @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
470
470
  # @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
471
471
  # @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 &#x60;value&#x60; plus a resolved &#x60;name&#x60;. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
472
- # @return [GetCampaignAnalytics200Response]
472
+ # @return [CampaignAnalyticsResponse]
473
473
  def get_campaign_analytics(campaign_id, opts = {})
474
474
  data, _status_code, _headers = get_campaign_analytics_with_http_info(campaign_id, opts)
475
475
  data
@@ -483,7 +483,7 @@ module Zernio
483
483
  # @option opts [Date] :from_date Start of date range (YYYY-MM-DD). Defaults to 90 days ago.
484
484
  # @option opts [Date] :to_date End of date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
485
485
  # @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 &#x60;value&#x60; plus a resolved &#x60;name&#x60;. LinkedIn serves these aggregated over the whole range, delays the data 12-24h, and omits segments with fewer than 3 events.
486
- # @return [Array<(GetCampaignAnalytics200Response, Integer, Hash)>] GetCampaignAnalytics200Response data, response status code and response headers
486
+ # @return [Array<(CampaignAnalyticsResponse, Integer, Hash)>] CampaignAnalyticsResponse data, response status code and response headers
487
487
  def get_campaign_analytics_with_http_info(campaign_id, opts = {})
488
488
  if @api_client.config.debugging
489
489
  @api_client.config.logger.debug 'Calling API: AdInsightsApi.get_campaign_analytics ...'
@@ -514,7 +514,7 @@ module Zernio
514
514
  post_body = opts[:debug_body]
515
515
 
516
516
  # return_type
517
- return_type = opts[:debug_return_type] || 'GetCampaignAnalytics200Response'
517
+ return_type = opts[:debug_return_type] || 'CampaignAnalyticsResponse'
518
518
 
519
519
  # auth_names
520
520
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -14,19 +14,19 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- class GetAdAnalytics200Response < ApiModelBase
18
- attr_accessor :ad
19
-
20
- # Present and true only on `202` responses: part of the requested date range is still being backfilled from the platform in the background. Retry the same request shortly; it returns 200 once the range is fully ingested.
17
+ class AdAnalyticsResponse < ApiModelBase
18
+ # Present and true while historical data is being backfilled.
21
19
  attr_accessor :backfill_pending
22
20
 
21
+ attr_accessor :ad
22
+
23
23
  attr_accessor :analytics
24
24
 
25
25
  # Attribute mapping from ruby-style variable name to JSON key.
26
26
  def self.attribute_map
27
27
  {
28
- :'ad' => :'ad',
29
28
  :'backfill_pending' => :'backfillPending',
29
+ :'ad' => :'ad',
30
30
  :'analytics' => :'analytics'
31
31
  }
32
32
  end
@@ -44,9 +44,9 @@ module Zernio
44
44
  # Attribute type mapping.
45
45
  def self.openapi_types
46
46
  {
47
- :'ad' => :'GetAdAnalytics200ResponseAd',
48
47
  :'backfill_pending' => :'Boolean',
49
- :'analytics' => :'GetCampaignAnalytics200ResponseAnalytics'
48
+ :'ad' => :'AdAnalyticsResponseAd',
49
+ :'analytics' => :'CampaignAnalyticsResponseAnalytics'
50
50
  }
51
51
  end
52
52
 
@@ -60,26 +60,26 @@ module Zernio
60
60
  # @param [Hash] attributes Model attributes in the form of hash
61
61
  def initialize(attributes = {})
62
62
  if (!attributes.is_a?(Hash))
63
- fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GetAdAnalytics200Response` initialize method"
63
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::AdAnalyticsResponse` initialize method"
64
64
  end
65
65
 
66
66
  # check to see if the attribute exists and convert string to symbol for hash key
67
67
  acceptable_attribute_map = self.class.acceptable_attribute_map
68
68
  attributes = attributes.each_with_object({}) { |(k, v), h|
69
69
  if (!acceptable_attribute_map.key?(k.to_sym))
70
- fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GetAdAnalytics200Response`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
70
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::AdAnalyticsResponse`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
71
71
  end
72
72
  h[k.to_sym] = v
73
73
  }
74
74
 
75
- if attributes.key?(:'ad')
76
- self.ad = attributes[:'ad']
77
- end
78
-
79
75
  if attributes.key?(:'backfill_pending')
80
76
  self.backfill_pending = attributes[:'backfill_pending']
81
77
  end
82
78
 
79
+ if attributes.key?(:'ad')
80
+ self.ad = attributes[:'ad']
81
+ end
82
+
83
83
  if attributes.key?(:'analytics')
84
84
  self.analytics = attributes[:'analytics']
85
85
  end
@@ -105,8 +105,8 @@ module Zernio
105
105
  def ==(o)
106
106
  return true if self.equal?(o)
107
107
  self.class == o.class &&
108
- ad == o.ad &&
109
108
  backfill_pending == o.backfill_pending &&
109
+ ad == o.ad &&
110
110
  analytics == o.analytics
111
111
  end
112
112
 
@@ -119,7 +119,7 @@ module Zernio
119
119
  # Calculates hash code according to all attributes.
120
120
  # @return [Integer] Hash code
121
121
  def hash
122
- [ad, backfill_pending, analytics].hash
122
+ [backfill_pending, ad, analytics].hash
123
123
  end
124
124
 
125
125
  # Builds the object from hash
@@ -14,49 +14,24 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- class GetAdAnalytics200ResponseAd < ApiModelBase
17
+ class AdAnalyticsResponseAd < ApiModelBase
18
18
  attr_accessor :id
19
19
 
20
20
  attr_accessor :name
21
21
 
22
22
  attr_accessor :platform
23
23
 
24
- attr_accessor :trigger
25
-
26
24
  attr_accessor :status
27
25
 
28
26
  # ISO 4217 code of the ad account that owns this ad (e.g. USD, THB, INR). All money values in `summary` and `daily` are in this currency. Null only on legacy ads synced before currency was persisted.
29
27
  attr_accessor :currency
30
28
 
31
- class EnumAttributeValidator
32
- attr_reader :datatype
33
- attr_reader :allowable_values
34
-
35
- def initialize(datatype, allowable_values)
36
- @allowable_values = allowable_values.map do |value|
37
- case datatype.to_s
38
- when /Integer/i
39
- value.to_i
40
- when /Float/i
41
- value.to_f
42
- else
43
- value
44
- end
45
- end
46
- end
47
-
48
- def valid?(value)
49
- !value || allowable_values.include?(value)
50
- end
51
- end
52
-
53
29
  # Attribute mapping from ruby-style variable name to JSON key.
54
30
  def self.attribute_map
55
31
  {
56
32
  :'id' => :'id',
57
33
  :'name' => :'name',
58
34
  :'platform' => :'platform',
59
- :'trigger' => :'trigger',
60
35
  :'status' => :'status',
61
36
  :'currency' => :'currency'
62
37
  }
@@ -78,7 +53,6 @@ module Zernio
78
53
  :'id' => :'String',
79
54
  :'name' => :'String',
80
55
  :'platform' => :'String',
81
- :'trigger' => :'String',
82
56
  :'status' => :'String',
83
57
  :'currency' => :'String'
84
58
  }
@@ -95,14 +69,14 @@ module Zernio
95
69
  # @param [Hash] attributes Model attributes in the form of hash
96
70
  def initialize(attributes = {})
97
71
  if (!attributes.is_a?(Hash))
98
- fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GetAdAnalytics200ResponseAd` initialize method"
72
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::AdAnalyticsResponseAd` initialize method"
99
73
  end
100
74
 
101
75
  # check to see if the attribute exists and convert string to symbol for hash key
102
76
  acceptable_attribute_map = self.class.acceptable_attribute_map
103
77
  attributes = attributes.each_with_object({}) { |(k, v), h|
104
78
  if (!acceptable_attribute_map.key?(k.to_sym))
105
- fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GetAdAnalytics200ResponseAd`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
79
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::AdAnalyticsResponseAd`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
106
80
  end
107
81
  h[k.to_sym] = v
108
82
  }
@@ -119,10 +93,6 @@ module Zernio
119
93
  self.platform = attributes[:'platform']
120
94
  end
121
95
 
122
- if attributes.key?(:'trigger')
123
- self.trigger = attributes[:'trigger']
124
- end
125
-
126
96
  if attributes.key?(:'status')
127
97
  self.status = attributes[:'status']
128
98
  end
@@ -144,21 +114,9 @@ module Zernio
144
114
  # @return true if the model is valid
145
115
  def valid?
146
116
  warn '[DEPRECATED] the `valid?` method is obsolete'
147
- trigger_validator = EnumAttributeValidator.new('String', ["comment", "story_reply"])
148
- return false unless trigger_validator.valid?(@trigger)
149
117
  true
150
118
  end
151
119
 
152
- # Custom attribute writer method checking allowed values (enum).
153
- # @param [Object] trigger Object to be assigned
154
- def trigger=(trigger)
155
- validator = EnumAttributeValidator.new('String', ["comment", "story_reply"])
156
- unless validator.valid?(trigger)
157
- fail ArgumentError, "invalid value for \"trigger\", must be one of #{validator.allowable_values}."
158
- end
159
- @trigger = trigger
160
- end
161
-
162
120
  # Checks equality by comparing each attribute.
163
121
  # @param [Object] Object to be compared
164
122
  def ==(o)
@@ -167,7 +125,6 @@ module Zernio
167
125
  id == o.id &&
168
126
  name == o.name &&
169
127
  platform == o.platform &&
170
- trigger == o.trigger &&
171
128
  status == o.status &&
172
129
  currency == o.currency
173
130
  end
@@ -181,7 +138,7 @@ module Zernio
181
138
  # Calculates hash code according to all attributes.
182
139
  # @return [Integer] Hash code
183
140
  def hash
184
- [id, name, platform, trigger, status, currency].hash
141
+ [id, name, platform, status, currency].hash
185
142
  end
186
143
 
187
144
  # Builds the object from hash
@@ -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 `inline_link_clicks` reported by `GET /v1/ads/{adId}/analytics`.
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