late-sdk 0.0.658 → 0.0.660

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -0
  3. data/docs/AdAccountsApi.md +364 -0
  4. data/docs/AdCampaignsApi.md +1 -1
  5. data/docs/BoostPostRequest.md +3 -1
  6. data/docs/CreateStandaloneAdRequest.md +4 -0
  7. data/docs/CreateValueRuleSet201Response.md +20 -0
  8. data/docs/CreateValueRuleSetRequest.md +24 -0
  9. data/docs/DeleteValueRuleSet200Response.md +20 -0
  10. data/docs/GetValueRuleSet200Response.md +18 -0
  11. data/docs/ListValueRuleSets200Response.md +22 -0
  12. data/docs/ListValueRuleSets200ResponsePaging.md +18 -0
  13. data/docs/UpdateAdSetRequest.md +4 -0
  14. data/docs/UpdateValueRuleSet200Response.md +24 -0
  15. data/docs/UpdateValueRuleSetRequest.md +22 -0
  16. data/docs/ValueRule.md +28 -0
  17. data/docs/ValueRuleCriterion.md +26 -0
  18. data/docs/ValueRuleSet.md +22 -0
  19. data/lib/zernio-sdk/api/ad_accounts_api.rb +367 -0
  20. data/lib/zernio-sdk/api/ad_campaigns_api.rb +2 -2
  21. data/lib/zernio-sdk/models/boost_post_request.rb +14 -4
  22. data/lib/zernio-sdk/models/create_standalone_ad_request.rb +42 -1
  23. data/lib/zernio-sdk/models/create_value_rule_set201_response.rb +158 -0
  24. data/lib/zernio-sdk/models/create_value_rule_set_request.rb +283 -0
  25. data/lib/zernio-sdk/models/delete_value_rule_set200_response.rb +156 -0
  26. data/lib/zernio-sdk/models/get_value_rule_set200_response.rb +147 -0
  27. data/lib/zernio-sdk/models/list_value_rule_sets200_response.rb +167 -0
  28. data/lib/zernio-sdk/models/list_value_rule_sets200_response_paging.rb +149 -0
  29. data/lib/zernio-sdk/models/update_ad_set_request.rb +42 -1
  30. data/lib/zernio-sdk/models/update_value_rule_set200_response.rb +176 -0
  31. data/lib/zernio-sdk/models/update_value_rule_set_request.rb +257 -0
  32. data/lib/zernio-sdk/models/value_rule.rb +346 -0
  33. data/lib/zernio-sdk/models/value_rule_criterion.rb +305 -0
  34. data/lib/zernio-sdk/models/value_rule_set.rb +221 -0
  35. data/lib/zernio-sdk/version.rb +1 -1
  36. data/lib/zernio-sdk.rb +11 -0
  37. data/openapi.yaml +406 -3
  38. data/spec/api/ad_accounts_api_spec.rb +66 -0
  39. data/spec/api/ad_campaigns_api_spec.rb +1 -1
  40. data/spec/models/boost_post_request_spec.rb +6 -0
  41. data/spec/models/create_standalone_ad_request_spec.rb +12 -0
  42. data/spec/models/create_value_rule_set201_response_spec.rb +42 -0
  43. data/spec/models/create_value_rule_set_request_spec.rb +54 -0
  44. data/spec/models/delete_value_rule_set200_response_spec.rb +42 -0
  45. data/spec/models/get_value_rule_set200_response_spec.rb +36 -0
  46. data/spec/models/list_value_rule_sets200_response_paging_spec.rb +36 -0
  47. data/spec/models/list_value_rule_sets200_response_spec.rb +48 -0
  48. data/spec/models/update_ad_set_request_spec.rb +12 -0
  49. data/spec/models/update_value_rule_set200_response_spec.rb +54 -0
  50. data/spec/models/update_value_rule_set_request_spec.rb +48 -0
  51. data/spec/models/value_rule_criterion_spec.rb +68 -0
  52. data/spec/models/value_rule_set_spec.rb +48 -0
  53. data/spec/models/value_rule_spec.rb +70 -0
  54. data/zernio-sdk-0.0.660.gem +0 -0
  55. metadata +46 -2
  56. data/zernio-sdk-0.0.658.gem +0 -0
