transferzero-sdk 1.14.2 → 1.16.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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +89 -0
  3. data/README.md +7 -5
  4. data/docs/AccountValidationRequest.md +2 -0
  5. data/docs/PayoutMethod.md +1 -1
  6. data/docs/PayoutMethodDetails.md +10 -6
  7. data/docs/PayoutMethodDetailsKESBank.md +37 -0
  8. data/docs/PayoutMethodDetailsKESMobile.md +31 -0
  9. data/docs/PayoutMethodDetailsUSDBank.md +1 -1
  10. data/docs/PayoutMethodDetailsUSDCash.md +23 -0
  11. data/docs/PayoutMethodDetailsXOFBank.md +5 -3
  12. data/docs/Recipient.md +2 -0
  13. data/lib/transferzero-sdk/api_client.rb +1 -1
  14. data/lib/transferzero-sdk/models/account_validation_request.rb +13 -3
  15. data/lib/transferzero-sdk/models/payout_method.rb +1 -1
  16. data/lib/transferzero-sdk/models/payout_method_details.rb +46 -10
  17. data/lib/transferzero-sdk/models/payout_method_details_kes_bank.rb +343 -0
  18. data/lib/transferzero-sdk/models/payout_method_details_kes_mobile.rb +306 -0
  19. data/lib/transferzero-sdk/models/payout_method_details_usd_bank.rb +2 -2
  20. data/lib/transferzero-sdk/models/payout_method_details_usd_cash.rb +250 -0
  21. data/lib/transferzero-sdk/models/payout_method_details_xof_bank.rb +14 -15
  22. data/lib/transferzero-sdk/models/payout_method_details_zar_bank.rb +1 -1
  23. data/lib/transferzero-sdk/models/payout_method_mobile_provider_enum.rb +3 -0
  24. data/lib/transferzero-sdk/models/recipient.rb +45 -1
  25. data/lib/transferzero-sdk/version.rb +1 -1
  26. data/lib/transferzero-sdk.rb +3 -1
  27. data/spec/models/payout_method_details_kes_bank_spec.rb +101 -0
  28. data/spec/models/payout_method_details_kes_mobile_spec.rb +83 -0
  29. data/spec/models/payout_method_details_usd_cash_spec.rb +59 -0
  30. metadata +25 -16
  31. data/docs/PayoutMethodCountryEnumUSDBank.md +0 -16
  32. data/lib/transferzero-sdk/models/payout_method_country_enum_usd_bank.rb +0 -269
  33. data/spec/models/payout_method_country_enum_usd_bank_spec.rb +0 -35
