talon_one 8.0.0 → 9.0.0

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -8
  3. data/docs/AchievementBase.md +35 -0
  4. data/docs/AchievementProgressWithDefinition.md +45 -0
  5. data/docs/AchievementStatusEntry.md +45 -0
  6. data/docs/AnalyticsSKU.md +23 -0
  7. data/docs/ApplicationCIFReferences.md +19 -0
  8. data/docs/CampaignDetail.md +19 -0
  9. data/docs/CampaignStoreBudgetLimitConfig.md +25 -0
  10. data/docs/CampaignTemplate.md +3 -1
  11. data/docs/HiddenConditionsEffects.md +23 -0
  12. data/docs/InlineResponse20048.md +19 -0
  13. data/docs/InlineResponse20049.md +19 -0
  14. data/docs/IntegrationApi.md +3 -1
  15. data/docs/LedgerTransactionLogEntryIntegrationAPI.md +3 -1
  16. data/docs/LoyaltyLedgerEntryFlags.md +17 -0
  17. data/docs/LoyaltyProgramTransaction.md +3 -1
  18. data/docs/ManagementApi.md +164 -323
  19. data/docs/MessageTest.md +27 -0
  20. data/docs/NewMessageTest.md +29 -0
  21. data/docs/ProductUnitAnalyticsDataPoint.md +25 -0
  22. data/docs/ProductUnitAnalyticsTotals.md +17 -0
  23. data/docs/SkuUnitAnalytics.md +19 -0
  24. data/docs/SkuUnitAnalyticsDataPoint.md +23 -0
  25. data/docs/StrikethroughLabelingNotification.md +2 -0
  26. data/lib/talon_one/api/integration_api.rb +3 -0
  27. data/lib/talon_one/api/management_api.rb +191 -354
  28. data/lib/talon_one/models/achievement_base.rb +377 -0
  29. data/lib/talon_one/models/achievement_progress_with_definition.rb +490 -0
  30. data/lib/talon_one/models/achievement_status_entry.rb +472 -0
  31. data/lib/talon_one/models/analytics_sku.rb +246 -0
  32. data/lib/talon_one/models/application_cif_references.rb +219 -0
  33. data/lib/talon_one/models/campaign_detail.rb +232 -0
  34. data/lib/talon_one/models/campaign_store_budget_limit_config.rb +322 -0
  35. data/lib/talon_one/models/campaign_template.rb +16 -4
  36. data/lib/talon_one/models/delete_user_request.rb +0 -1
  37. data/lib/talon_one/models/hidden_conditions_effects.rb +246 -0
  38. data/lib/talon_one/models/inline_response20048.rb +222 -0
  39. data/lib/talon_one/models/inline_response20049.rb +227 -0
  40. data/lib/talon_one/models/ledger_transaction_log_entry_integration_api.rb +13 -4
  41. data/lib/talon_one/models/loyalty_ledger_entry_flags.rb +208 -0
  42. data/lib/talon_one/models/loyalty_program_transaction.rb +13 -4
  43. data/lib/talon_one/models/message_test.rb +227 -0
  44. data/lib/talon_one/models/new_message_test.rb +322 -0
  45. data/lib/talon_one/models/product_unit_analytics_data_point.rb +271 -0
  46. data/lib/talon_one/models/product_unit_analytics_totals.rb +206 -0
  47. data/lib/talon_one/models/sku_unit_analytics.rb +227 -0
  48. data/lib/talon_one/models/sku_unit_analytics_data_point.rb +256 -0
  49. data/lib/talon_one/models/strikethrough_labeling_notification.rb +11 -1
  50. data/lib/talon_one/version.rb +1 -1
  51. data/lib/talon_one.rb +2 -1
  52. data/spec/api/integration_api_spec.rb +1 -0
  53. data/spec/api/management_api_spec.rb +60 -87
  54. data/spec/models/campaign_template_spec.rb +6 -0
  55. data/spec/models/ledger_transaction_log_entry_integration_api_spec.rb +6 -0
  56. data/spec/models/loyalty_program_transaction_spec.rb +6 -0
  57. data/spec/models/revision_activation_request_spec.rb +47 -0
  58. data/spec/models/strikethrough_labeling_notification_spec.rb +6 -0
  59. metadata +563 -527
