avalara_sdk 2.4.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/Avalara.SDK.gemspec +38 -0
  3. data/Gemfile +9 -0
  4. data/README.md +129 -0
  5. data/Rakefile +10 -0
  6. data/TAGS +441 -0
  7. data/avalara_sdk.gemspec +36 -0
  8. data/docs/AgeVerificationApi.md +87 -0
  9. data/docs/AgeVerifyFailureCode.md +15 -0
  10. data/docs/AgeVerifyRequest.md +24 -0
  11. data/docs/AgeVerifyRequestAddress.md +26 -0
  12. data/docs/AgeVerifyResult.md +20 -0
  13. data/docs/ErrorDetails.md +18 -0
  14. data/docs/ErrorDetailsError.md +22 -0
  15. data/docs/ErrorDetailsErrorDetails.md +30 -0
  16. data/docs/ShippingVerificationApi.md +327 -0
  17. data/docs/ShippingVerifyResult.md +30 -0
  18. data/docs/ShippingVerifyResultLines.md +28 -0
  19. data/example/test.rb +25 -0
  20. data/git_push.sh +57 -0
  21. data/lib/avalara_sdk/api/age_verification_api.rb +95 -0
  22. data/lib/avalara_sdk/api/shipping_verification_api.rb +322 -0
  23. data/lib/avalara_sdk/api_client.rb +411 -0
  24. data/lib/avalara_sdk/api_error.rb +57 -0
  25. data/lib/avalara_sdk/configuration.rb +231 -0
  26. data/lib/avalara_sdk/models/age_verify_failure_code.rb +39 -0
  27. data/lib/avalara_sdk/models/age_verify_request.rb +245 -0
  28. data/lib/avalara_sdk/models/age_verify_request_address.rb +288 -0
  29. data/lib/avalara_sdk/models/age_verify_result.rb +230 -0
  30. data/lib/avalara_sdk/models/error_details.rb +217 -0
  31. data/lib/avalara_sdk/models/error_details_error.rb +271 -0
  32. data/lib/avalara_sdk/models/error_details_error_details.rb +324 -0
  33. data/lib/avalara_sdk/models/shipping_verify_result.rb +306 -0
  34. data/lib/avalara_sdk/models/shipping_verify_result_lines.rb +303 -0
  35. data/lib/avalara_sdk/version.rb +13 -0
  36. data/lib/avalara_sdk.rb +48 -0
  37. data/spec/api/age_verification_api_spec.rb +48 -0
  38. data/spec/api/shipping_verification_api_spec.rb +88 -0
  39. data/spec/api_client_spec.rb +224 -0
  40. data/spec/configuration_spec.rb +40 -0
  41. data/spec/models/age_verify_failure_code_spec.rb +28 -0
  42. data/spec/models/age_verify_request_address_spec.rb +62 -0
  43. data/spec/models/age_verify_request_spec.rb +52 -0
  44. data/spec/models/age_verify_result_spec.rb +40 -0
  45. data/spec/models/error_details_error_details_spec.rb +78 -0
  46. data/spec/models/error_details_error_spec.rb +50 -0
  47. data/spec/models/error_details_spec.rb +34 -0
  48. data/spec/models/shipping_verify_result_lines_spec.rb +72 -0
  49. data/spec/models/shipping_verify_result_spec.rb +78 -0
  50. data/spec/spec_helper.rb +108 -0
  51. metadata +147 -0
