late-sdk 0.0.755 → 0.0.756

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11cbc008b0117900fdcd5d38eeabc3aa4e57e97910167c2fa134123a21969d81
4
- data.tar.gz: c71c6138d437f89f06c34e7a5a7d3af9acca5835a00dfcce840729440c25b73e
3
+ metadata.gz: 5b026bacb5cb7ccbdf440e3155e79306dc9e0bc9b2015659220718cbfa9e2c93
4
+ data.tar.gz: dbdcdf61c18f17fef90ca78ef8faba928c37e780102b41ab1c4d4653a893835b
5
5
  SHA512:
6
- metadata.gz: df029575fbf79a3e6951a87d422125eeb62c5b0fe76563e37b6fa0ffde9d67ad70e8f115e02a6db6ee17a8bc29b98e6898db34d10f529b40e9b887fda24d52a3
7
- data.tar.gz: 1cce108640601e73be2e8aa0e856109e0b7f06fe1a369221d82bd732651f4581e11a393eae260a318174d9abc873e7ccdb90485ffa03d01bbbaf2a3e3065d99e
6
+ metadata.gz: b40e9b0e6ff80086eb8cfb0c3c54d5216779f6c3a50e7ed2a643a41a1890516bec6e49c8f8973a5a0d88b595fa50d16d5e80c219d902b45b20dc87b031d77c9d
7
+ data.tar.gz: a6e70a1c662df2bc4d70367133247e92e2159606c8e54ecea2f36ef56617a4904d12dd0e834a114db00469e169539757c33bcc0d929bc52d5cd67a592037e2c7
data/README.md CHANGED
@@ -968,6 +968,7 @@ Class | Method | HTTP request | Description
968
968
  - [Zernio::CreateStandaloneAdRequestPlatformSpecificData](docs/CreateStandaloneAdRequestPlatformSpecificData.md)
969
969
  - [Zernio::CreateStandaloneAdRequestPromotedObject](docs/CreateStandaloneAdRequestPromotedObject.md)
970
970
  - [Zernio::CreateStandaloneAdRequestRegionsInner](docs/CreateStandaloneAdRequestRegionsInner.md)
971
+ - [Zernio::CreateStandaloneAdRequestSitelinksInner](docs/CreateStandaloneAdRequestSitelinksInner.md)
971
972
  - [Zernio::CreateStandaloneAdRequestTracking](docs/CreateStandaloneAdRequestTracking.md)
972
973
  - [Zernio::CreateStandaloneAdRequestTranslationsInner](docs/CreateStandaloneAdRequestTranslationsInner.md)
973
974
  - [Zernio::CreateStandaloneAdRequestVideo](docs/CreateStandaloneAdRequestVideo.md)
@@ -74,6 +74,7 @@
74
74
  | **negative_keywords** | **Array<String>** | Google Search only; other platforms return 400. BROAD-match negative keywords on the new ad group. Editable later via PUT /v1/ads/{adId} targeting.negativeKeywords. | [optional] |
75
75
  | **additional_headlines** | **Array<String>** | Google Search RSA only. Extra headlines. | [optional] |
76
76
  | **additional_descriptions** | **Array<String>** | Google Search RSA only. Extra descriptions. | [optional] |
77
+ | **sitelinks** | [**Array<CreateStandaloneAdRequestSitelinksInner>**](CreateStandaloneAdRequestSitelinksInner.md) | Google Search only. Sitelink assets to create and attach at the campaign level. Each entry becomes an Asset (with sitelink_asset + Asset.final_urls) plus a CampaignAsset link (field_type SITELINK). Approval is async — Google reviews assets after creation; poll asset.policy_summary later to read the verdict. Google requires at least two sitelinks to surface them on an ad; four or more is Google's own recommendation for maximum visibility. The response's creative.sitelinks[] echoes each input plus its Google resourceName. | [optional] |
77
78
  | **advantage_audience** | **Integer** | Meta only. Controls the Advantage audience feature (targeting_automation). 0 = disabled (default), 1 = enabled. Meta Marketing API requires this field on all ad set creation requests. | [optional] |
