late-sdk 0.0.860 → 0.0.862

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/docs/AdAccountsApi.md +1 -1
  4. data/docs/AdCampaignsApi.md +5 -5
  5. data/docs/AdInsightsApi.md +1 -1
  6. data/docs/AdLibraryApi.md +9 -7
  7. data/docs/CampaignBidding.md +5 -1
  8. data/docs/ConversionsApi.md +2 -2
  9. data/docs/GetAdsSearchTerms200Response.md +5 -1
  10. data/docs/GetCampaignBidding200Response.md +4 -0
  11. data/docs/GetCampaignTargeting200Response.md +5 -1
  12. data/docs/ListAccountCallouts200Response.md +5 -1
  13. data/docs/ListAdAccounts200Response.md +5 -1
  14. data/docs/ListBidStrategies200Response.md +5 -1
  15. data/docs/ListCampaignNegativeKeywords200Response.md +5 -1
  16. data/docs/ListConversionActions200Response.md +5 -1
  17. data/docs/UpdateCampaignTargeting200Response.md +7 -1
  18. data/docs/UpdateCampaignTargeting200ResponseDevicesInner.md +22 -0
  19. data/docs/UpdateCampaignTargeting200ResponseLanguagesInner.md +22 -0
  20. data/lib/zernio-sdk/api/ad_accounts_api.rb +2 -2
  21. data/lib/zernio-sdk/api/ad_campaigns_api.rb +10 -10
  22. data/lib/zernio-sdk/api/ad_insights_api.rb +2 -2
  23. data/lib/zernio-sdk/api/ad_library_api.rb +14 -11
  24. data/lib/zernio-sdk/api/conversions_api.rb +4 -4
  25. data/lib/zernio-sdk/models/campaign_bidding.rb +25 -4
  26. data/lib/zernio-sdk/models/get_ads_search_terms200_response.rb +25 -4
  27. data/lib/zernio-sdk/models/get_campaign_bidding200_response.rb +21 -1
  28. data/lib/zernio-sdk/models/get_campaign_targeting200_response.rb +25 -4
  29. data/lib/zernio-sdk/models/list_account_callouts200_response.rb +25 -4
  30. data/lib/zernio-sdk/models/list_ad_accounts200_response.rb +25 -4
  31. data/lib/zernio-sdk/models/list_bid_strategies200_response.rb +25 -4
  32. data/lib/zernio-sdk/models/list_campaign_negative_keywords200_response.rb +25 -4
  33. data/lib/zernio-sdk/models/list_conversion_actions200_response.rb +25 -4
  34. data/lib/zernio-sdk/models/update_campaign_targeting200_response.rb +37 -4
  35. data/lib/zernio-sdk/models/update_campaign_targeting200_response_devices_inner.rb +201 -0
  36. data/lib/zernio-sdk/models/update_campaign_targeting200_response_languages_inner.rb +165 -0
  37. data/lib/zernio-sdk/version.rb +1 -1
  38. data/lib/zernio-sdk.rb +2 -0
  39. data/openapi.yaml +93 -28
  40. data/spec/api/ad_accounts_api_spec.rb +1 -1
  41. data/spec/api/ad_campaigns_api_spec.rb +5 -5
  42. data/spec/api/ad_insights_api_spec.rb +1 -1
  43. data/spec/api/ad_library_api_spec.rb +3 -2
  44. data/spec/api/conversions_api_spec.rb +2 -2
  45. data/spec/models/campaign_bidding_spec.rb +12 -0
  46. data/spec/models/get_ads_search_terms200_response_spec.rb +12 -0
  47. data/spec/models/get_campaign_bidding200_response_spec.rb +12 -0
  48. data/spec/models/get_campaign_targeting200_response_spec.rb +12 -0
  49. data/spec/models/list_account_callouts200_response_spec.rb +12 -0
  50. data/spec/models/list_ad_accounts200_response_spec.rb +12 -0
  51. data/spec/models/list_bid_strategies200_response_spec.rb +12 -0
  52. data/spec/models/list_campaign_negative_keywords200_response_spec.rb +12 -0
  53. data/spec/models/list_conversion_actions200_response_spec.rb +12 -0
  54. data/spec/models/update_campaign_targeting200_response_devices_inner_spec.rb +52 -0
  55. data/spec/models/update_campaign_targeting200_response_languages_inner_spec.rb +48 -0
  56. data/spec/models/update_campaign_targeting200_response_spec.rb +18 -0
  57. data/zernio-sdk-0.0.862.gem +0 -0
  58. metadata +11 -3
  59. data/zernio-sdk-0.0.860.gem +0 -0
@@ -20,9 +20,10 @@ module Zernio
20
20
  @api_client = api_client
21
21
  end
22
22
  # Search the public Ad Library
