zernio-sdk 0.0.99 → 0.0.100

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: d65b51b5205302b6a296806d8861b3af8026195372b761fe1ed94b0036752f54
4
- data.tar.gz: e087adfb1941c834f16970fd3b93322596ab20db1c28389b878a578742608e1e
3
+ metadata.gz: 38a525d4bb08e56592a11454256aaf13bd0df5f8d2f852421c121b424c88b2f5
4
+ data.tar.gz: 94a9f494671048b71f46d91754def558ecac1e128dfcf84648ea4f3ecac72c54
5
5
  SHA512:
6
- metadata.gz: 6a5a4c54abf9012e4bf4ed8a30b27846649c5a40e0902e23445b1fd01404c7d7f4ef2757d7b3ea858caa5c45f1281d209c9daa9fb45668420c4fb1b6e34e98e1
7
- data.tar.gz: 02752fcf4ad62d5b990852513e8eed491a07ae60effc05739354b38a17401bc3b094d7ac3ab12ba5502dfc7a94661c42dd1f2bc601c119e30c6c7259cafca342
6
+ metadata.gz: 268cc43af084aec2fc83058de79081c5c54e9a118694fb61cd2ac2ef6f6c548a4bca46993ead36f1e030e8f461d03724dcdd0af8473a354abef4f7265dadf424
7
+ data.tar.gz: f2d78ad309a469cc51968aa580db12fc8fb811483a903bad1a81cbb984b0d6bc02429fa7f1f7bf07ee62b8a43721db7d34bb6a645046d6736eec113b8f642597
data/README.md CHANGED
@@ -366,6 +366,7 @@ Class | Method | HTTP request | Description
366
366
  - [Late::BoostPostRequestBudget](docs/BoostPostRequestBudget.md)
367
367
  - [Late::BoostPostRequestSchedule](docs/BoostPostRequestSchedule.md)
368
368
  - [Late::BoostPostRequestTargeting](docs/BoostPostRequestTargeting.md)
369
+ - [Late::BoostPostRequestTracking](docs/BoostPostRequestTracking.md)
369
370
  - [Late::BulkCreateContacts200Response](docs/BulkCreateContacts200Response.md)
370
371
  - [Late::BulkCreateContactsRequest](docs/BulkCreateContactsRequest.md)
371
372
  - [Late::BulkCreateContactsRequestContactsInner](docs/BulkCreateContactsRequestContactsInner.md)
data/docs/AdsApi.md CHANGED
@@ -105,7 +105,7 @@ Late.configure do |config|
105
105
  end
106
106
 
107
107
  api_instance = Late::AdsApi.new
108
- create_standalone_ad_request = Late::CreateStandaloneAdRequest.new({account_id: 'account_id_example', ad_account_id: 'ad_account_id_example', name: 'name_example', goal: 'engagement', budget_amount: 3.56, budget_type: 'daily', body: 'body_example', image_url: 'image_url_example'}) # CreateStandaloneAdRequest |
108
+ create_standalone_ad_request = Late::CreateStandaloneAdRequest.new({account_id: 'account_id_example', ad_account_id: 'ad_account_id_example', name: 'name_example', goal: 'engagement', budget_amount: 3.56, budget_type: 'daily', body: 'body_example'}) # CreateStandaloneAdRequest |
109
109
 
110
110
  begin
111
111
  # Create a standalone ad with custom creative
@@ -14,6 +14,9 @@
14
14
  | **currency** | **String** | | [optional] |
15
15
  | **schedule** | [**BoostPostRequestSchedule**](BoostPostRequestSchedule.md) | | [optional] |
16
16
  | **targeting** | [**BoostPostRequestTargeting**](BoostPostRequestTargeting.md) | | [optional] |
17
+ | **bid_amount** | **Float** | Max bid cap (Meta only) | [optional] |
18
+ | **tracking** | [**BoostPostRequestTracking**](BoostPostRequestTracking.md) | | [optional] |
19
+ | **special_ad_categories** | **Array<String>** | Meta only. Required for housing, employment, credit, or political ads. | [optional] |
17
20
 
18
21
  ## Example
19
22
 
@@ -30,7 +33,10 @@ instance = Late::BoostPostRequest.new(
30
33
  budget: null,
31
34
  currency: USD,
32
35
  schedule: null,
33
- targeting: null
36
+ targeting: null,
37
+ bid_amount: null,
38
+ tracking: null,
39
+ special_ad_categories: null
34
40
  )
35
41
  ```
36
42
 
@@ -0,0 +1,20 @@
1
+ # Late::BoostPostRequestTracking
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **pixel_id** | **String** | | [optional] |
8
+ | **url_tags** | **String** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'late-sdk'
14
+
15
+ instance = Late::BoostPostRequestTracking.new(
16
+ pixel_id: null,
17
+ url_tags: null
18
+ )
19
+ ```
20
+
@@ -14,6 +14,8 @@
14
14
  | **source_audience_id** | **String** | Required for lookalike audiences | [optional] |
15
15
  | **country** | **String** | 2-letter code, required for lookalike audiences | [optional] |
16
16
  | **ratio** | **Float** | Required for lookalike audiences | [optional] |
17
+ | **rule** | **Object** | Pixel event rule for website audiences (optional) | [optional] |
18
+ | **customer_file_source** | **String** | Data source declaration for GDPR compliance (customer_list only) | [optional] |
17
19
 