78
79
  | **attribution_spec** | [**Array<CreateStandaloneAdRequestAttributionSpecInner>**](CreateStandaloneAdRequestAttributionSpecInner.md) | Meta only. Conversion attribution window for the ad set — maps 1:1 to Meta's ad-set `attribution_spec`. Only honored for conversion goals (`conversions`, `lead_generation`, `app_promotion`); ignored for awareness/traffic/engagement. Omit to use Meta's default (`7-day click` + `1-day view`). Meta enforces the valid combinations: `VIEW_THROUGH` only allows `windowDays: 1` (7d/28d view windows were removed Jan 2026); `ENGAGED_VIDEO_VIEW` only `1` and only alongside `VIEW_THROUGH: 1`; `CLICK_THROUGH: 28` only on certain objectives. Invalid combos surface as a Meta 400. Example: `[{ \"eventType\": \"CLICK_THROUGH\", \"windowDays\": 7 }, { \"eventType\": \"VIEW_THROUGH\", \"windowDays\": 1 }]` | [optional] |
79
80
  | **gender** | **String** | Restrict the audience by gender. 'male' targets men only, 'female' targets women only, 'all' (default) targets everyone. Applied on Meta, TikTok and Pinterest. Ignored on Google, LinkedIn and X. | [optional][default to 'all'] |