@@ -0,0 +1,324 @@
1
+ =begin
2
+ #Avalara Shipping Verification only
3
+
4
+ #API for evaluating transactions against direct-to-consumer Beverage Alcohol shipping regulations. This API is currently in beta.
5
+
6
+ SDK Version : 2.4.5.6
7
+
8
+
9
+ =end
10
+
11
+ require 'date'
12
+ require 'time'
13
+
14
+ module AvalaraSdk
15
+ # Message Details Object
16
+ class ErrorDetailsErrorDetails
17
+ # Name of the error or message.
18
+ attr_accessor :code
19
+
20
+ # Concise summary of the message, suitable for display in the caption of an alert box.
21
+ attr_accessor :message
22
+
23
+ # Unique ID number referring to this error or message.
24
+ attr_accessor :number
25
+
26
+ # A more detailed description of the problem referenced by this error message, suitable for display in the contents area of an alert box.
27
+ attr_accessor :description
28
+
29
+ # Indicates the SOAP Fault code, if this was related to an error that corresponded to AvaTax SOAP v1 behavior.
30
+ attr_accessor :fault_code
31
+
32
+ # URL to help for this message
33
+ attr_accessor :help_link
34
+
35
+ # Severity of the message
36
+ attr_accessor :severity
37
+
38
+ class EnumAttributeValidator
39
+ attr_reader :datatype
40
+ attr_reader :allowable_values
41
+
42
+ def initialize(datatype, allowable_values)
43
+ @allowable_values = allowable_values.map do |value|
44
+ case datatype.to_s
45
+ when /Integer/i
46
+ value.to_i
47
+ when /Float/i
48
+ value.to_f
49
+ else
50
+ value
51
+ end
52
+ end
53
+ end
54
+
55
+ def valid?(value)
56
+ !value || allowable_values.include?(value)
57
+ end
58
+ end
59
+
60
+ # Attribute mapping from ruby-style variable name to JSON key.
61
+ def self.attribute_map
62
+ {
63
+ :'code' => :'code',
64
+ :'message' => :'message',
65
+ :'number' => :'number',
66
+ :'description' => :'description',
67
+ :'fault_code' => :'faultCode',
68
+ :'help_link' => :'helpLink',
69
+ :'severity' => :'severity'
70
+ }
71
+ end
72
+
73
+ # Returns all the JSON keys this model knows about
74
+ def self.acceptable_attributes
75
+ attribute_map.values
76
+ end
77
+
78
+ # Attribute type mapping.
79
+ def self.openapi_types
80
+ {
81
+ :'code' => :'String',
82
+ :'message' => :'String',
83
+ :'number' => :'Integer',
84
+ :'description' => :'String',
85
+ :'fault_code' => :'String',
86
+ :'help_link' => :'String',
87
+ :'severity' => :'String'
88
+ }
89
+ end
90
+
91
+ # List of attributes with nullable: true
92
+ def self.openapi_nullable
93
+ Set.new([
94
+ ])
95
+ end
96
+
97
+ # Initializes the object
98
+ # @param [Hash] attributes Model attributes in the form of hash
99
+ def initialize(attributes = {})
100
+ if (!attributes.is_a?(Hash))
101
+ fail ArgumentError, "The input argument (attributes) must be a hash in `AvalaraSdk::ErrorDetailsErrorDetails` initialize method"
102
+ end
103
+
104
+ # check to see if the attribute exists and convert string to symbol for hash key
105
+ attributes = attributes.each_with_object({}) { |(k, v), h|
106
+ if (!self.class.attribute_map.key?(k.to_sym))
107
+ fail ArgumentError, "`#{k}` is not a valid attribute in `AvalaraSdk::ErrorDetailsErrorDetails`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
108
+ end
109
+ h[k.to_sym] = v
110
+ }
111
+
112
+ if attributes.key?(:'code')
113
+ self.code = attributes[:'code']
114
+ end
115
+
116
+ if attributes.key?(:'message')
117
+ self.message = attributes[:'message']
118
+ end
119
+
120
+ if attributes.key?(:'number')
121
+ self.number = attributes[:'number']
122
+ end
123
+
124
+ if attributes.key?(:'description')
125
+ self.description = attributes[:'description']
126
+ end
127
+
128
+ if attributes.key?(:'fault_code')
129
+ self.fault_code = attributes[:'fault_code']
130
+ end
131
+
132
+ if attributes.key?(:'help_link')
133
+ self.help_link = attributes[:'help_link']
134
+ end
135
+
136
+ if attributes.key?(:'severity')
137
+ self.severity = attributes[:'severity']
138
+ end
139
+ end
140
+
141
+ # Show invalid properties with the reasons. Usually used together with valid?
142
+ # @return Array for valid properties with the reasons
143
+ def list_invalid_properties
144
+ invalid_properties = Array.new
145
+ invalid_properties
146
+ end
147
+
148
+ # Check to see if the all the properties in the model are valid
149
+ # @return true if the model is valid
150
+ def valid?
151
+ code_validator = EnumAttributeValidator.new('String', ["AuthenticationException", "SubscriptionRequired", "UnhandledException", "InvalidAddress", "EntityNotFoundError"])
152
+ return false unless code_validator.valid?(@code)
153
+ severity_validator = EnumAttributeValidator.new('String', ["Error"])
154
+ return false unless severity_validator.valid?(@severity)
155
+ true
156
+ end
157
+
158
+ # Custom attribute writer method checking allowed values (enum).
159
+ # @param [Object] code Object to be assigned
160
+ def code=(code)
161
+ validator = EnumAttributeValidator.new('String', ["AuthenticationException", "SubscriptionRequired", "UnhandledException", "InvalidAddress", "EntityNotFoundError"])
162
+ unless validator.valid?(code)
163
+ fail ArgumentError, "invalid value for \"code\", must be one of #{validator.allowable_values}."
164
+ end
165
+ @code = code
166
+ end
167
+
168
+ # Custom attribute writer method checking allowed values (enum).
169
+ # @param [Object] severity Object to be assigned
170
+ def severity=(severity)
171
+ validator = EnumAttributeValidator.new('String', ["Error"])
172
+ unless validator.valid?(severity)
173
+ fail ArgumentError, "invalid value for \"severity\", must be one of #{validator.allowable_values}."
174
+ end
175
+ @severity = severity
176
+ end
177
+
178
+ # Checks equality by comparing each attribute.
179
+ # @param [Object] Object to be compared
180
+ def ==(o)
181
+ return true if self.equal?(o)
182
+ self.class == o.class &&
183
+ code == o.code &&
184
+ message == o.message &&
185
+ number == o.number &&
186
+ description == o.description &&
187
+ fault_code == o.fault_code &&
188
+ help_link == o.help_link &&
189
+ severity == o.severity
190
+ end
191
+
192
+ # @see the `==` method
193
+ # @param [Object] Object to be compared
194
+ def eql?(o)
195
+ self == o
196
+ end
197
+
198
+ # Calculates hash code according to all attributes.
199
+ # @return [Integer] Hash code
200
+ def hash
201
+ [code, message, number, description, fault_code, help_link, severity].hash
202
+ end
203
+
204
+ # Builds the object from hash
205
+ # @param [Hash] attributes Model attributes in the form of hash
206
+ # @return [Object] Returns the model itself
207
+ def self.build_from_hash(attributes)
208
+ new.build_from_hash(attributes)
209
+ end
210
+
211
+ # Builds the object from hash
212
+ # @param [Hash] attributes Model attributes in the form of hash
213
+ # @return [Object] Returns the model itself
214
+ def build_from_hash(attributes)
215
+ return nil unless attributes.is_a?(Hash)
216
+ self.class.openapi_types.each_pair do |key, type|
217
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
218
+ self.send("#{key}=", nil)
219
+ elsif type =~ /\AArray<(.*)>/i
220
+ # check to ensure the input is an array given that the attribute
221
+ # is documented as an array but the input is not
222
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
223
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
224
+ end
225
+ elsif !attributes[self.class.attribute_map[key]].nil?
226
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
227
+ end
228
+ end
229
+
230
+ self
231
+ end
232
+
233
+ # Deserializes the data based on type
234
+ # @param string type Data type
235
+ # @param string value Value to be deserialized
236
+ # @return [Object] Deserialized data
237
+ def _deserialize(type, value)
238
+ case type.to_sym
239
+ when :Time
240
+ Time.parse(value)
241
+ when :Date
242
+ Date.parse(value)
243
+ when :String
244
+ value.to_s
245
+ when :Integer
246
+ value.to_i
247
+ when :Float
248
+ value.to_f
249
+ when :Boolean
250
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
251
+ true
252
+ else
253
+ false
254
+ end
255
+ when :Object
256
+ # generic object (usually a Hash), return directly
257
+ value
258
+ when /\AArray<(?<inner_type>.+)>\z/
259
+ inner_type = Regexp.last_match[:inner_type]
260
+ value.map { |v| _deserialize(inner_type, v) }
261
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
262
+ k_type = Regexp.last_match[:k_type]
263
+ v_type = Regexp.last_match[:v_type]
264
+ {}.tap do |hash|
265
+ value.each do |k, v|
266
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
267
+ end
268
+ end
269
+ else # model
270
+ # models (e.g. Pet) or oneOf
271
+ klass = AvalaraSdk.const_get(type)
272
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
273
+ end
274
+ end
275
+
276
+ # Returns the string representation of the object
277
+ # @return [String] String presentation of the object
278
+ def to_s
279
+ to_hash.to_s
280
+ end
281
+
282
+ # to_body is an alias to to_hash (backward compatibility)
283
+ # @return [Hash] Returns the object in the form of hash
284
+ def to_body
285
+ to_hash
286
+ end
287
+
288
+ # Returns the object in the form of hash
289
+ # @return [Hash] Returns the object in the form of hash
290
+ def to_hash
291
+ hash = {}
292
+ self.class.attribute_map.each_pair do |attr, param|
293
+ value = self.send(attr)
294
+ if value.nil?
295
+ is_nullable = self.class.openapi_nullable.include?(attr)
296
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
297
+ end
298
+
299
+ hash[param] = _to_hash(value)
300
+ end
301
+ hash
302
+ end
303
+
304
+ # Outputs non-array value in the form of hash
305
+ # For object, use to_hash. Otherwise, just return the value
306
+ # @param [Object] value Any valid value
307
+ # @return [Hash] Returns the value in the form of hash
308
+ def _to_hash(value)
309
+ if value.is_a?(Array)
310
+ value.compact.map { |v| _to_hash(v) }
311
+ elsif value.is_a?(Hash)
312
+ {}.tap do |hash|
313
+ value.each { |k, v| hash[k] = _to_hash(v) }
314
+ end
315
+ elsif value.respond_to? :to_hash
316
+ value.to_hash
317
+ else
318
+ value
319
+ end
320
+ end
321
+
322
+ end
323
+
324
+ end
@@ -0,0 +1,306 @@
1
+ =begin
2
+ #Avalara Shipping Verification only
3
+
4
+ #API for evaluating transactions against direct-to-consumer Beverage Alcohol shipping regulations. This API is currently in beta.
5
+
6
+ SDK Version : 2.4.5.6
7
+
8
+
9
+ =end
10
+
11
+ require 'date'
12
+ require 'time'
13
+
14
+ module AvalaraSdk
15
+ # The Response of the /shippingverify endpoint. Describes the result of checking all applicable shipping rules against each line in the transaction.
16
+ class ShippingVerifyResult
17
+ # Whether every line in the transaction is compliant.
18
+ attr_accessor :compliant
19
+
20
+ # A short description of the result of the compliance check.
21
+ attr_accessor :message
22
+
23
+ # A detailed description of the result of each of the passed checks made against this transaction, separated by line.
24
+ attr_accessor :success_messages
25
+
26
+ # A detailed description of the result of each of the failed checks made against this transaction, separated by line.
27
+ attr_accessor :failure_messages
28
+
29
+ # An enumeration of all the failure codes received across all lines.
30
+ attr_accessor :failure_codes
31
+
32
+ # An enumeration of all the warning codes received across all lines that a determination could not be made for.
33
+ attr_accessor :warning_codes
34
+
35
+ # Describes the results of the checks made for each line in the transaction.
36
+ attr_accessor :lines
37
+
38
+ class EnumAttributeValidator
39
+ attr_reader :datatype
40
+ attr_reader :allowable_values
41
+
42
+ def initialize(datatype, allowable_values)
43
+ @allowable_values = allowable_values.map do |value|
44
+ case datatype.to_s
45
+ when /Integer/i
46
+ value.to_i
47
+ when /Float/i
48
+ value.to_f
49
+ else
50
+ value
51
+ end
52
+ end
53
+ end
54
+
55
+ def valid?(value)
56
+ !value || allowable_values.include?(value)
57
+ end
58
+ end
59
+
60
+ # Attribute mapping from ruby-style variable name to JSON key.
61
+ def self.attribute_map
62
+ {
63
+ :'compliant' => :'compliant',
64
+ :'message' => :'message',
65
+ :'success_messages' => :'successMessages',
66
+ :'failure_messages' => :'failureMessages',
67
+ :'failure_codes' => :'failureCodes',
68
+ :'warning_codes' => :'warningCodes',
69
+ :'lines' => :'lines'
70
+ }
71
+ end
72
+
73
+ # Returns all the JSON keys this model knows about
74
+ def self.acceptable_attributes
75
+ attribute_map.values
76
+ end
77
+
78
+ # Attribute type mapping.
79
+ def self.openapi_types
80
+ {
81
+ :'compliant' => :'Boolean',
82
+ :'message' => :'String',
83
+ :'success_messages' => :'String',
84
+ :'failure_messages' => :'String',
85
+ :'failure_codes' => :'Array<String>',
86
+ :'warning_codes' => :'Array<String>',
87
+ :'lines' => :'Array<ShippingVerifyResultLines>'
88
+ }
89
+ end
90
+
91
+ # List of attributes with nullable: true
92
+ def self.openapi_nullable
93
+ Set.new([
94
+ ])
95
+ end
96
+
97
+ # Initializes the object
98
+ # @param [Hash] attributes Model attributes in the form of hash
99
+ def initialize(attributes = {})
100
+ if (!attributes.is_a?(Hash))
101
+ fail ArgumentError, "The input argument (attributes) must be a hash in `AvalaraSdk::ShippingVerifyResult` initialize method"
102
+ end
103
+
104
+ # check to see if the attribute exists and convert string to symbol for hash key
105
+ attributes = attributes.each_with_object({}) { |(k, v), h|
106
+ if (!self.class.attribute_map.key?(k.to_sym))
107
+ fail ArgumentError, "`#{k}` is not a valid attribute in `AvalaraSdk::ShippingVerifyResult`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
108
+ end
109
+ h[k.to_sym] = v
110
+ }
111
+
112
+ if attributes.key?(:'compliant')
113
+ self.compliant = attributes[:'compliant']
114
+ end
115
+
116
+ if attributes.key?(:'message')
117
+ self.message = attributes[:'message']
118
+ end
119
+
120
+ if attributes.key?(:'success_messages')
121
+ self.success_messages = attributes[:'success_messages']
122
+ end
123
+
124
+ if attributes.key?(:'failure_messages')
125
+ self.failure_messages = attributes[:'failure_messages']
126
+ end
127
+
128
+ if attributes.key?(:'failure_codes')
129
+ if (value = attributes[:'failure_codes']).is_a?(Array)
130
+ self.failure_codes = value
131
+ end
132
+ end
133
+
134
+ if attributes.key?(:'warning_codes')
135
+ if (value = attributes[:'warning_codes']).is_a?(Array)
136
+ self.warning_codes = value
137
+ end
138
+ end
139
+
140
+ if attributes.key?(:'lines')
141
+ if (value = attributes[:'lines']).is_a?(Array)
142
+ self.lines = value
143
+ end
144
+ end
145
+ end
146
+
147
+ # Show invalid properties with the reasons. Usually used together with valid?
148
+ # @return Array for valid properties with the reasons
149
+ def list_invalid_properties
150
+ invalid_properties = Array.new
151
+ invalid_properties
152
+ end
153
+
154
+ # Check to see if the all the properties in the model are valid
155
+ # @return true if the model is valid
156
+ def valid?
157
+ true
158
+ end
159
+
160
+ # Checks equality by comparing each attribute.
161
+ # @param [Object] Object to be compared
162
+ def ==(o)
163
+ return true if self.equal?(o)
164
+ self.class == o.class &&
165
+ compliant == o.compliant &&
166
+ message == o.message &&
167
+ success_messages == o.success_messages &&
168
+ failure_messages == o.failure_messages &&
169
+ failure_codes == o.failure_codes &&
170
+ warning_codes == o.warning_codes &&
171
+ lines == o.lines
172
+ end
173
+
174
+ # @see the `==` method
175
+ # @param [Object] Object to be compared
176
+ def eql?(o)
177
+ self == o
178
+ end
179
+
180
+ # Calculates hash code according to all attributes.
181
+ # @return [Integer] Hash code
182
+ def hash
183
+ [compliant, message, success_messages, failure_messages, failure_codes, warning_codes, lines].hash
184
+ end
185
+
186
+ # Builds the object from hash
187
+ # @param [Hash] attributes Model attributes in the form of hash
188
+ # @return [Object] Returns the model itself
189
+ def self.build_from_hash(attributes)
190
+ new.build_from_hash(attributes)
191
+ end
192
+
193
+ # Builds the object from hash
194
+ # @param [Hash] attributes Model attributes in the form of hash
195
+ # @return [Object] Returns the model itself
196
+ def build_from_hash(attributes)
197
+ return nil unless attributes.is_a?(Hash)
198
+ self.class.openapi_types.each_pair do |key, type|
199
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
200
+ self.send("#{key}=", nil)
201
+ elsif type =~ /\AArray<(.*)>/i
202
+ # check to ensure the input is an array given that the attribute
203
+ # is documented as an array but the input is not
204
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
205
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
206
+ end
207
+ elsif !attributes[self.class.attribute_map[key]].nil?
208
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
209
+ end
210
+ end
211
+
212
+ self
213
+ end
214
+
215
+ # Deserializes the data based on type
216
+ # @param string type Data type
217
+ # @param string value Value to be deserialized
218
+ # @return [Object] Deserialized data
219
+ def _deserialize(type, value)
220
+ case type.to_sym
221
+ when :Time
222
+ Time.parse(value)
223
+ when :Date
224
+ Date.parse(value)
225
+ when :String
226
+ value.to_s
227
+ when :Integer
228
+ value.to_i
229
+ when :Float
230
+ value.to_f
231
+ when :Boolean
232
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
233
+ true
234
+ else
235
+ false
236
+ end
237
+ when :Object
238
+ # generic object (usually a Hash), return directly
239
+ value
240
+ when /\AArray<(?<inner_type>.+)>\z/
241
+ inner_type = Regexp.last_match[:inner_type]
242
+ value.map { |v| _deserialize(inner_type, v) }
243
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
244
+ k_type = Regexp.last_match[:k_type]
245
+ v_type = Regexp.last_match[:v_type]
246
+ {}.tap do |hash|
247
+ value.each do |k, v|
248
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
249
+ end
250
+ end
251
+ else # model
252
+ # models (e.g. Pet) or oneOf
253
+ klass = AvalaraSdk.const_get(type)
254
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
255
+ end
256
+ end
257
+
258
+ # Returns the string representation of the object
259
+ # @return [String] String presentation of the object
260
+ def to_s
261
+ to_hash.to_s
262
+ end
263
+
264
+ # to_body is an alias to to_hash (backward compatibility)
265
+ # @return [Hash] Returns the object in the form of hash
266
+ def to_body
267
+ to_hash
268
+ end
269
+
270
+ # Returns the object in the form of hash
271
+ # @return [Hash] Returns the object in the form of hash
272
+ def to_hash
273
+ hash = {}
274
+ self.class.attribute_map.each_pair do |attr, param|
275
+ value = self.send(attr)
276
+ if value.nil?
277
+ is_nullable = self.class.openapi_nullable.include?(attr)
278
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
279
+ end
280
+
281
+ hash[param] = _to_hash(value)
282
+ end
283
+ hash
284
+ end
285
+
286
+ # Outputs non-array value in the form of hash
287
+ # For object, use to_hash. Otherwise, just return the value
288
+ # @param [Object] value Any valid value
289
+ # @return [Hash] Returns the value in the form of hash
290
+ def _to_hash(value)
291
+ if value.is_a?(Array)
292
+ value.compact.map { |v| _to_hash(v) }
293
+ elsif value.is_a?(Hash)
294
+ {}.tap do |hash|
295
+ value.each { |k, v| hash[k] = _to_hash(v) }
296
+ end
297
+ elsif value.respond_to? :to_hash
298
+ value.to_hash
299
+ else
300
+ value
301
+ end
302
+ end
303
+
304
+ end
305
+
306
+ end