23
- # Competitor and market research over the platform's public ad archive, searched with the customer's own connected token (no extra scope): Meta's Ad Library (`GET /ads_archive`) for a `facebook` / `instagram` / `metaads` account, LinkedIn's Ad Library (`GET /rest/adLibrary`) for a `linkedin` / `linkedinads` account. Rows are returned in the platform's raw shape under `data`; `paging.after` is an opaque cursor on both (`null` when exhausted). **Meta coverage.** Political and social-issue ads are searchable worldwide. Every other ad is in the archive only if it was delivered to the EU or UK within the last year, so a US-only commercial advertiser is invisible. Spend, impressions and demographics are political-only fields and are left out of the default projection; request them via `fields`. Meta serves the archive only to people who confirmed their identity and location at facebook.com/ID: until the Facebook user behind the connection has done so, the call fails with `meta_identity_confirmation_required` (403). **LinkedIn coverage.** Ads served after June 1 2023, worldwide, kept for a year after their last impression. EU-delivered ads carry impression ranges and the disclosed targeting facets. Pages are capped at 25 ads (`limit` > 25 is a 400); `after` is the next offset. Which params apply: `q`, `countries`, `since`, `until`, `limit`, `after` on both; `pageIds`, `adType`, `status`, `platforms`, `mediaType`, `languages`, `searchType`, `fields` are Meta-only; `advertiser` is LinkedIn-only. Passing a param the account's platform does not support is a 400 naming the param.
24
- # @param account_id [String] Zernio SocialAccount id (facebook / instagram / metaads for Meta, linkedin / linkedinads for LinkedIn). Its token is the one that searches.
23
+ # Competitor and market research over the public ad archives. Meta's Ad Library (`GET /ads_archive`) is searched with Zernio's own developer access, so `platform=meta` needs no connected account at all. LinkedIn's Ad Library (`GET /rest/adLibrary`) runs on a connected `linkedin` / `linkedinads` account, passed as `accountId`. Passing a Meta account as `accountId` also selects Meta. Rows are returned in the platform's raw shape under `data`; `paging.after` is an opaque cursor on both (`null` when exhausted). **Meta coverage.** Political and social-issue ads are searchable worldwide. Every other ad is in the archive only if it was delivered to the EU or UK within the last year, so a US-only commercial advertiser is invisible. Spend, impressions and demographics are political-only fields and are left out of the default projection; request them via `fields`. All customers share Zernio's Meta quota, so a `429` means back off for a minute. **LinkedIn coverage.** Ads served after June 1 2023, worldwide, kept for a year after their last impression. EU-delivered ads carry impression ranges and the disclosed targeting facets. Pages are capped at 25 ads (`limit` > 25 is a 400); `after` is the next offset. Which params apply: `q`, `countries`, `since`, `until`, `limit`, `after` on both; `pageIds`, `adType`, `status`, `platforms`, `mediaType`, `languages`, `searchType`, `fields` are Meta-only; `advertiser` is LinkedIn-only. Passing a param the account's platform does not support is a 400 naming the param.
25
24
  # @param [Hash] opts the optional parameters
25
+ # @option opts [String] :platform Which archive to search. `meta` needs no accountId. Required unless accountId is given.
26
+ # @option opts [String] :account_id Zernio SocialAccount id. Required for LinkedIn (linkedin / linkedinads: its token searches). Optional for Meta, where any facebook / instagram / metaads account just selects the platform.
26
27
  # @option opts [String] :q Keyword search. Meta does not translate it, so write it in the ads' language. Required unless pageIds (Meta) or advertiser (LinkedIn) is given.
27
28
  # @option opts [String] :page_ids Meta only. Comma-separated Facebook Page ids (max 10) whose ads to list.
28
29
  # @option opts [String] :advertiser LinkedIn only. Advertiser (Page) name to search.
@@ -39,15 +40,16 @@ module Zernio
39
40
  # @option opts [Integer] :limit Rows per page. LinkedIn accepts at most 25. (default to 25)
40
41
  # @option opts [String] :after paging.after of the previous page.
41
42
  # @return [SearchAdLibrary200Response]
42
- def search_ad_library(account_id, opts = {})
43
- data, _status_code, _headers = search_ad_library_with_http_info(account_id, opts)
43
+ def search_ad_library(opts = {})
44
+ data, _status_code, _headers = search_ad_library_with_http_info(opts)
44
45
  data
45
46
  end
46
47
 
47
48
  # Search the public Ad Library