@@ -166,6 +167,7 @@ instance = Zernio::CreateStandaloneAdRequest.new(
166
167
  negative_keywords: null,
167
168
  additional_headlines: null,
168
169
  additional_descriptions: null,
170
+ sitelinks: null,
169
171
  advantage_audience: null,
170
172
  attribution_spec: null,
171
173
  gender: null,
@@ -0,0 +1,24 @@
1
+ # Zernio::CreateStandaloneAdRequestSitelinksInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **text** | **String** | The clickable link text shown under the ad. 25-char cap comes from Google. | |
8
+ | **link_url** | **String** | Final URL the sitelink navigates to. | |
9
+ | **description1** | **String** | First description line under the link text (optional). 35-char cap. | [optional] |
10
+ | **description2** | **String** | Second description line (optional; usually paired with description1). | [optional] |
11
+
12
+ ## Example
13
+
14
+ ```ruby
15
+ require 'zernio-sdk'
16
+
17
+ instance = Zernio::CreateStandaloneAdRequestSitelinksInner.new(
18
+ text: null,
19
+ link_url: null,
20
+ description1: null,
21
+ description2: null
22
+ )
23
+ ```
24
+
@@ -214,6 +214,9 @@ module Zernio
214
214
  # Google Search RSA only. Extra descriptions.
215
215
  attr_accessor :additional_descriptions
216
216
 
217
+ # Google Search only. Sitelink assets to create and attach at the campaign level. Each entry becomes an Asset (with sitelink_asset + Asset.final_urls) plus a CampaignAsset link (field_type SITELINK). Approval is async — Google reviews assets after creation; poll asset.policy_summary later to read the verdict. Google requires at least two sitelinks to surface them on an ad; four or more is Google's own recommendation for maximum visibility. The response's creative.sitelinks[] echoes each input plus its Google resourceName.
218
+ attr_accessor :sitelinks
219
+
217
220
  # Meta only. Controls the Advantage audience feature (targeting_automation). 0 = disabled (default), 1 = enabled. Meta Marketing API requires this field on all ad set creation requests.
218
221
  attr_accessor :advantage_audience
219
222
 
@@ -351,6 +354,7 @@ module Zernio
351
354
  :'negative_keywords' => :'negativeKeywords',
352
355
  :'additional_headlines' => :'additionalHeadlines',
353
356
  :'additional_descriptions' => :'additionalDescriptions',
357
+ :'sitelinks' => :'sitelinks',
354
358
  :'advantage_audience' => :'advantageAudience',
355
359
  :'attribution_spec' => :'attributionSpec',
356
360
  :'gender' => :'gender',
@@ -452,6 +456,7 @@ module Zernio
452
456
  :'negative_keywords' => :'Array<String>',
453
457
  :'additional_headlines' => :'Array<String>',
454
458
  :'additional_descriptions' => :'Array<String>',
459
+ :'sitelinks' => :'Array<CreateStandaloneAdRequestSitelinksInner>',
455
460
  :'advantage_audience' => :'Integer',
456
461
  :'attribution_spec' => :'Array<CreateStandaloneAdRequestAttributionSpecInner>',
457
462
  :'gender' => :'String',
@@ -822,6 +827,12 @@ module Zernio
822
827
  end
823
828
  end
824
829
 
830
+ if attributes.key?(:'sitelinks')
831
+ if (value = attributes[:'sitelinks']).is_a?(Array)
832
+ self.sitelinks = value
833
+ end
834
+ end
835
+
825
836
  if attributes.key?(:'advantage_audience')
826
837
  self.advantage_audience = attributes[:'advantage_audience']
827
838
  end
@@ -976,6 +987,14 @@ module Zernio
976
987
  invalid_properties.push('invalid value for "translations", number of items must be greater than or equal to 1.')
977
988
  end
978
989
 
990
+ if !@sitelinks.nil? && @sitelinks.length > 20
991
+ invalid_properties.push('invalid value for "sitelinks", number of items must be less than or equal to 20.')
992
+ end
993
+
994
+ if !@sitelinks.nil? && @sitelinks.length < 2
995
+ invalid_properties.push('invalid value for "sitelinks", number of items must be greater than or equal to 2.')
996
+ end
997
+
979
998
  if !@attribution_spec.nil? && @attribution_spec.length > 3
980
999
  invalid_properties.push('invalid value for "attribution_spec", number of items must be less than or equal to 3.')
981
1000
  end
@@ -1045,6 +1064,8 @@ module Zernio
1045
1064
  return false if !@translations.nil? && @translations.length < 1
1046
1065
  campaign_type_validator = EnumAttributeValidator.new('String', ["display", "search"])
1047
1066
  return false unless campaign_type_validator.valid?(@campaign_type)
1067
+ return false if !@sitelinks.nil? && @sitelinks.length > 20
1068
+ return false if !@sitelinks.nil? && @sitelinks.length < 2
1048
1069
  advantage_audience_validator = EnumAttributeValidator.new('Integer', [0, 1])
1049
1070
  return false unless advantage_audience_validator.valid?(@advantage_audience)
1050
1071
  return false if !@attribution_spec.nil? && @attribution_spec.length > 3
@@ -1381,6 +1402,24 @@ module Zernio
1381
1402
  @campaign_type = campaign_type
1382
1403
  end
1383
1404
 
1405
+ # Custom attribute writer method with validation
1406
+ # @param [Object] sitelinks Value to be assigned
1407
+ def sitelinks=(sitelinks)
1408
+ if sitelinks.nil?
1409
+ fail ArgumentError, 'sitelinks cannot be nil'
1410
+ end
1411
+
1412
+ if sitelinks.length > 20
1413
+ fail ArgumentError, 'invalid value for "sitelinks", number of items must be less than or equal to 20.'
1414
+ end
1415
+
1416
+ if sitelinks.length < 2
1417
+ fail ArgumentError, 'invalid value for "sitelinks", number of items must be greater than or equal to 2.'
1418
+ end
1419
+
1420
+ @sitelinks = sitelinks
1421
+ end
1422
+
1384
1423
  # Custom attribute writer method checking allowed values (enum).
1385
1424
  # @param [Object] advantage_audience Object to be assigned
1386
1425
  def advantage_audience=(advantage_audience)
@@ -1547,6 +1586,7 @@ module Zernio
1547
1586
  negative_keywords == o.negative_keywords &&
1548
1587
  additional_headlines == o.additional_headlines &&
1549
1588
  additional_descriptions == o.additional_descriptions &&
1589
+ sitelinks == o.sitelinks &&
1550
1590
  advantage_audience == o.advantage_audience &&
1551
1591
  attribution_spec == o.attribution_spec &&
1552
1592
  gender == o.gender &&
@@ -1573,7 +1613,7 @@ module Zernio
1573
1613
  # Calculates hash code according to all attributes.
1574
1614
  # @return [Integer] Hash code
1575
1615
  def hash
1576
- [account_id, ad_account_id, name, campaign_name, ad_set_name, ad_name, tracking, goal, optimization_goal, billing_event, buying_type, rf_prediction_id, creative_features, multi_advertiser, validate_only, budget_amount, budget_type, status, campaign_status, budget_level, currency, headline, long_headline, body, description, call_to_action, link_url, lead_gen_form_id, image_url, images, video, creatives, ad_set_id, existing_campaign_id, existing_creative_id, business_name, board_id, organization_id, targeting, countries, cities, regions, age_min, age_max, interests, zips, metros, custom_locations, behaviors, income_tier, languages, placements, saved_targeting_id, raw_targeting, special_ad_categories, special_ad_category_country, end_date, start_date, instagram_account_id, dynamic_creative, carousel_cards, default_locale, translations, placement_assets, audience_id, campaign_type, keywords, negative_keywords, additional_headlines, additional_descriptions, advantage_audience, attribution_spec, gender, bid_strategy, bid_amount, roas_average_floor, value_rule_set_id, value_rules_applied, platform_specific_data, dsa_beneficiary, dsa_payor, brand_identity, identity_type, smart_plus, promoted_object].hash
1616
+ [account_id, ad_account_id, name, campaign_name, ad_set_name, ad_name, tracking, goal, optimization_goal, billing_event, buying_type, rf_prediction_id, creative_features, multi_advertiser, validate_only, budget_amount, budget_type, status, campaign_status, budget_level, currency, headline, long_headline, body, description, call_to_action, link_url, lead_gen_form_id, image_url, images, video, creatives, ad_set_id, existing_campaign_id, existing_creative_id, business_name, board_id, organization_id, targeting, countries, cities, regions, age_min, age_max, interests, zips, metros, custom_locations, behaviors, income_tier, languages, placements, saved_targeting_id, raw_targeting, special_ad_categories, special_ad_category_country, end_date, start_date, instagram_account_id, dynamic_creative, carousel_cards, default_locale, translations, placement_assets, audience_id, campaign_type, keywords, negative_keywords, additional_headlines, additional_descriptions, sitelinks, advantage_audience, attribution_spec, gender, bid_strategy, bid_amount, roas_average_floor, value_rule_set_id, value_rules_applied, platform_specific_data, dsa_beneficiary, dsa_payor, brand_identity, identity_type, smart_plus, promoted_object].hash
1577
1617
  end
1578
1618
 
1579
1619
  # Builds the object from hash
@@ -0,0 +1,286 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Zernio
17
+ class CreateStandaloneAdRequestSitelinksInner < ApiModelBase
18
+ # The clickable link text shown under the ad. 25-char cap comes from Google.
19
+ attr_accessor :text
20
+
21
+ # Final URL the sitelink navigates to.
22
+ attr_accessor :link_url
23
+
24
+ # First description line under the link text (optional). 35-char cap.
25
+ attr_accessor :description1
26
+
27
+ # Second description line (optional; usually paired with description1).
28
+ attr_accessor :description2
29
+
30
+ # Attribute mapping from ruby-style variable name to JSON key.
31
+ def self.attribute_map
32
+ {
33
+ :'text' => :'text',
34
+ :'link_url' => :'linkUrl',
35
+ :'description1' => :'description1',
36
+ :'description2' => :'description2'
37
+ }
38
+ end
39
+
40
+ # Returns attribute mapping this model knows about
41
+ def self.acceptable_attribute_map
42
+ attribute_map
43
+ end
44
+
45
+ # Returns all the JSON keys this model knows about
46
+ def self.acceptable_attributes
47
+ acceptable_attribute_map.values
48
+ end
49
+
50
+ # Attribute type mapping.
51
+ def self.openapi_types
52
+ {
53
+ :'text' => :'String',
54
+ :'link_url' => :'String',
55
+ :'description1' => :'String',
56
+ :'description2' => :'String'
57
+ }
58
+ end
59
+
60
+ # List of attributes with nullable: true
61
+ def self.openapi_nullable
62
+ Set.new([
63
+ ])
64
+ end
65
+
66
+ # Initializes the object
67
+ # @param [Hash] attributes Model attributes in the form of hash
68
+ def initialize(attributes = {})
69
+ if (!attributes.is_a?(Hash))
70
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::CreateStandaloneAdRequestSitelinksInner` initialize method"
71
+ end
72
+
73
+ # check to see if the attribute exists and convert string to symbol for hash key
74
+ acceptable_attribute_map = self.class.acceptable_attribute_map
75
+ attributes = attributes.each_with_object({}) { |(k, v), h|
76
+ if (!acceptable_attribute_map.key?(k.to_sym))
77
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::CreateStandaloneAdRequestSitelinksInner`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
78
+ end
79
+ h[k.to_sym] = v
80
+ }
81
+
82
+ if attributes.key?(:'text')
83
+ self.text = attributes[:'text']
84
+ else
85
+ self.text = nil
86
+ end
87
+
88
+ if attributes.key?(:'link_url')
89
+ self.link_url = attributes[:'link_url']
90
+ else
91
+ self.link_url = nil
92
+ end
93
+
94
+ if attributes.key?(:'description1')
95
+ self.description1 = attributes[:'description1']
96
+ end
97
+
98
+ if attributes.key?(:'description2')
99
+ self.description2 = attributes[:'description2']
100
+ end
101
+ end
102
+
103
+ # Show invalid properties with the reasons. Usually used together with valid?
104
+ # @return Array for valid properties with the reasons
105
+ def list_invalid_properties
106
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
107
+ invalid_properties = Array.new
108
+ if @text.nil?
109
+ invalid_properties.push('invalid value for "text", text cannot be nil.')
110
+ end
111
+
112
+ if @text.to_s.length > 25
113
+ invalid_properties.push('invalid value for "text", the character length must be smaller than or equal to 25.')
114
+ end
115
+
116
+ if @text.to_s.length < 1
117
+ invalid_properties.push('invalid value for "text", the character length must be greater than or equal to 1.')
118
+ end
119
+
120
+ if @link_url.nil?
121
+ invalid_properties.push('invalid value for "link_url", link_url cannot be nil.')
122
+ end
123
+
124
+ if !@description1.nil? && @description1.to_s.length > 35
125
+ invalid_properties.push('invalid value for "description1", the character length must be smaller than or equal to 35.')
126
+ end
127
+
128
+ if !@description1.nil? && @description1.to_s.length < 1
129
+ invalid_properties.push('invalid value for "description1", the character length must be greater than or equal to 1.')
130
+ end
131
+
132
+ if !@description2.nil? && @description2.to_s.length > 35
133
+ invalid_properties.push('invalid value for "description2", the character length must be smaller than or equal to 35.')
134
+ end
135
+
136
+ if !@description2.nil? && @description2.to_s.length < 1
137
+ invalid_properties.push('invalid value for "description2", the character length must be greater than or equal to 1.')
138
+ end
139
+
140
+ invalid_properties
141
+ end
142
+
143
+ # Check to see if the all the properties in the model are valid
144
+ # @return true if the model is valid
145
+ def valid?
146
+ warn '[DEPRECATED] the `valid?` method is obsolete'
147
+ return false if @text.nil?
148
+ return false if @text.to_s.length > 25
149
+ return false if @text.to_s.length < 1
150
+ return false if @link_url.nil?
151
+ return false if !@description1.nil? && @description1.to_s.length > 35
152
+ return false if !@description1.nil? && @description1.to_s.length < 1
153
+ return false if !@description2.nil? && @description2.to_s.length > 35
154
+ return false if !@description2.nil? && @description2.to_s.length < 1
155
+ true
156
+ end
157
+
158
+ # Custom attribute writer method with validation
159
+ # @param [Object] text Value to be assigned
160
+ def text=(text)
161
+ if text.nil?
162
+ fail ArgumentError, 'text cannot be nil'
163
+ end
164
+
165
+ if text.to_s.length > 25
166
+ fail ArgumentError, 'invalid value for "text", the character length must be smaller than or equal to 25.'
167
+ end
168
+
169
+ if text.to_s.length < 1
170
+ fail ArgumentError, 'invalid value for "text", the character length must be greater than or equal to 1.'
171
+ end
172
+
173
+ @text = text
174
+ end
175
+
176
+ # Custom attribute writer method with validation
177
+ # @param [Object] link_url Value to be assigned
178
+ def link_url=(link_url)
179
+ if link_url.nil?
180
+ fail ArgumentError, 'link_url cannot be nil'
181
+ end
182
+
183
+ @link_url = link_url
184
+ end
185
+
186
+ # Custom attribute writer method with validation
187
+ # @param [Object] description1 Value to be assigned
188
+ def description1=(description1)
189
+ if description1.nil?
190
+ fail ArgumentError, 'description1 cannot be nil'
191
+ end
192
+
193
+ if description1.to_s.length > 35
194
+ fail ArgumentError, 'invalid value for "description1", the character length must be smaller than or equal to 35.'
195
+ end
196
+
197
+ if description1.to_s.length < 1
198
+ fail ArgumentError, 'invalid value for "description1", the character length must be greater than or equal to 1.'
199
+ end
200
+
201
+ @description1 = description1
202
+ end
203
+
204
+ # Custom attribute writer method with validation
205
+ # @param [Object] description2 Value to be assigned
206
+ def description2=(description2)
207
+ if description2.nil?
208
+ fail ArgumentError, 'description2 cannot be nil'
209
+ end
210
+
211
+ if description2.to_s.length > 35
212
+ fail ArgumentError, 'invalid value for "description2", the character length must be smaller than or equal to 35.'
213
+ end
214
+
215
+ if description2.to_s.length < 1
216
+ fail ArgumentError, 'invalid value for "description2", the character length must be greater than or equal to 1.'
217
+ end
218
+
219
+ @description2 = description2
220
+ end
221
+
222
+ # Checks equality by comparing each attribute.
223
+ # @param [Object] Object to be compared
224
+ def ==(o)
225
+ return true if self.equal?(o)
226
+ self.class == o.class &&
227
+ text == o.text &&
228
+ link_url == o.link_url &&
229
+ description1 == o.description1 &&
230
+ description2 == o.description2
231
+ end
232
+
233
+ # @see the `==` method
234
+ # @param [Object] Object to be compared
235
+ def eql?(o)
236
+ self == o
237
+ end
238
+
239
+ # Calculates hash code according to all attributes.
240
+ # @return [Integer] Hash code
241
+ def hash
242
+ [text, link_url, description1, description2].hash
243
+ end
244
+
245
+ # Builds the object from hash
246
+ # @param [Hash] attributes Model attributes in the form of hash
247
+ # @return [Object] Returns the model itself
248
+ def self.build_from_hash(attributes)
249
+ return nil unless attributes.is_a?(Hash)
250
+ attributes = attributes.transform_keys(&:to_sym)
251
+ transformed_hash = {}
252
+ openapi_types.each_pair do |key, type|
253
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
254
+ transformed_hash["#{key}"] = nil
255
+ elsif type =~ /\AArray<(.*)>/i
256
+ # check to ensure the input is an array given that the attribute
257
+ # is documented as an array but the input is not
258
+ if attributes[attribute_map[key]].is_a?(Array)
259
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
260
+ end
261
+ elsif !attributes[attribute_map[key]].nil?
262
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
263
+ end
264
+ end
265
+ new(transformed_hash)
266
+ end
267
+
268
+ # Returns the object in the form of hash
269
+ # @return [Hash] Returns the object in the form of hash
270
+ def to_hash
271
+ hash = {}
272
+ self.class.attribute_map.each_pair do |attr, param|
273
+ value = self.send(attr)
274
+ if value.nil?
275
+ is_nullable = self.class.openapi_nullable.include?(attr)
276
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
277
+ end
278
+
279
+ hash[param] = _to_hash(value)
280
+ end
281
+ hash
282
+ end
283
+
284
+ end
285
+
286
+ end
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.755'
14
+ VERSION = '0.0.756'
15
15
  end