@@ -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
@@ -0,0 +1,306 @@
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\", \"phone_number\": \"+254997853134\", \"mobile_provider\": \"mpesa\", \"transfer_reason_code\": \"185\", \"identity_card_type\": \"ID\", \"identity_card_id\": \"AB12345678\" } ``` See [KES Mobile](https://docs.transferzero.com/docs/payout-details/#kesmobile) documentation for transfer_reason_code lists
17
+ class PayoutMethodDetailsKESMobile
18
+ attr_accessor :first_name
19
+
20
+ attr_accessor :last_name
21
+
22
+ attr_accessor :street
23
+
24
+ attr_accessor :phone_number
25
+
26
+ attr_accessor :mobile_provider
27
+
28
+ attr_accessor :transfer_reason_code
29
+
30
+ attr_accessor :identity_card_type
31
+
32
+ attr_accessor :identity_card_id
33
+
34
+ # Attribute mapping from ruby-style variable name to JSON key.
35
+ def self.attribute_map
36
+ {
37
+ :'first_name' => :'first_name',
38
+ :'last_name' => :'last_name',
39
+ :'street' => :'street',
40
+ :'phone_number' => :'phone_number',
41
+ :'mobile_provider' => :'mobile_provider',
42
+ :'transfer_reason_code' => :'transfer_reason_code',
43
+ :'identity_card_type' => :'identity_card_type',
44
+ :'identity_card_id' => :'identity_card_id'
45
+ }
46
+ end
47
+
48
+ # Attribute type mapping.
49
+ def self.openapi_types
50
+ {
51
+ :'first_name' => :'String',
52
+ :'last_name' => :'String',
53
+ :'street' => :'String',
54
+ :'phone_number' => :'String',
55
+ :'mobile_provider' => :'PayoutMethodMobileProviderEnum',
56
+ :'transfer_reason_code' => :'String',
57
+ :'identity_card_type' => :'PayoutMethodIdentityCardTypeEnum',
58
+ :'identity_card_id' => :'String'
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 `TransferZero::PayoutMethodDetailsKESMobile` initialize method"
67
+ end
68
+
69
+ # check to see if the attribute exists and convert string to symbol for hash key
70
+ attributes = attributes.each_with_object({}) { |(k, v), h|
71
+ if (!self.class.attribute_map.key?(k.to_sym))
72
+ fail ArgumentError, "`#{k}` is not a valid attribute in `TransferZero::PayoutMethodDetailsKESMobile`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
73
+ end
74
+ h[k.to_sym] = v
75
+ }
76
+
77
+ if attributes.key?(:'first_name')
78
+ self.first_name = attributes[:'first_name']
79
+ end
80
+
81
+ if attributes.key?(:'last_name')
82
+ self.last_name = attributes[:'last_name']
83
+ end
84
+
85
+ if attributes.key?(:'street')
86
+ self.street = attributes[:'street']
87
+ end
88
+
89
+ if attributes.key?(:'phone_number')
90
+ self.phone_number = attributes[:'phone_number']
91
+ end
92
+
93
+ if attributes.key?(:'mobile_provider')
94
+ self.mobile_provider = attributes[:'mobile_provider']
95
+ end
96
+
97
+ if attributes.key?(:'transfer_reason_code')
98
+ self.transfer_reason_code = attributes[:'transfer_reason_code']
99
+ end
100
+
101
+ if attributes.key?(:'identity_card_type')
102
+ self.identity_card_type = attributes[:'identity_card_type']
103
+ end
104
+
105
+ if attributes.key?(:'identity_card_id')
106
+ self.identity_card_id = attributes[:'identity_card_id']
107
+ end
108
+ end
109
+
110
+ # Show invalid properties with the reasons. Usually used together with valid?
111
+ # @return Array for valid properties with the reasons
112
+ def list_invalid_properties
113
+ invalid_properties = Array.new
114
+ if @first_name.nil?
115
+ invalid_properties.push('invalid value for "first_name", first_name cannot be nil.')
116
+ end
117
+
118
+ if @last_name.nil?
119
+ invalid_properties.push('invalid value for "last_name", last_name cannot be nil.')
120
+ end
121
+
122
+ if @street.nil?
123
+ invalid_properties.push('invalid value for "street", street cannot be nil.')
124
+ end
125
+
126
+ if @phone_number.nil?
127
+ invalid_properties.push('invalid value for "phone_number", phone_number cannot be nil.')
128
+ end
129
+
130
+ if @mobile_provider.nil?
131
+ invalid_properties.push('invalid value for "mobile_provider", mobile_provider cannot be nil.')
132
+ end
133
+
134
+ if @transfer_reason_code.nil?
135
+ invalid_properties.push('invalid value for "transfer_reason_code", transfer_reason_code cannot be nil.')
136
+ end
137
+
138
+ if @identity_card_type.nil?
139
+ invalid_properties.push('invalid value for "identity_card_type", identity_card_type cannot be nil.')
140
+ end
141
+
142
+ if @identity_card_id.nil?
143
+ invalid_properties.push('invalid value for "identity_card_id", identity_card_id cannot be nil.')
144
+ end
145
+
146
+ invalid_properties
147
+ end
148
+
149
+ # Check to see if the all the properties in the model are valid
150
+ # @return true if the model is valid
151
+ def valid?
152
+ return false if @first_name.nil?
153
+ return false if @last_name.nil?
154
+ return false if @street.nil?
155
+ return false if @phone_number.nil?
156
+ return false if @mobile_provider.nil?
157
+ return false if @transfer_reason_code.nil?
158
+ return false if @identity_card_type.nil?
159
+ return false if @identity_card_id.nil?
160
+ true
161
+ end
162
+
163
+ # Checks equality by comparing each attribute.
164
+ # @param [Object] Object to be compared
165
+ def ==(o)
166
+ return true if self.equal?(o)
167
+ self.class == o.class &&
168
+ first_name == o.first_name &&
169
+ last_name == o.last_name &&
170
+ street == o.street &&
171
+ phone_number == o.phone_number &&
172
+ mobile_provider == o.mobile_provider &&
173
+ transfer_reason_code == o.transfer_reason_code &&
174
+ identity_card_type == o.identity_card_type &&
175
+ identity_card_id == o.identity_card_id
176
+ end
177
+
178
+ # @see the `==` method
179
+ # @param [Object] Object to be compared
180
+ def eql?(o)
181
+ self == o
182
+ end
183
+
184
+ # Calculates hash code according to all attributes.
185
+ # @return [Integer] Hash code
186
+ def hash
187
+ [first_name, last_name, street, phone_number, mobile_provider, transfer_reason_code, identity_card_type, identity_card_id].hash
188
+ end
189
+
190
+ require 'active_support/core_ext/hash'
191
+ require 'active_support/hash_with_indifferent_access.rb'
192
+ # Builds the object from hash
193
+ # @param [Hash] attributes Model attributes in the form of hash
194
+ # @return [Object] Returns the model itself
195
+ def build_from_hash(attributes)
196
+ return nil unless attributes.is_a?(Hash)
197
+ self.class.openapi_types.each_pair do |key, type|
198
+ if type =~ /\AArray<(.*)>/i
199
+ # check to ensure the input is an array given that the the attribute
200
+ # is documented as an array but the input is not
201
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
202
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
203
+ end
204
+ elsif !attributes[self.class.attribute_map[key]].nil?
205
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
206
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
207
+ end
208
+
209
+ self
210
+ end
211
+
212
+ # Deserializes the data based on type
213
+ # @param string type Data type
214
+ # @param string value Value to be deserialized
215
+ # @return [Object] Deserialized data
216
+ def _deserialize(type, value)
217
+ case type.to_sym
218
+ when :DateTime
219
+ DateTime.parse(value)
220
+ when :Date
221
+ Date.parse(value)
222
+ when :String
223
+ value.to_s
224
+ when :Integer
225
+ value.to_i
226
+ when :Float
227
+ value.to_f
228
+ when :Boolean
229
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
230
+ true
231
+ else
232
+ false
233
+ end
234
+ when :Object
235
+ # generic object (usually a Hash), return directly
236
+ value
237
+ when /\AArray<(?<inner_type>.+)>\z/
238
+ inner_type = Regexp.last_match[:inner_type]
239
+ value.map { |v| _deserialize(inner_type, v) }
240
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
241
+ k_type = Regexp.last_match[:k_type]
242
+ v_type = Regexp.last_match[:v_type]
243
+ {}.tap do |hash|
244
+ value.each do |k, v|
245
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
246
+ end
247
+ end
248
+ else # model
249
+ temp_model = TransferZero.const_get(type).new
250
+ temp_model.build_from_hash(value)
251
+ end
252
+ end
253
+
254
+ # Returns the string representation of the object
255
+ # @return [String] String presentation of the object
256
+ def to_s
257
+ to_hash.to_s
258
+ end
259
+
260
+ # to_body is an alias to to_hash (backward compatibility)
261
+ # @return [Hash] Returns the object in the form of hash
262
+ def to_body
263
+ to_hash
264
+ end
265
+
266
+ # Returns the object in the form of hash
267
+ # @return [Hash] Returns the object in the form of hash
268
+ def to_hash
269
+ hash = {}
270
+ self.class.attribute_map.each_pair do |attr, param|
271
+ value = self.send(attr)
272
+ next if value.nil?
273
+ hash[param] = _to_hash(value)
274
+ end
275
+ ::ActiveSupport::HashWithIndifferentAccess.new(hash)
276
+ end
277
+
278
+ def [](key)
279
+ to_hash[key]
280
+ end
281
+
282
+ def dig(*args)
283
+ to_hash.dig(*args)
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
@@ -13,7 +13,7 @@ OpenAPI Generator version: 4.0.0-beta3
13
13
  require 'date'
14
14
 
15
15
  module TransferZero
16
- # ```JSON \"details\": { \"first_name\": \"Jane\", \"last_name\": \"Doe\", \"phone_number\": \"+2341234567\", \"bank_code\": \"057\", \"bank_account\": \"1234567890\", \"country\": \"NG\" } ``` See [USD Bank](https://docs.transferzero.com/docs/payout-details/#usdbank) documentation for the bank_code list
16
+ # ```JSON \"details\": { \"first_name\": \"Jane\", \"last_name\": \"Doe\", \"phone_number\": \"+2341234567\", \"bank_code\": \"057\", \"bank_account\": \"1234567890\", \"country\": \"NG\" } ``` See [USD Bank](https://docs.transferzero.com/docs/payout-details/#usdbank) documentation for the bank_code and country lists
17
17
  class PayoutMethodDetailsUSDBank
18
18
  attr_accessor :first_name
19
19
 
@@ -47,7 +47,7 @@ class PayoutMethodDetailsUSDBank
47
47
  :'phone_number' => :'String',
48
48
  :'bank_code' => :'String',
49
49
  :'bank_account' => :'String',
50
- :'country' => :'PayoutMethodCountryEnumUSDBank'
50
+ :'country' => :'PayoutMethodCountryEnum'
51
51
  }
52
52
  end
53
53