48
- # Competitor and market research over the platform's public ad archive, searched with the customer's own connected token (no extra scope): Meta's Ad Library (`GET /ads_archive`) for a `facebook` / `instagram` / `metaads` account, LinkedIn's Ad Library (`GET /rest/adLibrary`) for a `linkedin` / `linkedinads` account. Rows are returned in the platform's raw shape under `data`; `paging.after` is an opaque cursor on both (`null` when exhausted). **Meta coverage.** Political and social-issue ads are searchable worldwide. Every other ad is in the archive only if it was delivered to the EU or UK within the last year, so a US-only commercial advertiser is invisible. Spend, impressions and demographics are political-only fields and are left out of the default projection; request them via `fields`. Meta serves the archive only to people who confirmed their identity and location at facebook.com/ID: until the Facebook user behind the connection has done so, the call fails with `meta_identity_confirmation_required` (403). **LinkedIn coverage.** Ads served after June 1 2023, worldwide, kept for a year after their last impression. EU-delivered ads carry impression ranges and the disclosed targeting facets. Pages are capped at 25 ads (`limit` > 25 is a 400); `after` is the next offset. Which params apply: `q`, `countries`, `since`, `until`, `limit`, `after` on both; `pageIds`, `adType`, `status`, `platforms`, `mediaType`, `languages`, `searchType`, `fields` are Meta-only; `advertiser` is LinkedIn-only. Passing a param the account's platform does not support is a 400 naming the param.
49
- # @param account_id [String] Zernio SocialAccount id (facebook / instagram / metaads for Meta, linkedin / linkedinads for LinkedIn). Its token is the one that searches.
49
+ # Competitor and market research over the public ad archives. Meta's Ad Library (`GET /ads_archive`) is searched with Zernio's own developer access, so `platform=meta` needs no connected account at all. LinkedIn's Ad Library (`GET /rest/adLibrary`) runs on a connected `linkedin` / `linkedinads` account, passed as `accountId`. Passing a Meta account as `accountId` also selects Meta. Rows are returned in the platform's raw shape under `data`; `paging.after` is an opaque cursor on both (`null` when exhausted). **Meta coverage.** Political and social-issue ads are searchable worldwide. Every other ad is in the archive only if it was delivered to the EU or UK within the last year, so a US-only commercial advertiser is invisible. Spend, impressions and demographics are political-only fields and are left out of the default projection; request them via `fields`. All customers share Zernio's Meta quota, so a `429` means back off for a minute. **LinkedIn coverage.** Ads served after June 1 2023, worldwide, kept for a year after their last impression. EU-delivered ads carry impression ranges and the disclosed targeting facets. Pages are capped at 25 ads (`limit` > 25 is a 400); `after` is the next offset. Which params apply: `q`, `countries`, `since`, `until`, `limit`, `after` on both; `pageIds`, `adType`, `status`, `platforms`, `mediaType`, `languages`, `searchType`, `fields` are Meta-only; `advertiser` is LinkedIn-only. Passing a param the account's platform does not support is a 400 naming the param.
50
50
  # @param [Hash] opts the optional parameters
51
+ # @option opts [String] :platform Which archive to search. `meta` needs no accountId. Required unless accountId is given.
52
+ # @option opts [String] :account_id Zernio SocialAccount id. Required for LinkedIn (linkedin / linkedinads: its token searches). Optional for Meta, where any facebook / instagram / metaads account just selects the platform.
51
53
  # @option opts [String] :q Keyword search. Meta does not translate it, so write it in the ads' language. Required unless pageIds (Meta) or advertiser (LinkedIn) is given.
52
54
  # @option opts [String] :page_ids Meta only. Comma-separated Facebook Page ids (max 10) whose ads to list.
53
55
  # @option opts [String] :advertiser LinkedIn only. Advertiser (Page) name to search.
@@ -64,13 +66,13 @@ module Zernio
64
66
  # @option opts [Integer] :limit Rows per page. LinkedIn accepts at most 25. (default to 25)
65
67
  # @option opts [String] :after paging.after of the previous page.
66
68
  # @return [Array<(SearchAdLibrary200Response, Integer, Hash)>] SearchAdLibrary200Response data, response status code and response headers
67
- def search_ad_library_with_http_info(account_id, opts = {})
69
+ def search_ad_library_with_http_info(opts = {})
68
70
  if @api_client.config.debugging
69
71
  @api_client.config.logger.debug 'Calling API: AdLibraryApi.search_ad_library ...'
70
72
  end
71
- # verify the required parameter 'account_id' is set
72
- if @api_client.config.client_side_validation && account_id.nil?
73
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdLibraryApi.search_ad_library"
73
+ allowable_values = ["meta", "linkedin"]
74
+ if @api_client.config.client_side_validation && opts[:'platform'] && !allowable_values.include?(opts[:'platform'])
75
+ fail ArgumentError, "invalid value for \"platform\", must be one of #{allowable_values}"
74
76
  end
75
77
  if @api_client.config.client_side_validation && !opts[:'q'].nil? && opts[:'q'].to_s.length > 100
76
78
  fail ArgumentError, 'invalid value for "opts[:"q"]" when calling AdLibraryApi.search_ad_library, the character length must be smaller than or equal to 100.'
@@ -109,7 +111,8 @@ module Zernio
109
111
 
110
112
  # query parameters
111
113
  query_params = opts[:query_params] || {}