data/lib/zernio-sdk.rb CHANGED
@@ -321,6 +321,7 @@ require 'zernio-sdk/models/create_standalone_ad_request_placements'
321
321
  require 'zernio-sdk/models/create_standalone_ad_request_platform_specific_data'
322
322
  require 'zernio-sdk/models/create_standalone_ad_request_promoted_object'
323
323
  require 'zernio-sdk/models/create_standalone_ad_request_regions_inner'
324
+ require 'zernio-sdk/models/create_standalone_ad_request_sitelinks_inner'
324
325
  require 'zernio-sdk/models/create_standalone_ad_request_tracking'
325
326
  require 'zernio-sdk/models/create_standalone_ad_request_translations_inner'
326
327
  require 'zernio-sdk/models/create_standalone_ad_request_video'
data/openapi.yaml CHANGED
@@ -43180,6 +43180,26 @@ paths:
43180
43180
  negativeKeywords: { type: array, items: { type: string, maxLength: 80 }, description: "Google Search only; other platforms return 400. BROAD-match negative keywords on the new ad group. Editable later via PUT /v1/ads/{adId} targeting.negativeKeywords." }
43181
43181
  additionalHeadlines: { type: array, items: { type: string }, description: "Google Search RSA only. Extra headlines." }
43182
43182
  additionalDescriptions: { type: array, items: { type: string }, description: "Google Search RSA only. Extra descriptions." }
