late-sdk 0.0.712 → 0.0.714
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 +4 -4
- data/README.md +2 -0
- data/docs/AdCampaignsApi.md +1 -1
- data/docs/ContactsApi.md +3 -3
- data/docs/CreateStandaloneAdRequest.md +3 -1
- data/docs/UpdateAdRequestTargeting.md +4 -0
- data/docs/UpdateAdRequestTargetingKeywordsInner.md +49 -0
- data/docs/UpdateAdRequestTargetingKeywordsInnerOneOf.md +20 -0
- data/docs/WebhookPayloadMessageSentMessageSender.md +1 -1
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +2 -2
- data/lib/zernio-sdk/api/contacts_api.rb +4 -4
- data/lib/zernio-sdk/models/create_standalone_ad_request.rb +14 -2
- data/lib/zernio-sdk/models/update_ad_request_targeting.rb +26 -2
- data/lib/zernio-sdk/models/update_ad_request_targeting_keywords_inner.rb +104 -0
- data/lib/zernio-sdk/models/update_ad_request_targeting_keywords_inner_one_of.rb +216 -0
- data/lib/zernio-sdk/models/webhook_payload_message_sent_message_sender.rb +1 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +2 -0
- data/openapi.yaml +27 -6
- data/spec/api/ad_campaigns_api_spec.rb +1 -1
- data/spec/api/contacts_api_spec.rb +2 -2
- data/spec/models/create_standalone_ad_request_spec.rb +6 -0
- data/spec/models/update_ad_request_targeting_keywords_inner_one_of_spec.rb +46 -0
- data/spec/models/update_ad_request_targeting_keywords_inner_spec.rb +32 -0
- data/spec/models/update_ad_request_targeting_spec.rb +12 -0
- data/zernio-sdk-0.0.714.gem +0 -0
- metadata +1611 -1603
- data/zernio-sdk-0.0.712.gem +0 -0
|
@@ -0,0 +1,216 @@
|
|
|
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.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 UpdateAdRequestTargetingKeywordsInnerOneOf < ApiModelBase
|
|
18
|
+
attr_accessor :text
|
|
19
|
+
|
|
20
|
+
attr_accessor :match_type
|
|
21
|
+
|
|
22
|
+
class EnumAttributeValidator
|
|
23
|
+
attr_reader :datatype
|
|
24
|
+
attr_reader :allowable_values
|
|
25
|
+
|
|
26
|
+
def initialize(datatype, allowable_values)
|
|
27
|
+
@allowable_values = allowable_values.map do |value|
|
|
28
|
+
case datatype.to_s
|
|
29
|
+
when /Integer/i
|
|
30
|
+
value.to_i
|
|
31
|
+
when /Float/i
|
|
32
|
+
value.to_f
|
|
33
|
+
else
|
|
34
|
+
value
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def valid?(value)
|
|
40
|
+
!value || allowable_values.include?(value)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
|
45
|
+
def self.attribute_map
|
|
46
|
+
{
|
|
47
|
+
:'text' => :'text',
|
|
48
|
+
:'match_type' => :'matchType'
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Returns attribute mapping this model knows about
|
|
53
|
+
def self.acceptable_attribute_map
|
|
54
|
+
attribute_map
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Returns all the JSON keys this model knows about
|
|
58
|
+
def self.acceptable_attributes
|
|
59
|
+
acceptable_attribute_map.values
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Attribute type mapping.
|
|
63
|
+
def self.openapi_types
|
|
64
|
+
{
|
|
65
|
+
:'text' => :'String',
|
|
66
|
+
:'match_type' => :'String'
|
|
67
|
+
}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# List of attributes with nullable: true
|
|
71
|
+
def self.openapi_nullable
|
|
72
|
+
Set.new([
|
|
73
|
+
])
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Initializes the object
|
|
77
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
78
|
+
def initialize(attributes = {})
|
|
79
|
+
if (!attributes.is_a?(Hash))
|
|
80
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::UpdateAdRequestTargetingKeywordsInnerOneOf` initialize method"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
84
|
+
acceptable_attribute_map = self.class.acceptable_attribute_map
|
|
85
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
86
|
+
if (!acceptable_attribute_map.key?(k.to_sym))
|
|
87
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::UpdateAdRequestTargetingKeywordsInnerOneOf`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
|
|
88
|
+
end
|
|
89
|
+
h[k.to_sym] = v
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if attributes.key?(:'text')
|
|
93
|
+
self.text = attributes[:'text']
|
|
94
|
+
else
|
|
95
|
+
self.text = nil
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
if attributes.key?(:'match_type')
|
|
99
|
+
self.match_type = attributes[:'match_type']
|
|
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 > 80
|
|
113
|
+
invalid_properties.push('invalid value for "text", the character length must be smaller than or equal to 80.')
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
invalid_properties
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Check to see if the all the properties in the model are valid
|
|
120
|
+
# @return true if the model is valid
|
|
121
|
+
def valid?
|
|
122
|
+
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
123
|
+
return false if @text.nil?
|
|
124
|
+
return false if @text.to_s.length > 80
|
|
125
|
+
match_type_validator = EnumAttributeValidator.new('String', ["exact", "phrase", "broad"])
|
|
126
|
+
return false unless match_type_validator.valid?(@match_type)
|
|
127
|
+
true
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Custom attribute writer method with validation
|
|
131
|
+
# @param [Object] text Value to be assigned
|
|
132
|
+
def text=(text)
|
|
133
|
+
if text.nil?
|
|
134
|
+
fail ArgumentError, 'text cannot be nil'
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
if text.to_s.length > 80
|
|
138
|
+
fail ArgumentError, 'invalid value for "text", the character length must be smaller than or equal to 80.'
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
@text = text
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Custom attribute writer method checking allowed values (enum).
|
|
145
|
+
# @param [Object] match_type Object to be assigned
|
|
146
|
+
def match_type=(match_type)
|
|
147
|
+
validator = EnumAttributeValidator.new('String', ["exact", "phrase", "broad"])
|
|
148
|
+
unless validator.valid?(match_type)
|
|
149
|
+
fail ArgumentError, "invalid value for \"match_type\", must be one of #{validator.allowable_values}."
|
|
150
|
+
end
|
|
151
|
+
@match_type = match_type
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Checks equality by comparing each attribute.
|
|
155
|
+
# @param [Object] Object to be compared
|
|
156
|
+
def ==(o)
|
|
157
|
+
return true if self.equal?(o)
|
|
158
|
+
self.class == o.class &&
|
|
159
|
+
text == o.text &&
|
|
160
|
+
match_type == o.match_type
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# @see the `==` method
|
|
164
|
+
# @param [Object] Object to be compared
|
|
165
|
+
def eql?(o)
|
|
166
|
+
self == o
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# Calculates hash code according to all attributes.
|
|
170
|
+
# @return [Integer] Hash code
|
|
171
|
+
def hash
|
|
172
|
+
[text, match_type].hash
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# Builds the object from hash
|
|
176
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
177
|
+
# @return [Object] Returns the model itself
|
|
178
|
+
def self.build_from_hash(attributes)
|
|
179
|
+
return nil unless attributes.is_a?(Hash)
|
|
180
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
181
|
+
transformed_hash = {}
|
|
182
|
+
openapi_types.each_pair do |key, type|
|
|
183
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
184
|
+
transformed_hash["#{key}"] = nil
|
|
185
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
186
|
+
# check to ensure the input is an array given that the attribute
|
|
187
|
+
# is documented as an array but the input is not
|
|
188
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
189
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
190
|
+
end
|
|
191
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
192
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
new(transformed_hash)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Returns the object in the form of hash
|
|
199
|
+
# @return [Hash] Returns the object in the form of hash
|
|
200
|
+
def to_hash
|
|
201
|
+
hash = {}
|
|
202
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
203
|
+
value = self.send(attr)
|
|
204
|
+
if value.nil?
|
|
205
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
206
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
hash[param] = _to_hash(value)
|
|
210
|
+
end
|
|
211
|
+
hash
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
end
|
|
@@ -17,7 +17,7 @@ module Zernio
|
|
|
17
17
|
class WebhookPayloadMessageSentMessageSender < ApiModelBase
|
|
18
18
|
attr_accessor :id
|
|
19
19
|
|
|
20
|
-
#
|
|
20
|
+
# Always omitted on this event: the sender is the business, not a contact. Use conversation.contactId to join back to the CRM Contact.
|
|
21
21
|
attr_accessor :contact_id
|
|
22
22
|
|
|
23
23
|
attr_accessor :name
|
data/lib/zernio-sdk/version.rb
CHANGED
data/lib/zernio-sdk.rb
CHANGED
|
@@ -1350,6 +1350,8 @@ require 'zernio-sdk/models/update_ad_request_budget'
|
|
|
1350
1350
|
require 'zernio-sdk/models/update_ad_request_creative'
|
|
1351
1351
|
require 'zernio-sdk/models/update_ad_request_targeting'
|
|
1352
1352
|
require 'zernio-sdk/models/update_ad_request_targeting_interests_inner'
|
|
1353
|
+
require 'zernio-sdk/models/update_ad_request_targeting_keywords_inner'
|
|
1354
|
+
require 'zernio-sdk/models/update_ad_request_targeting_keywords_inner_one_of'
|
|
1353
1355
|
require 'zernio-sdk/models/update_ad_set200_response'
|
|
1354
1356
|
require 'zernio-sdk/models/update_ad_set_request'
|
|
1355
1357
|
require 'zernio-sdk/models/update_ad_set_request_budget'
|
data/openapi.yaml
CHANGED
|
@@ -3738,7 +3738,7 @@ components:
|
|
|
3738
3738
|
type: string
|
|
3739
3739
|
contactId:
|
|
3740
3740
|
type: string
|
|
3741
|
-
description:
|
|
3741
|
+
description: 'Always omitted on this event: the sender is the business, not a contact. Use conversation.contactId to join back to the CRM Contact.'
|
|
3742
3742
|
name:
|
|
3743
3743
|
type: string
|
|
3744
3744
|
username:
|
|
@@ -34620,12 +34620,12 @@ paths:
|
|
|
34620
34620
|
x-resource-group: "contacts"
|
|
34621
34621
|
operationId: listContacts
|
|
34622
34622
|
summary: List contacts
|
|
34623
|
-
description: List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and
|
|
34623
|
+
description: List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and text search on name, email and company.
|
|
34624
34624
|
tags: [Contacts]
|
|
34625
34625
|
parameters:
|
|
34626
34626
|
- { name: profileId, in: query, schema: { type: string }, description: 'Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.' }
|
|
34627
34627
|
- { name: accountId, in: query, schema: { type: string }, description: 'Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list.' }
|
|
34628
|
-
- { name: search, in: query, schema: { type: string } }
|
|
34628
|
+
- { name: search, in: query, schema: { type: string }, description: 'Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries.' }
|
|
34629
34629
|
- { name: tag, in: query, schema: { type: string } }
|
|
34630
34630
|
- { name: tags, in: query, schema: { type: string }, description: 'Comma-separated tags, matches contacts carrying any of them' }
|
|
34631
34631
|
- { name: platform, in: query, schema: { type: string, enum: [instagram, facebook, telegram, twitter, bluesky, reddit, whatsapp] } }
|
|
@@ -38079,7 +38079,12 @@ paths:
|
|
|
38079
38079
|
- **Meta** (Facebook + Instagram): all fields supported.
|
|
38080
38080
|
- **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative
|
|
38081
38081
|
(via `/v2/ad/update/` patch-style — `headline` is ignored, `body` becomes `ad_text`).
|
|
38082
|
-
- **
|
|
38082
|
+
- **Google**: status, budget, and KEYWORD edits via `targeting.keywords` /
|
|
38083
|
+
`targeting.negativeKeywords` — each list you send becomes the FULL new set of its
|
|
38084
|
+
kind on the ad group (criteria not in the list are removed); a kind left out is
|
|
38085
|
+
untouched. Any other `targeting` field returns 400: Google cannot mutate broad
|
|
38086
|
+
targeting post-create without recreating the campaign. `creative` returns 501.
|
|
38087
|
+
- **Pinterest / X / LinkedIn / OpenAI Ads**: status + budget only. Sending
|
|
38083
38088
|
`targeting` or `creative` returns 501 with code `unsupported_platform_operation`.
|
|
38084
38089
|
OpenAI Ads budget is lifetime-only (see `budget.type` below).
|
|
38085
38090
|
security:
|
|
@@ -38102,8 +38107,23 @@ paths:
|
|
|
38102
38107
|
targeting:
|
|
38103
38108
|
type: object
|
|
38104
38109
|
description: |
|
|
38105
|
-
Meta + TikTok
|
|
38110
|
+
Meta + TikTok (demographics/interests) and Google (keyword edits only).
|
|
38111
|
+
Pinterest / X / LinkedIn return 501.
|
|
38106
38112
|
properties:
|
|
38113
|
+
keywords:
|
|
38114
|
+
type: array
|
|
38115
|
+
description: "Google only. The FULL new set of positive keywords for the ad group; live keywords not listed are removed. Entries are strings (BROAD) or { text, matchType } with matchType exact | phrase | broad. Mirrored to GET /v1/ads/keywords immediately."
|
|
38116
|
+
items:
|
|
38117
|
+
oneOf:
|
|
38118
|
+
- { type: string }
|
|
38119
|
+
- { type: object, required: [text], properties: { text: { type: string, maxLength: 80 }, matchType: { type: string, enum: [exact, phrase, broad] } } }
|
|
38120
|
+
negativeKeywords:
|
|
38121
|
+
type: array
|
|
38122
|
+
description: "Google only. Same declarative contract as keywords, for the ad group's negative keywords."
|
|
38123
|
+
items:
|
|
38124
|
+
oneOf:
|
|
38125
|
+
- { type: string }
|
|
38126
|
+
- { type: object, required: [text], properties: { text: { type: string, maxLength: 80 }, matchType: { type: string, enum: [exact, phrase, broad] } } }
|
|
38107
38127
|
ageMin: { type: integer, minimum: 13, maximum: 65 }
|
|
38108
38128
|
ageMax: { type: integer, minimum: 13, maximum: 65 }
|
|
38109
38129
|
countries: { type: array, items: { type: string } }
|
|
@@ -41000,7 +41020,8 @@ paths:
|
|
|
41000
41020
|
items: { type: string, enum: [mobile, desktop] }
|
|
41001
41021
|
audienceId: { type: string, description: Custom audience ID for targeting }
|
|
41002
41022
|
campaignType: { type: string, enum: [display, search], default: display, description: Google only }
|
|
41003
|
-
keywords: { type: array, items: { type: string }, description: Google Search only }
|
|
41023
|
+
keywords: { type: array, items: { type: string }, description: "Google Search only. BROAD-match keywords on the new ad group (first 20)." }
|
|
41024
|
+
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." }
|
|
41004
41025
|
additionalHeadlines: { type: array, items: { type: string }, description: "Google Search RSA only. Extra headlines." }
|
|
41005
41026
|
additionalDescriptions: { type: array, items: { type: string }, description: "Google Search RSA only. Extra descriptions." }
|
|
41006
41027
|
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." }
|
|
@@ -290,7 +290,7 @@ describe 'AdCampaignsApi' do
|
|
|
290
290
|
|
|
291
291
|
# unit tests for update_ad
|
|
292
292
|
# Update ad
|
|
293
|
-
# Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style — `headline` is ignored, `body` becomes `ad_text`). - **Pinterest / X / LinkedIn /
|
|
293
|
+
# Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style — `headline` is ignored, `body` becomes `ad_text`). - **Google**: status, budget, and KEYWORD edits via `targeting.keywords` / `targeting.negativeKeywords` — each list you send becomes the FULL new set of its kind on the ad group (criteria not in the list are removed); a kind left out is untouched. Any other `targeting` field returns 400: Google cannot mutate broad targeting post-create without recreating the campaign. `creative` returns 501. - **Pinterest / X / LinkedIn / OpenAI Ads**: status + budget only. Sending `targeting` or `creative` returns 501 with code `unsupported_platform_operation`. OpenAI Ads budget is lifetime-only (see `budget.type` below).
|
|
294
294
|
# @param ad_id
|
|
295
295
|
# @param update_ad_request
|
|
296
296
|
# @param [Hash] opts the optional parameters
|
|
@@ -94,11 +94,11 @@ describe 'ContactsApi' do
|
|
|
94
94
|
|
|
95
95
|
# unit tests for list_contacts
|
|
96
96
|
# List contacts
|
|
97
|
-
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and
|
|
97
|
+
# List and search contacts for a profile. Supports filtering by tags, platform, subscription status, and text search on name, email and company.
|
|
98
98
|
# @param [Hash] opts the optional parameters
|
|
99
99
|
# @option opts [String] :profile_id Filter by profile. Omit to list across all profiles. Matches the profile recorded on the contact itself, which is set when the contact is created and is independent of the profile its account currently belongs to. Filter by accountId to list a contact through its channel instead.
|
|
100
100
|
# @option opts [String] :account_id Filter by the SocialAccount that owns the contact channel. Contacts are resolved through their channels, so the profileId contact filter is not applied while accountId is set. A profileId sent alongside is still access-checked and still scopes the returned filters.tags list.
|
|
101
|
-
# @option opts [String] :search
|
|
101
|
+
# @option opts [String] :search Case-insensitive substring match on the contact name, email and company. Phone numbers and other platform identifiers are not matched: they live on the contact channel, not on the contact. To reach a contact from an inbox webhook, use the conversation.contactId it already carries.
|
|
102
102
|
# @option opts [String] :tag
|
|
103
103
|
# @option opts [String] :tags Comma-separated tags, matches contacts carrying any of them
|
|
104
104
|
# @option opts [String] :platform
|
|
@@ -467,6 +467,12 @@ describe Zernio::CreateStandaloneAdRequest do
|
|
|
467
467
|
end
|
|
468
468
|
end
|
|
469
469
|
|
|
470
|
+
describe 'test attribute "negative_keywords"' do
|
|
471
|
+
it 'should work' do
|
|
472
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
473
|
+
end
|
|
474
|
+
end
|
|
475
|
+
|
|
470
476
|
describe 'test attribute "additional_headlines"' do
|
|
471
477
|
it 'should work' do
|
|
472
478
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -0,0 +1,46 @@
|
|
|
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.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::UpdateAdRequestTargetingKeywordsInnerOneOf
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::UpdateAdRequestTargetingKeywordsInnerOneOf do
|
|
21
|
+
#let(:instance) { Zernio::UpdateAdRequestTargetingKeywordsInnerOneOf.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of UpdateAdRequestTargetingKeywordsInnerOneOf' do
|
|
24
|
+
it 'should create an instance of UpdateAdRequestTargetingKeywordsInnerOneOf' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::UpdateAdRequestTargetingKeywordsInnerOneOf)
|
|
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 "match_type"' 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('String', ["exact", "phrase", "broad"])
|
|
40
|
+
# validator.allowable_values.each do |value|
|
|
41
|
+
# expect { instance.match_type = value }.not_to raise_error
|
|
42
|
+
# end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
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.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::UpdateAdRequestTargetingKeywordsInner
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::UpdateAdRequestTargetingKeywordsInner do
|
|
21
|
+
describe '.openapi_one_of' do
|
|
22
|
+
it 'lists the items referenced in the oneOf array' do
|
|
23
|
+
expect(described_class.openapi_one_of).to_not be_empty
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe '.build' do
|
|
28
|
+
it 'returns the correct model' do
|
|
29
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -27,6 +27,18 @@ describe Zernio::UpdateAdRequestTargeting do
|
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
describe 'test attribute "keywords"' 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 "negative_keywords"' 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
|
+
|
|
30
42
|
describe 'test attribute "age_min"' do
|
|
31
43
|
it 'should work' do
|
|
32
44
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
Binary file
|