112
- query_params[:'accountId'] = account_id
114
+ query_params[:'platform'] = opts[:'platform'] if !opts[:'platform'].nil?
115
+ query_params[:'accountId'] = opts[:'account_id'] if !opts[:'account_id'].nil?
113
116
  query_params[:'q'] = opts[:'q'] if !opts[:'q'].nil?
114
117
  query_params[:'pageIds'] = opts[:'page_ids'] if !opts[:'page_ids'].nil?
115
118
  query_params[:'advertiser'] = opts[:'advertiser'] if !opts[:'advertiser'].nil?
@@ -168,7 +168,7 @@ module Zernio
168
168
  end
169
169
 
170
170
  # Create a website conversion action
171
- # Creates a `WEBPAGE` conversion action (category `DEFAULT`) and returns it with its tag snippets, read back after creation since Google never returns them on the create response itself. Google-only; other platforms return `501`. Requires the Ads add-on.
171
+ # Creates a `WEBPAGE` conversion action (category `DEFAULT`) and returns it with its tag snippets, read back after creation since Google never returns them on the create response itself. Invalidates the cached list `GET` on this resource would otherwise keep serving. Google-only; other platforms return `501`. Requires the Ads add-on.
172
172
  # @param create_conversion_action_request [CreateConversionActionRequest]
173
173
  # @param [Hash] opts the optional parameters
174
174
  # @return [CreateConversionAction201Response]
@@ -178,7 +178,7 @@ module Zernio
178
178
  end
179
179
 
180
180
  # Create a website conversion action
181
- # Creates a &#x60;WEBPAGE&#x60; conversion action (category &#x60;DEFAULT&#x60;) and returns it with its tag snippets, read back after creation since Google never returns them on the create response itself. Google-only; other platforms return &#x60;501&#x60;. Requires the Ads add-on.
181
+ # Creates a &#x60;WEBPAGE&#x60; conversion action (category &#x60;DEFAULT&#x60;) and returns it with its tag snippets, read back after creation since Google never returns them on the create response itself. Invalidates the cached list &#x60;GET&#x60; on this resource would otherwise keep serving. Google-only; other platforms return &#x60;501&#x60;. Requires the Ads add-on.
182
182
  # @param create_conversion_action_request [CreateConversionActionRequest]
183
183
  # @param [Hash] opts the optional parameters
184
184
  # @return [Array<(CreateConversionAction201Response, Integer, Hash)>] CreateConversionAction201Response data, response status code and response headers
@@ -632,7 +632,7 @@ module Zernio
632
632
  end
633
633
 
634
634
  # List conversion actions and their tag snippets
635
- # Lists Google Ads conversion actions on the resolved customer, all types by default. Each action's `tagSnippets` (global site tag + event snippet) is included when Google has them for that action's type, e.g. `WEBPAGE`. Google-only; other platforms return `501`. Requires the Ads add-on. `customerId` is optional: when omitted, it is resolved from the connection's accessible Google Ads customers, and the call fails with `400` when more than one is accessible (pass `customerId` to disambiguate).
635
+ # Lists Google Ads conversion actions on the resolved customer, all types by default. Each action's `tagSnippets` (global site tag + event snippet) is included when Google has them for that action's type, e.g. `WEBPAGE`. Google-only; other platforms return `501`. Requires the Ads add-on. `customerId` is optional: when omitted, it is resolved from the connection's accessible Google Ads customers, and the call fails with `400` when more than one is accessible (pass `customerId` to disambiguate). The list itself is cached for the quota window (1 hour fresh, up to 7 days last-good; the cache key does not vary on `type`). The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
636
636
  # @param account_id [String] SocialAccount _id (must be a googleads account).
637
637
  # @param [Hash] opts the optional parameters
638
638
  # @option opts [String] :customer_id Google Ads customer id (digits only). Resolved automatically when the connection has exactly one accessible customer.
@@ -644,7 +644,7 @@ module Zernio
644
644
  end
645
645
 
646
646
  # List conversion actions and their tag snippets
647
- # Lists Google Ads conversion actions on the resolved customer, all types by default. Each action&#39;s &#x60;tagSnippets&#x60; (global site tag + event snippet) is included when Google has them for that action&#39;s type, e.g. &#x60;WEBPAGE&#x60;. Google-only; other platforms return &#x60;501&#x60;. Requires the Ads add-on. &#x60;customerId&#x60; is optional: when omitted, it is resolved from the connection&#39;s accessible Google Ads customers, and the call fails with &#x60;400&#x60; when more than one is accessible (pass &#x60;customerId&#x60; to disambiguate).
647
+ # Lists Google Ads conversion actions on the resolved customer, all types by default. Each action&#39;s &#x60;tagSnippets&#x60; (global site tag + event snippet) is included when Google has them for that action&#39;s type, e.g. &#x60;WEBPAGE&#x60;. Google-only; other platforms return &#x60;501&#x60;. Requires the Ads add-on. &#x60;customerId&#x60; is optional: when omitted, it is resolved from the connection&#39;s accessible Google Ads customers, and the call fails with &#x60;400&#x60; when more than one is accessible (pass &#x60;customerId&#x60; to disambiguate). The list itself is cached for the quota window (1 hour fresh, up to 7 days last-good; the cache key does not vary on &#x60;type&#x60;). The response carries &#x60;cachedAt&#x60; and &#x60;stale&#x60;, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
648
648
  # @param account_id [String] SocialAccount _id (must be a googleads account).