43183
+ sitelinks:
43184
+ type: array
43185
+ minItems: 2
43186
+ maxItems: 20
43187
+ description: |
43188
+ Google Search only. Sitelink assets to create and attach at the campaign level.
43189
+ Each entry becomes an Asset (with sitelink_asset + Asset.final_urls) plus a
43190
+ CampaignAsset link (field_type SITELINK). Approval is async — Google reviews
43191
+ assets after creation; poll asset.policy_summary later to read the verdict.
43192
+ Google requires at least two sitelinks to surface them on an ad; four or more
43193
+ is Google's own recommendation for maximum visibility. The response's
43194
+ creative.sitelinks[] echoes each input plus its Google resourceName.
43195
+ items:
43196
+ type: object
43197
+ required: [text, linkUrl]
43198
+ properties:
43199
+ text: { type: string, minLength: 1, maxLength: 25, description: "The clickable link text shown under the ad. 25-char cap comes from Google." }
43200
+ linkUrl: { type: string, format: uri, description: "Final URL the sitelink navigates to." }
43201
+ description1: { type: string, minLength: 1, maxLength: 35, description: "First description line under the link text (optional). 35-char cap." }
43202
+ description2: { type: string, minLength: 1, maxLength: 35, description: "Second description line (optional; usually paired with description1)." }
43183
43203
  advantageAudience: { type: integer, enum: [0, 1], description: "Meta only. Controls the Advantage audience feature (targeting_automation). 0 = disabled (default), 1 = enabled. Meta Marketing API requires this field on all ad set creation requests." }