18
20
  ## Example
19
21
 
@@ -30,7 +32,9 @@ instance = Late::CreateAdAudienceRequest.new(
30
32
  retention_days: null,
31
33
  source_audience_id: null,
32
34
  country: null,
33
- ratio: null
35
+ ratio: null,
36
+ rule: null,
37
+ customer_file_source: null
34
38
  )
35
39
  ```
36
40
 
@@ -12,10 +12,13 @@
12
12
  | **budget_type** | **String** | | |
13
13
  | **currency** | **String** | | [optional] |
14
14
  | **headline** | **String** | Required for most platforms. Max: Meta=255, Google=30, Pinterest=100 | [optional] |
15
+ | **long_headline** | **String** | Google Display only | [optional] |
15
16
  | **body** | **String** | Max: Google=90, Pinterest=500 | |
16
17
  | **call_to_action** | **String** | Meta only | [optional] |
17
18
  | **link_url** | **String** | | [optional] |
18
- | **image_url** | **String** | Image URL (or video URL for TikTok) | |
19
+ | **image_url** | **String** | Image URL (or video URL for TikTok). Not required for Google Search campaigns. | [optional] |
20
+ | **business_name** | **String** | Google Display only | [optional] |
21
+ | **board_id** | **String** | Pinterest only. Board ID (auto-creates if not provided). | [optional] |
19
22
  | **countries** | **Array<String>** | | [optional] |
20
23
  | **age_min** | **Integer** | | [optional] |
21
24
  | **age_max** | **Integer** | | [optional] |
@@ -24,6 +27,8 @@
24
27
  | **audience_id** | **String** | Custom audience ID for targeting | [optional] |
25
28
  | **campaign_type** | **String** | Google only | [optional][default to 'display'] |
26
29
  | **keywords** | **Array<String>** | Google Search only | [optional] |
30
+ | **additional_headlines** | **Array<String>** | Google Search RSA only. Extra headlines. | [optional] |
31
+ | **additional_descriptions** | **Array<String>** | Google Search RSA only. Extra descriptions. | [optional] |
27
32
 
28
33
  ## Example
29
34
 
@@ -39,10 +44,13 @@ instance = Late::CreateStandaloneAdRequest.new(
39
44
  budget_type: null,
40
45
  currency: null,
41
46
  headline: null,
47
+ long_headline: null,
42
48
  body: null,
43
49
  call_to_action: null,
44
50
  link_url: null,
45
51
  image_url: null,
52
+ business_name: null,
53
+ board_id: null,
46
54
  countries: null,
47
55
  age_min: null,
48
56
  age_max: null,
@@ -50,7 +58,9 @@ instance = Late::CreateStandaloneAdRequest.new(
50
58
  end_date: null,
51
59
  audience_id: null,
52
60
  campaign_type: null,
53
- keywords: null
61
+ keywords: null,
62
+ additional_headlines: null,
63
+ additional_descriptions: null
54
64
  )
55
65
  ```
56
66
 
@@ -39,6 +39,14 @@ module Late
39
39
 
40
40
  attr_accessor :targeting
41
41
 
42
+ # Max bid cap (Meta only)
43
+ attr_accessor :bid_amount
44
+
45
+ attr_accessor :tracking
46
+
47
+ # Meta only. Required for housing, employment, credit, or political ads.
48
+ attr_accessor :special_ad_categories
49
+
42
50
  class EnumAttributeValidator
43
51
  attr_reader :datatype
44
52
  attr_reader :allowable_values
@@ -73,7 +81,10 @@ module Late
73
81
  :'budget' => :'budget',
74
82
  :'currency' => :'currency',
75
83
  :'schedule' => :'schedule',
76
- :'targeting' => :'targeting'
84
+ :'targeting' => :'targeting',
85
+ :'bid_amount' => :'bidAmount',
86
+ :'tracking' => :'tracking',
87
+ :'special_ad_categories' => :'specialAdCategories'
77
88
  }
78
89
  end
79
90
 
@@ -99,7 +110,10 @@ module Late
99
110
  :'budget' => :'BoostPostRequestBudget',
100
111
  :'currency' => :'String',
101
112
  :'schedule' => :'BoostPostRequestSchedule',
102
- :'targeting' => :'BoostPostRequestTargeting'
113
+ :'targeting' => :'BoostPostRequestTargeting',
114
+ :'bid_amount' => :'Float',
115
+ :'tracking' => :'BoostPostRequestTracking',
116
+ :'special_ad_categories' => :'Array<String>'
103
117
  }
104
118
  end
105
119
 
@@ -174,6 +188,20 @@ module Late
174
188
  if attributes.key?(:'targeting')
175
189
  self.targeting = attributes[:'targeting']
176
190
  end
191
+
192
+ if attributes.key?(:'bid_amount')
193
+ self.bid_amount = attributes[:'bid_amount']
194
+ end
195
+
196
+ if attributes.key?(:'tracking')
197
+ self.tracking = attributes[:'tracking']
198
+ end
199
+
200
+ if attributes.key?(:'special_ad_categories')
201
+ if (value = attributes[:'special_ad_categories']).is_a?(Array)
202
+ self.special_ad_categories = value
203
+ end
204
+ end
177
205
  end
178
206
 
179
207
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -291,7 +319,10 @@ module Late
291
319
  budget == o.budget &&
292
320
  currency == o.currency &&
