plaid 4.1.0 → 5.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.
@@ -2,78 +2,83 @@ module Plaid
2
2
  # Public: Base class for Plaid SDK errors
3
3
  class PlaidError < StandardError; end
4
4
 
5
- # Public: returned on Plaid server or network issues
5
+ # Public: Returned on Plaid server or network issues
6
6
  class PlaidServerError < PlaidError; end
7
7
 
8
8
  # Public: Base class for any error returned by the API
9
9
  class PlaidAPIError < PlaidError
10
- attr_reader :error_type, :error_code, :error_message, :display_message, :request_id
10
+ attr_reader :error_type, :error_code, :error_message,
11
+ :display_message, :request_id
11
12
 
12
- # Internal: Initialize an error with proper attributes
13
+ # Internal: Initialize an error with proper attributes.
13
14
  #
14
- # error_type - A broad categorization of the error
15
- # error_code - The particular error code
16
- # error_message - A developer-friendly representation of the error message
17
- # display_message - A user-friendly representation of the error message
18
- # request_id - The ID of the request you made, can be used to escalate problems
19
- def initialize(error_type, error_code, error_message, display_message, request_id)
15
+ # error_type - A broad categorization of the error.
16
+ # error_code - The particular error code.
17
+ # error_message - A developer-friendly representation of the error
18
+ # message.
19
+ # display_message - A user-friendly representation of the error message.
20
+ # request_id - The ID of the request you made, can be used to
21
+ # escalate problems.
22
+ def initialize(error_type, error_code, error_message, display_message,
23
+ request_id)
20
24
  @error_type = error_type
21
25
  @error_code = error_code
22
26
  @error_message = error_message
23
27
  @display_message = display_message
24
28
  @request_id = request_id
25
29
 
26
- super "\n"\
27
- "Error Type : #{@error_type}\n"\
28
- "Error Code : #{@error_code}\n"\
29
- "Error Message : #{@error_message}\n"\
30
- "Display Message : #{@display_message}\n"\
31
- "Request ID : #{@request_id}\n"
30
+ super <<-TEXT
31
+
32
+ Error Type : #{error_type}
33
+ Error Code : #{error_code}
34
+ Error Message : #{error_message}
35
+ Display Message : #{display_message}
36
+ Request ID : #{request_id}
37
+ TEXT
32
38
  end
33
39
  end
34
40
 
35
- # Public: returned when the request is malformed and cannot be processed.
41
+ # Public: Returned when the request is malformed and cannot be processed.
36
42
  class InvalidRequestError < PlaidAPIError; end
37
43
 
38
- # Public: returned when all fields are provided and are in the correct format,
39
- # but the values provided are incorrect in some way.
44
+ # Public: Returned when all fields are provided and are in the correct
45
+ # format, but the values provided are incorrect in some way.
40
46
  class InvalidInputError < PlaidAPIError; end
41
47
 
42
- # Public: returned when the request is valid but has exceeded established rate limits.
48
+ # Public: Returned when the request is valid but has exceeded established
49
+ # rate limits.
43
50
  class RateLimitExceededError < PlaidAPIError; end
44
51
 
45
- # Public: returned during planned maintenance windows and
46
- # in response to API internal server errors.
52
+ # Public: Returned during planned maintenance windows and in response to API
53
+ # internal server errors.
47
54
  class APIError < PlaidAPIError; end
48
55
 
49
- # Public: indicates that information provided for the item (such as credentials or MFA)
50
- # may be invalid or that the item is not supported on Plaid's platform.
56
+ # Public: Indicates that information provided for the item (such as
57
+ # credentials or MFA) may be invalid or that the item is not supported on
58
+ # Plaid's platform.
51
59
  class ItemError < PlaidAPIError; end
52
60
 
53
61
  # Internal: A module that provides utilities for errors.
54
62
  module Error