649
649
  # @param [Hash] opts the optional parameters
650
650
  # @option opts [String] :customer_id Google Ads customer id (digits only). Resolved automatically when the connection has exactly one accessible customer.
@@ -26,6 +26,12 @@ module Zernio
26
26
 
27
27
  attr_accessor :portfolio
28
28
 
29
+ # When this data was fetched from Google. Null when it was never served from cache.
30
+ attr_accessor :cached_at
31
+
32
+ # True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
33
+ attr_accessor :stale
34
+
29
35
  class EnumAttributeValidator
30
36
  attr_reader :datatype
31
37
  attr_reader :allowable_values
@@ -54,7 +60,9 @@ module Zernio
54
60
  :'channel' => :'channel',
55
61
  :'bidding_strategy_type' => :'biddingStrategyType',
56
62
  :'bid_spec' => :'bidSpec',
57
- :'portfolio' => :'portfolio'
63
+ :'portfolio' => :'portfolio',
64
+ :'cached_at' => :'cachedAt',
65
+ :'stale' => :'stale'
58
66
  }
59
67
  end
60
68
 
@@ -74,13 +82,16 @@ module Zernio
74
82
  :'channel' => :'String',
75
83
  :'bidding_strategy_type' => :'String',
76
84
  :'bid_spec' => :'CampaignBiddingBidSpec',
77
- :'portfolio' => :'CampaignBiddingPortfolio'
85
+ :'portfolio' => :'CampaignBiddingPortfolio',
86
+ :'cached_at' => :'Time',
87
+ :'stale' => :'Boolean'
78
88
  }
79
89
  end
80
90
 
81
91
  # List of attributes with nullable: true
82
92
  def self.openapi_nullable
83
93
  Set.new([
94
+ :'cached_at',
84
95
  ])
85
96
  end
86
97
 
@@ -115,6 +126,14 @@ module Zernio
115
126
  if attributes.key?(:'portfolio')
116
127
  self.portfolio = attributes[:'portfolio']
117
128
  end
129
+
130
+ if attributes.key?(:'cached_at')
131
+ self.cached_at = attributes[:'cached_at']
132
+ end
133
+
134
+ if attributes.key?(:'stale')
135
+ self.stale = attributes[:'stale']
136
+ end
118
137
  end
119
138
 
120
139
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -152,7 +171,9 @@ module Zernio
152
171
  channel == o.channel &&
153
172
  bidding_strategy_type == o.bidding_strategy_type &&
154
173
  bid_spec == o.bid_spec &&
155
- portfolio == o.portfolio
174
+ portfolio == o.portfolio &&
175
+ cached_at == o.cached_at &&
176
+ stale == o.stale
156
177
  end
157
178
 
158
179
  # @see the `==` method
@@ -164,7 +185,7 @@ module Zernio
164
185
  # Calculates hash code according to all attributes.
165
186
  # @return [Integer] Hash code
166
187
  def hash
167
- [channel, bidding_strategy_type, bid_spec, portfolio].hash
188
+ [channel, bidding_strategy_type, bid_spec, portfolio, cached_at, stale].hash
168
189
  end
169
190
 
170
191
  # Builds the object from hash
@@ -21,12 +21,20 @@ module Zernio
21
21
 
22
22
  attr_accessor :paging
23
23
 
24
+ # When this data was fetched from Google. Null when it was never served from cache.
25
+ attr_accessor :cached_at
26
+
27
+ # True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
28
+ attr_accessor :stale
29
+
24
30
  # Attribute mapping from ruby-style variable name to JSON key.
25
31
  def self.attribute_map
26
32
  {
27
33
  :'customer_id' => :'customerId',
28
34
  :'data' => :'data',
29
- :'paging' => :'paging'
35
+ :'paging' => :'paging',
36
+ :'cached_at' => :'cachedAt',
37
+ :'stale' => :'stale'
30
38
  }
31
39
  end
32
40
 
@@ -45,13 +53,16 @@ module Zernio
45
53
  {
46
54
  :'customer_id' => :'String',
47
55
  :'data' => :'Array<GetAdsSearchTerms200ResponseDataInner>',
48
- :'paging' => :'GetAdsSearchTerms200ResponsePaging'
56
+ :'paging' => :'GetAdsSearchTerms200ResponsePaging',
57
+ :'cached_at' => :'Time',
58
+ :'stale' => :'Boolean'
49
59
  }