@@ -34,6 +34,12 @@ module Zernio
34
34
  # Minimum ROAS as a decimal multiplier (2.0 = 2.0x). Required when bidStrategy is LOWEST_COST_WITH_MIN_ROAS. Sent to Meta as `bid_constraints.roas_average_floor` × 10000. Not supported on OpenAI (422).
35
35
  attr_accessor :roas_average_floor
36
36
 
37
+ # Meta only (other platforms return 501). Value rule set to attach to this ad set, from `/v1/ads/value-rule-sets`. Sending a different id replaces the current association. To DETACH, send `valueRulesApplied: false` and omit this field.
38
+ attr_accessor :value_rule_set_id
39
+
40
+ # Meta only (other platforms return 501). `false` DETACHES the ad set's value rule set and must be sent WITHOUT `valueRuleSetId`; the combination returns 400. `true` is optional when attaching, since attachment is driven by `valueRuleSetId`, and requires it to be present.
41
+ attr_accessor :value_rules_applied
42
+
37
43
  attr_accessor :platform_specific_data
38
44
 
39
45
  class EnumAttributeValidator
@@ -68,6 +74,8 @@ module Zernio
68
74
  :'bid_strategy' => :'bidStrategy',
69
75
  :'bid_amount' => :'bidAmount',
70
76
  :'roas_average_floor' => :'roasAverageFloor',
77
+ :'value_rule_set_id' => :'valueRuleSetId',
78
+ :'value_rules_applied' => :'valueRulesApplied',
71
79
  :'platform_specific_data' => :'platformSpecificData'
72
80
  }
73
81
  end
@@ -92,6 +100,8 @@ module Zernio
92
100
  :'bid_strategy' => :'BidStrategy',
93
101
  :'bid_amount' => :'Float',
94
102
  :'roas_average_floor' => :'Float',
103
+ :'value_rule_set_id' => :'String',
104
+ :'value_rules_applied' => :'Boolean',
95
105
  :'platform_specific_data' => :'UpdateAdSetRequestPlatformSpecificData'
96
106
  }
97
107
  end
@@ -148,6 +158,14 @@ module Zernio
148
158
  self.roas_average_floor = attributes[:'roas_average_floor']
149
159
  end
150
160
 
161
+ if attributes.key?(:'value_rule_set_id')
162
+ self.value_rule_set_id = attributes[:'value_rule_set_id']
163
+ end
164
+
165
+ if attributes.key?(:'value_rules_applied')
166
+ self.value_rules_applied = attributes[:'value_rules_applied']
167
+ end
168
+
151
169
  if attributes.key?(:'platform_specific_data')
152
170
  self.platform_specific_data = attributes[:'platform_specific_data']
153
171
  end
@@ -166,6 +184,11 @@ module Zernio
166
184
  invalid_properties.push('invalid value for "name", the character length must be smaller than or equal to 255.')
167
185
  end
168
186
 
187
+ pattern = Regexp.new(/^\d+$/)
188
+ if !@value_rule_set_id.nil? && @value_rule_set_id !~ pattern
189
+ invalid_properties.push("invalid value for \"value_rule_set_id\", must conform to the pattern #{pattern}.")
190
+ end
191
+
169
192
  invalid_properties
170
193
  end
171
194
 
@@ -179,6 +202,7 @@ module Zernio
179
202
  status_validator = EnumAttributeValidator.new('String', ["active", "paused"])
180
203
  return false unless status_validator.valid?(@status)
181
204
  return false if !@name.nil? && @name.to_s.length > 255