55
- # Internal: Map error_type to PlaidAPIError
63
+ ERROR_TYPE_MAP = {
64
+ 'INVALID_REQUEST' => Plaid::InvalidRequestError,
65
+ 'INVALID_INPUT' => Plaid::InvalidInputError,
66
+ 'RATE_LIMIT_EXCEEDED_ERROR' => Plaid::RateLimitExceededError,
67
+ 'API_ERROR' => Plaid::APIError,
68
+ 'ITEM_ERROR' => Plaid::ItemError
69
+ }.freeze
70
+
71
+ # Internal: Map error_type to PlaidAPIError.
56
72
  #
57
- # Maps an error_type from an error HTTP response to an actual PlaidAPIError class instance
73
+ # Maps an error_type from an error HTTP response to an actual
74
+ # PlaidAPIError class instance.
58
75
  #
59
- # error_type - The type of the error as indicated by the error response body
76
+ # error_type - The type of the error as indicated by the error response
77
+ # body.
60
78
  #
61
- # Returns an error class mapped from error_type
79
+ # Returns an error class mapped from error_type.
62
80
  def self.error_from_type(error_type)
63
- case error_type
64
- when 'INVALID_REQUEST'
65
- Plaid::InvalidRequestError
66
- when 'INVALID_INPUT'
67
- Plaid::InvalidInputError
68
- when 'RATE_LIMIT_EXCEEDED_ERROR'
69
- Plaid::RateLimitExceededError
70
- when 'API_ERROR'
71
- Plaid::APIError
72
- when 'ITEM_ERROR'
73
- Plaid::ItemError
74
- else
75
- Plaid::PlaidAPIError
76
- end
81
+ ERROR_TYPE_MAP[error_type] || Plaid::PlaidAPIError
77
82
  end
78
83
  end
79
84
  end
@@ -5,6 +5,7 @@ require 'uri'
5
5
  require_relative 'version'
6
6
 
7
7
  module Plaid
8
+ # Internal: The Faraday middleware used to catch errors.
8
9
  class Middleware < ::Faraday::Response::Middleware
9
10
  # Internal: Headers used for correct request and SDK tracking.