50
60
  end
51
61
 
52
62
  # List of attributes with nullable: true
53
63
  def self.openapi_nullable
54
64
  Set.new([
65
+ :'cached_at',
55
66
  ])
56
67
  end
57
68
 
@@ -84,6 +95,14 @@ module Zernio
84
95
  if attributes.key?(:'paging')
85
96
  self.paging = attributes[:'paging']
86
97
  end
98
+
99
+ if attributes.key?(:'cached_at')
100
+ self.cached_at = attributes[:'cached_at']
101
+ end
102
+
103
+ if attributes.key?(:'stale')
104
+ self.stale = attributes[:'stale']
105
+ end
87
106
  end
88
107
 
89
108
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -108,7 +127,9 @@ module Zernio
108
127
  self.class == o.class &&
109
128
  customer_id == o.customer_id &&
110
129
  data == o.data &&
111
- paging == o.paging
130
+ paging == o.paging &&
131
+ cached_at == o.cached_at &&
132
+ stale == o.stale
112
133
  end
113
134
 
114
135
  # @see the `==` method
@@ -120,7 +141,7 @@ module Zernio
120
141
  # Calculates hash code according to all attributes.
121
142
  # @return [Integer] Hash code
122
143
  def hash
123
- [customer_id, data, paging].hash
144
+ [customer_id, data, paging, cached_at, stale].hash
124
145
  end
125
146
 
126
147
  # Builds the object from hash
@@ -25,6 +25,12 @@ module Zernio
25
25
 
26
26
  attr_accessor :portfolio
27
27
 
28
+ # When this data was fetched from Google. Null when it was never served from cache.
29
+ attr_accessor :cached_at
30
+
31
+ # True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
32
+ attr_accessor :stale
33
+
28
34
  attr_accessor :campaign_id
29
35
 
30
36
  class EnumAttributeValidator
@@ -56,6 +62,8 @@ module Zernio
56
62
  :'bidding_strategy_type' => :'biddingStrategyType',
57
63
  :'bid_spec' => :'bidSpec',
58
64
  :'portfolio' => :'portfolio',
65
+ :'cached_at' => :'cachedAt',
66
+ :'stale' => :'stale',
59
67
  :'campaign_id' => :'campaignId'
60
68
  }
61
69
  end
@@ -77,6 +85,8 @@ module Zernio
77
85
  :'bidding_strategy_type' => :'String',
78
86
  :'bid_spec' => :'CampaignBiddingBidSpec',
79
87
  :'portfolio' => :'CampaignBiddingPortfolio',
88
+ :'cached_at' => :'Time',
89
+ :'stale' => :'Boolean',
80
90
  :'campaign_id' => :'String'
81
91
  }
82
92
  end
@@ -126,6 +136,14 @@ module Zernio
126
136
  self.portfolio = attributes[:'portfolio']
127
137
  end
128
138
 
139
+ if attributes.key?(:'cached_at')
140
+ self.cached_at = attributes[:'cached_at']
141
+ end
142
+
143
+ if attributes.key?(:'stale')
144
+ self.stale = attributes[:'stale']
145
+ end
146
+
129
147
  if attributes.key?(:'campaign_id')
130
148
  self.campaign_id = attributes[:'campaign_id']
131
149
  end
@@ -167,6 +185,8 @@ module Zernio
167
185
  bidding_strategy_type == o.bidding_strategy_type &&
168
186
  bid_spec == o.bid_spec &&
169
187
  portfolio == o.portfolio &&
188
+ cached_at == o.cached_at &&
189
+ stale == o.stale &&
170
190
  campaign_id == o.campaign_id
171
191
  end
172
192
 
@@ -179,7 +199,7 @@ module Zernio
179
199
  # Calculates hash code according to all attributes.
180
200
  # @return [Integer] Hash code
181
201
  def hash
182
- [channel, bidding_strategy_type, bid_spec, portfolio, campaign_id].hash
202
+ [channel, bidding_strategy_type, bid_spec, portfolio, cached_at, stale, campaign_id].hash
183
203
  end
184
204
 
185
205
  # Builds the object from hash
@@ -21,12 +21,20 @@ module Zernio
21
21
 
22
22
  attr_accessor :languages
23
23
 
24
+ # When this targeting was fetched from Google. Null when it was never served from cache.
25
+ attr_accessor :cached_at
26
+
27
+ # True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
28
+ attr_accessor :stale
29
+
24
30
  # Attribute mapping from ruby-style variable name to JSON key.
25
31
  def self.attribute_map
26
32
  {
27
33
  :'devices' => :'devices',
28
34
  :'locations' => :'locations',
29
- :'languages' => :'languages'
35
+ :'languages' => :'languages',
36
+ :'cached_at' => :'cachedAt',
37
+ :'stale' => :'stale'
30
38
  }
