transferzero-sdk 1.14.0 → 1.15.1

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -5
  3. data/docs/AccountValidationRequest.md +2 -0
  4. data/docs/PayoutMethod.md +1 -1
  5. data/docs/{PayoutMethodEntityTypeEnum.md → PayoutMethodCountryEnumUSDBank.md} +2 -2
  6. data/docs/PayoutMethodDetails.md +12 -8
  7. data/docs/PayoutMethodDetailsKESBank.md +37 -0
  8. data/docs/PayoutMethodDetailsKESMobile.md +31 -0
  9. data/docs/PayoutMethodDetailsUSDBank.md +27 -0
  10. data/docs/PayoutMethodDetailsXOFBank.md +5 -3
  11. data/docs/PayoutMethodDetailsZARBank.md +3 -3
  12. data/docs/PayoutMethodLegalEntityTypeEnum.md +16 -0
  13. data/docs/PayoutMethodNatureOfBusinessEnum.md +16 -0
  14. data/docs/TransactionsApi.md +2 -0
  15. data/lib/transferzero-sdk.rb +6 -1
  16. data/lib/transferzero-sdk/api/transactions_api.rb +6 -0
  17. data/lib/transferzero-sdk/api_client.rb +2 -2
  18. data/lib/transferzero-sdk/models/account_validation_request.rb +15 -5
  19. data/lib/transferzero-sdk/models/payout_method.rb +1 -1
  20. data/lib/transferzero-sdk/models/payout_method_country_enum.rb +234 -8
  21. data/lib/transferzero-sdk/models/payout_method_country_enum_usd_bank.rb +269 -0
  22. data/lib/transferzero-sdk/models/payout_method_details.rb +55 -14
  23. data/lib/transferzero-sdk/models/payout_method_details_kes_bank.rb +343 -0
  24. data/lib/transferzero-sdk/models/payout_method_details_kes_mobile.rb +306 -0
  25. data/lib/transferzero-sdk/models/payout_method_details_usd_bank.rb +278 -0
  26. data/lib/transferzero-sdk/models/payout_method_details_xof_bank.rb +14 -15
  27. data/lib/transferzero-sdk/models/payout_method_details_zar_bank.rb +9 -9
  28. data/lib/transferzero-sdk/models/{payout_method_entity_type_enum.rb → payout_method_legal_entity_type_enum.rb} +3 -3
  29. data/lib/transferzero-sdk/models/payout_method_mobile_provider_enum.rb +1 -0
  30. data/lib/transferzero-sdk/models/payout_method_nature_of_business_enum.rb +65 -0
  31. data/lib/transferzero-sdk/version.rb +1 -1
  32. data/spec/models/payout_method_country_enum_usd_bank_spec.rb +35 -0
  33. data/spec/models/payout_method_details_kes_bank_spec.rb +101 -0
  34. data/spec/models/payout_method_details_kes_mobile_spec.rb +83 -0
  35. data/spec/models/payout_method_details_usd_bank_spec.rb +71 -0
  36. data/spec/models/{payout_method_entity_type_enum_spec.rb → payout_method_legal_entity_type_enum_spec.rb} +6 -6
  37. data/spec/models/payout_method_nature_of_business_enum_spec.rb +35 -0
  38. metadata +36 -20
  39. data/Gemfile.lock +0 -93
  40. data/transferzero-sdk-1.10.0.gem +0 -0
  41. data/transferzero-sdk-1.11.0.gem +0 -0
  42. data/transferzero-sdk-1.12.0.gem +0 -0
@@ -82,7 +82,11 @@ class PayoutMethodDetails
82
82
 
83
83
  attr_accessor :nature_of_business
84
84
 
85
- attr_accessor :entity_type
85
+ attr_accessor :legal_entity_type
86
+
87
+ attr_accessor :branch_code
88
+
89
+ attr_accessor :swift_code
86
90
 
87
91
  # Attribute mapping from ruby-style variable name to JSON key.
88
92
  def self.attribute_map
@@ -121,7 +125,9 @@ class PayoutMethodDetails
121
125
  :'contact_last_name' => :'contact_last_name',
122
126
  :'registration_number' => :'registration_number',
123
127
  :'nature_of_business' => :'nature_of_business',
124
- :'entity_type' => :'entity_type'
128
+ :'legal_entity_type' => :'legal_entity_type',
129
+ :'branch_code' => :'branch_code',
130
+ :'swift_code' => :'swift_code'
125
131
  }