293
321
  schedule == o.schedule &&
294
- targeting == o.targeting
322
+ targeting == o.targeting &&
323
+ bid_amount == o.bid_amount &&
324
+ tracking == o.tracking &&
325
+ special_ad_categories == o.special_ad_categories
295
326
  end
296
327
 
297
328
  # @see the `==` method
@@ -303,7 +334,7 @@ module Late
303
334
  # Calculates hash code according to all attributes.
304
335
  # @return [Integer] Hash code
305
336
  def hash
306
- [post_id, platform_post_id, account_id, ad_account_id, name, goal, budget, currency, schedule, targeting].hash
337
+ [post_id, platform_post_id, account_id, ad_account_id, name, goal, budget, currency, schedule, targeting, bid_amount, tracking, special_ad_categories].hash
307
338
  end
308
339
 
309
340
  # Builds the object from hash
@@ -0,0 +1,157 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
5
+
6
+ The version of the OpenAPI document: 1.0.1
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 Late
17
+ # Meta only. Tracking specs (pixel, URL tags).
18
+ class BoostPostRequestTracking < ApiModelBase
19
+ attr_accessor :pixel_id
20
+
21
+ attr_accessor :url_tags
22
+
23
+ # Attribute mapping from ruby-style variable name to JSON key.
24
+ def self.attribute_map
25
+ {
26
+ :'pixel_id' => :'pixelId',
27
+ :'url_tags' => :'urlTags'
28
+ }
29
+ end
30
+
31
+ # Returns attribute mapping this model knows about
32
+ def self.acceptable_attribute_map
33
+ attribute_map
34
+ end
35
+
36
+ # Returns all the JSON keys this model knows about
37
+ def self.acceptable_attributes
38
+ acceptable_attribute_map.values
39
+ end
40
+
41
+ # Attribute type mapping.
42
+ def self.openapi_types
43
+ {
44
+ :'pixel_id' => :'String',
45
+ :'url_tags' => :'String'
46
+ }
47
+ end
48
+
49
+ # List of attributes with nullable: true
50
+ def self.openapi_nullable
51
+ Set.new([
52
+ ])
53
+ end
54
+
55
+ # Initializes the object
56
+ # @param [Hash] attributes Model attributes in the form of hash
57
+ def initialize(attributes = {})
58
+ if (!attributes.is_a?(Hash))
59
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Late::BoostPostRequestTracking` initialize method"
60
+ end
61
+
62
+ # check to see if the attribute exists and convert string to symbol for hash key
63
+ acceptable_attribute_map = self.class.acceptable_attribute_map
64
+ attributes = attributes.each_with_object({}) { |(k, v), h|
65
+ if (!acceptable_attribute_map.key?(k.to_sym))
66
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Late::BoostPostRequestTracking`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
67
+ end
68
+ h[k.to_sym] = v
69
+ }
70
+
71
+ if attributes.key?(:'pixel_id')
72
+ self.pixel_id = attributes[:'pixel_id']
73
+ end
74
+
75
+ if attributes.key?(:'url_tags')
76
+ self.url_tags = attributes[:'url_tags']
77
+ end
78
+ end
79
+
80
+ # Show invalid properties with the reasons. Usually used together with valid?
81
+ # @return Array for valid properties with the reasons
82
+ def list_invalid_properties
83
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
84
+ invalid_properties = Array.new
85
+ invalid_properties
86
+ end
87
+
88
+ # Check to see if the all the properties in the model are valid
89
+ # @return true if the model is valid
90
+ def valid?
91
+ warn '[DEPRECATED] the `valid?` method is obsolete'
92
+ true
93
+ end
94
+
95
+ # Checks equality by comparing each attribute.
96
+ # @param [Object] Object to be compared
97
+ def ==(o)
98
+ return true if self.equal?(o)
99
+ self.class == o.class &&
100
+ pixel_id == o.pixel_id &&
101
+ url_tags == o.url_tags
102
+ end
103
+
104
+ # @see the `==` method
105
+ # @param [Object] Object to be compared
106
+ def eql?(o)
107
+ self == o
108
+ end
109
+
110
+ # Calculates hash code according to all attributes.
111
+ # @return [Integer] Hash code
112
+ def hash
113
+ [pixel_id, url_tags].hash
114
+ end
115
+
116
+ # Builds the object from hash
117
+ # @param [Hash] attributes Model attributes in the form of hash
118
+ # @return [Object] Returns the model itself
119
+ def self.build_from_hash(attributes)
120
+ return nil unless attributes.is_a?(Hash)
121
+ attributes = attributes.transform_keys(&:to_sym)
122
+ transformed_hash = {}
123
+ openapi_types.each_pair do |key, type|
124
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
125
+ transformed_hash["#{key}"] = nil
126
+ elsif type =~ /\AArray<(.*)>/i
127
+ # check to ensure the input is an array given that the attribute
128
+ # is documented as an array but the input is not
129
+ if attributes[attribute_map[key]].is_a?(Array)
130
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
131
+ end
132
+ elsif !attributes[attribute_map[key]].nil?
133
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
134
+ end
135
+ end
136
+ new(transformed_hash)
137
+ end
138
+
139
+ # Returns the object in the form of hash
140
+ # @return [Hash] Returns the object in the form of hash
141
+ def to_hash
142
+ hash = {}
143
+ self.class.attribute_map.each_pair do |attr, param|
144
+ value = self.send(attr)
145
+ if value.nil?
146
+ is_nullable = self.class.openapi_nullable.include?(attr)
147
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
148
+ end
149
+
150
+ hash[param] = _to_hash(value)
151
+ end
152
+ hash
153
+ end
154
+
155
+ end
156
+
157
+ end
@@ -41,6 +41,12 @@ module Late
41
41
  # Required for lookalike audiences