31
39
  end
32
40
 
@@ -45,13 +53,16 @@ module Zernio
45
53
  {
46
54
  :'devices' => :'Array<GetCampaignTargeting200ResponseDevicesInner>',
47
55
  :'locations' => :'Array<GetCampaignTargeting200ResponseLocationsInner>',
48
- :'languages' => :'Array<GetCampaignTargeting200ResponseLanguagesInner>'
56
+ :'languages' => :'Array<GetCampaignTargeting200ResponseLanguagesInner>',
57
+ :'cached_at' => :'Time',
58
+ :'stale' => :'Boolean'
49
59
  }
50
60
  end
51
61
 
52
62
  # List of attributes with nullable: true
53
63
  def self.openapi_nullable
54
64
  Set.new([
65
+ :'cached_at',
55
66
  ])
56
67
  end
57
68
 
@@ -88,6 +99,14 @@ module Zernio
88
99
  self.languages = value
89
100
  end
90
101
  end
102
+
103
+ if attributes.key?(:'cached_at')
104
+ self.cached_at = attributes[:'cached_at']
105
+ end
106
+
107
+ if attributes.key?(:'stale')
108
+ self.stale = attributes[:'stale']
109
+ end
91
110
  end
92
111
 
93
112
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -112,7 +131,9 @@ module Zernio
112
131
  self.class == o.class &&
113
132
  devices == o.devices &&
114
133
  locations == o.locations &&
115
- languages == o.languages
134
+ languages == o.languages &&
135
+ cached_at == o.cached_at &&
136
+ stale == o.stale
116
137
  end
117
138
 
118
139
  # @see the `==` method
@@ -124,7 +145,7 @@ module Zernio
124
145
  # Calculates hash code according to all attributes.
125
146
  # @return [Integer] Hash code
126
147
  def hash
127
- [devices, locations, languages].hash
148
+ [devices, locations, languages, cached_at, stale].hash
128
149
  end
129
150
 
130
151
  # Builds the object from hash
@@ -19,11 +19,19 @@ module Zernio
19
19
 
20
20
  attr_accessor :callouts
21
21
 
22
+ # When this list was fetched from Google. Null when it was never served from cache.
23
+ attr_accessor :cached_at
24
+
25
+ # True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
26
+ attr_accessor :stale
27
+
22
28
  # Attribute mapping from ruby-style variable name to JSON key.
23
29
  def self.attribute_map
24
30
  {
25
31
  :'customer_id' => :'customerId',
26
- :'callouts' => :'callouts'
32
+ :'callouts' => :'callouts',
33
+ :'cached_at' => :'cachedAt',
34
+ :'stale' => :'stale'
27
35
  }
28
36
  end
29
37
 
@@ -41,13 +49,16 @@ module Zernio
41
49
  def self.openapi_types
42
50
  {
43
51
  :'customer_id' => :'String',
44
- :'callouts' => :'Array<ListAccountCallouts200ResponseCalloutsInner>'
52
+ :'callouts' => :'Array<ListAccountCallouts200ResponseCalloutsInner>',
53
+ :'cached_at' => :'Time',
54
+ :'stale' => :'Boolean'
45
55
  }
46
56
  end
47
57
 
48
58
  # List of attributes with nullable: true
49
59
  def self.openapi_nullable
50
60
  Set.new([
61
+ :'cached_at',
51
62
  ])
52
63
  end
53
64
 
@@ -76,6 +87,14 @@ module Zernio
76
87
  self.callouts = value
77
88
  end
78
89
  end
90
+
91
+ if attributes.key?(:'cached_at')
92
+ self.cached_at = attributes[:'cached_at']
93
+ end
94
+
95
+ if attributes.key?(:'stale')
96
+ self.stale = attributes[:'stale']
97
+ end
79
98
  end
80
99
 
81
100
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -99,7 +118,9 @@ module Zernio
99
118
  return true if self.equal?(o)
100
119
  self.class == o.class &&
101
120
  customer_id == o.customer_id &&
102
- callouts == o.callouts
121
+ callouts == o.callouts &&
122
+ cached_at == o.cached_at &&
123
+ stale == o.stale
103
124
  end
104
125
 
105
126
  # @see the `==` method
@@ -111,7 +132,7 @@ module Zernio
111
132
  # Calculates hash code according to all attributes.
112
133
  # @return [Integer] Hash code
113
134
  def hash
114
- [customer_id, callouts].hash
135
+ [customer_id, callouts, cached_at, stale].hash
115
136
  end
116
137
 
117
138
  # Builds the object from hash
@@ -17,10 +17,18 @@ module Zernio
17
17
  class ListAdAccounts200Response < ApiModelBase
18
18
  attr_accessor :accounts
19
19
 