126
132
  end
127
133
 
@@ -135,7 +141,7 @@ class PayoutMethodDetails
135
141
  :'bank_account_type' => :'PayoutMethodBankAccountTypeEnum',
136
142
  :'phone_number' => :'String',
137
143
  :'mobile_provider' => :'PayoutMethodMobileProviderEnum',
138
- :'country' => :'PayoutMethodCountryEnum',
144
+ :'country' => :'PayoutMethodCountryEnumUSDBank',
139
145
  :'iban' => :'String',
140
146
  :'bank_name' => :'String',
141
147
  :'bank_country' => :'String',
@@ -161,8 +167,10 @@ class PayoutMethodDetails
161
167
  :'contact_first_name' => :'String',
162
168
  :'contact_last_name' => :'String',
163
169
  :'registration_number' => :'String',
164
- :'nature_of_business' => :'String',
165
- :'entity_type' => :'PayoutMethodEntityTypeEnum'
170
+ :'nature_of_business' => :'PayoutMethodNatureOfBusinessEnum',
171
+ :'legal_entity_type' => :'PayoutMethodLegalEntityTypeEnum',
172
+ :'branch_code' => :'String',
173
+ :'swift_code' => :'String'
166
174
  }
167
175
  end
168
176
 
@@ -175,9 +183,12 @@ class PayoutMethodDetails
175
183
  :'PayoutMethodDetailsGHSBank',
176
184
  :'PayoutMethodDetailsGHSCash',
177
185
  :'PayoutMethodDetailsIBAN',
186
+ :'PayoutMethodDetailsKESBank',
187
+ :'PayoutMethodDetailsKESMobile',
178
188
  :'PayoutMethodDetailsMADCash',
179
189
  :'PayoutMethodDetailsMobile',
180
190
  :'PayoutMethodDetailsNGNBank',
191
+ :'PayoutMethodDetailsUSDBank',
181
192
  :'PayoutMethodDetailsXOFBank',
182
193
  :'PayoutMethodDetailsXOFCash',
183
194
  :'PayoutMethodDetailsXOFMobile',
@@ -336,8 +347,16 @@ class PayoutMethodDetails
336
347
  self.nature_of_business = attributes[:'nature_of_business']
337
348
  end
338
349
 
339
- if attributes.key?(:'entity_type')
340
- self.entity_type = attributes[:'entity_type']
350
+ if attributes.key?(:'legal_entity_type')
351
+ self.legal_entity_type = attributes[:'legal_entity_type']
352
+ end
353
+
354
+ if attributes.key?(:'branch_code')
355
+ self.branch_code = attributes[:'branch_code']
356
+ end
357
+
358
+ if attributes.key?(:'swift_code')
359
+ self.swift_code = attributes[:'swift_code']
341
360
  end
342
361
  end
343
362
 
@@ -369,6 +388,10 @@ class PayoutMethodDetails
369
388
  invalid_properties.push('invalid value for "mobile_provider", mobile_provider cannot be nil.')
370
389
  end
371
390
 
391
+ if @country.nil?
392
+ invalid_properties.push('invalid value for "country", country cannot be nil.')
393
+ end
394
+
372
395
  if @iban.nil?
373
396
  invalid_properties.push('invalid value for "iban", iban cannot be nil.')
374
397
  end
@@ -377,10 +400,6 @@ class PayoutMethodDetails
377
400
  invalid_properties.push('invalid value for "bank_name", bank_name cannot be nil.')
378
401
  end
379
402
 
380
- if @bank_country.nil?
381
- invalid_properties.push('invalid value for "bank_country", bank_country cannot be nil.')
382
- end
383
-
384
403
  if @sender_identity_card_type.nil?
385
404
  invalid_properties.push('invalid value for "sender_identity_card_type", sender_identity_card_type cannot be nil.')
386
405
  end
@@ -389,6 +408,14 @@ class PayoutMethodDetails
389
408
  invalid_properties.push('invalid value for "sender_identity_card_id", sender_identity_card_id cannot be nil.')
390
409
  end
391
410
 
411
+ if @identity_card_type.nil?
412
+ invalid_properties.push('invalid value for "identity_card_type", identity_card_type cannot be nil.')
413
+ end
414
+
415
+ if @identity_card_id.nil?
416
+ invalid_properties.push('invalid value for "identity_card_id", identity_card_id cannot be nil.')
417
+ end
418
+
392
419
  if @name.nil?