42
42
  attr_accessor :ratio
43
43
 
44
+ # Pixel event rule for website audiences (optional)
45
+ attr_accessor :rule
46
+
47
+ # Data source declaration for GDPR compliance (customer_list only)
48
+ attr_accessor :customer_file_source
49
+
44
50
  class EnumAttributeValidator
45
51
  attr_reader :datatype
46
52
  attr_reader :allowable_values
@@ -75,7 +81,9 @@ module Late
75
81
  :'retention_days' => :'retentionDays',
76
82
  :'source_audience_id' => :'sourceAudienceId',
77
83
  :'country' => :'country',
78
- :'ratio' => :'ratio'
84
+ :'ratio' => :'ratio',
85
+ :'rule' => :'rule',
86
+ :'customer_file_source' => :'customerFileSource'
79
87
  }
80
88
  end
81
89
 
@@ -101,7 +109,9 @@ module Late
101
109
  :'retention_days' => :'Integer',
102
110
  :'source_audience_id' => :'String',
103
111
  :'country' => :'String',
104
- :'ratio' => :'Float'
112
+ :'ratio' => :'Float',
113
+ :'rule' => :'Object',
114
+ :'customer_file_source' => :'String'
105
115
  }
106
116
  end
107
117
 
@@ -174,6 +184,14 @@ module Late
174
184
  if attributes.key?(:'ratio')
175
185
  self.ratio = attributes[:'ratio']
176
186
  end
187
+
188
+ if attributes.key?(:'rule')
189
+ self.rule = attributes[:'rule']
190
+ end
191
+
192
+ if attributes.key?(:'customer_file_source')
193
+ self.customer_file_source = attributes[:'customer_file_source']
194
+ end
177
195
  end
178
196
 
179
197
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -332,7 +350,9 @@ module Late
332
350
  retention_days == o.retention_days &&
333
351
  source_audience_id == o.source_audience_id &&
334
352
  country == o.country &&
335
- ratio == o.ratio
353
+ ratio == o.ratio &&
354
+ rule == o.rule &&
355
+ customer_file_source == o.customer_file_source
336
356
  end
337
357
 
338
358
  # @see the `==` method
@@ -344,7 +364,7 @@ module Late
344
364
  # Calculates hash code according to all attributes.
345
365
  # @return [Integer] Hash code
346
366
  def hash
347
- [account_id, ad_account_id, name, description, type, pixel_id, retention_days, source_audience_id, country, ratio].hash
367
+ [account_id, ad_account_id, name, description, type, pixel_id, retention_days, source_audience_id, country, ratio, rule, customer_file_source].hash
348
368
  end
349
369
 
350
370
  # Builds the object from hash
@@ -32,6 +32,9 @@ module Late
32
32
  # Required for most platforms. Max: Meta=255, Google=30, Pinterest=100
33
33
  attr_accessor :headline
34
34
 
35
+ # Google Display only
36
+ attr_accessor :long_headline
37
+
35
38
  # Max: Google=90, Pinterest=500
36
39
  attr_accessor :body
37
40
 
@@ -40,9 +43,15 @@ module Late
40
43
 
41
44
  attr_accessor :link_url
42
45
 
43
- # Image URL (or video URL for TikTok)
46
+ # Image URL (or video URL for TikTok). Not required for Google Search campaigns.
44
47
  attr_accessor :image_url
45
48
 
49
+ # Google Display only
50
+ attr_accessor :business_name
51
+
52
+ # Pinterest only. Board ID (auto-creates if not provided).
53
+ attr_accessor :board_id
54
+
46
55
  attr_accessor :countries
47
56
 
48
57
  attr_accessor :age_min
@@ -63,6 +72,12 @@ module Late
63
72
  # Google Search only
64
73
  attr_accessor :keywords
65
74
 
75
+ # Google Search RSA only. Extra headlines.
76
+ attr_accessor :additional_headlines
77
+
78
+ # Google Search RSA only. Extra descriptions.
79
+ attr_accessor :additional_descriptions
80
+
66
81
  class EnumAttributeValidator
67
82
  attr_reader :datatype
68
83
  attr_reader :allowable_values
@@ -96,10 +111,13 @@ module Late
96
111
  :'budget_type' => :'budgetType',
97
112
  :'currency' => :'currency',
98
113
  :'headline' => :'headline',
114
+ :'long_headline' => :'longHeadline',
99
115
  :'body' => :'body',
100
116
  :'call_to_action' => :'callToAction',
101
117
  :'link_url' => :'linkUrl',
102
118
  :'image_url' => :'imageUrl',
119
+ :'business_name' => :'businessName',
120
+ :'board_id' => :'boardId',
103
121
  :'countries' => :'countries',
104
122
  :'age_min' => :'ageMin',
105
123
  :'age_max' => :'ageMax',
@@ -107,7 +125,9 @@ module Late
107
125
  :'end_date' => :'endDate',
108
126
  :'audience_id' => :'audienceId',