205
+ return false if !@value_rule_set_id.nil? && @value_rule_set_id !~ Regexp.new(/^\d+$/)
182
206
  true
183
207
  end
184
208
 
@@ -216,6 +240,21 @@ module Zernio
216
240
  @name = name
217
241
  end
218
242
 
243
+ # Custom attribute writer method with validation
244
+ # @param [Object] value_rule_set_id Value to be assigned
245
+ def value_rule_set_id=(value_rule_set_id)
246
+ if value_rule_set_id.nil?
247
+ fail ArgumentError, 'value_rule_set_id cannot be nil'
248
+ end
249
+
250
+ pattern = Regexp.new(/^\d+$/)
251
+ if value_rule_set_id !~ pattern
252
+ fail ArgumentError, "invalid value for \"value_rule_set_id\", must conform to the pattern #{pattern}."
253
+ end
254
+
255
+ @value_rule_set_id = value_rule_set_id
256
+ end
257
+
219
258
  # Checks equality by comparing each attribute.
220
259
  # @param [Object] Object to be compared
221
260
  def ==(o)
@@ -228,6 +267,8 @@ module Zernio
228
267
  bid_strategy == o.bid_strategy &&
229
268
  bid_amount == o.bid_amount &&
230
269
  roas_average_floor == o.roas_average_floor &&
270
+ value_rule_set_id == o.value_rule_set_id &&
271
+ value_rules_applied == o.value_rules_applied &&
231
272
  platform_specific_data == o.platform_specific_data
232
273
  end
233
274
 
@@ -240,7 +281,7 @@ module Zernio
240
281
  # Calculates hash code according to all attributes.
241
282
  # @return [Integer] Hash code
242
283
  def hash
243
- [platform, budget, status, name, bid_strategy, bid_amount, roas_average_floor, platform_specific_data].hash
284
+ [platform, budget, status, name, bid_strategy, bid_amount, roas_average_floor, value_rule_set_id, value_rules_applied, platform_specific_data].hash
244
285
  end
245
286
 
246
287
  # Builds the object from hash