43184
43204
  attributionSpec:
43185
43205
  type: array
@@ -0,0 +1,54 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+ require 'date'
16
+
17
+ # Unit tests for Zernio::CreateStandaloneAdRequestSitelinksInner
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Zernio::CreateStandaloneAdRequestSitelinksInner do
21
+ #let(:instance) { Zernio::CreateStandaloneAdRequestSitelinksInner.new }
22
+
23
+ describe 'test an instance of CreateStandaloneAdRequestSitelinksInner' do
24
+ it 'should create an instance of CreateStandaloneAdRequestSitelinksInner' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::CreateStandaloneAdRequestSitelinksInner)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "text"' do
31
+ it 'should work' do
32
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
33
+ end
34
+ end
35
+
36
+ describe 'test attribute "link_url"' do
37
+ it 'should work' do
38
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
39
+ end
40
+ end
41
+
42
+ describe 'test attribute "description1"' do
43
+ it 'should work' do
44
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
45
+ end
46
+ end
47
+
48
+ describe 'test attribute "description2"' do
49
+ it 'should work' do
50
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
51
+ end
52
+ end
53
+
54
+ end
@@ -495,6 +495,12 @@ describe Zernio::CreateStandaloneAdRequest do
495
495
  end
496
496
  end
497
497
 