10
11
  NETWORK_HEADERS = { 'User-Agent' => "Plaid Ruby v#{Plaid::VERSION}",
@@ -14,12 +15,16 @@ module Plaid
14
15
  NETWORK_TIMEOUT = 600
15
16
 
16
17
  def on_complete(env)
17
- return unless Faraday::Response::RaiseError::ClientErrorStatuses.include?(env[:status])
18
- raise Plaid::Error.error_from_type(env.body['error_type']).new(env.body['error_type'],
19
- env.body['error_code'],
20
- env.body['error_message'],
21
- env.body['display_message'],
22
- env.body['request_id'])
18
+ return unless Faraday::Response::RaiseError::ClientErrorStatuses
19
+ .include?(env[:status])
20
+
21
+ error_class = Plaid::Error.error_from_type(env.body['error_type'])
22
+
23
+ raise error_class.new(env.body['error_type'],
24
+ env.body['error_code'],
25
+ env.body['error_message'],
26
+ env.body['display_message'],
27
+ env.body['request_id'])
23
28
  end
24
29
  end
25
30
  end
@@ -0,0 +1,683 @@
1
+ require 'hashie'
2
+
3
+ module Plaid
4
+ module Models
5
+ # Internal: Base model for all other models.
6
+ class BaseModel < Hashie::Dash
7
+ include Hashie::Extensions::Dash::IndifferentAccess
8
+ include Hashie::Extensions::Dash::Coercion
9
+
10
+ # Internal: Be strict or forgiving depending on Plaid.relaxed_models
11
+ # value.
12
+ def assert_property_exists!(property)
13
+ super unless Plaid.relaxed_models?
14
+ end
15
+ end
16
+
17
+ # Internal: Base API response.
18
+ class BaseResponse < BaseModel
19
+ ##
20
+ # :attr_reader:
21
+ # Public: The String request ID assigned by the API.
22
+ property :request_id
23
+ end
24
+
25
+ # Public: A representation of an error.
26
+ class Error < BaseModel
27
+ ##
28
+ # :attr_reader:
29
+ # Public: The String broad categorization of the error. One of:
30
+ # 'INVALID_REQUEST', 'INVALID_INPUT', 'RATE_LIMIT_EXCEEDED', 'API_ERROR',
31
+ # or 'ITEM_ERROR'.
32
+ property :error_type
33
+
34
+ ##
35
+ # :attr_reader:
36
+ # Public: The particular String error code. Each error_type has a
37
+ # specific set of error_codes.
38
+ property :error_code
39
+
40
+ ##
41
+ # :attr_reader:
42
+ # Public: A developer-friendly representation of the error message.
43
+ property :error_message
44
+
45
+ ##
46
+ # :attr_reader:
47
+ # Public: A user-friendly representation of the error message. nil if the
48
+ # error is not related to user action.
49
+ property :display_message
50
+ end
51
+
52
+ # Public: A representation of an item.
53
+ class Item < BaseModel
54
+ ##
55
+ # :attr_reader:
56
+ # Public: The Array with String products available for this item
57
+ # (e.g. ["balance", "auth"]).
58
+ property :available_products
59
+
60
+ ##
61
+ # :attr_reader:
62
+ # Public: The Array with String products billed for this item
63
+ # (e.g. ["identity", "transactions"]).
64
+ property :billed_products
65
+
66
+ ##
67
+ # :attr_reader:
68
+ # Public: The String error related to
69
+ property :error, coerce: Error
70
+
71
+ ##
72
+ # :attr_reader:
73
+ # Public: The String institution ID for this item.
74
+ property :institution_id
75
+
76
+ ##
77
+ # :attr_reader:
78
+ # Public: The String item ID.
79
+ property :item_id
80
+
81
+ ##
82
+ # :attr_reader:
83
+ # Public: The String webhook URL.
84
+ property :webhook
85
+ end
86
+
87
+ # Public: A representation of account balances.
88
+ class Balances < BaseModel
89
+ ##
90
+ # :attr_reader:
91
+ # Public: The Numeric available balance (or nil).
92
+ property :available
93
+
94
+ ##
95
+ # :attr_reader:
96
+ # Public: The Numeric current balance (or nil).
97
+ property :current
98
+
99
+ ##
100
+ # :attr_reader:
101
+ # Public: The Numeric limit (or nil).
102
+ property :limit
103
+ end
104
+
105
+ # Public: A representation of an account.
106
+ class Account < BaseModel
107
+ ##
108
+ # :attr_reader:
109
+ # Public: The String account ID, e.g.
110
+ # "QKKzevvp33HxPWpoqn6rI13BxW4awNSjnw4xv".
111
+ property :account_id
112
+
113
+ ##
114
+ # :attr_reader:
115
+ # Public: Balances for this account.
116
+ property :balances, coerce: Balances
117
+
118
+ ##
119
+ # :attr_reader:
120
+ # Public: The String mask, e.g. "0000".
121
+ property :mask
122
+
123
+ ##
124
+ # :attr_reader:
125
+ # Public: The String account name, e.g. "Plaid Checking".
126
+ property :name
127
+
128
+ ##
129
+ # :attr_reader:
130
+ # Public: The String official account name, e.g. "Plaid Gold Checking".
131
+ property :official_name
132
+
133
+ ##
134
+ # :attr_reader:
135
+ # Public: The String type, e.g. "depository".
136
+ property :type
137
+
138
+ ##
139
+ # :attr_reader:
140
+ # Public: The String subtype, e.g. "checking".
141
+ property :subtype
142
+ end
143
+
144
+ # Public: A representation of an account number.
145
+ class Number < BaseModel
146
+ ##
147
+ # :attr_reader:
148
+ # Public: The String account number. E.g. "1111222233330000".
149
+ property :account
150
+
151
+ ##
152
+ # :attr_reader:
153
+ # Public: The String account ID. E.g.
154
+ # "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D".
155
+ property :account_id
156
+
157
+ ##
158
+ # :attr_reader:
159
+ # Public: The String routing number. E.g. "011401533".
160
+ property :routing
161
+
162
+ ##
163
+ # :attr_reader:
164
+ # Public: The String wire routing number. E.g. "021000021".
165
+ property :wire_routing
166
+ end
167
+
168
+ # Public: A representation of a transaction category.
169
+ class Category < BaseModel
170
+ ##
171
+ # :attr_reader:
172
+ # Public: The String category ID. E.g. "10000000".
173
+ property :category_id
174
+
175
+ ##
176
+ # :attr_reader:
177
+ # Public: The Array of Strings category hierarchy.
178
+ # E.g. ["Recreation", "Arts & Entertainment", "Circuses and Carnivals"].
179
+ property :hierarchy
180
+
181
+ ##
182
+ # :attr_reader:
183
+ # Public: The String category group. E.g. "place".
184
+ property :group
185
+ end
186
+
187
+ # Public: A representation of a single Credit Details APR.
188
+ class CreditDetailsAPR < BaseModel
189
+ ##
190
+ # :attr_reader:
191
+ # Public: The Numeric APR (e.g. 0.125).
192
+ property :apr
193
+
194
+ ##
195
+ # :attr_reader:
196
+ # Public: The Numeric balance subject to APR (e.g. 1200).
197
+ property :balance_subject_to_apr
198
+
199
+ ##
200
+ # :attr_reader:
201
+ # Public: The Numeric interest charge amount (e.g. 150).
202
+ property :interest_charge_amount
203
+ end
204
+
205
+ # Public: A representation of Credit Details APRs data.
206
+ class CreditDetailsAPRs < BaseModel
207
+ ##
208
+ # :attr_reader:
209
+ # Public: Balance transfers APR
210
+ property :balance_transfers, coerce: CreditDetailsAPR
211
+
212
+ ##
213
+ # :attr_reader:
214
+ # Public: Cash advances APR
215
+ property :cash_advances, coerce: CreditDetailsAPR
216
+
217
+ ##
218
+ # :attr_reader:
219
+ # Public: Purchases APR
220
+ property :purchases, coerce: CreditDetailsAPR
221
+ end
222
+
223
+ # Public: A representation of Credit Details data.
224
+ class CreditDetails < BaseModel
225
+ ##
226
+ # :attr_reader:
227
+ # Public: The String account ID. E.g.
228
+ # "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D".
229
+ property :account_id
230
+
231
+ ##
232
+ # :attr_reader:
233
+ # Public: The APRs.
234
+ property :aprs, coerce: CreditDetailsAPRs
235
+
236
+ ##
237
+ # :attr_reader:
238
+ # Public: The Numeric last payment amount (e.g. 875).
239
+ property :last_payment_amount
240
+
241
+ ##
242
+ # :attr_reader:
243
+ # Public: The String last payment date. E.g. "2016-09-13T00:00:00Z".
244
+ property :last_payment_date
245
+
246
+ ##
247
+ # :attr_reader:
248
+ # Public: The Numeric last statement balance (e.g. 3450).
249
+ property :last_statement_balance
250
+
251
+ ##
252
+ # :attr_reader:
253
+ # Public: The String last statement date. E.g. "2016-10-01T00:00:00Z".
254
+ property :last_statement_date
255
+
256
+ ##
257
+ # :attr_reader:
258
+ # Public: The Numeric minimum payment amount (e.g. 800).
259
+ property :minimum_payment_amount
260
+
261
+ ##
262
+ # :attr_reader:
263
+ # Public: The String next bill due date. E.g. "2016-10-15T00:00:00Z".
264
+ property :next_bill_due_date
265
+ end
266
+
267
+ # Public: A representation of Identity address details.
268
+ class IdentityAddressData < BaseModel
269
+ ##
270
+ # :attr_reader:
271
+ # Public: The String street name.
272
+ property :street
273
+
274
+ ##
275
+ # :attr_reader:
276
+ # Public: The String name.
277
+ property :city
278
+
279
+ ##
280
+ # :attr_reader:
281
+ # Public: The String state name.
282
+ property :state
283
+
284
+ ##
285
+ # :attr_reader:
286
+ # Public: The String ZIP code.
287
+ property :zip
288
+ end
289
+
290
+ # Public: A representation of Identity address data.
291
+ class IdentityAddress < BaseModel
292
+ ##
293
+ # :attr_reader:
294
+ # Public: The Array of String accounts, associated with this address.
295
+ # E.g. ["Plaid Credit Card 3333"].
296
+ property :accounts
297
+
298
+ ##
299
+ # :attr_reader:
300
+ # Public: The Boolean primary flag (true if it's the primary address).
301
+ property :primary
302
+
303
+ ##
304
+ # :attr_reader:
305
+ # Public: The address data.
306
+ property :data, coerce: IdentityAddressData
307
+ end
308
+
309
+ # Public: A representation of Identity email data.
310
+ class IdentityEmail < BaseModel
311
+ ##
312
+ # :attr_reader:
313
+ # Public: The String data, i.e. the address itself. E.g.
314
+ # "accountholder0@example.com".
315
+ property :data
316
+
317
+ ##
318
+ # :attr_reader:
319
+ # Public: The Boolean primary flag.
320
+ property :primary
321
+
322
+ ##
323
+ # :attr_reader:
324
+ # Public: The String type. E.g. "primary", or "secondary", or "other".
325
+ property :type
326
+ end
327
+
328
+ # Public: A representation of Identity phone number data.
329
+ class IdentityPhoneNumber < BaseModel
330
+ ##
331
+ # :attr_reader:
332
+ # Public: The String data, i.e. the number itself. E.g.
333
+ # "4673956022".
334
+ property :data
335
+
336
+ ##
337
+ # :attr_reader:
338
+ # Public: The Boolean primary flag.
339
+ property :primary
340
+
341
+ ##
342
+ # :attr_reader:
343
+ # Public: The String type. E.g. "home", or "work", or "mobile1".
344
+ property :type
345
+ end
346
+
347
+ # Public: A representation of Identity data.
348
+ class Identity < BaseModel
349
+ ##
350
+ # :attr_reader:
351
+ # Public: Addresses: Array of IdentityAddress.
352
+ property :addresses, coerce: Array[IdentityAddress]
353
+
354
+ ##
355
+ # :attr_reader:
356
+ # Public: Emails: Array of IdentityEmail.
357
+ property :emails, coerce: Array[IdentityEmail]
358
+
359
+ ##
360
+ # :attr_reader:
361
+ # Public: The Array of String names. E.g. ["John Doe", "Ronald McDonald"].
362
+ property :names
363
+
364
+ ##
365
+ # :attr_reader:
366
+ # Public: Phone numbers: Array of IdentityPhoneNumber.
367
+ property :phone_numbers, coerce: Array[IdentityPhoneNumber]
368
+ end
369
+
370
+ # Public: A representation of Income Stream data.
371
+ class IncomeStream < BaseModel
372
+ ##
373
+ # :attr_reader:
374
+ # Public: The Numeric monthly income associated with the income stream.
375
+ property :monthly_income
376
+
377
+ ##
378
+ # :attr_reader:
379
+ # Public: The Numeric representation of our confidence in the income data
380
+ # associated with this particular income stream, with 0 being the lowest
381
+ # confidence and 1 being the highest.
382
+ property :confidence
383
+
384
+ ##
385
+ # :attr_reader:
386
+ # Public: The Numeric extent of data found for this income stream.
387
+ property :days
388
+
389
+ ##
390
+ # :attr_reader:
391
+ # Public: The String name of the entity associated with this income
392
+ # stream.
393
+ property :name
394
+ end
395
+
396
+ # Public: A representation of Income data.
397
+ class Income < BaseModel
398
+ ##
399
+ # :attr_reader:
400
+ # Public: An Array of IncomeStream with detailed information.
401
+ property :income_streams, coerce: Array[IncomeStream]
402
+
403
+ ##
404
+ # :attr_reader:
405
+ # Public: The Numeric last year income, i.e. the sum of the Item's
406
+ # income over the past 365 days. If Plaid has less than 365 days of data
407
+ # this will be less than a full year's income.
408
+ property :last_year_income
409
+
410
+ ##
411
+ # :attr_reader:
412
+ # Public: The Numeric last_year_income interpolated to value before
413
+ # taxes. This is the minimum pre-tax salary that assumes a filing status
414
+ # of single with zero dependents.
415
+ property :last_year_income_before_tax
416
+
417
+ ##
418
+ # :attr_reader:
419
+ # Public: The Numeric income extrapolated over a year based on current,
420
+ # active income streams. Income streams become inactive if they have not
421
+ # recurred for more than two cycles. For example, if a weekly paycheck
422
+ # hasn't been seen for the past two weeks, it is no longer active.
423
+ property :projected_yearly_income
424
+
425
+ ##
426
+ # :attr_reader:
427
+ # Public: The Numeric projected_yearly_income interpolated to value
428
+ # before taxes. This is the minimum pre-tax salary that assumes a filing
429
+ # status of single with zero dependents.
430
+ property :projected_yearly_income_before_tax
431
+
432
+ ##
433
+ # :attr_reader:
434
+ # Public: The Numeric max number of income streams present at the same
435
+ # time over the past 365 days.
436
+ property :max_number_of_overlapping_income_streams
437
+
438
+ ##
439
+ # :attr_reader:
440
+ # Public: The Numeric total number of distinct income streams received
441
+ # over the past 365 days.
442
+ property :number_of_income_streams
443
+ end
444
+
445
+ # Public: A representation of an institution login credential.
446
+ class InstitutionCredential < BaseModel
447
+ ##
448
+ # :attr_reader:
449
+ # Public: The String label. E.g. "User ID".
450
+ property :label
451
+
452
+ ##
453
+ # :attr_reader:
454
+ # Public: The String name. E.g. "username".
455
+ property :name
456
+
457
+ ##
458
+ # :attr_reader:
459
+ # Public: The String type. E.g. "text", or "password".
460
+ property :type
461
+ end
462
+
463
+ # Public: A representation of Institution.
464
+ class Institution < BaseModel
465
+ ##
466
+ # :attr_reader:
467
+ # Public: The Array of InstitutionCredential, presenting information on
468
+ # login credentials used for the institution.
469
+ property :credentials, coerce: Array[InstitutionCredential]
470
+
471
+ ##
472
+ # :attr_reader:
473
+ # Public: The Boolean flag indicating if the institution uses MFA.
474
+ property :has_mfa
475
+
476
+ ##
477
+ # :attr_reader:
478
+ # Public: The String institution ID (e.g. "ins_109512").
479
+ property :institution_id
480
+
481
+ ##
482
+ # :attr_reader:
483
+ # Public: The String institution name (e.g. "Houndstooth Bank").
484
+ property :name
485
+
486
+ ##
487
+ # :attr_reader:
488
+ # Public: The Array of String MFA types.
489
+ # E.g. ["code", "list", "questions", "selections"].
490
+ property :mfa
491
+
492
+ ##
493
+ # :attr_reader:
494
+ # Public: The Array of String product names supported by this institution.
495
+ # E.g. ["auth", "balance", "identity", "transactions"].
496
+ property :products
497
+ end
498
+
499
+ module MFA
500
+ # Public: A representation of an MFA device.
501
+ class Device < BaseModel
502
+ ##
503
+ # :attr_reader:
504
+ # Public: The String message related to sending code to the device.
505
+ property :display_message
506
+ end
507
+
508
+ # Public: A representation of a single element in a device list.
509
+ class DeviceListElement < BaseModel
510
+ ##
511
+ # :attr_reader:
512
+ # Public: The String device ID.
513
+ property :device_id
514
+
515
+ ##
516
+ # :attr_reader:
517
+ # Public: The String device mask.
518
+ property :mask
519
+
520
+ ##
521
+ # :attr_reader:
522
+ # Public: The String device type.
523
+ property :type
524
+ end
525
+
526
+ # Public: A representation of MFA selection.
527
+ class Selection < BaseModel
528
+ ##
529
+ # :attr_reader:
530
+ # Public: The String question.
531
+ property :question
532
+
533
+ ##
534
+ # :attr_reader:
535
+ # Public: The Array of String answers.
536
+ property :answers
537
+ end
538
+ end
539
+
540
+ # Public: A representation of Transaction location.
541
+ class TransactionLocation < BaseModel
542
+ ##
543
+ # :attr_reader:
544
+ # Public: The String address (or nil).
545
+ property :address
546
+
547
+ ##
548
+ # :attr_reader:
549
+ # Public: The String city name (or nil).
550
+ property :city
551
+
552
+ ##
553
+ # :attr_reader:
554
+ # Public: The Numeric latitude of the place (or nil).
555
+ property :lat
556
+
557
+ ##
558
+ # :attr_reader:
559
+ # Public: The Numeric longitude of the place (or nil).
560
+ property :lon
561
+
562
+ ##
563
+ # :attr_reader:
564
+ # Public: The String state name (or nil).
565
+ property :state
566
+
567
+ ##
568
+ # :attr_reader:
569
+ # Public: The String store number (or nil).
570
+ property :store_number
571
+
572
+ ##
573
+ # :attr_reader:
574
+ # Public: The String ZIP code (or nil).
575
+ property :zip
576
+ end
577
+
578
+ # Public: A representation of Transaction Payment meta information.
579
+ class TransactionPaymentMeta < BaseModel
580
+ ##
581
+ # :attr_reader:
582
+ property :by_order_of
583
+ ##
584
+ # :attr_reader:
585
+ property :ppd_id
586
+ ##
587
+ # :attr_reader:
588
+ property :payee
589
+ ##
590
+ # :attr_reader:
591
+ property :payer
592
+ ##
593
+ # :attr_reader:
594
+ property :payment_method
595
+ ##
596
+ # :attr_reader:
597
+ property :payment_processor
598
+ ##
599
+ # :attr_reader:
600
+ property :reason
601
+ ##
602
+ # :attr_reader:
603
+ property :reference_number
604
+ end
605
+
606
+ # Public: A representation of Transaction.
607
+ class Transaction < BaseModel
608
+ ##
609
+ # :attr_reader:
610
+ # Public: The String transaction ID.
611
+ property :transaction_id
612
+
613
+ ##
614
+ # :attr_reader:
615
+ # Public: The String account ID.
616
+ property :account_id
617
+
618
+ ##
619
+ # :attr_reader:
620
+ # Public: The String account owner (or nil).
621
+ property :account_owner
622
+
623
+ ##
624
+ # :attr_reader:
625
+ # Public: The Numeric amount (or nil).
626
+ property :amount
627
+
628
+ ##
629
+ # :attr_reader:
630
+ # Public: The Array of String category (or nil).
631
+ # E.g. ["Payment", "Credit Card"].
632
+ property :category
633
+
634
+ ##
635
+ # :attr_reader:
636
+ # Public: The String category_id (or nil).
637
+ # E.g. "16001000".
638
+ property :category_id
639
+
640
+ ##
641
+ # :attr_reader:
642
+ # Public: The String transaction date. E.g. "2017-01-01".
643
+ property :date
644
+
645
+ ##
646
+ # :attr_reader:
647
+ # Public: The location where transaction occurred (TransactionLocation).
648
+ property :location, coerce: TransactionLocation
649
+
650
+ ##
651
+ # :attr_reader:
652
+ # Public: The String transaction name (or nil).
653
+ # E.g. "CREDIT CARD 3333 PAYMENT *//".
654
+ property :name
655
+
656
+ ##
657
+ # :attr_reader:
658
+ # Public: The String original description (or nil).
659
+ property :original_description
660
+
661
+ ##
662
+ # :attr_reader:
663
+ # Public: The payment meta information (TransactionPaymentMeta).
664
+ property :payment_meta, coerce: TransactionPaymentMeta
665
+
666
+ ##
667
+ # :attr_reader:
668
+ # Public: The Boolean pending flag (or nil).
669
+ property :pending
670
+
671
+ ##
672
+ # :attr_reader:
673
+ # Public: The String pending transaction ID (or nil).
674
+ property :pending_transaction_id
675
+
676
+ ##
677
+ # :attr_reader:
678
+ # Public: The String transaction type (or nil). E.g. "special", or
679
+ # "place".
680
+ property :transaction_type
681
+ end
682
+ end
683
+ end