109
127
  :'campaign_type' => :'campaignType',
110
- :'keywords' => :'keywords'
128
+ :'keywords' => :'keywords',
129
+ :'additional_headlines' => :'additionalHeadlines',
130
+ :'additional_descriptions' => :'additionalDescriptions'
111
131
  }
112
132
  end
113
133
 
@@ -132,10 +152,13 @@ module Late
132
152
  :'budget_type' => :'String',
133
153
  :'currency' => :'String',
134
154
  :'headline' => :'String',
155
+ :'long_headline' => :'String',
135
156
  :'body' => :'String',
136
157
  :'call_to_action' => :'String',
137
158
  :'link_url' => :'String',
138
159
  :'image_url' => :'String',
160
+ :'business_name' => :'String',
161
+ :'board_id' => :'String',
139
162
  :'countries' => :'Array<String>',
140
163
  :'age_min' => :'Integer',
141
164
  :'age_max' => :'Integer',
@@ -143,7 +166,9 @@ module Late
143
166
  :'end_date' => :'Time',
144
167
  :'audience_id' => :'String',
145
168
  :'campaign_type' => :'String',
146
- :'keywords' => :'Array<String>'
169
+ :'keywords' => :'Array<String>',
170
+ :'additional_headlines' => :'Array<String>',
171
+ :'additional_descriptions' => :'Array<String>'
147
172
  }
148
173
  end
149
174
 
@@ -213,6 +238,10 @@ module Late
213
238
  self.headline = attributes[:'headline']
214
239
  end
215
240
 
241
+ if attributes.key?(:'long_headline')
242
+ self.long_headline = attributes[:'long_headline']
243
+ end
244
+
216
245
  if attributes.key?(:'body')
217
246
  self.body = attributes[:'body']
218
247
  else
@@ -229,8 +258,14 @@ module Late
229
258
 
230
259
  if attributes.key?(:'image_url')
231
260
  self.image_url = attributes[:'image_url']
232
- else
233
- self.image_url = nil
261
+ end
262
+
263
+ if attributes.key?(:'business_name')
264
+ self.business_name = attributes[:'business_name']
265
+ end
266
+
267
+ if attributes.key?(:'board_id')
268
+ self.board_id = attributes[:'board_id']
234
269
  end
235
270
 
236
271
  if attributes.key?(:'countries')
@@ -272,6 +307,18 @@ module Late
272
307
  self.keywords = value
273
308
  end
274
309
  end
310
+
311
+ if attributes.key?(:'additional_headlines')
312
+ if (value = attributes[:'additional_headlines']).is_a?(Array)
313
+ self.additional_headlines = value
314
+ end
315
+ end
316
+
317
+ if attributes.key?(:'additional_descriptions')
318
+ if (value = attributes[:'additional_descriptions']).is_a?(Array)
319
+ self.additional_descriptions = value
320
+ end
321
+ end
275
322
  end
276
323
 
277
324
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -307,12 +354,16 @@ module Late
307
354
  invalid_properties.push('invalid value for "budget_type", budget_type cannot be nil.')
308
355
  end
309
356
 
357
+ if !@long_headline.nil? && @long_headline.to_s.length > 90
358
+ invalid_properties.push('invalid value for "long_headline", the character length must be smaller than or equal to 90.')
359
+ end
360
+
310
361
  if @body.nil?
311
362
  invalid_properties.push('invalid value for "body", body cannot be nil.')
312
363
  end
313
364
 
314
- if @image_url.nil?
315
- invalid_properties.push('invalid value for "image_url", image_url cannot be nil.')
365
+ if !@business_name.nil? && @business_name.to_s.length > 25
366
+ invalid_properties.push('invalid value for "business_name", the character length must be smaller than or equal to 25.')
316
367
  end
317
368
 
318
369
  if !@age_min.nil? && @age_min > 65
@@ -349,10 +400,11 @@ module Late
349
400
  return false if @budget_type.nil?
350
401
  budget_type_validator = EnumAttributeValidator.new('String', ["daily", "lifetime"])
351
402
  return false unless budget_type_validator.valid?(@budget_type)
403
+ return false if !@long_headline.nil? && @long_headline.to_s.length > 90
352
404
  return false if @body.nil?
353
405
  call_to_action_validator = EnumAttributeValidator.new('String', ["LEARN_MORE", "SHOP_NOW", "SIGN_UP", "BOOK_TRAVEL", "CONTACT_US", "DOWNLOAD", "GET_OFFER", "GET_QUOTE", "SUBSCRIBE", "WATCH_MORE"])
354
406
  return false unless call_to_action_validator.valid?(@call_to_action)
355
- return false if @image_url.nil?
407
+ return false if !@business_name.nil? && @business_name.to_s.length > 25
356
408
  return false if !@age_min.nil? && @age_min > 65
357
409
  return false if !@age_min.nil? && @age_min < 13
358
410
  return false if !@age_max.nil? && @age_max > 65
@@ -426,6 +478,20 @@ module Late
426
478
  @budget_type = budget_type
427
479
  end
428
480
 
481
+ # Custom attribute writer method with validation
482
+ # @param [Object] long_headline Value to be assigned
483
+ def long_headline=(long_headline)
484
+ if long_headline.nil?
485
+ fail ArgumentError, 'long_headline cannot be nil'
486
+ end
487
+
488
+ if long_headline.to_s.length > 90
489
+ fail ArgumentError, 'invalid value for "long_headline", the character length must be smaller than or equal to 90.'
490
+ end
491
+
492
+ @long_headline = long_headline
493
+ end
494
+
429
495
  # Custom attribute writer method with validation