20
+ # Google only. When this list was fetched from Google. Null when it was never served from cache, or on other platforms.
21
+ attr_accessor :cached_at
22
+
23
+ # Google only. True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read. Absent on other platforms.
24
+ attr_accessor :stale
25
+
20
26
  # Attribute mapping from ruby-style variable name to JSON key.
21
27
  def self.attribute_map
22
28
  {
23
- :'accounts' => :'accounts'
29
+ :'accounts' => :'accounts',
30
+ :'cached_at' => :'cachedAt',
31
+ :'stale' => :'stale'
24
32
  }
25
33
  end
26
34
 
@@ -37,13 +45,16 @@ module Zernio
37
45
  # Attribute type mapping.
38
46
  def self.openapi_types
39
47
  {
40
- :'accounts' => :'Array<ListAdAccounts200ResponseAccountsInner>'
48
+ :'accounts' => :'Array<ListAdAccounts200ResponseAccountsInner>',
49
+ :'cached_at' => :'Time',
50
+ :'stale' => :'Boolean'
41
51
  }
42
52
  end
43
53
 
44
54
  # List of attributes with nullable: true
45
55
  def self.openapi_nullable
46
56
  Set.new([
57
+ :'cached_at',
47
58
  ])
48
59
  end
49
60
 
@@ -68,6 +79,14 @@ module Zernio
68
79
  self.accounts = value
69
80
  end
70
81
  end
82
+
83
+ if attributes.key?(:'cached_at')
84
+ self.cached_at = attributes[:'cached_at']
85
+ end
86
+
87
+ if attributes.key?(:'stale')
88
+ self.stale = attributes[:'stale']
89
+ end
71
90
  end
72
91
 
73
92
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -90,7 +109,9 @@ module Zernio
90
109
  def ==(o)
91
110
  return true if self.equal?(o)
92
111
  self.class == o.class &&
93
- accounts == o.accounts
112
+ accounts == o.accounts &&
113
+ cached_at == o.cached_at &&
114
+ stale == o.stale
94
115
  end
95
116
 
96
117
  # @see the `==` method
@@ -102,7 +123,7 @@ module Zernio
102
123
  # Calculates hash code according to all attributes.
103
124
  # @return [Integer] Hash code
104
125
  def hash
105
- [accounts].hash
126
+ [accounts, cached_at, stale].hash
106
127
  end
107
128
 
108
129
  # Builds the object from hash
@@ -22,12 +22,20 @@ module Zernio
22
22
 
23
23
  attr_accessor :strategies
24
24
 
25
+ # When this data was fetched from Google. Null when it was never served from cache.
26
+ attr_accessor :cached_at
27
+
28
+ # True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.
29
+ attr_accessor :stale
30
+
25
31
  # Attribute mapping from ruby-style variable name to JSON key.
26
32
  def self.attribute_map
27
33
  {
28
34
  :'customer_id' => :'customerId',
29
35
  :'currency' => :'currency',
30
- :'strategies' => :'strategies'
36
+ :'strategies' => :'strategies',
37
+ :'cached_at' => :'cachedAt',
38
+ :'stale' => :'stale'
31
39
  }
32
40
  end
33
41
 
@@ -46,13 +54,16 @@ module Zernio
46
54
  {
47
55
  :'customer_id' => :'String',
48
56
  :'currency' => :'String',
49
- :'strategies' => :'Array<PortfolioBidStrategy>'
57
+ :'strategies' => :'Array<PortfolioBidStrategy>',
58
+ :'cached_at' => :'Time',
59
+ :'stale' => :'Boolean'
50
60
  }
51
61
  end
52
62
 
53
63
  # List of attributes with nullable: true
54
64
  def self.openapi_nullable
55
65
  Set.new([
66
+ :'cached_at',
56
67
  ])
57
68
  end
58
69
 
@@ -85,6 +96,14 @@ module Zernio
85
96
  self.strategies = value
86
97
  end
87
98
  end
99
+
100
+ if attributes.key?(:'cached_at')
101
+ self.cached_at = attributes[:'cached_at']
102
+ end
103
+
104
+ if attributes.key?(:'stale')
105
+ self.stale = attributes[:'stale']
106
+ end
88
107
  end
89
108
 
90
109
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -109,7 +128,9 @@ module Zernio
109
128
  self.class == o.class &&
110
129
  customer_id == o.customer_id &&
111
130
  currency == o.currency &&
112
- strategies == o.strategies
131
+ strategies == o.strategies &&
132
+ cached_at == o.cached_at &&
133
+ stale == o.stale
113
134
  end
114
135
 
115
136
  # @see the `==` method
@@ -121,7 +142,7 @@ module Zernio
121
142
  # Calculates hash code according to all attributes.
122
143
  # @return [Integer] Hash code
123
144
  def hash
124
- [customer_id, currency, strategies].hash
145
+ [customer_id, currency, strategies, cached_at, stale].hash
125
146
  end
126
147
 
127
148
  # Builds the object from hash