late-sdk 0.0.944 → 0.0.946

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: 0cf9ac51582227f71f17759cba3912705b1a80cc209d819f80157b031f88b7a0
4
- data.tar.gz: 958f659258a85e6bcd4e57429b661e57b41f02a6334edb392271e35008aabe6a
3
+ metadata.gz: 11a5a0391999650568f706eacc803aeaaa440d97708ea4b2d720db0da2f82954
4
+ data.tar.gz: 8c2235a143397d96d5518dbf5edf4df0fdc7b88d658c801e5ecc4fc3ed40f235
5
5
  SHA512:
6
- metadata.gz: 8f348fb5d4bef86c721fff6e7ba2d245efba89b18cce101beef6cfa14faa7a8562550d6cd8683bc9b8977a66d20fe1268ce313aa4de90fd62b33b505397b93bb
7
- data.tar.gz: 92dc204283820fb337e9bfa21de9fee0071aaf37d2576b0844af41943fa4acab2f85c7b84f4c2a9aa2e66f0234fa1e249479276d35f07e8772748d85dcba55bc
6
+ metadata.gz: ddb310850c27fd598ff2e68a3f398a45edd7b68f2129de41d0385a40c4d40991ad3e3bd6ca8f626a19c70d2cf3139163e618104f8a69a81fead74837009a7192
7
+ data.tar.gz: 385395f747c324fab7064bdbf804cabf453114bbacdbd15818f58d0a0d83c7f456aee1e5d28a81dffa82aa0949cabfd3687a2f72fbfb47e13947efb5e2fb263f
data/README.md CHANGED
@@ -1428,6 +1428,7 @@ Class | Method | HTTP request | Description
1428
1428
  - [Zernio::GetCommentAutomation200Response](docs/GetCommentAutomation200Response.md)
1429
1429
  - [Zernio::GetCommentAutomation200ResponseAutomation](docs/GetCommentAutomation200ResponseAutomation.md)
1430
1430
  - [Zernio::GetCommentAutomation200ResponseLogsInner](docs/GetCommentAutomation200ResponseLogsInner.md)
1431
+ - [Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError](docs/GetCommentAutomation200ResponseLogsInnerPlatformError.md)
1431
1432
  - [Zernio::GetConnectUrl200Response](docs/GetConnectUrl200Response.md)
1432
1433
  - [Zernio::GetContact200Response](docs/GetContact200Response.md)
1433
1434
  - [Zernio::GetContact200ResponseChannelsInner](docs/GetContact200ResponseChannelsInner.md)