393
420
  invalid_properties.push('invalid value for "name", name cannot be nil.')
394
421
  end
@@ -409,6 +436,14 @@ class PayoutMethodDetails
409
436
  invalid_properties.push('invalid value for "city", city cannot be nil.')
410
437
  end
411
438
 
439
+ if @transfer_reason_code.nil?
440
+ invalid_properties.push('invalid value for "transfer_reason_code", transfer_reason_code cannot be nil.')
441
+ end
442
+
443
+ if @swift_code.nil?
444
+ invalid_properties.push('invalid value for "swift_code", swift_code cannot be nil.')
445
+ end
446
+
412
447
  invalid_properties
413
448
  end
414
449
 
@@ -421,16 +456,20 @@ class PayoutMethodDetails
421
456
  return false if @bank_account.nil?
422
457
  return false if @phone_number.nil?
423
458
  return false if @mobile_provider.nil?
459
+ return false if @country.nil?
424
460
  return false if @iban.nil?
425
461
  return false if @bank_name.nil?
426
- return false if @bank_country.nil?
427
462
  return false if @sender_identity_card_type.nil?
428
463
  return false if @sender_identity_card_id.nil?
464
+ return false if @identity_card_type.nil?
465
+ return false if @identity_card_id.nil?
429
466
  return false if @name.nil?
430
467
  return false if @address.nil?
431
468
  return false if @street.nil?
432
469
  return false if @postal_code.nil?
433
470
  return false if @city.nil?
471
+ return false if @transfer_reason_code.nil?
472
+ return false if @swift_code.nil?
434
473
  _one_of_found = false
435
474
  openapi_one_of.each do |_class|
436
475
  _one_of = TransferZero.const_get(_class).build_from_hash(self.to_hash)
@@ -489,7 +528,9 @@ class PayoutMethodDetails
489
528
  contact_last_name == o.contact_last_name &&
490
529
  registration_number == o.registration_number &&
491
530
  nature_of_business == o.nature_of_business &&
492
- entity_type == o.entity_type
531
+ legal_entity_type == o.legal_entity_type &&
532
+ branch_code == o.branch_code &&
533
+ swift_code == o.swift_code
493
534
  end
494
535
 
495
536
  # @see the `==` method
@@ -501,7 +542,7 @@ class PayoutMethodDetails
501
542
  # Calculates hash code according to all attributes.
502
543
  # @return [Integer] Hash code
503
544
  def hash
504
- [first_name, last_name, bank_code, bank_account, bank_account_type, phone_number, mobile_provider, country, iban, bank_name, bank_country, cash_provider, sort_code, bic, sender_identity_card_type, sender_identity_card_id, sender_city_of_birth, sender_country_of_birth, sender_gender, reason, identity_card_type, identity_card_id, reference, name, address, street, postal_code, city, email, transfer_reason_code, contact_first_name, contact_last_name, registration_number, nature_of_business, entity_type].hash
545
+ [first_name, last_name, bank_code, bank_account, bank_account_type, phone_number, mobile_provider, country, iban, bank_name, bank_country, cash_provider, sort_code, bic, sender_identity_card_type, sender_identity_card_id, sender_city_of_birth, sender_country_of_birth, sender_gender, reason, identity_card_type, identity_card_id, reference, name, address, street, postal_code, city, email, transfer_reason_code, contact_first_name, contact_last_name, registration_number, nature_of_business, legal_entity_type, branch_code, swift_code].hash
505
546
  end
506
547
 
507
548
  require 'active_support/core_ext/hash'