@@ -0,0 +1,322 @@
1
+ =begin
2
+ #Talon.One API
3
+
4
+ #Use the Talon.One API to integrate with your application and to manage applications and campaigns: - Use the operations in the [Integration API section](#integration-api) are used to integrate with our platform - Use the operation in the [Management API section](#management-api) to manage applications and campaigns. ## Determining the base URL of the endpoints The API is available at the same hostname as your Campaign Manager deployment. For example, if you access the Campaign Manager at `https://yourbaseurl.talon.one/`, the URL for the [updateCustomerSessionV2](https://docs.talon.one/integration-api#operation/updateCustomerSessionV2) endpoint is `https://yourbaseurl.talon.one/v2/customer_sessions/{Id}`
5
+
6
+ The version of the OpenAPI document:
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module TalonOne
16
+ class NewMessageTest
17
+ # The message type.
18
+ attr_accessor :type
19
+
20
+ # Array of query parameters.
21
+ attr_accessor :_query_params
22
+
23
+ # List of API HTTP headers for the given message.
24
+ attr_accessor :headers
25
+
26
+ # API method for this message.
27
+ attr_accessor :verb
28
+
29
+ # API URL for the given message.
30
+ attr_accessor :url
31
+
32
+ # API payload of this message.
33
+ attr_accessor :payload
34
+
35
+ class EnumAttributeValidator
36
+ attr_reader :datatype
37
+ attr_reader :allowable_values
38
+
39
+ def initialize(datatype, allowable_values)
40
+ @allowable_values = allowable_values.map do |value|
41
+ case datatype.to_s
42
+ when /Integer/i
43
+ value.to_i
44
+ when /Float/i
45
+ value.to_f
46
+ else
47
+ value
48
+ end
49
+ end
50
+ end
51
+
52
+ def valid?(value)
53
+ !value || allowable_values.include?(value)
54
+ end
55
+ end
56
+
57
+ # Attribute mapping from ruby-style variable name to JSON key.
58
+ def self.attribute_map
59
+ {
60
+ :'type' => :'type',
61
+ :'_query_params' => :'queryParams',
62
+ :'headers' => :'headers',
63
+ :'verb' => :'verb',
64
+ :'url' => :'url',
65
+ :'payload' => :'payload'
66
+ }
67
+ end
68
+
69
+ # Attribute type mapping.
70
+ def self.openapi_types
71
+ {
72
+ :'type' => :'String',
73
+ :'_query_params' => :'Hash<String, String>',
74
+ :'headers' => :'Hash<String, String>',
75
+ :'verb' => :'String',
76
+ :'url' => :'String',
77
+ :'payload' => :'String'
78
+ }
79
+ end
80
+
81
+ # List of attributes with nullable: true
82
+ def self.openapi_nullable
83
+ Set.new([
84
+ ])
85
+ end
86
+
87
+ # Initializes the object
88
+ # @param [Hash] attributes Model attributes in the form of hash
89
+ def initialize(attributes = {})
90
+ if (!attributes.is_a?(Hash))
91
+ fail ArgumentError, "The input argument (attributes) must be a hash in `TalonOne::NewMessageTest` initialize method"
92
+ end
93
+
94
+ # check to see if the attribute exists and convert string to symbol for hash key
95
+ attributes = attributes.each_with_object({}) { |(k, v), h|
96
+ if (!self.class.attribute_map.key?(k.to_sym))
97
+ fail ArgumentError, "`#{k}` is not a valid attribute in `TalonOne::NewMessageTest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
98
+ end
99
+ h[k.to_sym] = v
100
+ }
101
+
102
+ if attributes.key?(:'type')
103
+ self.type = attributes[:'type']
104
+ end
105
+
106
+ if attributes.key?(:'_query_params')
107
+ if (value = attributes[:'_query_params']).is_a?(Hash)
108
+ self._query_params = value
109
+ end
110
+ end
111
+
112
+ if attributes.key?(:'headers')
113
+ if (value = attributes[:'headers']).is_a?(Hash)
114
+ self.headers = value
115
+ end
116
+ end
117
+
118
+ if attributes.key?(:'verb')
119
+ self.verb = attributes[:'verb']
120
+ end
121
+
122
+ if attributes.key?(:'url')
123
+ self.url = attributes[:'url']
124
+ end
125
+
126
+ if attributes.key?(:'payload')
127
+ self.payload = attributes[:'payload']
128
+ end
129
+ end
130
+
131
+ # Show invalid properties with the reasons. Usually used together with valid?
132
+ # @return Array for valid properties with the reasons
133
+ def list_invalid_properties
134
+ invalid_properties = Array.new
135
+ if @type.nil?
136
+ invalid_properties.push('invalid value for "type", type cannot be nil.')
137
+ end
138
+
139
+ if @verb.nil?
140
+ invalid_properties.push('invalid value for "verb", verb cannot be nil.')
141
+ end
142
+
143
+ if @url.nil?
144
+ invalid_properties.push('invalid value for "url", url cannot be nil.')
145
+ end
146
+
147
+ invalid_properties
148
+ end
149
+
150
+ # Check to see if the all the properties in the model are valid
151
+ # @return true if the model is valid
152
+ def valid?
153
+ return false if @type.nil?
154
+ type_validator = EnumAttributeValidator.new('String', ["campaign", "loyalty_added_deducted_points", "card_added_deducted_points", "coupon", "expiring_coupons", "expiring_points", "pending_to_active_points", "strikethrough_pricing", "tier_downgrade", "tier_upgrade", "tier_will_downgrade", "card_expiring_points", "rule_engine_webhook"])
155
+ return false unless type_validator.valid?(@type)
156
+ return false if @verb.nil?
157
+ verb_validator = EnumAttributeValidator.new('String', ["POST", "PUT", "GET", "DELETE", "PATCH"])
158
+ return false unless verb_validator.valid?(@verb)
159
+ return false if @url.nil?
160
+ true
161
+ end
162
+
163
+ # Custom attribute writer method checking allowed values (enum).
164
+ # @param [Object] type Object to be assigned
165
+ def type=(type)
166
+ validator = EnumAttributeValidator.new('String', ["campaign", "loyalty_added_deducted_points", "card_added_deducted_points", "coupon", "expiring_coupons", "expiring_points", "pending_to_active_points", "strikethrough_pricing", "tier_downgrade", "tier_upgrade", "tier_will_downgrade", "card_expiring_points", "rule_engine_webhook"])
167
+ unless validator.valid?(type)
168
+ fail ArgumentError, "invalid value for \"type\", must be one of #{validator.allowable_values}."
169
+ end
170
+ @type = type
171
+ end
172
+
173
+ # Custom attribute writer method checking allowed values (enum).
174
+ # @param [Object] verb Object to be assigned
175
+ def verb=(verb)
176
+ validator = EnumAttributeValidator.new('String', ["POST", "PUT", "GET", "DELETE", "PATCH"])
177
+ unless validator.valid?(verb)
178
+ fail ArgumentError, "invalid value for \"verb\", must be one of #{validator.allowable_values}."
179
+ end
180
+ @verb = verb
181
+ end
182
+
183
+ # Checks equality by comparing each attribute.
184
+ # @param [Object] Object to be compared
185
+ def ==(o)
186
+ return true if self.equal?(o)
187
+ self.class == o.class &&
188
+ type == o.type &&
189
+ _query_params == o._query_params &&
190
+ headers == o.headers &&
191
+ verb == o.verb &&
192
+ url == o.url &&
193
+ payload == o.payload
194
+ end
195
+
196
+ # @see the `==` method
197
+ # @param [Object] Object to be compared
198
+ def eql?(o)
199
+ self == o
200
+ end
201
+
202
+ # Calculates hash code according to all attributes.
203
+ # @return [Integer] Hash code
204
+ def hash
205
+ [type, _query_params, headers, verb, url, payload].hash
206
+ end
207
+
208
+ # Builds the object from hash
209
+ # @param [Hash] attributes Model attributes in the form of hash
210
+ # @return [Object] Returns the model itself
211
+ def self.build_from_hash(attributes)
212
+ new.build_from_hash(attributes)
213
+ end
214
+
215
+ # Builds the object from hash
216
+ # @param [Hash] attributes Model attributes in the form of hash
217
+ # @return [Object] Returns the model itself
218
+ def build_from_hash(attributes)
219
+ return nil unless attributes.is_a?(Hash)
220
+ self.class.openapi_types.each_pair do |key, type|
221
+ if type =~ /\AArray<(.*)>/i
222
+ # check to ensure the input is an array given that the attribute
223
+ # is documented as an array but the input is not
224
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
225
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
226
+ end
227
+ elsif !attributes[self.class.attribute_map[key]].nil?
228
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
229
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
230
+ end
231
+
232
+ self
233
+ end
234
+
235
+ # Deserializes the data based on type
236
+ # @param string type Data type
237
+ # @param string value Value to be deserialized
238
+ # @return [Object] Deserialized data
239
+ def _deserialize(type, value)
240
+ case type.to_sym
241
+ when :DateTime
242
+ DateTime.parse(value)
243
+ when :Date
244
+ Date.parse(value)
245
+ when :String
246
+ value.to_s
247
+ when :Integer
248
+ value.to_i
249
+ when :Float
250
+ value.to_f
251
+ when :Boolean
252
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
253
+ true
254
+ else
255
+ false
256
+ end
257
+ when :Object
258
+ # generic object (usually a Hash), return directly
259
+ value
260
+ when /\AArray<(?<inner_type>.+)>\z/
261
+ inner_type = Regexp.last_match[:inner_type]
262
+ value.map { |v| _deserialize(inner_type, v) }
263
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
264
+ k_type = Regexp.last_match[:k_type]
265
+ v_type = Regexp.last_match[:v_type]
266
+ {}.tap do |hash|
267
+ value.each do |k, v|
268
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
269
+ end
270
+ end
271
+ else # model
272
+ TalonOne.const_get(type).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
+ end
322
+ end
@@ -0,0 +1,271 @@
1
+ =begin
2
+ #Talon.One API
3
+
4
+ #Use the Talon.One API to integrate with your application and to manage applications and campaigns: - Use the operations in the [Integration API section](#integration-api) are used to integrate with our platform - Use the operation in the [Management API section](#management-api) to manage applications and campaigns. ## Determining the base URL of the endpoints The API is available at the same hostname as your Campaign Manager deployment. For example, if you access the Campaign Manager at `https://yourbaseurl.talon.one/`, the URL for the [updateCustomerSessionV2](https://docs.talon.one/integration-api#operation/updateCustomerSessionV2) endpoint is `https://yourbaseurl.talon.one/v2/customer_sessions/{Id}`
5
+
6
+ The version of the OpenAPI document:
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module TalonOne
16
+ class ProductUnitAnalyticsDataPoint
17
+ # The start of the aggregation time frame in UTC.
18
+ attr_accessor :start_time
19
+
20
+ # The end of the aggregation time frame in UTC.
21
+ attr_accessor :end_time
22
+
23
+ attr_accessor :units_sold
24
+
25
+ # The ID of the product.
26
+ attr_accessor :product_id
27
+
28
+ # The name of the product.
29
+ attr_accessor :product_name
30
+
31
+ # Attribute mapping from ruby-style variable name to JSON key.
32
+ def self.attribute_map
33
+ {
34
+ :'start_time' => :'startTime',
35
+ :'end_time' => :'endTime',
36
+ :'units_sold' => :'unitsSold',
37
+ :'product_id' => :'productId',
38
+ :'product_name' => :'productName'
39
+ }
40
+ end
41
+
42
+ # Attribute type mapping.
43
+ def self.openapi_types
44
+ {
45
+ :'start_time' => :'DateTime',
46
+ :'end_time' => :'DateTime',
47
+ :'units_sold' => :'AnalyticsDataPointWithTrend',
48
+ :'product_id' => :'Integer',
49
+ :'product_name' => :'String'
50
+ }
51
+ end
52
+
53
+ # List of attributes with nullable: true
54
+ def self.openapi_nullable
55
+ Set.new([
56
+ ])
57
+ end
58
+
59
+ # Initializes the object
60
+ # @param [Hash] attributes Model attributes in the form of hash
61
+ def initialize(attributes = {})
62
+ if (!attributes.is_a?(Hash))
63
+ fail ArgumentError, "The input argument (attributes) must be a hash in `TalonOne::ProductUnitAnalyticsDataPoint` initialize method"
64
+ end
65
+
66
+ # check to see if the attribute exists and convert string to symbol for hash key
67
+ attributes = attributes.each_with_object({}) { |(k, v), h|
68
+ if (!self.class.attribute_map.key?(k.to_sym))
69
+ fail ArgumentError, "`#{k}` is not a valid attribute in `TalonOne::ProductUnitAnalyticsDataPoint`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
70
+ end
71
+ h[k.to_sym] = v
72
+ }
73
+
74
+ if attributes.key?(:'start_time')
75
+ self.start_time = attributes[:'start_time']
76
+ end
77
+
78
+ if attributes.key?(:'end_time')
79
+ self.end_time = attributes[:'end_time']
80
+ end
81
+
82
+ if attributes.key?(:'units_sold')
83
+ self.units_sold = attributes[:'units_sold']
84
+ end
85
+
86
+ if attributes.key?(:'product_id')
87
+ self.product_id = attributes[:'product_id']
88
+ end
89
+
90
+ if attributes.key?(:'product_name')
91
+ self.product_name = attributes[:'product_name']
92
+ end
93
+ end
94
+
95
+ # Show invalid properties with the reasons. Usually used together with valid?
96
+ # @return Array for valid properties with the reasons
97
+ def list_invalid_properties
98
+ invalid_properties = Array.new
99
+ if @start_time.nil?
100
+ invalid_properties.push('invalid value for "start_time", start_time cannot be nil.')
101
+ end
102
+
103
+ if @end_time.nil?
104
+ invalid_properties.push('invalid value for "end_time", end_time cannot be nil.')
105
+ end
106
+
107
+ if @units_sold.nil?
108
+ invalid_properties.push('invalid value for "units_sold", units_sold cannot be nil.')
109
+ end
110
+
111
+ if @product_id.nil?
112
+ invalid_properties.push('invalid value for "product_id", product_id cannot be nil.')
113
+ end
114
+
115
+ if @product_name.nil?
116
+ invalid_properties.push('invalid value for "product_name", product_name cannot be nil.')
117
+ end
118
+
119
+ invalid_properties
120
+ end
121
+
122
+ # Check to see if the all the properties in the model are valid
123
+ # @return true if the model is valid
124
+ def valid?
125
+ return false if @start_time.nil?
126
+ return false if @end_time.nil?
127
+ return false if @units_sold.nil?
128
+ return false if @product_id.nil?
129
+ return false if @product_name.nil?
130
+ true
131
+ end
132
+
133
+ # Checks equality by comparing each attribute.
134
+ # @param [Object] Object to be compared
135
+ def ==(o)
136
+ return true if self.equal?(o)
137
+ self.class == o.class &&
138
+ start_time == o.start_time &&
139
+ end_time == o.end_time &&
140
+ units_sold == o.units_sold &&
141
+ product_id == o.product_id &&
142
+ product_name == o.product_name
143
+ end
144
+
145
+ # @see the `==` method
146
+ # @param [Object] Object to be compared
147
+ def eql?(o)
148
+ self == o
149
+ end
150
+
151
+ # Calculates hash code according to all attributes.
152
+ # @return [Integer] Hash code
153
+ def hash
154
+ [start_time, end_time, units_sold, product_id, product_name].hash
155
+ end
156
+
157
+ # Builds the object from hash
158
+ # @param [Hash] attributes Model attributes in the form of hash
159
+ # @return [Object] Returns the model itself
160
+ def self.build_from_hash(attributes)
161
+ new.build_from_hash(attributes)
162
+ end
163
+
164
+ # Builds the object from hash
165
+ # @param [Hash] attributes Model attributes in the form of hash
166
+ # @return [Object] Returns the model itself
167
+ def build_from_hash(attributes)
168
+ return nil unless attributes.is_a?(Hash)
169
+ self.class.openapi_types.each_pair do |key, type|
170
+ if type =~ /\AArray<(.*)>/i
171
+ # check to ensure the input is an array given that the attribute
172
+ # is documented as an array but the input is not
173
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
174
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
175
+ end
176
+ elsif !attributes[self.class.attribute_map[key]].nil?
177
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
178
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
179
+ end
180
+
181
+ self
182
+ end
183
+
184
+ # Deserializes the data based on type
185
+ # @param string type Data type
186
+ # @param string value Value to be deserialized
187
+ # @return [Object] Deserialized data
188
+ def _deserialize(type, value)
189
+ case type.to_sym
190
+ when :DateTime
191
+ DateTime.parse(value)
192
+ when :Date
193
+ Date.parse(value)
194
+ when :String
195
+ value.to_s
196
+ when :Integer
197
+ value.to_i
198
+ when :Float
199
+ value.to_f
200
+ when :Boolean
201
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
202
+ true
203
+ else
204
+ false
205
+ end
206
+ when :Object
207
+ # generic object (usually a Hash), return directly
208
+ value
209
+ when /\AArray<(?<inner_type>.+)>\z/
210
+ inner_type = Regexp.last_match[:inner_type]
211
+ value.map { |v| _deserialize(inner_type, v) }
212
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
213
+ k_type = Regexp.last_match[:k_type]
214
+ v_type = Regexp.last_match[:v_type]
215
+ {}.tap do |hash|
216
+ value.each do |k, v|
217
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
218
+ end
219
+ end
220
+ else # model
221
+ TalonOne.const_get(type).build_from_hash(value)
222
+ end
223
+ end
224
+
225
+ # Returns the string representation of the object
226
+ # @return [String] String presentation of the object
227
+ def to_s
228
+ to_hash.to_s
229
+ end
230
+
231
+ # to_body is an alias to to_hash (backward compatibility)
232
+ # @return [Hash] Returns the object in the form of hash
233
+ def to_body
234
+ to_hash
235
+ end
236
+
237
+ # Returns the object in the form of hash
238
+ # @return [Hash] Returns the object in the form of hash
239
+ def to_hash
240
+ hash = {}
241
+ self.class.attribute_map.each_pair do |attr, param|
242
+ value = self.send(attr)
243
+ if value.nil?
244
+ is_nullable = self.class.openapi_nullable.include?(attr)
245
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
246
+ end
247
+
248
+ hash[param] = _to_hash(value)
249
+ end
250
+ hash
251
+ end
252
+
253
+ # Outputs non-array value in the form of hash
254
+ # For object, use to_hash. Otherwise, just return the value
255
+ # @param [Object] value Any valid value
256
+ # @return [Hash] Returns the value in the form of hash
257
+ def _to_hash(value)
258
+ if value.is_a?(Array)
259
+ value.compact.map { |v| _to_hash(v) }
260
+ elsif value.is_a?(Hash)
261
+ {}.tap do |hash|
262
+ value.each { |k, v| hash[k] = _to_hash(v) }
263
+ end
264
+ elsif value.respond_to? :to_hash
265
+ value.to_hash
266
+ else
267
+ value
268
+ end
269
+ end
270
+ end
271
+ end