@@ -48,6 +48,7 @@
48
48
  | **organization_id** | **String** | LinkedIn only. The Company Page that authors the Direct Sponsored Content (\"dark\") post backing the ad. Accepts a numeric organization ID or a full `urn:li:organization:N` URN. Required unless the resolved `accountId` is a connected LinkedIn Company-Page account (defaults to that page) or the LinkedIn ad account is org-owned (defaults to the account's owning organization). The authenticated member must be an ADMINISTRATOR or DIRECT_SPONSORED_CONTENT_POSTER of this page (and the page must be associated with the ad account), or LinkedIn returns 403. Ignored by every other platform. | [optional] |
49
49
  | **targeting** | [**TargetingSpec**](TargetingSpec.md) | Nested targeting object, the same TargetingSpec shape as `POST /v1/ads/boost`, `POST /v1/ads/targeting/reach-estimate`, and `saved_targeting` audiences. Merged UNDER the flat inline targeting fields below: `savedTargetingId` < `targeting` < flat fields (a flat field present on the body replaces the nested value entirely). Both forms are equivalent; use whichever your integration already builds. | [optional] |
50
50
  | **countries** | **Array<String>** | ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no other geo targeting (flat or nested `targeting`) is provided. (LinkedIn and OpenAI Ads currently honour country-level targeting only; any other targeting field returns 400 for OpenAI Ads.) | [optional] |
51
+ | **country_groups** | **Array<String>** | Meta only. Continents and trade blocs (`geo_locations.country_groups`), for targeting a whole region without listing its countries. Combines with `countries` rather than replacing it. Discoverable via `GET /v1/ads/targeting/search?dimension=geo&geoType=country_group`. | [optional] |
51
52
  | **cities** | [**Array<CreateStandaloneAdRequestCitiesInner>**](CreateStandaloneAdRequestCitiesInner.md) | City-level geo targeting (Meta and TikTok). Each city is targeted by the platform's opaque `key` (the city ID) which can be looked up via `GET /v1/ads/targeting/search?dimension=geo&q=<name>&countryCode=<ISO>`. Optional `radius` + `distance_unit` (Meta only) extend the targeting beyond the city limits (e.g. radius 25 km around the city center). Both must be set together, or both omitted (Meta defaults to ~16 km when omitted). On Meta, cannot overlap with the same country in `countries` (Meta returns a \"locations overlap\" error). Either drop the country or scope it to a different country. On TikTok, keys are numeric location ids and can be sent without `countries`. | [optional] |
52
53
  | **regions** | [**Array<CreateStandaloneAdRequestRegionsInner>**](CreateStandaloneAdRequestRegionsInner.md) | Region-level (state/province) geo targeting (Meta and TikTok). Each region is targeted by the platform's opaque `key` (the region ID) which can be looked up via `GET /v1/ads/targeting/search?dimension=geo&q=<name>&countryCode=<ISO>`. | [optional] |
53
54
  | **age_min** | **Integer** | | [optional] |
@@ -159,6 +160,7 @@ instance = Zernio::CreateStandaloneAdRequest.new(
159
160
  organization_id: null,
160
161
  targeting: null,
161
162
  countries: null,
163
+ country_groups: null,
162
164
  cities: null,
163
165
  regions: null,
164
166
  age_min: null,
@@ -15,6 +15,8 @@
15
15
  | **commenter_is_follower** | **Boolean** | Follow relationship at decision time. Absent when Instagram would not tell us (the commenter never messaged the account). | [optional] |
16
16
  | **commenter_follower_count** | **Integer** | | [optional] |
17
17
  | **error** | **String** | DM error message if status is failed | [optional] |
18
+ | **platform_error** | [**GetCommentAutomation200ResponseLogsInnerPlatformError**](GetCommentAutomation200ResponseLogsInnerPlatformError.md) | | [optional] |
19
+ | **private_reply_consumed** | **Boolean** | True when the failed send spent the comment's single Instagram private reply (subcode 1545133 or 2534023), the same rule as `details.privateReplyConsumed` on the private-reply endpoint. Absent on direct DMs, on Facebook, and on rows written before this field existed. | [optional] |
18
20
  | **comment_reply_status** | **String** | Outcome of the optional public reply on the triggering comment. 'skipped' if no commentReply was configured or if the DM failed (the public reply is not attempted in that case). | [optional] |
19
21
  | **comment_reply_error** | **String** | Public-reply error message if commentReplyStatus is failed | [optional] |
20
22
  | **next_due_at** | **Time** | When the next queued send fires. Present only while something is still pending. | [optional] |
@@ -37,6 +39,8 @@ instance = Zernio::GetCommentAutomation200ResponseLogsInner.new(
37
39
  commenter_is_follower: null,
38
40
  commenter_follower_count: null,
39
41
  error: null,
42
+ platform_error: null,
43
+ private_reply_consumed: null,
40
44
  comment_reply_status: null,
41
45
  comment_reply_error: null,
42
46
  next_due_at: null,
@@ -0,0 +1,20 @@
1
+ # Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **code** | **Integer** | | [optional] |
8
+ | **subcode** | **Integer** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'zernio-sdk'
14
+
15
+ instance = Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError.new(
16
+ code: null,
17
+ subcode: null
18
+ )
19
+ ```
20
+
@@ -5,6 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **countries** | **Array<String>** | | [optional] |
8
+ | **country_groups** | **Array<String>** | Meta only. Continents and trade blocs to exclude (`excluded_geo_locations.country_groups`). | [optional] |
8
9
  | **regions** | [**Array<UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner>**](UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner.md) | | [optional] |
9
10
  | **cities** | [**Array<TargetingSpecExcludedLocationsCitiesInner>**](TargetingSpecExcludedLocationsCitiesInner.md) | Cities to exclude. Optional `radius` + `distanceUnit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities. | [optional] |
10
11
  | **zips** | [**Array<UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner>**](UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner.md) | | [optional] |
@@ -19,6 +20,7 @@ require 'zernio-sdk'
19
20
 
20
21
  instance = Zernio::TargetingSpecExcludedLocations.new(
21
22
  countries: null,
23
+ country_groups: null,
22
24
  regions: null,
23
25
  cities: null,
24
26
  zips: null,
@@ -141,6 +141,9 @@ module Zernio
141
141
  # ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no other geo targeting (flat or nested `targeting`) is provided. (LinkedIn and OpenAI Ads currently honour country-level targeting only; any other targeting field returns 400 for OpenAI Ads.)
142
142
  attr_accessor :countries
143
143
 
144
+ # Meta only. Continents and trade blocs (`geo_locations.country_groups`), for targeting a whole region without listing its countries. Combines with `countries` rather than replacing it. Discoverable via `GET /v1/ads/targeting/search?dimension=geo&geoType=country_group`.
145
+ attr_accessor :country_groups
146
+
144
147
  # City-level geo targeting (Meta and TikTok). Each city is targeted by the platform's opaque `key` (the city ID) which can be looked up via `GET /v1/ads/targeting/search?dimension=geo&q=<name>&countryCode=<ISO>`. Optional `radius` + `distance_unit` (Meta only) extend the targeting beyond the city limits (e.g. radius 25 km around the city center). Both must be set together, or both omitted (Meta defaults to ~16 km when omitted). On Meta, cannot overlap with the same country in `countries` (Meta returns a \"locations overlap\" error). Either drop the country or scope it to a different country. On TikTok, keys are numeric location ids and can be sent without `countries`.
145
148
  attr_accessor :cities
146
149
 
@@ -381,6 +384,7 @@ module Zernio
381
384
  :'organization_id' => :'organizationId',
382
385
  :'targeting' => :'targeting',
383
386
  :'countries' => :'countries',
387
+ :'country_groups' => :'countryGroups',
384
388
  :'cities' => :'cities',
385
389
  :'regions' => :'regions',
386
390
  :'age_min' => :'ageMin',
@@ -501,6 +505,7 @@ module Zernio
501
505
  :'organization_id' => :'String',
502
506
  :'targeting' => :'TargetingSpec',
503
507
  :'countries' => :'Array<String>',
508
+ :'country_groups' => :'Array<String>',
504
509
  :'cities' => :'Array<CreateStandaloneAdRequestCitiesInner>',
505
510
  :'regions' => :'Array<CreateStandaloneAdRequestRegionsInner>',
506
511
  :'age_min' => :'Integer',
@@ -785,6 +790,12 @@ module Zernio
785
790
  end
786
791
  end
787
792
 
793
+ if attributes.key?(:'country_groups')
794
+ if (value = attributes[:'country_groups']).is_a?(Array)
795
+ self.country_groups = value
796
+ end
797
+ end
798
+
788
799
  if attributes.key?(:'cities')
789
800
  if (value = attributes[:'cities']).is_a?(Array)
790
801
  self.cities = value
@@ -2018,6 +2029,7 @@ module Zernio
2018
2029
  organization_id == o.organization_id &&
2019
2030
  targeting == o.targeting &&
2020
2031
  countries == o.countries &&
2032
+ country_groups == o.country_groups &&
2021
2033
  cities == o.cities &&
2022
2034
  regions == o.regions &&
2023
2035
  age_min == o.age_min &&
@@ -2089,7 +2101,7 @@ module Zernio
2089
2101
  # Calculates hash code according to all attributes.
2090
2102
  # @return [Integer] Hash code
2091
2103
  def hash
2092
- [account_id, ad_account_id, name, campaign_name, ad_set_name, ad_name, tracking, goal, optimization_goal, billing_event, buying_type, rf_prediction_id, promotion, creative_features, multi_advertiser, validate_only, budget_amount, budget_type, status, campaign_status, budget_level, currency, headline, long_headline, body, description, bodies, headlines, descriptions, 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, work_positions, work_employers, work_industries, income_tier, languages, placements, saved_targeting_id, raw_targeting, special_ad_categories, special_ad_category_country, regional_regulated_categories, regional_regulation_identities, end_date, start_date, instagram_account_id, dynamic_creative, carousel_cards, default_locale, translations, placement_assets, audience_id, campaign_type, asset_group, keywords, negative_keywords, campaign_negative_keywords, additional_headlines, additional_descriptions, sitelinks, callouts, structured_snippets, advantage_audience, attribution_spec, gender, bid_strategy, bid_amount, roas_average_floor, portfolio_bid_strategy_id, value_rule_set_id, value_rules_applied, platform_specific_data, dsa_beneficiary, dsa_payor, brand_identity, identity_type, smart_plus, user_os, user_device, is_skadnetwork_attribution, campaign_attribution, promoted_object].hash
2104
+ [account_id, ad_account_id, name, campaign_name, ad_set_name, ad_name, tracking, goal, optimization_goal, billing_event, buying_type, rf_prediction_id, promotion, creative_features, multi_advertiser, validate_only, budget_amount, budget_type, status, campaign_status, budget_level, currency, headline, long_headline, body, description, bodies, headlines, descriptions, 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, country_groups, cities, regions, age_min, age_max, interests, zips, metros, custom_locations, behaviors, work_positions, work_employers, work_industries, income_tier, languages, placements, saved_targeting_id, raw_targeting, special_ad_categories, special_ad_category_country, regional_regulated_categories, regional_regulation_identities, end_date, start_date, instagram_account_id, dynamic_creative, carousel_cards, default_locale, translations, placement_assets, audience_id, campaign_type, asset_group, keywords, negative_keywords, campaign_negative_keywords, additional_headlines, additional_descriptions, sitelinks, callouts, structured_snippets, advantage_audience, attribution_spec, gender, bid_strategy, bid_amount, roas_average_floor, portfolio_bid_strategy_id, value_rule_set_id, value_rules_applied, platform_specific_data, dsa_beneficiary, dsa_payor, brand_identity, identity_type, smart_plus, user_os, user_device, is_skadnetwork_attribution, campaign_attribution, promoted_object].hash
2093
2105
  end
2094
2106
 
2095
2107
  # Builds the object from hash
@@ -42,6 +42,11 @@ module Zernio
42
42
  # DM error message if status is failed
43
43
  attr_accessor :error
44
44
 
45
+ attr_accessor :platform_error
46
+
47
+ # True when the failed send spent the comment's single Instagram private reply (subcode 1545133 or 2534023), the same rule as `details.privateReplyConsumed` on the private-reply endpoint. Absent on direct DMs, on Facebook, and on rows written before this field existed.
48
+ attr_accessor :private_reply_consumed
49
+
45
50
  # Outcome of the optional public reply on the triggering comment. 'skipped' if no commentReply was configured or if the DM failed (the public reply is not attempted in that case).
46
51
  attr_accessor :comment_reply_status
47
52
 
@@ -89,6 +94,8 @@ module Zernio
89
94
  :'commenter_is_follower' => :'commenterIsFollower',
90
95
  :'commenter_follower_count' => :'commenterFollowerCount',
91
96
  :'error' => :'error',
97
+ :'platform_error' => :'platformError',
98
+ :'private_reply_consumed' => :'privateReplyConsumed',
92
99
  :'comment_reply_status' => :'commentReplyStatus',
93
100
  :'comment_reply_error' => :'commentReplyError',
94
101
  :'next_due_at' => :'nextDueAt',
@@ -120,6 +127,8 @@ module Zernio
120
127
  :'commenter_is_follower' => :'Boolean',
121
128
  :'commenter_follower_count' => :'Integer',
122
129
  :'error' => :'String',
130
+ :'platform_error' => :'GetCommentAutomation200ResponseLogsInnerPlatformError',
131
+ :'private_reply_consumed' => :'Boolean',
123
132
  :'comment_reply_status' => :'String',
124
133
  :'comment_reply_error' => :'String',
125
134
  :'next_due_at' => :'Time',
@@ -193,6 +202,14 @@ module Zernio
193
202
  self.error = attributes[:'error']
194
203
  end
195
204
 
205
+ if attributes.key?(:'platform_error')
206
+ self.platform_error = attributes[:'platform_error']
207
+ end
208
+
209
+ if attributes.key?(:'private_reply_consumed')
210
+ self.private_reply_consumed = attributes[:'private_reply_consumed']
211
+ end
212
+
196
213
  if attributes.key?(:'comment_reply_status')
197
214
  self.comment_reply_status = attributes[:'comment_reply_status']
198
215
  end
@@ -289,6 +306,8 @@ module Zernio
289
306
  commenter_is_follower == o.commenter_is_follower &&
290
307
  commenter_follower_count == o.commenter_follower_count &&
291
308
  error == o.error &&
309
+ platform_error == o.platform_error &&
310
+ private_reply_consumed == o.private_reply_consumed &&
292
311
  comment_reply_status == o.comment_reply_status &&
293
312
  comment_reply_error == o.comment_reply_error &&
294
313
  next_due_at == o.next_due_at &&
@@ -304,7 +323,7 @@ module Zernio
304
323
  # Calculates hash code according to all attributes.
305
324
  # @return [Integer] Hash code
306
325
  def hash
307
- [id, comment_id, commenter_id, commenter_name, comment_text, source, status, audience_outcome, commenter_is_follower, commenter_follower_count, error, comment_reply_status, comment_reply_error, next_due_at, created_at].hash
326
+ [id, comment_id, commenter_id, commenter_name, comment_text, source, status, audience_outcome, commenter_is_follower, commenter_follower_count, error, platform_error, private_reply_consumed, comment_reply_status, comment_reply_error, next_due_at, created_at].hash
308
327
  end
309
328
 
310
329
  # 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 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
+ # Platform error codes of the failed DM (Meta `code` and `error_subcode`), when the platform sent them. Absent on successful rows and on rows written before this field existed.
18
+ class GetCommentAutomation200ResponseLogsInnerPlatformError < ApiModelBase
19
+ attr_accessor :code
20
+
21
+ attr_accessor :subcode
22
+
23
+ # Attribute mapping from ruby-style variable name to JSON key.
24
+ def self.attribute_map
25
+ {
26
+ :'code' => :'code',
27
+ :'subcode' => :'subcode'
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
+ :'code' => :'Integer',
45
+ :'subcode' => :'Integer'
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 `Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError` 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 `Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError`. 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?(:'code')
72
+ self.code = attributes[:'code']
73
+ end
74
+
75
+ if attributes.key?(:'subcode')
76
+ self.subcode = attributes[:'subcode']
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
+ code == o.code &&
101
+ subcode == o.subcode
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
+ [code, subcode].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
@@ -18,6 +18,9 @@ module Zernio
18
18
  class TargetingSpecExcludedLocations < ApiModelBase
19
19
  attr_accessor :countries
20
20
 
21
+ # Meta only. Continents and trade blocs to exclude (`excluded_geo_locations.country_groups`).
22
+ attr_accessor :country_groups
23
+
21
24
  attr_accessor :regions
22
25
 
23
26
  # Cities to exclude. Optional `radius` + `distanceUnit` exclude a catchment around the city (both must be set together or both omitted); Meta honours the radius on excluded cities.
@@ -34,10 +37,33 @@ module Zernio
34
37
  # Point-radius (lat/lng) pins to exclude (Meta excluded_geo_locations.custom_locations). Mirrors the inclusion customLocations shape.
35
38
  attr_accessor :custom_locations
36
39
 
40
+ class EnumAttributeValidator
41
+ attr_reader :datatype
42
+ attr_reader :allowable_values
43
+
44
+ def initialize(datatype, allowable_values)
45
+ @allowable_values = allowable_values.map do |value|
46
+ case datatype.to_s
47
+ when /Integer/i
48
+ value.to_i
49
+ when /Float/i
50
+ value.to_f
51
+ else
52
+ value
53
+ end
54
+ end
55
+ end
56
+
57
+ def valid?(value)
58
+ !value || allowable_values.include?(value)
59
+ end
60
+ end
61
+
37
62
  # Attribute mapping from ruby-style variable name to JSON key.
38
63
  def self.attribute_map
39
64
  {
40
65
  :'countries' => :'countries',
66
+ :'country_groups' => :'countryGroups',
41
67
  :'regions' => :'regions',
42
68
  :'cities' => :'cities',
43
69
  :'zips' => :'zips',
@@ -61,6 +87,7 @@ module Zernio
61
87
  def self.openapi_types
62
88
  {
63
89
  :'countries' => :'Array<String>',
90
+ :'country_groups' => :'Array<String>',
64
91
  :'regions' => :'Array<UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner>',
65
92
  :'cities' => :'Array<TargetingSpecExcludedLocationsCitiesInner>',
66
93
  :'zips' => :'Array<UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner>',
@@ -98,6 +125,12 @@ module Zernio
98
125
  end
99
126
  end
100
127
 
128
+ if attributes.key?(:'country_groups')
129
+ if (value = attributes[:'country_groups']).is_a?(Array)
130
+ self.country_groups = value
131
+ end
132
+ end
133
+
101
134
  if attributes.key?(:'regions')
102
135
  if (value = attributes[:'regions']).is_a?(Array)
103
136
  self.regions = value
@@ -156,6 +189,7 @@ module Zernio
156
189
  return true if self.equal?(o)
157
190
  self.class == o.class &&
158
191
  countries == o.countries &&
192
+ country_groups == o.country_groups &&
159
193
  regions == o.regions &&
160
194
  cities == o.cities &&
161
195
  zips == o.zips &&
@@ -173,7 +207,7 @@ module Zernio
173
207
  # Calculates hash code according to all attributes.
174
208
  # @return [Integer] Hash code
175
209
  def hash
176
- [countries, regions, cities, zips, places, neighborhoods, custom_locations].hash
210
+ [countries, country_groups, regions, cities, zips, places, neighborhoods, custom_locations].hash
177
211
  end
178
212
 
179
213
  # Builds the object from hash
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.944'
14
+ VERSION = '0.0.946'
15
15
  end
data/lib/zernio-sdk.rb CHANGED
@@ -643,6 +643,7 @@ require 'zernio-sdk/models/get_campaign_targeting200_response_locations_inner'
643
643
  require 'zernio-sdk/models/get_comment_automation200_response'
644
644
  require 'zernio-sdk/models/get_comment_automation200_response_automation'
645
645
  require 'zernio-sdk/models/get_comment_automation200_response_logs_inner'
646
+ require 'zernio-sdk/models/get_comment_automation200_response_logs_inner_platform_error'
646
647
  require 'zernio-sdk/models/get_connect_url200_response'
647
648
  require 'zernio-sdk/models/get_contact200_response'
648
649
  require 'zernio-sdk/models/get_contact200_response_channels_inner'
data/openapi.yaml CHANGED
@@ -9253,6 +9253,12 @@ components:
9253
9253
  description: "Geo to exclude from the audience. Mirrors the inclusion geo shape: excluded cities can carry a radius catchment and excluded custom (lat/lng) pins are supported, both on Meta (excluded_geo_locations)."
9254
9254
  properties:
9255
9255
  countries: { type: array, items: { type: string } }
9256
+ countryGroups:
9257
+ type: array
9258
+ description: "Meta only. Continents and trade blocs to exclude (`excluded_geo_locations.country_groups`)."
9259
+ items:
9260
+ type: string
9261
+ enum: [africa, asia, europe, north_america, south_america, oceania, central_america, caribbean, eea, euro_area, nafta, mercosur, afta, apec, gcc, cisfta, emerging_markets, itunes_app_store, android_free_store, android_paid_store]
9256
9262
  regions:
9257
9263
  type: array
9258
9264
  items:
@@ -43240,6 +43246,11 @@ paths:
43240
43246
  commenterIsFollower: { type: boolean, description: "Follow relationship at decision time. Absent when Instagram would not tell us (the commenter never messaged the account)." }
43241
43247
  commenterFollowerCount: { type: integer }
43242
43248
  error: { type: string, description: DM error message if status is failed }
43249
+ platformError:
43250
+ type: object
43251
+ description: "Platform error codes of the failed DM (Meta `code` and `error_subcode`), when the platform sent them. Absent on successful rows and on rows written before this field existed."
43252
+ properties: { code: { type: integer }, subcode: { type: integer } }
43253
+ privateReplyConsumed: { type: boolean, description: "True when the failed send spent the comment's single Instagram private reply (subcode 1545133 or 2534023), the same rule as `details.privateReplyConsumed` on the private-reply endpoint. Absent on direct DMs, on Facebook, and on rows written before this field existed." }
43243
43254
  commentReplyStatus: { type: string, enum: [sent, failed, skipped], description: "Outcome of the optional public reply on the triggering comment. 'skipped' if no commentReply was configured or if the DM failed (the public reply is not attempted in that case)." }
43244
43255
  commentReplyError: { type: string, description: Public-reply error message if commentReplyStatus is failed }
43245
43256
  nextDueAt: { type: string, format: date-time, description: "When the next queued send fires. Present only while something is still pending." }
@@ -43390,6 +43401,11 @@ paths:
43390
43401
  commenterIsFollower: { type: boolean, description: "Follow relationship at decision time. Absent when Instagram would not tell us (the commenter never messaged the account)." }
43391
43402
  commenterFollowerCount: { type: integer }
43392
43403
  error: { type: string, description: DM error message if status is failed }
43404
+ platformError:
43405
+ type: object
43406
+ description: "Platform error codes of the failed DM (Meta `code` and `error_subcode`), when the platform sent them. Absent on successful rows and on rows written before this field existed."
43407
+ properties: { code: { type: integer }, subcode: { type: integer } }
43408
+ privateReplyConsumed: { type: boolean, description: "True when the failed send spent the comment's single Instagram private reply (subcode 1545133 or 2534023), the same rule as `details.privateReplyConsumed` on the private-reply endpoint. Absent on direct DMs, on Facebook, and on rows written before this field existed." }
43393
43409
  commentReplyStatus: { type: string, enum: [sent, failed, skipped], description: "Outcome of the optional public reply on the triggering comment. 'skipped' if no commentReply was configured or if the DM failed (the public reply is not attempted in that case)." }
43394
43410
  commentReplyError: { type: string, description: Public-reply error message if commentReplyStatus is failed }
43395
43411
  nextDueAt: { type: string, format: date-time, description: "When the next queued send fires. Present only while something is still pending." }
@@ -51697,6 +51713,16 @@ paths:
51697
51713
  allOf:
51698
51714
  - $ref: '#/components/schemas/TargetingSpec'
51699
51715
  countries: { type: array, items: { type: string }, description: "ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no other geo targeting (flat or nested `targeting`) is provided. (LinkedIn and OpenAI Ads currently honour country-level targeting only; any other targeting field returns 400 for OpenAI Ads.)" }
51716
+ countryGroups:
51717
+ type: array
51718
+ description: |
51719
+ Meta only. Continents and trade blocs (`geo_locations.country_groups`),
51720
+ for targeting a whole region without listing its countries. Combines with
51721
+ `countries` rather than replacing it. Discoverable via
51722
+ `GET /v1/ads/targeting/search?dimension=geo&geoType=country_group`.
51723
+ items:
51724
+ type: string
51725
+ enum: [africa, asia, europe, north_america, south_america, oceania, central_america, caribbean, eea, euro_area, nafta, mercosur, afta, apec, gcc, cisfta, emerging_markets, itunes_app_store, android_free_store, android_paid_store]
51700
51726
  cities:
51701
51727
  type: array
51702
51728
  description: |
@@ -327,6 +327,16 @@ describe Zernio::CreateStandaloneAdRequest do
327
327
  end
328
328
  end
329
329
 
330
+ describe 'test attribute "country_groups"' do
331
+ it 'should work' do
332
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
333
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('Array<String>', ["africa", "asia", "europe", "north_america", "south_america", "oceania", "central_america", "caribbean", "eea", "euro_area", "nafta", "mercosur", "afta", "apec", "gcc", "cisfta", "emerging_markets", "itunes_app_store", "android_free_store", "android_paid_store"])
334
+ # validator.allowable_values.each do |value|
335
+ # expect { instance.country_groups = value }.not_to raise_error
336
+ # end
337
+ end
338
+ end
339
+
330
340
  describe 'test attribute "cities"' do
331
341
  it 'should work' do
332
342
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -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 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::GetCommentAutomation200ResponseLogsInnerPlatformError
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError do
21
+ #let(:instance) { Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError.new }
22
+
23
+ describe 'test an instance of GetCommentAutomation200ResponseLogsInnerPlatformError' do
24
+ it 'should create an instance of GetCommentAutomation200ResponseLogsInnerPlatformError' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::GetCommentAutomation200ResponseLogsInnerPlatformError)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "code"' 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 "subcode"' 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
@@ -105,6 +105,18 @@ describe Zernio::GetCommentAutomation200ResponseLogsInner do
105
105
  end
106
106
  end
107
107
 
108
+ describe 'test attribute "platform_error"' do
109
+ it 'should work' do
110
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
111
+ end
112
+ end
113
+
114
+ describe 'test attribute "private_reply_consumed"' do
115
+ it 'should work' do
116
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
117
+ end
118
+ end
119
+
108
120
  describe 'test attribute "comment_reply_status"' do
109
121
  it 'should work' do
110
122
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -33,6 +33,16 @@ describe Zernio::TargetingSpecExcludedLocations do
33
33
  end
34
34
  end
35
35
 
36
+ describe 'test attribute "country_groups"' do
37
+ it 'should work' do
38
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
39
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('Array<String>', ["africa", "asia", "europe", "north_america", "south_america", "oceania", "central_america", "caribbean", "eea", "euro_area", "nafta", "mercosur", "afta", "apec", "gcc", "cisfta", "emerging_markets", "itunes_app_store", "android_free_store", "android_paid_store"])
40
+ # validator.allowable_values.each do |value|
41
+ # expect { instance.country_groups = value }.not_to raise_error
42
+ # end
43
+ end
44
+ end
45
+
36
46
  describe 'test attribute "regions"' do
37
47
  it 'should work' do
38
48
  # 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.944
4
+ version: 0.0.946
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
@@ -725,6 +725,7 @@ files:
725
725
  - docs/GetCommentAutomation200Response.md
726
726
  - docs/GetCommentAutomation200ResponseAutomation.md
727
727
  - docs/GetCommentAutomation200ResponseLogsInner.md
728
+ - docs/GetCommentAutomation200ResponseLogsInnerPlatformError.md
728
729
  - docs/GetConnectUrl200Response.md
729
730
  - docs/GetContact200Response.md
730
731
  - docs/GetContact200ResponseChannelsInner.md
@@ -2877,6 +2878,7 @@ files:
2877
2878
  - lib/zernio-sdk/models/get_comment_automation200_response.rb
2878
2879
  - lib/zernio-sdk/models/get_comment_automation200_response_automation.rb
2879
2880
  - lib/zernio-sdk/models/get_comment_automation200_response_logs_inner.rb
2881
+ - lib/zernio-sdk/models/get_comment_automation200_response_logs_inner_platform_error.rb
2880
2882
  - lib/zernio-sdk/models/get_connect_url200_response.rb
2881
2883
  - lib/zernio-sdk/models/get_contact200_response.rb
2882
2884
  - lib/zernio-sdk/models/get_contact200_response_channels_inner.rb
@@ -4984,6 +4986,7 @@ files:
4984
4986
  - spec/models/get_campaign_targeting200_response_locations_inner_spec.rb
4985
4987
  - spec/models/get_campaign_targeting200_response_spec.rb
4986
4988
  - spec/models/get_comment_automation200_response_automation_spec.rb
4989
+ - spec/models/get_comment_automation200_response_logs_inner_platform_error_spec.rb
4987
4990
  - spec/models/get_comment_automation200_response_logs_inner_spec.rb
4988
4991
  - spec/models/get_comment_automation200_response_spec.rb
4989
4992
  - spec/models/get_connect_url200_response_spec.rb
@@ -6400,7 +6403,7 @@ files:
6400
6403
  - spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
6401
6404
  - spec/models/you_tube_video_retention_response_spec.rb
6402
6405
  - spec/spec_helper.rb
6403
- - zernio-sdk-0.0.944.gem
6406
+ - zernio-sdk-0.0.946.gem
6404
6407
  - zernio-sdk.gemspec
6405
6408
  homepage: https://openapi-generator.tech
6406
6409
  licenses:
@@ -6830,6 +6833,7 @@ test_files:
6830
6833
  - spec/models/update_youtube_default_playlist200_response_spec.rb
6831
6834
  - spec/models/get_sip_trunk200_response_numbers_inner_spec.rb
6832
6835
  - spec/models/inline_object4_details_spec.rb
6836
+ - spec/models/get_comment_automation200_response_logs_inner_platform_error_spec.rb
6833
6837
  - spec/models/value_rule_set_spec.rb
6834
6838
  - spec/models/get_whats_app_number_info200_response_phone_spec.rb
6835
6839
  - spec/models/send_private_reply_to_comment_request_buttons_inner_spec.rb
Binary file