@@ -0,0 +1,343 @@
1
+ =begin
2
+ #TransferZero API
3
+
4
+ #Reference documentation for the TransferZero API V1
5
+
6
+ OpenAPI spec version: 1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.0-beta3
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module TransferZero
16
+ # ```JSON \"details\": { \"first_name\": \"First\", \"last_name\": \"Last\", \"street\": \"Main Street\", \"bank_code\": \"68\", \"bank_account\": \"12345678\", \"bank_name\": \"Equity Bank Ltd\", \"branch_code\": \"404\", \"swift_code\" \"ABCLKENA\", \"transfer_reason_code\": \"185\", \"identity_card_type\": \"ID\", \"identity_card_id\": \"AB12345678\" } ``` The valid bank_code values are: - Habib Bank Limited: 08 - Trans-National Bank Limited: 26 - Housing Finance Co. Kenya: 61 - UBA Kenya Bank Ltd: 76 - Kenya Commercial Bank: 01000 - Standard Chartered Bank: 02000 - Barclays Bank of Kenya: 03000 - Bank of India: 05000 - Bank of Boroda: 06000 - NCBA Bank: 07000 - Prime Bank: 10000 - Co-operative Bank of Kenya: 11000 - National Bank of Kenya: 12000 - M-Oriental Commercial Bank Limited: 14000 - Citibank: 16000 - Habib Bank A.G. Zurich: 17000 - Middle East Bank: 18000 - Bank of Africa Kenya: 19000 - Consolidated Bank of Kenya: 23000 - Credit Bank Ltd: 25000 - Chase Bank: 30000 - Stanbic Bank Kenya: 31000 - African Banking Corporation: 35000 - Giro Bank Limited: 42000 - ECO Bank Kenya: 43000 - Spire Bank Limited: 49000 - Paramount Universal Bank Limited: 50000 - Jamii Bora Bank: 51000 - Guaranty Trust Bank Kenya: 53000 - Victoria Bank Limited: 54000 - Guardian Bank: 55000 - Investments and Mortgages Bank Limited: 57000 - Development Bank of Kenya: 59000 - Fidelity Commercial Bank: 46000 - Diamond Trust Bank: 63000 - Sidian Bank: 66000 - Equity Bank Limited: 68000 - Family Bank: 70000 - Gulf African Bank: 72000 - First Community Bank: 74000 - KWFT Bank: 78000 See [KES Bank](https://docs.transferzero.com/docs/payout-details/#kesbank) documentation for the transfer_reason_code list
17
+ class PayoutMethodDetailsKESBank
18
+ attr_accessor :first_name
19
+
20
+ attr_accessor :last_name
21
+
22
+ attr_accessor :bank_code
23
+
24
+ attr_accessor :street
25
+
26
+ attr_accessor :bank_account
27
+
28
+ attr_accessor :bank_name
29
+
30
+ attr_accessor :branch_code
31
+
32
+ attr_accessor :swift_code
33
+
34
+ attr_accessor :transfer_reason_code
35
+
36
+ attr_accessor :identity_card_type
37
+
38
+ attr_accessor :identity_card_id
39
+
40
+ # Attribute mapping from ruby-style variable name to JSON key.
41
+ def self.attribute_map
42
+ {
43
+ :'first_name' => :'first_name',
44
+ :'last_name' => :'last_name',
45
+ :'bank_code' => :'bank_code',
46
+ :'street' => :'street',
47
+ :'bank_account' => :'bank_account',
48
+ :'bank_name' => :'bank_name',
49
+ :'branch_code' => :'branch_code',
50
+ :'swift_code' => :'swift_code',
51
+ :'transfer_reason_code' => :'transfer_reason_code',
52
+ :'identity_card_type' => :'identity_card_type',
53
+ :'identity_card_id' => :'identity_card_id'
54
+ }
55
+ end
56
+
57
+ # Attribute type mapping.
58
+ def self.openapi_types
59
+ {
60
+ :'first_name' => :'String',
61
+ :'last_name' => :'String',
62
+ :'bank_code' => :'String',
63
+ :'street' => :'String',
64
+ :'bank_account' => :'String',
65
+ :'bank_name' => :'String',
66
+ :'branch_code' => :'String',
67
+ :'swift_code' => :'String',
68
+ :'transfer_reason_code' => :'String',
69
+ :'identity_card_type' => :'PayoutMethodIdentityCardTypeEnum',
70
+ :'identity_card_id' => :'String'
71
+ }
72
+ end
73
+
74
+ # Initializes the object
75
+ # @param [Hash] attributes Model attributes in the form of hash
76
+ def initialize(attributes = {})
77
+ if (!attributes.is_a?(Hash))
78
+ fail ArgumentError, "The input argument (attributes) must be a hash in `TransferZero::PayoutMethodDetailsKESBank` initialize method"
79
+ end
80
+
81
+ # check to see if the attribute exists and convert string to symbol for hash key
82
+ attributes = attributes.each_with_object({}) { |(k, v), h|
83
+ if (!self.class.attribute_map.key?(k.to_sym))
84
+ fail ArgumentError, "`#{k}` is not a valid attribute in `TransferZero::PayoutMethodDetailsKESBank`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
85
+ end
86
+ h[k.to_sym] = v
87
+ }
88
+
89
+ if attributes.key?(:'first_name')
90
+ self.first_name = attributes[:'first_name']
91
+ end
92
+
93
+ if attributes.key?(:'last_name')
94
+ self.last_name = attributes[:'last_name']
95
+ end
96
+
97
+ if attributes.key?(:'bank_code')
98
+ self.bank_code = attributes[:'bank_code']
99
+ end
100
+
101
+ if attributes.key?(:'street')
102
+ self.street = attributes[:'street']
103
+ end
104
+
105
+ if attributes.key?(:'bank_account')
106
+ self.bank_account = attributes[:'bank_account']
107
+ end
108
+
109
+ if attributes.key?(:'bank_name')
110
+ self.bank_name = attributes[:'bank_name']
111
+ end
112
+
113
+ if attributes.key?(:'branch_code')
114
+ self.branch_code = attributes[:'branch_code']
115
+ end
116
+
117
+ if attributes.key?(:'swift_code')
118
+ self.swift_code = attributes[:'swift_code']
119
+ end
120
+
121
+ if attributes.key?(:'transfer_reason_code')
122
+ self.transfer_reason_code = attributes[:'transfer_reason_code']
123
+ end
124
+
125
+ if attributes.key?(:'identity_card_type')
126
+ self.identity_card_type = attributes[:'identity_card_type']
127
+ end
128
+
129
+ if attributes.key?(:'identity_card_id')
130
+ self.identity_card_id = attributes[:'identity_card_id']
131
+ end
132
+ end
133
+
134
+ # Show invalid properties with the reasons. Usually used together with valid?
135
+ # @return Array for valid properties with the reasons
136
+ def list_invalid_properties
137
+ invalid_properties = Array.new
138
+ if @first_name.nil?
139
+ invalid_properties.push('invalid value for "first_name", first_name cannot be nil.')
140
+ end
141
+
142
+ if @last_name.nil?
143
+ invalid_properties.push('invalid value for "last_name", last_name cannot be nil.')
144
+ end
145
+
146
+ if @bank_code.nil?
147
+ invalid_properties.push('invalid value for "bank_code", bank_code cannot be nil.')
148
+ end
149
+
150
+ if @street.nil?
151
+ invalid_properties.push('invalid value for "street", street cannot be nil.')
152
+ end
153
+
154
+ if @bank_account.nil?
155
+ invalid_properties.push('invalid value for "bank_account", bank_account cannot be nil.')
156
+ end
157
+
158
+ if @bank_name.nil?
159
+ invalid_properties.push('invalid value for "bank_name", bank_name cannot be nil.')
160
+ end
161
+
162
+ if @swift_code.nil?
163
+ invalid_properties.push('invalid value for "swift_code", swift_code cannot be nil.')
164
+ end
165
+
166
+ if @transfer_reason_code.nil?
167
+ invalid_properties.push('invalid value for "transfer_reason_code", transfer_reason_code cannot be nil.')
168
+ end
169
+
170
+ if @identity_card_type.nil?
171
+ invalid_properties.push('invalid value for "identity_card_type", identity_card_type cannot be nil.')
172
+ end
173
+
174
+ if @identity_card_id.nil?
175
+ invalid_properties.push('invalid value for "identity_card_id", identity_card_id cannot be nil.')
176
+ end
177
+
178
+ invalid_properties
179
+ end
180
+
181
+ # Check to see if the all the properties in the model are valid
182
+ # @return true if the model is valid
183
+ def valid?
184
+ return false if @first_name.nil?
185
+ return false if @last_name.nil?
186
+ return false if @bank_code.nil?
187
+ return false if @street.nil?
188
+ return false if @bank_account.nil?
189
+ return false if @bank_name.nil?
190
+ return false if @swift_code.nil?
191
+ return false if @transfer_reason_code.nil?
192
+ return false if @identity_card_type.nil?
193
+ return false if @identity_card_id.nil?
194
+ true
195
+ end
196
+
197
+ # Checks equality by comparing each attribute.
198
+ # @param [Object] Object to be compared
199
+ def ==(o)
200
+ return true if self.equal?(o)
201
+ self.class == o.class &&
202
+ first_name == o.first_name &&
203
+ last_name == o.last_name &&
204
+ bank_code == o.bank_code &&
205
+ street == o.street &&
206
+ bank_account == o.bank_account &&
207
+ bank_name == o.bank_name &&
208
+ branch_code == o.branch_code &&
209
+ swift_code == o.swift_code &&
210
+ transfer_reason_code == o.transfer_reason_code &&
211
+ identity_card_type == o.identity_card_type &&
212
+ identity_card_id == o.identity_card_id
213
+ end
214
+
215
+ # @see the `==` method
216
+ # @param [Object] Object to be compared
217
+ def eql?(o)
218
+ self == o
219
+ end
220
+
221
+ # Calculates hash code according to all attributes.
222
+ # @return [Integer] Hash code
223
+ def hash
224
+ [first_name, last_name, bank_code, street, bank_account, bank_name, branch_code, swift_code, transfer_reason_code, identity_card_type, identity_card_id].hash
225
+ end
226
+
227
+ require 'active_support/core_ext/hash'
228
+ require 'active_support/hash_with_indifferent_access.rb'
229
+ # Builds the object from hash
230
+ # @param [Hash] attributes Model attributes in the form of hash
231
+ # @return [Object] Returns the model itself
232
+ def build_from_hash(attributes)
233
+ return nil unless attributes.is_a?(Hash)
234
+ self.class.openapi_types.each_pair do |key, type|
235
+ if type =~ /\AArray<(.*)>/i
236
+ # check to ensure the input is an array given that the the attribute
237
+ # is documented as an array but the input is not
238
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
239
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
240
+ end
241
+ elsif !attributes[self.class.attribute_map[key]].nil?
242
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
243
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
244
+ end
245
+
246
+ self
247
+ end
248
+
249
+ # Deserializes the data based on type
250
+ # @param string type Data type
251
+ # @param string value Value to be deserialized
252
+ # @return [Object] Deserialized data
253
+ def _deserialize(type, value)
254
+ case type.to_sym
255
+ when :DateTime
256
+ DateTime.parse(value)
257
+ when :Date
258
+ Date.parse(value)
259
+ when :String
260
+ value.to_s
261
+ when :Integer
262
+ value.to_i
263
+ when :Float
264
+ value.to_f
265
+ when :Boolean
266
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
267
+ true
268
+ else
269
+ false
270
+ end
271
+ when :Object
272
+ # generic object (usually a Hash), return directly
273
+ value
274
+ when /\AArray<(?<inner_type>.+)>\z/
275
+ inner_type = Regexp.last_match[:inner_type]
276
+ value.map { |v| _deserialize(inner_type, v) }
277
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
278
+ k_type = Regexp.last_match[:k_type]
279
+ v_type = Regexp.last_match[:v_type]
280
+ {}.tap do |hash|
281
+ value.each do |k, v|
282
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
283
+ end
284
+ end
285
+ else # model
286
+ temp_model = TransferZero.const_get(type).new
287
+ temp_model.build_from_hash(value)
288
+ end
289
+ end
290
+
291
+ # Returns the string representation of the object
292
+ # @return [String] String presentation of the object
293
+ def to_s
294
+ to_hash.to_s
295
+ end
296
+
297
+ # to_body is an alias to to_hash (backward compatibility)
298
+ # @return [Hash] Returns the object in the form of hash
299
+ def to_body
300
+ to_hash
301
+ end
302
+
303
+ # Returns the object in the form of hash
304
+ # @return [Hash] Returns the object in the form of hash
305
+ def to_hash
306
+ hash = {}
307
+ self.class.attribute_map.each_pair do |attr, param|
308
+ value = self.send(attr)
309
+ next if value.nil?
310
+ hash[param] = _to_hash(value)
311
+ end
312
+ ::ActiveSupport::HashWithIndifferentAccess.new(hash)
313
+ end
314
+
315
+ def [](key)
316
+ to_hash[key]
317
+ end
318
+
319
+ def dig(*args)
320
+ to_hash.dig(*args)
321
+ end
322
+
323
+ # Outputs non-array value in the form of hash
324
+ # For object, use to_hash. Otherwise, just return the value
325
+ # @param [Object] value Any valid value
326
+ # @return [Hash] Returns the value in the form of hash
327
+ def _to_hash(value)
328
+ if value.is_a?(Array)
329
+ value.compact.map { |v| _to_hash(v) }
330
+ elsif value.is_a?(Hash)
331
+ {}.tap do |hash|
332
+ value.each { |k, v| hash[k] = _to_hash(v) }
333
+ end
334
+ elsif value.respond_to? :to_hash
335
+ value.to_hash
336
+ else
337
+ value
338
+ end
339
+ end
340
+
341
+ end
342
+
343
+ end