430
496
  # @param [Object] body Value to be assigned
431
497
  def body=(body)
@@ -447,13 +513,17 @@ module Late
447
513
  end
448
514
 
449
515
  # Custom attribute writer method with validation
450
- # @param [Object] image_url Value to be assigned
451
- def image_url=(image_url)
452
- if image_url.nil?
453
- fail ArgumentError, 'image_url cannot be nil'
516
+ # @param [Object] business_name Value to be assigned
517
+ def business_name=(business_name)
518
+ if business_name.nil?
519
+ fail ArgumentError, 'business_name cannot be nil'
520
+ end
521
+
522
+ if business_name.to_s.length > 25
523
+ fail ArgumentError, 'invalid value for "business_name", the character length must be smaller than or equal to 25.'
454
524
  end
455
525
 
456
- @image_url = image_url
526
+ @business_name = business_name
457
527
  end
458
528
 
459
529
  # Custom attribute writer method with validation
@@ -515,10 +585,13 @@ module Late
515
585
  budget_type == o.budget_type &&
516
586
  currency == o.currency &&
517
587
  headline == o.headline &&
588
+ long_headline == o.long_headline &&
518
589
  body == o.body &&
519
590
  call_to_action == o.call_to_action &&
520
591
  link_url == o.link_url &&
521
592
  image_url == o.image_url &&
593
+ business_name == o.business_name &&
594
+ board_id == o.board_id &&
522
595
  countries == o.countries &&
523
596
  age_min == o.age_min &&
524
597
  age_max == o.age_max &&
@@ -526,7 +599,9 @@ module Late
526
599
  end_date == o.end_date &&
527
600
  audience_id == o.audience_id &&
528
601
  campaign_type == o.campaign_type &&
529
- keywords == o.keywords
602
+ keywords == o.keywords &&
603
+ additional_headlines == o.additional_headlines &&
604
+ additional_descriptions == o.additional_descriptions
530
605
  end
531
606
 
532
607
  # @see the `==` method
@@ -538,7 +613,7 @@ module Late
538
613
  # Calculates hash code according to all attributes.
539
614
  # @return [Integer] Hash code
540
615
  def hash
541
- [account_id, ad_account_id, name, goal, budget_amount, budget_type, currency, headline, body, call_to_action, link_url, image_url, countries, age_min, age_max, interests, end_date, audience_id, campaign_type, keywords].hash
616
+ [account_id, ad_account_id, name, goal, budget_amount, budget_type, currency, headline, long_headline, body, call_to_action, link_url, image_url, business_name, board_id, countries, age_min, age_max, interests, end_date, audience_id, campaign_type, keywords, additional_headlines, additional_descriptions].hash
542
617
  end
543
618
 
544
619
  # Builds the object from hash
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Late
14
- VERSION = '0.0.99'
14
+ VERSION = '0.0.100'
15
15
  end
data/lib/late-sdk.rb CHANGED
@@ -54,6 +54,7 @@ require 'late-sdk/models/boost_post_request'
54
54
  require 'late-sdk/models/boost_post_request_budget'
55
55
  require 'late-sdk/models/boost_post_request_schedule'
56
56
  require 'late-sdk/models/boost_post_request_targeting'
57
+ require 'late-sdk/models/boost_post_request_tracking'
57
58
  require 'late-sdk/models/bulk_create_contacts200_response'
58
59
  require 'late-sdk/models/bulk_create_contacts_request'
59
60
  require 'late-sdk/models/bulk_create_contacts_request_contacts_inner'
data/openapi.yaml CHANGED
@@ -17525,6 +17525,8 @@ paths:
17525
17525
  type: array
17526
17526
  items: { type: object }
17527
17527
  '401': { $ref: '#/components/responses/Unauthorized' }
17528
+ '403':
17529
+ description: Ads add-on required
17528
17530
  '404': { $ref: '#/components/responses/NotFound' }
17529
17531
 
17530
17532
  /v1/ads/accounts:
@@ -17555,6 +17557,8 @@ paths:
17555
17557
  currency: { type: string }
17556
17558
  status: { type: string }
17557
17559
  '401': { $ref: '#/components/responses/Unauthorized' }
17560
+ '422':
17561
+ description: Platform ads connection required (TikTok Ads, X Ads) or Instagram missing linked Facebook account
17558
17562
 
17559
17563
  /v1/ads/boost:
17560
17564
  post:
@@ -17597,6 +17601,17 @@ paths:
17597
17601
  ageMax: { type: integer, minimum: 13, maximum: 65 }
17598
17602
  countries: { type: array, items: { type: string } }
17599
17603
  interests: { type: array, items: { type: string } }
17604
+ bidAmount: { type: number, description: "Max bid cap (Meta only)" }
17605
+ tracking:
17606
+ type: object
17607
+ description: "Meta only. Tracking specs (pixel, URL tags)."
17608
+ properties:
17609
+ pixelId: { type: string }
17610
+ urlTags: { type: string }
17611
+ specialAdCategories:
17612
+ type: array
17613
+ description: "Meta only. Required for housing, employment, credit, or political ads."
17614
+ items: { type: string, enum: [HOUSING, EMPLOYMENT, CREDIT, ISSUES_ELECTIONS_POLITICS] }
17600
17615
  responses:
17601
17616
  '201':
17602
17617
  description: Ad created
@@ -17627,7 +17642,7 @@ paths:
17627
17642
  application/json:
17628
17643
  schema:
17629
17644
  type: object
17630
- required: [accountId, adAccountId, name, goal, budgetAmount, budgetType, body, imageUrl]
17645
+ required: [accountId, adAccountId, name, goal, budgetAmount, budgetType, body]
17631
17646
  properties:
17632
17647
  accountId: { type: string }
17633
17648
  adAccountId: { type: string }
@@ -17637,10 +17652,13 @@ paths:
17637
17652
  budgetType: { type: string, enum: [daily, lifetime] }
17638
17653
  currency: { type: string }
17639
17654
  headline: { type: string, description: "Required for most platforms. Max: Meta=255, Google=30, Pinterest=100" }
17655
+ longHeadline: { type: string, maxLength: 90, description: "Google Display only" }
17640
17656
  body: { type: string, description: "Max: Google=90, Pinterest=500" }
17641
17657
  callToAction: { type: string, enum: [LEARN_MORE, SHOP_NOW, SIGN_UP, BOOK_TRAVEL, CONTACT_US, DOWNLOAD, GET_OFFER, GET_QUOTE, SUBSCRIBE, WATCH_MORE], description: Meta only }
17642
17658
  linkUrl: { type: string, format: uri }
17643
- imageUrl: { type: string, format: uri, description: Image URL (or video URL for TikTok) }
17659
+ imageUrl: { type: string, format: uri, description: "Image URL (or video URL for TikTok). Not required for Google Search campaigns." }
17660
+ businessName: { type: string, maxLength: 25, description: "Google Display only" }
17661
+ boardId: { type: string, description: "Pinterest only. Board ID (auto-creates if not provided)." }
17644
17662
  countries: { type: array, items: { type: string } }
17645
17663
  ageMin: { type: integer, minimum: 13, maximum: 65 }
17646
17664
  ageMax: { type: integer, minimum: 13, maximum: 65 }
@@ -17649,6 +17667,8 @@ paths:
17649
17667
  audienceId: { type: string, description: Custom audience ID for targeting }
17650
17668
  campaignType: { type: string, enum: [display, search], default: display, description: Google only }
17651
17669
  keywords: { type: array, items: { type: string }, description: Google Search only }
17670
+ additionalHeadlines: { type: array, items: { type: string }, description: "Google Search RSA only. Extra headlines." }
17671
+ additionalDescriptions: { type: array, items: { type: string }, description: "Google Search RSA only. Extra descriptions." }
17652
17672
  responses:
17653
17673
  '201':
17654
17674
  description: Ad created
@@ -17717,6 +17737,8 @@ paths:
17717
17737
  name: { type: string }
17718
17738
  category: { type: string }
17719
17739
  '401': { $ref: '#/components/responses/Unauthorized' }
17740
+ '403':
17741
+ description: Ads add-on required
17720
17742
 
17721
17743
  /v1/ads/audiences:
17722
17744
  get:
@@ -17777,6 +17799,8 @@ paths:
17777
17799
  sourceAudienceId: { type: string, description: Required for lookalike audiences }
17778
17800
  country: { type: string, description: "2-letter code, required for lookalike audiences" }
17779
17801
  ratio: { type: number, minimum: 0.01, maximum: 0.20, description: Required for lookalike audiences }
17802
+ rule: { type: object, description: "Pixel event rule for website audiences (optional)" }
17803
+ customerFileSource: { type: string, description: "Data source declaration for GDPR compliance (customer_list only)" }
17780
17804
  responses:
17781
17805
  '201':
17782
17806
  description: Audience created
@@ -17814,6 +17838,8 @@ paths:
17814
17838
  audience: { type: object }
17815
17839
  metaData: { type: object, nullable: true, description: Fresh data from Meta API }
17816
17840
  '401': { $ref: '#/components/responses/Unauthorized' }
17841
+ '403':
17842
+ description: Ads add-on required
17817
17843
  '404': { $ref: '#/components/responses/NotFound' }
17818
17844
  delete:
17819
17845
  operationId: deleteAdAudience
@@ -17834,6 +17860,8 @@ paths:
17834
17860
  properties:
17835
17861
  message: { type: string }
17836
17862
  '401': { $ref: '#/components/responses/Unauthorized' }
17863
+ '403':
17864
+ description: Ads add-on required
17837
17865
  '404': { $ref: '#/components/responses/NotFound' }
17838
17866
 
17839
17867
  /v1/ads/audiences/{audienceId}/users:
@@ -17875,6 +17903,10 @@ paths:
17875
17903
  numReceived: { type: integer }
17876
17904
  numInvalid: { type: integer }
17877
17905
  '400':
17878
- description: Invalid input or not a customer_list audience
17906
+ description: Invalid input (empty users array, missing email/phone)
17879
17907
  '401': { $ref: '#/components/responses/Unauthorized' }
17908
+ '403':
17909
+ description: Ads add-on required
17880
17910
  '404': { $ref: '#/components/responses/NotFound' }
17911
+ '422':
17912
+ description: Audience is not a customer_list type or has no platform ID yet
@@ -91,4 +91,26 @@ describe Late::BoostPostRequest do
91
91
  end