@@ -0,0 +1,176 @@
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 UpdateValueRuleSet200Response < ApiModelBase
18
+ attr_accessor :value_rule_set_id
19
+
20
+ attr_accessor :name
21
+
22
+ attr_accessor :rules
23
+
24
+ attr_accessor :message
25
+
26
+ # Attribute mapping from ruby-style variable name to JSON key.
27
+ def self.attribute_map
28
+ {
29
+ :'value_rule_set_id' => :'valueRuleSetId',
30
+ :'name' => :'name',
31
+ :'rules' => :'rules',
32
+ :'message' => :'message'
33
+ }
34
+ end
35
+
36
+ # Returns attribute mapping this model knows about
37
+ def self.acceptable_attribute_map
38
+ attribute_map
39
+ end
40
+
41
+ # Returns all the JSON keys this model knows about
42
+ def self.acceptable_attributes
43
+ acceptable_attribute_map.values
44
+ end
45
+
46
+ # Attribute type mapping.
47
+ def self.openapi_types
48
+ {
49
+ :'value_rule_set_id' => :'String',
50
+ :'name' => :'String',
51
+ :'rules' => :'Array<ValueRule>',
52
+ :'message' => :'String'
53
+ }
54
+ end
55
+
56
+ # List of attributes with nullable: true
57
+ def self.openapi_nullable
58
+ Set.new([
59
+ ])
60
+ end
61
+
62
+ # Initializes the object
63
+ # @param [Hash] attributes Model attributes in the form of hash
64
+ def initialize(attributes = {})
65
+ if (!attributes.is_a?(Hash))
66
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::UpdateValueRuleSet200Response` initialize method"
67
+ end
68
+
69
+ # check to see if the attribute exists and convert string to symbol for hash key
70
+ acceptable_attribute_map = self.class.acceptable_attribute_map
71
+ attributes = attributes.each_with_object({}) { |(k, v), h|
72
+ if (!acceptable_attribute_map.key?(k.to_sym))
73
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::UpdateValueRuleSet200Response`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
74
+ end
75
+ h[k.to_sym] = v
76
+ }
77
+
78
+ if attributes.key?(:'value_rule_set_id')
79
+ self.value_rule_set_id = attributes[:'value_rule_set_id']
80
+ end
81
+
82
+ if attributes.key?(:'name')
83
+ self.name = attributes[:'name']
84
+ end
85
+
86
+ if attributes.key?(:'rules')
87
+ if (value = attributes[:'rules']).is_a?(Array)
88
+ self.rules = value
89
+ end
90
+ end
91
+
92
+ if attributes.key?(:'message')
93
+ self.message = attributes[:'message']
94
+ end
95
+ end
96
+
97
+ # Show invalid properties with the reasons. Usually used together with valid?
98
+ # @return Array for valid properties with the reasons
99
+ def list_invalid_properties
100
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
101
+ invalid_properties = Array.new
102
+ invalid_properties
103
+ end
104
+
105
+ # Check to see if the all the properties in the model are valid
106
+ # @return true if the model is valid
107
+ def valid?
108
+ warn '[DEPRECATED] the `valid?` method is obsolete'
109
+ true
110
+ end
111
+
112
+ # Checks equality by comparing each attribute.
113
+ # @param [Object] Object to be compared
114
+ def ==(o)
115
+ return true if self.equal?(o)
116
+ self.class == o.class &&
117
+ value_rule_set_id == o.value_rule_set_id &&
118
+ name == o.name &&
119
+ rules == o.rules &&
120
+ message == o.message
121
+ end
122
+
123
+ # @see the `==` method
124
+ # @param [Object] Object to be compared
125
+ def eql?(o)
126
+ self == o
127
+ end
128
+
129
+ # Calculates hash code according to all attributes.
130
+ # @return [Integer] Hash code
131
+ def hash
132
+ [value_rule_set_id, name, rules, message].hash
133
+ end
134
+
135
+ # Builds the object from hash
136
+ # @param [Hash] attributes Model attributes in the form of hash
137
+ # @return [Object] Returns the model itself
138
+ def self.build_from_hash(attributes)
139
+ return nil unless attributes.is_a?(Hash)
140
+ attributes = attributes.transform_keys(&:to_sym)
141
+ transformed_hash = {}
142
+ openapi_types.each_pair do |key, type|
143
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
144
+ transformed_hash["#{key}"] = nil
145
+ elsif type =~ /\AArray<(.*)>/i
146
+ # check to ensure the input is an array given that the attribute
147
+ # is documented as an array but the input is not
148
+ if attributes[attribute_map[key]].is_a?(Array)
149
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
150
+ end
151
+ elsif !attributes[attribute_map[key]].nil?
152
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
153
+ end
154
+ end
155
+ new(transformed_hash)
156
+ end
157
+
158
+ # Returns the object in the form of hash
159
+ # @return [Hash] Returns the object in the form of hash
160
+ def to_hash
161
+ hash = {}
162
+ self.class.attribute_map.each_pair do |attr, param|
163
+ value = self.send(attr)
164
+ if value.nil?
165
+ is_nullable = self.class.openapi_nullable.include?(attr)
166
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
167
+ end
168
+
169
+ hash[param] = _to_hash(value)
170
+ end
171
+ hash
172
+ end
173
+
174
+ end
175
+
176
+ end
@@ -0,0 +1,257 @@
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 UpdateValueRuleSetRequest < ApiModelBase
18
+ # Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
19
+ attr_accessor :account_id
20
+
21
+ # Required: the update replaces the whole set.
22
+ attr_accessor :name
23
+
24
+ # The COMPLETE rule list. Omitting a rule deletes it on Meta.
25
+ attr_accessor :rules
26
+
27
+ # Attribute mapping from ruby-style variable name to JSON key.
28
+ def self.attribute_map
29
+ {
30
+ :'account_id' => :'accountId',
31
+ :'name' => :'name',
32
+ :'rules' => :'rules'
33
+ }
34
+ end
35
+
36
+ # Returns attribute mapping this model knows about
37
+ def self.acceptable_attribute_map
38
+ attribute_map
39
+ end
40
+
41
+ # Returns all the JSON keys this model knows about
42
+ def self.acceptable_attributes
43
+ acceptable_attribute_map.values
44
+ end
45
+
46
+ # Attribute type mapping.
47
+ def self.openapi_types
48
+ {
49
+ :'account_id' => :'String',
50
+ :'name' => :'String',
51
+ :'rules' => :'Array<ValueRule>'
52
+ }
53
+ end
54
+
55
+ # List of attributes with nullable: true
56
+ def self.openapi_nullable
57
+ Set.new([
58
+ ])
59
+ end
60
+
61
+ # Initializes the object
62
+ # @param [Hash] attributes Model attributes in the form of hash
63
+ def initialize(attributes = {})
64
+ if (!attributes.is_a?(Hash))
65
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::UpdateValueRuleSetRequest` initialize method"
66
+ end
67
+
68
+ # check to see if the attribute exists and convert string to symbol for hash key
69
+ acceptable_attribute_map = self.class.acceptable_attribute_map
70
+ attributes = attributes.each_with_object({}) { |(k, v), h|
71
+ if (!acceptable_attribute_map.key?(k.to_sym))
72
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::UpdateValueRuleSetRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
73
+ end
74
+ h[k.to_sym] = v
75
+ }
76
+
77
+ if attributes.key?(:'account_id')
78
+ self.account_id = attributes[:'account_id']
79
+ else
80
+ self.account_id = nil
81
+ end
82
+
83
+ if attributes.key?(:'name')
84
+ self.name = attributes[:'name']
85
+ else
86
+ self.name = nil
87
+ end
88
+
89
+ if attributes.key?(:'rules')
90
+ if (value = attributes[:'rules']).is_a?(Array)
91
+ self.rules = value
92
+ end
93
+ else
94
+ self.rules = nil
95
+ end
96
+ end
97
+
98
+ # Show invalid properties with the reasons. Usually used together with valid?
99
+ # @return Array for valid properties with the reasons
100
+ def list_invalid_properties
101
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
102
+ invalid_properties = Array.new
103
+ if @account_id.nil?
104
+ invalid_properties.push('invalid value for "account_id", account_id cannot be nil.')
105
+ end
106
+
107
+ if @name.nil?
108
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
109
+ end
110
+
111
+ if @name.to_s.length > 255
112
+ invalid_properties.push('invalid value for "name", the character length must be smaller than or equal to 255.')
113
+ end
114
+
115
+ if @name.to_s.length < 1
116
+ invalid_properties.push('invalid value for "name", the character length must be greater than or equal to 1.')
117
+ end
118
+
119
+ if @rules.nil?
120
+ invalid_properties.push('invalid value for "rules", rules cannot be nil.')
121
+ end
122
+
123
+ if @rules.length > 10
124
+ invalid_properties.push('invalid value for "rules", number of items must be less than or equal to 10.')
125
+ end
126
+
127
+ if @rules.length < 1
128
+ invalid_properties.push('invalid value for "rules", number of items must be greater than or equal to 1.')
129
+ end
130
+
131
+ invalid_properties
132
+ end
133
+
134
+ # Check to see if the all the properties in the model are valid
135
+ # @return true if the model is valid
136
+ def valid?
137
+ warn '[DEPRECATED] the `valid?` method is obsolete'
138
+ return false if @account_id.nil?
139
+ return false if @name.nil?
140
+ return false if @name.to_s.length > 255
141
+ return false if @name.to_s.length < 1
142
+ return false if @rules.nil?
143
+ return false if @rules.length > 10
144
+ return false if @rules.length < 1
145
+ true
146
+ end
147
+
148
+ # Custom attribute writer method with validation
149
+ # @param [Object] account_id Value to be assigned
150
+ def account_id=(account_id)
151
+ if account_id.nil?
152
+ fail ArgumentError, 'account_id cannot be nil'
153
+ end
154
+
155
+ @account_id = account_id
156
+ end
157
+
158
+ # Custom attribute writer method with validation
159
+ # @param [Object] name Value to be assigned
160
+ def name=(name)
161
+ if name.nil?
162
+ fail ArgumentError, 'name cannot be nil'
163
+ end
164
+
165
+ if name.to_s.length > 255
166
+ fail ArgumentError, 'invalid value for "name", the character length must be smaller than or equal to 255.'
167
+ end
168
+
169
+ if name.to_s.length < 1
170
+ fail ArgumentError, 'invalid value for "name", the character length must be greater than or equal to 1.'
171
+ end
172
+
173
+ @name = name
174
+ end
175
+
176
+ # Custom attribute writer method with validation
177
+ # @param [Object] rules Value to be assigned
178
+ def rules=(rules)
179
+ if rules.nil?
180
+ fail ArgumentError, 'rules cannot be nil'
181
+ end
182
+
183
+ if rules.length > 10
184
+ fail ArgumentError, 'invalid value for "rules", number of items must be less than or equal to 10.'
185
+ end
186
+
187
+ if rules.length < 1
188
+ fail ArgumentError, 'invalid value for "rules", number of items must be greater than or equal to 1.'
189
+ end
190
+
191
+ @rules = rules
192
+ end
193
+
194
+ # Checks equality by comparing each attribute.
195
+ # @param [Object] Object to be compared
196
+ def ==(o)
197
+ return true if self.equal?(o)
198
+ self.class == o.class &&
199
+ account_id == o.account_id &&
200
+ name == o.name &&
201
+ rules == o.rules
202
+ end
203
+
204
+ # @see the `==` method
205
+ # @param [Object] Object to be compared
206
+ def eql?(o)
207
+ self == o
208
+ end
209
+
210
+ # Calculates hash code according to all attributes.
211
+ # @return [Integer] Hash code
212
+ def hash
213
+ [account_id, name, rules].hash
214
+ end
215
+
216
+ # Builds the object from hash
217
+ # @param [Hash] attributes Model attributes in the form of hash
218
+ # @return [Object] Returns the model itself
219
+ def self.build_from_hash(attributes)
220
+ return nil unless attributes.is_a?(Hash)
221
+ attributes = attributes.transform_keys(&:to_sym)
222
+ transformed_hash = {}
223
+ openapi_types.each_pair do |key, type|
224
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
225
+ transformed_hash["#{key}"] = nil
226
+ elsif type =~ /\AArray<(.*)>/i
227
+ # check to ensure the input is an array given that the attribute
228
+ # is documented as an array but the input is not
229
+ if attributes[attribute_map[key]].is_a?(Array)
230
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
231
+ end
232
+ elsif !attributes[attribute_map[key]].nil?
233
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
234
+ end
235
+ end
236
+ new(transformed_hash)
237
+ end
238
+
239
+ # Returns the object in the form of hash
240
+ # @return [Hash] Returns the object in the form of hash
241
+ def to_hash
242
+ hash = {}
243
+ self.class.attribute_map.each_pair do |attr, param|
244
+ value = self.send(attr)
245
+ if value.nil?
246
+ is_nullable = self.class.openapi_nullable.include?(attr)
247
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
248
+ end
249
+
250
+ hash[param] = _to_hash(value)
251
+ end
252
+ hash
253
+ end
254
+
255
+ end
256
+
257
+ end