498
+ describe 'test attribute "sitelinks"' do
499
+ it 'should work' do
500
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
501
+ end
502
+ end
503
+
498
504
  describe 'test attribute "advantage_audience"' do
499
505
  it 'should work' do
500
506
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: late-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.755
4
+ version: 0.0.756
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
@@ -391,6 +391,7 @@ files:
391
391
  - docs/CreateStandaloneAdRequestPlatformSpecificData.md
392
392
  - docs/CreateStandaloneAdRequestPromotedObject.md
393
393
  - docs/CreateStandaloneAdRequestRegionsInner.md
394
+ - docs/CreateStandaloneAdRequestSitelinksInner.md
394
395
  - docs/CreateStandaloneAdRequestTracking.md
395
396
  - docs/CreateStandaloneAdRequestTranslationsInner.md
396
397
  - docs/CreateStandaloneAdRequestVideo.md
@@ -2229,6 +2230,7 @@ files:
2229
2230
  - lib/zernio-sdk/models/create_standalone_ad_request_platform_specific_data.rb
2230
2231
  - lib/zernio-sdk/models/create_standalone_ad_request_promoted_object.rb
2231
2232
  - lib/zernio-sdk/models/create_standalone_ad_request_regions_inner.rb
2233
+ - lib/zernio-sdk/models/create_standalone_ad_request_sitelinks_inner.rb
2232
2234
  - lib/zernio-sdk/models/create_standalone_ad_request_tracking.rb