92
92
  end
93
93
 
94
+ describe 'test attribute "bid_amount"' do
95
+ it 'should work' do
96
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
97
+ end
98
+ end
99
+
100
+ describe 'test attribute "tracking"' do
101
+ it 'should work' do
102
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
103
+ end
104
+ end
105
+
106
+ describe 'test attribute "special_ad_categories"' do
107
+ it 'should work' do
108
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
109
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('Array<String>', ["HOUSING", "EMPLOYMENT", "CREDIT", "ISSUES_ELECTIONS_POLITICS"])
110
+ # validator.allowable_values.each do |value|
111
+ # expect { instance.special_ad_categories = value }.not_to raise_error
112
+ # end
113
+ end
114
+ end
115
+
94
116
  end
@@ -0,0 +1,42 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
5
+
6
+ The version of the OpenAPI document: 1.0.1
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 Late::BoostPostRequestTracking
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Late::BoostPostRequestTracking do
21
+ #let(:instance) { Late::BoostPostRequestTracking.new }
22
+
23
+ describe 'test an instance of BoostPostRequestTracking' do
24
+ it 'should create an instance of BoostPostRequestTracking' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Late::BoostPostRequestTracking)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "pixel_id"' 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 "url_tags"' 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
+ end
@@ -91,4 +91,16 @@ describe Late::CreateAdAudienceRequest do
91
91
  end
92
92
  end
93
93
 
94
+ describe 'test attribute "rule"' do
95
+ it 'should work' do
96
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
97
+ end
98
+ end
99
+
100
+ describe 'test attribute "customer_file_source"' do
101
+ it 'should work' do
102
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
103
+ end
104
+ end
105
+
94
106
  end
@@ -83,6 +83,12 @@ describe Late::CreateStandaloneAdRequest do
83
83
  end
84
84
  end
85
85
 
86
+ describe 'test attribute "long_headline"' do
87
+ it 'should work' do
88
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
89
+ end
90
+ end
91
+
86
92
  describe 'test attribute "body"' do
87
93
  it 'should work' do
88
94
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -111,6 +117,18 @@ describe Late::CreateStandaloneAdRequest do
111
117
  end
112
118
  end
113
119
 
120
+ describe 'test attribute "business_name"' do
121
+ it 'should work' do
122
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
123
+ end
124
+ end
125
+
126
+ describe 'test attribute "board_id"' do
127
+ it 'should work' do
128
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
129
+ end
130
+ end
131
+
114
132
  describe 'test attribute "countries"' do
115
133
  it 'should work' do
116
134
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -163,4 +181,16 @@ describe Late::CreateStandaloneAdRequest do
163
181
  end
164
182
  end
165
183
 
184
+ describe 'test attribute "additional_headlines"' do
185
+ it 'should work' do
186
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
187
+ end
188
+ end
189
+
190
+ describe 'test attribute "additional_descriptions"' do
191
+ it 'should work' do
192
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
193
+ end
194
+ end
195
+
166
196
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zernio-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.99
4
+ version: 0.0.100
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
@@ -107,6 +107,7 @@ files:
107
107
  - docs/BoostPostRequestBudget.md
108
108
  - docs/BoostPostRequestSchedule.md
109
109
  - docs/BoostPostRequestTargeting.md
110
+ - docs/BoostPostRequestTracking.md
110
111
  - docs/BroadcastsApi.md
111
112
  - docs/BulkCreateContacts200Response.md
112
113
  - docs/BulkCreateContactsRequest.md
@@ -909,6 +910,7 @@ files:
909
910
  - lib/late-sdk/models/boost_post_request_budget.rb
910
911
  - lib/late-sdk/models/boost_post_request_schedule.rb
911
912
  - lib/late-sdk/models/boost_post_request_targeting.rb
913
+ - lib/late-sdk/models/boost_post_request_tracking.rb
912
914
  - lib/late-sdk/models/bulk_create_contacts200_response.rb
913
915
  - lib/late-sdk/models/bulk_create_contacts_request.rb
914
916
  - lib/late-sdk/models/bulk_create_contacts_request_contacts_inner.rb
@@ -1675,6 +1677,7 @@ files:
1675
1677
  - spec/models/boost_post_request_schedule_spec.rb
1676
1678
  - spec/models/boost_post_request_spec.rb
1677
1679
  - spec/models/boost_post_request_targeting_spec.rb
1680
+ - spec/models/boost_post_request_tracking_spec.rb
1678
1681
  - spec/models/bulk_create_contacts200_response_spec.rb
1679
1682
  - spec/models/bulk_create_contacts_request_contacts_inner_spec.rb
1680
1683
  - spec/models/bulk_create_contacts_request_spec.rb
@@ -2723,6 +2726,7 @@ test_files:
2723
2726
  - spec/models/get_google_business_attributes200_response_spec.rb
2724
2727
  - spec/models/get_post_timeline400_response_spec.rb
2725
2728
  - spec/models/update_google_business_location_details_request_service_items_inner_structured_service_item_spec.rb
2729
+ - spec/models/boost_post_request_tracking_spec.rb
2726
2730
  - spec/models/webhook_payload_message_conversation_spec.rb
2727
2731
  - spec/models/create_post_request_platforms_inner_spec.rb
2728
2732
  - spec/models/instagram_demographics_response_demographics_value_inner_spec.rb