2233
2235
  - lib/zernio-sdk/models/create_standalone_ad_request_translations_inner.rb
2234
2236
  - lib/zernio-sdk/models/create_standalone_ad_request_video.rb
@@ -4014,6 +4016,7 @@ files:
4014
4016
  - spec/models/create_standalone_ad_request_platform_specific_data_spec.rb
4015
4017
  - spec/models/create_standalone_ad_request_promoted_object_spec.rb
4016
4018
  - spec/models/create_standalone_ad_request_regions_inner_spec.rb
4019
+ - spec/models/create_standalone_ad_request_sitelinks_inner_spec.rb
4017
4020
  - spec/models/create_standalone_ad_request_spec.rb
4018
4021
  - spec/models/create_standalone_ad_request_tracking_spec.rb
4019
4022
  - spec/models/create_standalone_ad_request_translations_inner_spec.rb
@@ -5431,7 +5434,7 @@ files:
5431
5434
  - spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
5432
5435
  - spec/models/you_tube_video_retention_response_spec.rb
5433
5436
  - spec/spec_helper.rb
5434
- - zernio-sdk-0.0.755.gem
5437
+ - zernio-sdk-0.0.756.gem
5435
5438
  - zernio-sdk.gemspec
5436
5439
  homepage: https://openapi-generator.tech
5437
5440
  licenses:
@@ -6792,6 +6795,7 @@ test_files:
6792
6795
  - spec/models/list_connected_apps200_response_spec.rb
6793
6796
  - spec/models/create_standalone_ad_request_cities_inner_spec.rb
6794
6797
  - spec/models/comment_automation_template_spec.rb
6798
+ - spec/models/create_standalone_ad_request_sitelinks_inner_spec.rb
6795
6799
  - spec/models/edit_inbox_message_request_reply_markup_spec.rb
6796
6800
  - spec/models/end_voice_call200_response_spec.rb
6797
6801
  - spec/models/get_google_business_attributes200_response_spec.rb
Binary file