plaid 14.0.0.beta.5 → 14.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (387) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/CONTRIBUTING.md +1 -5
  4. data/Gemfile.lock +14 -4
  5. data/Makefile +1 -1
  6. data/README.md +5 -4
  7. data/doc/rdoc/.DS_Store +0 -0
  8. data/lib/plaid.rb +59 -13
  9. data/lib/plaid/.DS_Store +0 -0
  10. data/lib/plaid/api/plaid_api.rb +644 -61
  11. data/lib/plaid/api_client.rb +3 -2
  12. data/lib/plaid/api_error.rb +1 -1
  13. data/lib/plaid/configuration.rb +1 -1
  14. data/lib/plaid/models/account_access.rb +238 -0
  15. data/lib/plaid/models/account_assets.rb +16 -5
  16. data/lib/plaid/models/account_assets_all_of.rb +16 -4
  17. data/lib/plaid/models/account_balance.rb +6 -10
  18. data/lib/plaid/models/account_base.rb +1 -2
  19. data/lib/plaid/models/account_filter.rb +258 -0
  20. data/lib/plaid/models/account_filters_response.rb +1 -1
  21. data/lib/plaid/models/account_identity.rb +1 -2
  22. data/lib/plaid/models/account_identity_all_of.rb +1 -1
  23. data/lib/plaid/models/account_selection_cardinality.rb +38 -0
  24. data/lib/plaid/models/account_subtype.rb +5 -1
  25. data/lib/plaid/models/account_type.rb +1 -1
  26. data/lib/plaid/models/accounts_balance_get_request.rb +1 -1
  27. data/lib/plaid/models/accounts_balance_get_request_options.rb +1 -1
  28. data/lib/plaid/models/accounts_get_request.rb +1 -1
  29. data/lib/plaid/models/accounts_get_request_options.rb +1 -1
  30. data/lib/plaid/models/accounts_get_response.rb +1 -1
  31. data/lib/plaid/models/ach_class.rb +1 -1
  32. data/lib/plaid/models/address.rb +1 -2
  33. data/lib/plaid/models/address_data.rb +2 -6
  34. data/lib/plaid/models/{nullable_address_data.rb → address_data_nullable.rb} +5 -9
  35. data/lib/plaid/models/{nullable_address.rb → address_nullable.rb} +4 -5
  36. data/lib/plaid/models/application.rb +17 -2
  37. data/lib/plaid/models/application_get_request.rb +1 -1
  38. data/lib/plaid/models/application_get_response.rb +1 -1
  39. data/lib/plaid/models/apr.rb +1 -1
  40. data/lib/plaid/models/asset_report.rb +2 -2
  41. data/lib/plaid/models/asset_report_audit_copy_create_request.rb +1 -1
  42. data/lib/plaid/models/asset_report_audit_copy_create_response.rb +1 -1
  43. data/lib/plaid/models/asset_report_audit_copy_get_request.rb +1 -1
  44. data/lib/plaid/models/asset_report_audit_copy_remove_request.rb +1 -1
  45. data/lib/plaid/models/asset_report_audit_copy_remove_response.rb +1 -1
  46. data/lib/plaid/models/asset_report_create_request.rb +1 -1
  47. data/lib/plaid/models/asset_report_create_request_options.rb +1 -1
  48. data/lib/plaid/models/asset_report_create_response.rb +1 -1
  49. data/lib/plaid/models/asset_report_filter_request.rb +1 -1
  50. data/lib/plaid/models/asset_report_filter_response.rb +1 -1
  51. data/lib/plaid/models/asset_report_get_request.rb +1 -1
  52. data/lib/plaid/models/asset_report_get_response.rb +1 -1
  53. data/lib/plaid/models/asset_report_item.rb +2 -2
  54. data/lib/plaid/models/asset_report_pdf_get_request.rb +1 -1
  55. data/lib/plaid/models/asset_report_refresh_request.rb +1 -1
  56. data/lib/plaid/models/asset_report_refresh_request_options.rb +1 -1
  57. data/lib/plaid/models/asset_report_refresh_response.rb +1 -1
  58. data/lib/plaid/models/asset_report_remove_request.rb +1 -1
  59. data/lib/plaid/models/asset_report_remove_response.rb +1 -1
  60. data/lib/plaid/models/asset_report_transaction.rb +108 -187
  61. data/lib/plaid/models/asset_report_transaction_all_of.rb +6 -21
  62. data/lib/plaid/models/asset_report_user.rb +2 -2
  63. data/lib/plaid/models/assets_error_webhook.rb +1 -1
  64. data/lib/plaid/models/assets_product_ready_webhook.rb +1 -1
  65. data/lib/plaid/models/auth_get_numbers.rb +21 -1
  66. data/lib/plaid/models/auth_get_request.rb +1 -1
  67. data/lib/plaid/models/auth_get_request_options.rb +1 -1
  68. data/lib/plaid/models/auth_get_response.rb +1 -1
  69. data/lib/plaid/models/automatically_verified_webhook.rb +1 -1
  70. data/lib/plaid/models/bank_initiated_return_risk.rb +300 -0
  71. data/lib/plaid/models/bank_transfer.rb +2 -2
  72. data/lib/plaid/models/bank_transfer_balance.rb +1 -1
  73. data/lib/plaid/models/bank_transfer_balance_get_request.rb +1 -1
  74. data/lib/plaid/models/bank_transfer_balance_get_response.rb +1 -1
  75. data/lib/plaid/models/bank_transfer_cancel_request.rb +1 -1
  76. data/lib/plaid/models/bank_transfer_cancel_response.rb +1 -1
  77. data/lib/plaid/models/bank_transfer_create_request.rb +1 -1
  78. data/lib/plaid/models/bank_transfer_create_response.rb +1 -1
  79. data/lib/plaid/models/bank_transfer_direction.rb +2 -1
  80. data/lib/plaid/models/bank_transfer_event.rb +2 -2
  81. data/lib/plaid/models/bank_transfer_event_list_request.rb +16 -4
  82. data/lib/plaid/models/bank_transfer_event_list_response.rb +1 -1
  83. data/lib/plaid/models/bank_transfer_event_sync_request.rb +1 -1
  84. data/lib/plaid/models/bank_transfer_event_sync_response.rb +1 -1
  85. data/lib/plaid/models/bank_transfer_event_type.rb +1 -1
  86. data/lib/plaid/models/bank_transfer_failure.rb +2 -2
  87. data/lib/plaid/models/bank_transfer_get_request.rb +1 -1
  88. data/lib/plaid/models/bank_transfer_get_response.rb +1 -1
  89. data/lib/plaid/models/bank_transfer_list_request.rb +1 -1
  90. data/lib/plaid/models/bank_transfer_list_response.rb +1 -1
  91. data/lib/plaid/models/bank_transfer_migrate_account_request.rb +1 -1
  92. data/lib/plaid/models/bank_transfer_migrate_account_response.rb +1 -1
  93. data/lib/plaid/models/bank_transfer_network.rb +1 -1
  94. data/lib/plaid/models/bank_transfer_receiver_details.rb +3 -3
  95. data/lib/plaid/models/bank_transfer_status.rb +1 -1
  96. data/lib/plaid/models/bank_transfer_type.rb +1 -1
  97. data/lib/plaid/models/bank_transfer_user.rb +2 -2
  98. data/lib/plaid/models/bank_transfers_events_update_webhook.rb +1 -1
  99. data/lib/plaid/models/categories_get_response.rb +1 -1
  100. data/lib/plaid/models/category.rb +1 -1
  101. data/lib/plaid/models/cause.rb +1 -1
  102. data/lib/plaid/models/connected_application.rb +357 -0
  103. data/lib/plaid/models/country_code.rb +1 -1
  104. data/lib/plaid/models/credit_card_liability.rb +5 -9
  105. data/lib/plaid/models/credit_filter.rb +2 -2
  106. data/lib/plaid/models/customer_initiated_return_risk.rb +300 -0
  107. data/lib/plaid/models/default_update_webhook.rb +1 -1
  108. data/lib/plaid/models/deposit_switch_address_data.rb +1 -1
  109. data/lib/plaid/models/deposit_switch_alt_create_request.rb +59 -5
  110. data/lib/plaid/models/deposit_switch_alt_create_response.rb +1 -1
  111. data/lib/plaid/models/deposit_switch_create_request.rb +59 -5
  112. data/lib/plaid/models/deposit_switch_create_request_options.rb +251 -0
  113. data/lib/plaid/models/deposit_switch_create_response.rb +1 -1
  114. data/lib/plaid/models/deposit_switch_get_request.rb +1 -1
  115. data/lib/plaid/models/deposit_switch_get_response.rb +74 -7
  116. data/lib/plaid/models/deposit_switch_state_update_webhook.rb +250 -0
  117. data/lib/plaid/models/deposit_switch_target_account.rb +1 -1
  118. data/lib/plaid/models/deposit_switch_target_user.rb +1 -1
  119. data/lib/plaid/models/deposit_switch_token_create_request.rb +1 -1
  120. data/lib/plaid/models/deposit_switch_token_create_response.rb +2 -2
  121. data/lib/plaid/models/depository_filter.rb +2 -2
  122. data/lib/plaid/models/email.rb +1 -1
  123. data/lib/plaid/models/employee.rb +6 -17
  124. data/lib/plaid/models/employee_income_summary_field_string.rb +1 -1
  125. data/lib/plaid/models/employer.rb +7 -3
  126. data/lib/plaid/models/employer_income_summary_field_string.rb +1 -1
  127. data/lib/plaid/models/employers_search_request.rb +1 -1
  128. data/lib/plaid/models/employers_search_response.rb +1 -1
  129. data/lib/plaid/models/error.rb +2 -9
  130. data/lib/plaid/models/external_payment_options.rb +61 -7
  131. data/lib/plaid/models/external_payment_refund_details.rb +7 -2
  132. data/lib/plaid/models/{external_payment_schedule.rb → external_payment_schedule_base.rb} +21 -25
  133. data/lib/plaid/models/external_payment_schedule_get.rb +19 -19
  134. data/lib/plaid/models/external_payment_schedule_request.rb +283 -0
  135. data/lib/plaid/models/health_incident.rb +18 -5
  136. data/lib/plaid/models/historical_balance.rb +3 -3
  137. data/lib/plaid/models/historical_update_webhook.rb +1 -1
  138. data/lib/plaid/models/holding.rb +3 -3
  139. data/lib/plaid/models/holdings_default_update_webhook.rb +1 -1
  140. data/lib/plaid/models/identity_get_request.rb +1 -1
  141. data/lib/plaid/models/identity_get_request_options.rb +1 -1
  142. data/lib/plaid/models/identity_get_response.rb +1 -1
  143. data/lib/plaid/models/incident_update.rb +4 -4
  144. data/lib/plaid/models/income_breakdown.rb +36 -2
  145. data/lib/plaid/models/income_summary.rb +26 -1
  146. data/lib/plaid/models/income_summary_field_number.rb +1 -1
  147. data/lib/plaid/models/income_summary_field_string.rb +1 -1
  148. data/lib/plaid/models/income_verification_create_request.rb +1 -1
  149. data/lib/plaid/models/income_verification_create_response.rb +1 -1
  150. data/lib/plaid/models/income_verification_documents_download_request.rb +1 -1
  151. data/lib/plaid/models/income_verification_documents_download_response.rb +1 -1
  152. data/lib/plaid/models/{income_verification_paystub_get_request.rb → income_verification_paystubs_get_request.rb} +5 -5
  153. data/lib/plaid/models/income_verification_paystubs_get_response.rb +241 -0
  154. data/lib/plaid/models/income_verification_refresh_request.rb +245 -0
  155. data/lib/plaid/models/income_verification_refresh_response.rb +239 -0
  156. data/lib/plaid/models/income_verification_status_webhook.rb +2 -2
  157. data/lib/plaid/models/income_verification_summary_get_request.rb +1 -1
  158. data/lib/plaid/models/income_verification_summary_get_response.rb +12 -2
  159. data/lib/plaid/models/income_verification_webhook_status.rb +1 -1
  160. data/lib/plaid/models/inflow_model.rb +1 -1
  161. data/lib/plaid/models/initial_update_webhook.rb +1 -1
  162. data/lib/plaid/models/institution.rb +2 -2
  163. data/lib/plaid/models/institution_status.rb +30 -3
  164. data/lib/plaid/models/institutions_get_by_id_request.rb +1 -1
  165. data/lib/plaid/models/institutions_get_by_id_request_options.rb +2 -2
  166. data/lib/plaid/models/institutions_get_by_id_response.rb +1 -1
  167. data/lib/plaid/models/institutions_get_request.rb +1 -1
  168. data/lib/plaid/models/institutions_get_request_options.rb +2 -2
  169. data/lib/plaid/models/institutions_get_response.rb +1 -1
  170. data/lib/plaid/models/institutions_search_account_filter.rb +1 -1
  171. data/lib/plaid/models/institutions_search_payment_initiation_options.rb +1 -1
  172. data/lib/plaid/models/institutions_search_request.rb +2 -2
  173. data/lib/plaid/models/institutions_search_request_options.rb +2 -2
  174. data/lib/plaid/models/institutions_search_response.rb +1 -1
  175. data/lib/plaid/models/investment_filter.rb +2 -2
  176. data/lib/plaid/models/investment_holdings_get_request_options.rb +1 -1
  177. data/lib/plaid/models/investment_transaction.rb +5 -5
  178. data/lib/plaid/models/investments_default_update_webhook.rb +1 -1
  179. data/lib/plaid/models/investments_holdings_get_request.rb +1 -1
  180. data/lib/plaid/models/investments_holdings_get_response.rb +1 -1
  181. data/lib/plaid/models/investments_transactions_get_request.rb +1 -1
  182. data/lib/plaid/models/investments_transactions_get_request_options.rb +1 -1
  183. data/lib/plaid/models/investments_transactions_get_response.rb +1 -1
  184. data/lib/plaid/models/item.rb +5 -5
  185. data/lib/plaid/models/item_access_token_invalidate_request.rb +1 -1
  186. data/lib/plaid/models/item_access_token_invalidate_response.rb +1 -1
  187. data/lib/plaid/models/item_application_list_request.rb +241 -0
  188. data/lib/plaid/models/item_application_list_response.rb +237 -0
  189. data/lib/plaid/models/item_application_list_user_auth.rb +232 -0
  190. data/lib/plaid/models/item_application_scopes_update_request.rb +274 -0
  191. data/lib/plaid/models/{income_verification_paystub_get_response.rb → item_application_scopes_update_response.rb} +11 -15
  192. data/lib/plaid/models/item_error_webhook.rb +1 -1
  193. data/lib/plaid/models/item_get_request.rb +1 -1
  194. data/lib/plaid/models/item_get_response.rb +2 -2
  195. data/lib/plaid/models/item_import_request.rb +1 -1
  196. data/lib/plaid/models/item_import_request_options.rb +1 -1
  197. data/lib/plaid/models/item_import_request_user_auth.rb +1 -1
  198. data/lib/plaid/models/item_import_response.rb +1 -1
  199. data/lib/plaid/models/item_product_ready_webhook.rb +1 -1
  200. data/lib/plaid/models/item_public_token_create_request.rb +1 -1
  201. data/lib/plaid/models/item_public_token_create_response.rb +1 -1
  202. data/lib/plaid/models/item_public_token_exchange_request.rb +1 -1
  203. data/lib/plaid/models/item_public_token_exchange_response.rb +1 -1
  204. data/lib/plaid/models/item_remove_request.rb +1 -1
  205. data/lib/plaid/models/item_remove_response.rb +1 -1
  206. data/lib/plaid/models/item_status.rb +7 -16
  207. data/lib/plaid/models/item_status_investments.rb +232 -0
  208. data/lib/plaid/models/{nullable_recipient_bacs.rb → item_status_last_webhook.rb} +22 -26
  209. data/lib/plaid/models/{nullable_item_status.rb → item_status_nullable.rb} +10 -19
  210. data/lib/plaid/models/item_status_transactions.rb +232 -0
  211. data/lib/plaid/models/item_webhook_update_request.rb +1 -1
  212. data/lib/plaid/models/item_webhook_update_response.rb +1 -1
  213. data/lib/plaid/models/jwk_public_key.rb +1 -1
  214. data/lib/plaid/models/jwt_header.rb +1 -1
  215. data/lib/plaid/models/liabilities_default_update_webhook.rb +27 -2
  216. data/lib/plaid/models/liabilities_get_request.rb +1 -1
  217. data/lib/plaid/models/liabilities_get_request_options.rb +1 -1
  218. data/lib/plaid/models/liabilities_get_response.rb +1 -1
  219. data/lib/plaid/models/liabilities_object.rb +4 -4
  220. data/lib/plaid/models/liability_override.rb +3 -3
  221. data/lib/plaid/models/link_token_account_filters.rb +2 -2
  222. data/lib/plaid/models/link_token_create_request.rb +12 -3
  223. data/lib/plaid/models/link_token_create_request_account_subtypes.rb +2 -2
  224. data/lib/plaid/models/link_token_create_request_auth.rb +1 -1
  225. data/lib/plaid/models/link_token_create_request_deposit_switch.rb +1 -1
  226. data/lib/plaid/models/link_token_create_request_income_verification.rb +2 -3
  227. data/lib/plaid/models/link_token_create_request_payment_initiation.rb +22 -1
  228. data/lib/plaid/models/link_token_create_request_user.rb +8 -8
  229. data/lib/plaid/models/link_token_create_response.rb +1 -1
  230. data/lib/plaid/models/link_token_eu_config.rb +220 -0
  231. data/lib/plaid/models/link_token_get_metadata_response.rb +11 -1
  232. data/lib/plaid/models/link_token_get_request.rb +1 -1
  233. data/lib/plaid/models/link_token_get_response.rb +11 -1
  234. data/lib/plaid/models/loan_filter.rb +2 -2
  235. data/lib/plaid/models/location.rb +1 -1
  236. data/lib/plaid/models/meta.rb +1 -1
  237. data/lib/plaid/models/mfa.rb +1 -1
  238. data/lib/plaid/models/mortgage_interest_rate.rb +1 -1
  239. data/lib/plaid/models/mortgage_liability.rb +20 -6
  240. data/lib/plaid/models/mortgage_property_address.rb +1 -1
  241. data/lib/plaid/models/numbers.rb +1 -41
  242. data/lib/plaid/models/numbers_ach.rb +2 -2
  243. data/lib/plaid/models/{nullable_numbers_ach.rb → numbers_ach_nullable.rb} +5 -5
  244. data/lib/plaid/models/numbers_bacs.rb +1 -1
  245. data/lib/plaid/models/{nullable_numbers_bacs.rb → numbers_bacs_nullable.rb} +4 -4
  246. data/lib/plaid/models/numbers_eft.rb +1 -1
  247. data/lib/plaid/models/{nullable_numbers_eft.rb → numbers_eft_nullable.rb} +4 -4
  248. data/lib/plaid/models/numbers_international.rb +1 -1
  249. data/lib/plaid/models/{nullable_numbers_international.rb → numbers_international_nullable.rb} +4 -4
  250. data/lib/plaid/models/override_account_type.rb +40 -0
  251. data/lib/plaid/models/override_accounts.rb +2 -2
  252. data/lib/plaid/models/owner.rb +1 -1
  253. data/lib/plaid/models/owner_override.rb +1 -1
  254. data/lib/plaid/models/pay_frequency.rb +1 -1
  255. data/lib/plaid/models/pay_period_details.rb +4 -4
  256. data/lib/plaid/models/payment_amount.rb +12 -1
  257. data/lib/plaid/models/payment_initiation_address.rb +118 -4
  258. data/lib/plaid/models/payment_initiation_metadata.rb +16 -1
  259. data/lib/plaid/models/payment_initiation_optional_restriction_bacs.rb +53 -1
  260. data/lib/plaid/models/payment_initiation_payment.rb +20 -2
  261. data/lib/plaid/models/payment_initiation_payment_create_request.rb +53 -3
  262. data/lib/plaid/models/payment_initiation_payment_create_response.rb +35 -1
  263. data/lib/plaid/models/payment_initiation_payment_get_request.rb +22 -1
  264. data/lib/plaid/models/payment_initiation_payment_get_response.rb +20 -2
  265. data/lib/plaid/models/payment_initiation_payment_list_request.rb +1 -18
  266. data/lib/plaid/models/payment_initiation_payment_list_response.rb +1 -1
  267. data/lib/plaid/models/payment_initiation_payment_token_create_request.rb +22 -1
  268. data/lib/plaid/models/payment_initiation_payment_token_create_response.rb +1 -1
  269. data/lib/plaid/models/payment_initiation_recipient.rb +2 -2
  270. data/lib/plaid/models/payment_initiation_recipient_create_request.rb +49 -2
  271. data/lib/plaid/models/payment_initiation_recipient_create_response.rb +1 -1
  272. data/lib/plaid/models/payment_initiation_recipient_get_request.rb +22 -1
  273. data/lib/plaid/models/payment_initiation_recipient_get_response.rb +2 -2
  274. data/lib/plaid/models/payment_initiation_recipient_get_response_all_of.rb +1 -1
  275. data/lib/plaid/models/payment_initiation_recipient_list_request.rb +1 -1
  276. data/lib/plaid/models/payment_initiation_recipient_list_response.rb +1 -1
  277. data/lib/plaid/models/payment_initiation_standing_order_metadata.rb +16 -1
  278. data/lib/plaid/models/payment_meta.rb +1 -1
  279. data/lib/plaid/models/payment_schedule_interval.rb +1 -1
  280. data/lib/plaid/models/payment_status_update_webhook.rb +2 -2
  281. data/lib/plaid/models/paystub.rb +3 -18
  282. data/lib/plaid/models/paystub_deduction.rb +1 -1
  283. data/lib/plaid/models/{nullable_access_token.rb → paystub_employer.rb} +17 -6
  284. data/lib/plaid/models/paystub_ytd_details.rb +2 -1
  285. data/lib/plaid/models/pending_expiration_webhook.rb +2 -2
  286. data/lib/plaid/models/phone_number.rb +11 -3
  287. data/lib/plaid/models/processor_apex_processor_token_create_request.rb +1 -1
  288. data/lib/plaid/models/processor_auth_get_request.rb +1 -1
  289. data/lib/plaid/models/processor_auth_get_response.rb +1 -1
  290. data/lib/plaid/models/processor_balance_get_request.rb +1 -1
  291. data/lib/plaid/models/processor_balance_get_response.rb +1 -1
  292. data/lib/plaid/models/processor_bank_transfer_create_request.rb +459 -0
  293. data/lib/plaid/models/processor_bank_transfer_create_response.rb +239 -0
  294. data/lib/plaid/models/processor_identity_get_request.rb +1 -1
  295. data/lib/plaid/models/processor_identity_get_response.rb +1 -1
  296. data/lib/plaid/models/processor_number.rb +5 -5
  297. data/lib/plaid/models/processor_stripe_bank_account_token_create_request.rb +1 -1
  298. data/lib/plaid/models/processor_stripe_bank_account_token_create_response.rb +1 -1
  299. data/lib/plaid/models/processor_token_create_request.rb +36 -2
  300. data/lib/plaid/models/processor_token_create_response.rb +1 -1
  301. data/lib/plaid/models/product_access.rb +262 -0
  302. data/lib/plaid/models/product_status.rb +3 -3
  303. data/lib/plaid/models/product_status_breakdown.rb +1 -2
  304. data/lib/plaid/models/products.rb +2 -1
  305. data/lib/plaid/models/projected_income_summary_field_number.rb +1 -1
  306. data/lib/plaid/models/pslf_status.rb +2 -2
  307. data/lib/plaid/models/recaptcha_required_error.rb +1 -1
  308. data/lib/plaid/models/recipient_bacs.rb +53 -1
  309. data/lib/plaid/models/recipient_bacs_nullable.rb +288 -0
  310. data/lib/plaid/models/requested_scopes.rb +261 -0
  311. data/lib/plaid/models/sandbox_bank_transfer_fire_webhook_request.rb +1 -1
  312. data/lib/plaid/models/sandbox_bank_transfer_fire_webhook_response.rb +1 -1
  313. data/lib/plaid/models/sandbox_bank_transfer_simulate_request.rb +1 -1
  314. data/lib/plaid/models/sandbox_bank_transfer_simulate_response.rb +1 -1
  315. data/lib/plaid/models/sandbox_income_fire_webhook_request.rb +309 -0
  316. data/lib/plaid/models/sandbox_income_fire_webhook_response.rb +225 -0
  317. data/lib/plaid/models/sandbox_item_fire_webhook_request.rb +1 -1
  318. data/lib/plaid/models/sandbox_item_fire_webhook_response.rb +1 -1
  319. data/lib/plaid/models/sandbox_item_reset_login_request.rb +1 -1
  320. data/lib/plaid/models/sandbox_item_reset_login_response.rb +1 -1
  321. data/lib/plaid/models/sandbox_item_set_verification_status_request.rb +1 -1
  322. data/lib/plaid/models/sandbox_item_set_verification_status_response.rb +1 -1
  323. data/lib/plaid/models/sandbox_oauth_select_accounts_request.rb +240 -0
  324. data/lib/plaid/models/sandbox_processor_token_create_request.rb +1 -1
  325. data/lib/plaid/models/sandbox_processor_token_create_request_options.rb +1 -1
  326. data/lib/plaid/models/sandbox_processor_token_create_response.rb +1 -1
  327. data/lib/plaid/models/sandbox_public_token_create_request.rb +1 -1
  328. data/lib/plaid/models/sandbox_public_token_create_request_options.rb +1 -1
  329. data/lib/plaid/models/sandbox_public_token_create_request_options_transactions.rb +4 -4
  330. data/lib/plaid/models/sandbox_public_token_create_response.rb +1 -1
  331. data/lib/plaid/models/scopes.rb +243 -0
  332. data/lib/plaid/models/scopes_nullable.rb +249 -0
  333. data/lib/plaid/models/security.rb +3 -3
  334. data/lib/plaid/models/sender_bacs_nullable.rb +288 -0
  335. data/lib/plaid/models/servicer_address_data.rb +1 -1
  336. data/lib/plaid/models/signal_address_data.rb +263 -0
  337. data/lib/plaid/models/signal_decision_report_request.rb +259 -0
  338. data/lib/plaid/models/signal_decision_report_response.rb +224 -0
  339. data/lib/plaid/models/signal_device.rb +232 -0
  340. data/lib/plaid/models/signal_evaluate_core_attributes.rb +584 -0
  341. data/lib/plaid/models/signal_evaluate_request.rb +355 -0
  342. data/lib/plaid/models/signal_evaluate_response.rb +252 -0
  343. data/lib/plaid/models/signal_person_name.rb +265 -0
  344. data/lib/plaid/models/signal_return_report_request.rb +259 -0
  345. data/lib/plaid/models/signal_return_report_response.rb +224 -0
  346. data/lib/plaid/models/signal_scores.rb +227 -0
  347. data/lib/plaid/models/signal_user.rb +252 -0
  348. data/lib/plaid/models/standalone_account_type.rb +1 -1
  349. data/lib/plaid/models/standalone_currency_code_list.rb +1 -1
  350. data/lib/plaid/models/standalone_investment_transaction_subtype.rb +1 -1
  351. data/lib/plaid/models/standalone_investment_transaction_type.rb +1 -1
  352. data/lib/plaid/models/student_loan.rb +27 -7
  353. data/lib/plaid/models/student_loan_repayment_model.rb +1 -1
  354. data/lib/plaid/models/student_loan_status.rb +2 -2
  355. data/lib/plaid/models/student_repayment_plan.rb +3 -3
  356. data/lib/plaid/models/transaction.rb +164 -124
  357. data/lib/plaid/models/transaction_all_of.rb +312 -0
  358. data/lib/plaid/models/transaction_base.rb +436 -0
  359. data/lib/plaid/models/transaction_code.rb +1 -1
  360. data/lib/plaid/models/transaction_data.rb +2 -2
  361. data/lib/plaid/models/transaction_override.rb +3 -3
  362. data/lib/plaid/models/transactions_get_request.rb +1 -1
  363. data/lib/plaid/models/transactions_get_request_options.rb +18 -5
  364. data/lib/plaid/models/transactions_get_response.rb +1 -1
  365. data/lib/plaid/models/transactions_refresh_request.rb +1 -1
  366. data/lib/plaid/models/transactions_refresh_response.rb +1 -1
  367. data/lib/plaid/models/transactions_removed_webhook.rb +1 -1
  368. data/lib/plaid/models/user_custom_password.rb +1 -1
  369. data/lib/plaid/models/user_permission_revoked_webhook.rb +1 -1
  370. data/lib/plaid/models/verification_expired_webhook.rb +1 -1
  371. data/lib/plaid/models/verification_refresh_status.rb +36 -0
  372. data/lib/plaid/models/verification_status.rb +1 -1
  373. data/lib/plaid/models/warning.rb +35 -1
  374. data/lib/plaid/models/webhook_update_acknowledged_webhook.rb +1 -1
  375. data/lib/plaid/models/webhook_verification_key_get_request.rb +1 -1
  376. data/lib/plaid/models/webhook_verification_key_get_response.rb +1 -1
  377. data/lib/plaid/models/ytd_gross_income_summary_field_number.rb +1 -1
  378. data/lib/plaid/models/ytd_net_income_summary_field_number.rb +1 -1
  379. data/lib/plaid/version.rb +2 -2
  380. data/pkg/plaid-14.0.0.beta.5.gem +0 -0
  381. data/plaid.gemspec +1 -1
  382. data/templates/ruby/api_client.mustache +3 -1
  383. data/test/test_bank_transfers.rb +1 -1
  384. data/test/test_item.rb +0 -9
  385. data/test/test_payment_initiation.rb +1 -1
  386. data/test/test_processor.rb +1 -16
  387. metadata +65 -16
@@ -0,0 +1,232 @@
1
+ =begin
2
+ #The Plaid API
3
+
4
+ #The Plaid REST API. Please see https://plaid.com/docs/api for more details.
5
+
6
+ The version of the OpenAPI document: 2020-09-14_1.20.6
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.1.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Plaid
17
+ # Details about the end user's device
18
+ class SignalDevice
19
+ # The IP address of the device that initiated the transaction
20
+ attr_accessor :ip_address
21
+
22
+ # The user agent of the device that initiated the transaction (e.g. \"Mozilla/5.0\")
23
+ attr_accessor :user_agent
24
+
25
+ # Attribute mapping from ruby-style variable name to JSON key.
26
+ def self.attribute_map
27
+ {
28
+ :'ip_address' => :'ip_address',
29
+ :'user_agent' => :'user_agent'
30
+ }
31
+ end
32
+
33
+ # Returns all the JSON keys this model knows about
34
+ def self.acceptable_attributes
35
+ attribute_map.values
36
+ end
37
+
38
+ # Attribute type mapping.
39
+ def self.openapi_types
40
+ {
41
+ :'ip_address' => :'String',
42
+ :'user_agent' => :'String'
43
+ }
44
+ end
45
+
46
+ # List of attributes with nullable: true
47
+ def self.openapi_nullable
48
+ Set.new([
49
+ :'ip_address',
50
+ :'user_agent'
51
+ ])
52
+ end
53
+
54
+ # Initializes the object
55
+ # @param [Hash] attributes Model attributes in the form of hash
56
+ def initialize(attributes = {})
57
+ if (!attributes.is_a?(Hash))
58
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Plaid::SignalDevice` initialize method"
59
+ end
60
+
61
+ # check to see if the attribute exists and convert string to symbol for hash key
62
+ attributes = attributes.each_with_object({}) { |(k, v), h|
63
+ if (!self.class.attribute_map.key?(k.to_sym))
64
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Plaid::SignalDevice`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
65
+ end
66
+ h[k.to_sym] = v
67
+ }
68
+
69
+ if attributes.key?(:'ip_address')
70
+ self.ip_address = attributes[:'ip_address']
71
+ end
72
+
73
+ if attributes.key?(:'user_agent')
74
+ self.user_agent = attributes[:'user_agent']
75
+ end
76
+ end
77
+
78
+ # Show invalid properties with the reasons. Usually used together with valid?
79
+ # @return Array for valid properties with the reasons
80
+ def list_invalid_properties
81
+ invalid_properties = Array.new
82
+ invalid_properties
83
+ end
84
+
85
+ # Check to see if the all the properties in the model are valid
86
+ # @return true if the model is valid
87
+ def valid?
88
+ true
89
+ end
90
+
91
+ # Checks equality by comparing each attribute.
92
+ # @param [Object] Object to be compared
93
+ def ==(o)
94
+ return true if self.equal?(o)
95
+ self.class == o.class &&
96
+ ip_address == o.ip_address &&
97
+ user_agent == o.user_agent
98
+ end
99
+
100
+ # @see the `==` method
101
+ # @param [Object] Object to be compared
102
+ def eql?(o)
103
+ self == o
104
+ end
105
+
106
+ # Calculates hash code according to all attributes.
107
+ # @return [Integer] Hash code
108
+ def hash
109
+ [ip_address, user_agent].hash
110
+ end
111
+
112
+ # Builds the object from hash
113
+ # @param [Hash] attributes Model attributes in the form of hash
114
+ # @return [Object] Returns the model itself
115
+ def self.build_from_hash(attributes)
116
+ new.build_from_hash(attributes)
117
+ end
118
+
119
+ # Builds the object from hash
120
+ # @param [Hash] attributes Model attributes in the form of hash
121
+ # @return [Object] Returns the model itself
122
+ def build_from_hash(attributes)
123
+ return nil unless attributes.is_a?(Hash)
124
+ self.class.openapi_types.each_pair do |key, type|
125
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
126
+ self.send("#{key}=", nil)
127
+ elsif type =~ /\AArray<(.*)>/i
128
+ # check to ensure the input is an array given that the attribute
129
+ # is documented as an array but the input is not
130
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
131
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
132
+ end
133
+ elsif !attributes[self.class.attribute_map[key]].nil?
134
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
135
+ end
136
+ end
137
+
138
+ self
139
+ end
140
+
141
+ # Deserializes the data based on type
142
+ # @param string type Data type
143
+ # @param string value Value to be deserialized
144
+ # @return [Object] Deserialized data
145
+ def _deserialize(type, value)
146
+ case type.to_sym
147
+ when :Time
148
+ Time.parse(value)
149
+ when :Date
150
+ Date.parse(value)
151
+ when :String
152
+ value.to_s
153
+ when :Integer
154
+ value.to_i
155
+ when :Float
156
+ value.to_f
157
+ when :Boolean
158
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
159
+ true
160
+ else
161
+ false
162
+ end
163
+ when :Object
164
+ # generic object (usually a Hash), return directly
165
+ value
166
+ when /\AArray<(?<inner_type>.+)>\z/
167
+ inner_type = Regexp.last_match[:inner_type]
168
+ value.map { |v| _deserialize(inner_type, v) }
169
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
170
+ k_type = Regexp.last_match[:k_type]
171
+ v_type = Regexp.last_match[:v_type]
172
+ {}.tap do |hash|
173
+ value.each do |k, v|
174
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
175
+ end
176
+ end
177
+ else # model
178
+ # models (e.g. Pet) or oneOf
179
+ klass = Plaid.const_get(type)
180
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
181
+ end
182
+ end
183
+
184
+ # Returns the string representation of the object
185
+ # @return [String] String presentation of the object
186
+ def to_s
187
+ to_hash.to_s
188
+ end
189
+
190
+ # to_body is an alias to to_hash (backward compatibility)
191
+ # @return [Hash] Returns the object in the form of hash
192
+ def to_body
193
+ to_hash
194
+ end
195
+
196
+ # Returns the object in the form of hash
197
+ # @return [Hash] Returns the object in the form of hash
198
+ def to_hash
199
+ hash = {}
200
+ self.class.attribute_map.each_pair do |attr, param|
201
+ value = self.send(attr)
202
+ if value.nil?
203
+ is_nullable = self.class.openapi_nullable.include?(attr)
204
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
205
+ end
206
+
207
+ hash[param] = _to_hash(value)
208
+ end
209
+ hash
210
+ end
211
+
212
+ # Outputs non-array value in the form of hash
213
+ # For object, use to_hash. Otherwise, just return the value
214
+ # @param [Object] value Any valid value
215
+ # @return [Hash] Returns the value in the form of hash
216
+ def _to_hash(value)
217
+ if value.is_a?(Array)
218
+ value.compact.map { |v| _to_hash(v) }
219
+ elsif value.is_a?(Hash)
220
+ {}.tap do |hash|
221
+ value.each { |k, v| hash[k] = _to_hash(v) }
222
+ end
223
+ elsif value.respond_to? :to_hash
224
+ value.to_hash
225
+ else
226
+ value
227
+ end
228
+ end
229
+
230
+ end
231
+
232
+ end
@@ -0,0 +1,584 @@
1
+ =begin
2
+ #The Plaid API
3
+
4
+ #The Plaid REST API. Please see https://plaid.com/docs/api for more details.
5
+
6
+ The version of the OpenAPI document: 2020-09-14_1.20.6
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.1.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Plaid
17
+ # The core attributes object contains additional data that can be used to assess the ACH return risk, such as past ACH return events, balance/transaction history, the Item’s connection history in the Plaid network, and identity change history.
18
+ class SignalEvaluateCoreAttributes
19
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 7 days from the account that will be debited.
20
+ attr_accessor :unauthorized_transactions_count_7d
21
+
22
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 30 days from the account that will be debited.
23
+ attr_accessor :unauthorized_transactions_count_30d
24
+
25
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 60 days from the account that will be debited.
26
+ attr_accessor :unauthorized_transactions_count_60d
27
+
28
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 90 days from the account that will be debited.
29
+ attr_accessor :unauthorized_transactions_count_90d
30
+
31
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 7 days from the account that will be debited.
32
+ attr_accessor :nsf_overdraft_transactions_count_7d
33
+
34
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 30 days from the account that will be debited.
35
+ attr_accessor :nsf_overdraft_transactions_count_30d
36
+
37
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 60 days from the account that will be debited.
38
+ attr_accessor :nsf_overdraft_transactions_count_60d
39
+
40
+ # We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 90 days from the account that will be debited.
41
+ attr_accessor :nsf_overdraft_transactions_count_90d
42
+
43
+ # The number of days since the first time the Item was connected to an application via Plaid
44
+ attr_accessor :days_since_first_plaid_connection
45
+
46
+ # The number of times the Item has been connected to applications via Plaid over the past 7 days
47
+ attr_accessor :plaid_connections_count_7d
48
+
49
+ # The number of times the Item has been connected to applications via Plaid over the past 30 days
50
+ attr_accessor :plaid_connections_count_30d
51
+
52
+ # The total number of times the Item has been connected to applications via Plaid
53
+ attr_accessor :total_plaid_connections_count
54
+
55
+ # Indicates if the ACH transaction funding account is a savings/money market account
56
+ attr_accessor :is_savings_or_money_market_account
57
+
58
+ # The total credit (inflow) transaction amount over the past 10 days from the account that will be debited
59
+ attr_accessor :total_credit_transactions_amount_10d
60
+
61
+ # The total debit (outflow) transaction amount over the past 10 days from the account that will be debited
62
+ attr_accessor :total_debit_transactions_amount_10d
63
+
64
+ # The 50th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited
65
+ attr_accessor :p50_credit_transactions_amount_28d
66
+
67
+ # The 50th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited
68
+ attr_accessor :p50_debit_transactions_amount_28d
69
+
70
+ # The 95th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited
71
+ attr_accessor :p95_credit_transactions_amount_28d
72
+
73
+ # The 95th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited
74
+ attr_accessor :p95_debit_transactions_amount_28d
75
+
76
+ # The number of days within the past 90 days when the account that will be debited had a negative end-of-day available balance
77
+ attr_accessor :days_with_negative_balance_count_90d
78
+
79
+ # The 90th percentile of the end-of-day available balance over the past 30 days of the account that will be debited
80
+ attr_accessor :p90_eod_balance_30d
81
+
82
+ # The 90th percentile of the end-of-day available balance over the past 60 days of the account that will be debited
83
+ attr_accessor :p90_eod_balance_60d
84
+
85
+ # The 90th percentile of the end-of-day available balance over the past 90 days of the account that will be debited
86
+ attr_accessor :p90_eod_balance_90d
87
+
88
+ # The 10th percentile of the end-of-day available balance over the past 30 days of the account that will be debited
89
+ attr_accessor :p10_eod_balance_30d
90
+
91
+ # The 10th percentile of the end-of-day available balance over the past 60 days of the account that will be debited
92
+ attr_accessor :p10_eod_balance_60d
93
+
94
+ # The 10th percentile of the end-of-day available balance over the past 90 days of the account that will be debited
95
+ attr_accessor :p10_eod_balance_90d
96
+
97
+ # Available balance, as of the `balance_last_updated` time. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.
98
+ attr_accessor :available_balance
99
+
100
+ # Current balance, as of the `balance_last_updated` time. The current balance is the total amount of funds in the account.
101
+ attr_accessor :current_balance
102
+
103
+ # Timestamp in ISO-8601 format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the balance for the given account has been updated.
104
+ attr_accessor :balance_last_updated
105
+
106
+ # The number of times the account's phone numbers on file have changed over the past 28 days
107
+ attr_accessor :phone_change_count_28d
108
+
109
+ # The number of times the account's phone numbers on file have changed over the past 90 days
110
+ attr_accessor :phone_change_count_90d
111
+
112
+ # The number of times the account's email addresses on file have changed over the past 28 days
113
+ attr_accessor :email_change_count_28d
114
+
115
+ # The number of times the account's email addresses on file have changed over the past 90 days
116
+ attr_accessor :email_change_count_90d
117
+
118
+ # The number of times the account's addresses on file have changed over the past 28 days
119
+ attr_accessor :address_change_count_28d
120
+
121
+ # The number of times the account's addresses on file have changed over the past 90 days
122
+ attr_accessor :address_change_count_90d
123
+
124
+ # Attribute mapping from ruby-style variable name to JSON key.
125
+ def self.attribute_map
126
+ {
127
+ :'unauthorized_transactions_count_7d' => :'unauthorized_transactions_count_7d',
128
+ :'unauthorized_transactions_count_30d' => :'unauthorized_transactions_count_30d',
129
+ :'unauthorized_transactions_count_60d' => :'unauthorized_transactions_count_60d',
130
+ :'unauthorized_transactions_count_90d' => :'unauthorized_transactions_count_90d',
131
+ :'nsf_overdraft_transactions_count_7d' => :'nsf_overdraft_transactions_count_7d',
132
+ :'nsf_overdraft_transactions_count_30d' => :'nsf_overdraft_transactions_count_30d',
133
+ :'nsf_overdraft_transactions_count_60d' => :'nsf_overdraft_transactions_count_60d',
134
+ :'nsf_overdraft_transactions_count_90d' => :'nsf_overdraft_transactions_count_90d',
135
+ :'days_since_first_plaid_connection' => :'days_since_first_plaid_connection',
136
+ :'plaid_connections_count_7d' => :'plaid_connections_count_7d',
137
+ :'plaid_connections_count_30d' => :'plaid_connections_count_30d',
138
+ :'total_plaid_connections_count' => :'total_plaid_connections_count',
139
+ :'is_savings_or_money_market_account' => :'is_savings_or_money_market_account',
140
+ :'total_credit_transactions_amount_10d' => :'total_credit_transactions_amount_10d',
141
+ :'total_debit_transactions_amount_10d' => :'total_debit_transactions_amount_10d',
142
+ :'p50_credit_transactions_amount_28d' => :'p50_credit_transactions_amount_28d',
143
+ :'p50_debit_transactions_amount_28d' => :'p50_debit_transactions_amount_28d',
144
+ :'p95_credit_transactions_amount_28d' => :'p95_credit_transactions_amount_28d',
145
+ :'p95_debit_transactions_amount_28d' => :'p95_debit_transactions_amount_28d',
146
+ :'days_with_negative_balance_count_90d' => :'days_with_negative_balance_count_90d',
147
+ :'p90_eod_balance_30d' => :'p90_eod_balance_30d',
148
+ :'p90_eod_balance_60d' => :'p90_eod_balance_60d',
149
+ :'p90_eod_balance_90d' => :'p90_eod_balance_90d',
150
+ :'p10_eod_balance_30d' => :'p10_eod_balance_30d',
151
+ :'p10_eod_balance_60d' => :'p10_eod_balance_60d',
152
+ :'p10_eod_balance_90d' => :'p10_eod_balance_90d',
153
+ :'available_balance' => :'available_balance',
154
+ :'current_balance' => :'current_balance',
155
+ :'balance_last_updated' => :'balance_last_updated',
156
+ :'phone_change_count_28d' => :'phone_change_count_28d',
157
+ :'phone_change_count_90d' => :'phone_change_count_90d',
158
+ :'email_change_count_28d' => :'email_change_count_28d',
159
+ :'email_change_count_90d' => :'email_change_count_90d',
160
+ :'address_change_count_28d' => :'address_change_count_28d',
161
+ :'address_change_count_90d' => :'address_change_count_90d'
162
+ }
163
+ end
164
+
165
+ # Returns all the JSON keys this model knows about
166
+ def self.acceptable_attributes
167
+ attribute_map.values
168
+ end
169
+
170
+ # Attribute type mapping.
171
+ def self.openapi_types
172
+ {
173
+ :'unauthorized_transactions_count_7d' => :'Integer',
174
+ :'unauthorized_transactions_count_30d' => :'Integer',
175
+ :'unauthorized_transactions_count_60d' => :'Integer',
176
+ :'unauthorized_transactions_count_90d' => :'Integer',
177
+ :'nsf_overdraft_transactions_count_7d' => :'Integer',
178
+ :'nsf_overdraft_transactions_count_30d' => :'Integer',
179
+ :'nsf_overdraft_transactions_count_60d' => :'Integer',
180
+ :'nsf_overdraft_transactions_count_90d' => :'Integer',
181
+ :'days_since_first_plaid_connection' => :'Integer',
182
+ :'plaid_connections_count_7d' => :'Integer',
183
+ :'plaid_connections_count_30d' => :'Integer',
184
+ :'total_plaid_connections_count' => :'Integer',
185
+ :'is_savings_or_money_market_account' => :'Boolean',
186
+ :'total_credit_transactions_amount_10d' => :'Float',
187
+ :'total_debit_transactions_amount_10d' => :'Float',
188
+ :'p50_credit_transactions_amount_28d' => :'Float',
189
+ :'p50_debit_transactions_amount_28d' => :'Float',
190
+ :'p95_credit_transactions_amount_28d' => :'Float',
191
+ :'p95_debit_transactions_amount_28d' => :'Float',
192
+ :'days_with_negative_balance_count_90d' => :'Integer',
193
+ :'p90_eod_balance_30d' => :'Float',
194
+ :'p90_eod_balance_60d' => :'Float',
195
+ :'p90_eod_balance_90d' => :'Float',
196
+ :'p10_eod_balance_30d' => :'Float',
197
+ :'p10_eod_balance_60d' => :'Float',
198
+ :'p10_eod_balance_90d' => :'Float',
199
+ :'available_balance' => :'Float',
200
+ :'current_balance' => :'Float',
201
+ :'balance_last_updated' => :'Time',
202
+ :'phone_change_count_28d' => :'Integer',
203
+ :'phone_change_count_90d' => :'Integer',
204
+ :'email_change_count_28d' => :'Integer',
205
+ :'email_change_count_90d' => :'Integer',
206
+ :'address_change_count_28d' => :'Integer',
207
+ :'address_change_count_90d' => :'Integer'
208
+ }
209
+ end
210
+
211
+ # List of attributes with nullable: true
212
+ def self.openapi_nullable
213
+ Set.new([
214
+ :'days_since_first_plaid_connection',
215
+ :'plaid_connections_count_7d',
216
+ :'plaid_connections_count_30d',
217
+ :'total_plaid_connections_count',
218
+ :'p50_credit_transactions_amount_28d',
219
+ :'p50_debit_transactions_amount_28d',
220
+ :'p95_credit_transactions_amount_28d',
221
+ :'p95_debit_transactions_amount_28d',
222
+ :'days_with_negative_balance_count_90d',
223
+ :'p90_eod_balance_30d',
224
+ :'p90_eod_balance_60d',
225
+ :'p90_eod_balance_90d',
226
+ :'p10_eod_balance_30d',
227
+ :'p10_eod_balance_60d',
228
+ :'p10_eod_balance_90d',
229
+ :'available_balance',
230
+ :'current_balance',
231
+ :'balance_last_updated',
232
+ :'phone_change_count_28d',
233
+ :'phone_change_count_90d',
234
+ :'email_change_count_28d',
235
+ :'email_change_count_90d',
236
+ :'address_change_count_28d',
237
+ :'address_change_count_90d'
238
+ ])
239
+ end
240
+
241
+ # Initializes the object
242
+ # @param [Hash] attributes Model attributes in the form of hash
243
+ def initialize(attributes = {})
244
+ if (!attributes.is_a?(Hash))
245
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Plaid::SignalEvaluateCoreAttributes` initialize method"
246
+ end
247
+
248
+ # check to see if the attribute exists and convert string to symbol for hash key
249
+ attributes = attributes.each_with_object({}) { |(k, v), h|
250
+ if (!self.class.attribute_map.key?(k.to_sym))
251
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Plaid::SignalEvaluateCoreAttributes`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
252
+ end
253
+ h[k.to_sym] = v
254
+ }
255
+
256
+ if attributes.key?(:'unauthorized_transactions_count_7d')
257
+ self.unauthorized_transactions_count_7d = attributes[:'unauthorized_transactions_count_7d']
258
+ end
259
+
260
+ if attributes.key?(:'unauthorized_transactions_count_30d')
261
+ self.unauthorized_transactions_count_30d = attributes[:'unauthorized_transactions_count_30d']
262
+ end
263
+
264
+ if attributes.key?(:'unauthorized_transactions_count_60d')
265
+ self.unauthorized_transactions_count_60d = attributes[:'unauthorized_transactions_count_60d']
266
+ end
267
+
268
+ if attributes.key?(:'unauthorized_transactions_count_90d')
269
+ self.unauthorized_transactions_count_90d = attributes[:'unauthorized_transactions_count_90d']
270
+ end
271
+
272
+ if attributes.key?(:'nsf_overdraft_transactions_count_7d')
273
+ self.nsf_overdraft_transactions_count_7d = attributes[:'nsf_overdraft_transactions_count_7d']
274
+ end
275
+
276
+ if attributes.key?(:'nsf_overdraft_transactions_count_30d')
277
+ self.nsf_overdraft_transactions_count_30d = attributes[:'nsf_overdraft_transactions_count_30d']
278
+ end
279
+
280
+ if attributes.key?(:'nsf_overdraft_transactions_count_60d')
281
+ self.nsf_overdraft_transactions_count_60d = attributes[:'nsf_overdraft_transactions_count_60d']
282
+ end
283
+
284
+ if attributes.key?(:'nsf_overdraft_transactions_count_90d')
285
+ self.nsf_overdraft_transactions_count_90d = attributes[:'nsf_overdraft_transactions_count_90d']
286
+ end
287
+
288
+ if attributes.key?(:'days_since_first_plaid_connection')
289
+ self.days_since_first_plaid_connection = attributes[:'days_since_first_plaid_connection']
290
+ end
291
+
292
+ if attributes.key?(:'plaid_connections_count_7d')
293
+ self.plaid_connections_count_7d = attributes[:'plaid_connections_count_7d']
294
+ end
295
+
296
+ if attributes.key?(:'plaid_connections_count_30d')
297
+ self.plaid_connections_count_30d = attributes[:'plaid_connections_count_30d']
298
+ end
299
+
300
+ if attributes.key?(:'total_plaid_connections_count')
301
+ self.total_plaid_connections_count = attributes[:'total_plaid_connections_count']
302
+ end
303
+
304
+ if attributes.key?(:'is_savings_or_money_market_account')
305
+ self.is_savings_or_money_market_account = attributes[:'is_savings_or_money_market_account']
306
+ end
307
+
308
+ if attributes.key?(:'total_credit_transactions_amount_10d')
309
+ self.total_credit_transactions_amount_10d = attributes[:'total_credit_transactions_amount_10d']
310
+ end
311
+
312
+ if attributes.key?(:'total_debit_transactions_amount_10d')
313
+ self.total_debit_transactions_amount_10d = attributes[:'total_debit_transactions_amount_10d']
314
+ end
315
+
316
+ if attributes.key?(:'p50_credit_transactions_amount_28d')
317
+ self.p50_credit_transactions_amount_28d = attributes[:'p50_credit_transactions_amount_28d']
318
+ end
319
+
320
+ if attributes.key?(:'p50_debit_transactions_amount_28d')
321
+ self.p50_debit_transactions_amount_28d = attributes[:'p50_debit_transactions_amount_28d']
322
+ end
323
+
324
+ if attributes.key?(:'p95_credit_transactions_amount_28d')
325
+ self.p95_credit_transactions_amount_28d = attributes[:'p95_credit_transactions_amount_28d']
326
+ end
327
+
328
+ if attributes.key?(:'p95_debit_transactions_amount_28d')
329
+ self.p95_debit_transactions_amount_28d = attributes[:'p95_debit_transactions_amount_28d']
330
+ end
331
+
332
+ if attributes.key?(:'days_with_negative_balance_count_90d')
333
+ self.days_with_negative_balance_count_90d = attributes[:'days_with_negative_balance_count_90d']
334
+ end
335
+
336
+ if attributes.key?(:'p90_eod_balance_30d')
337
+ self.p90_eod_balance_30d = attributes[:'p90_eod_balance_30d']
338
+ end
339
+
340
+ if attributes.key?(:'p90_eod_balance_60d')
341
+ self.p90_eod_balance_60d = attributes[:'p90_eod_balance_60d']
342
+ end
343
+
344
+ if attributes.key?(:'p90_eod_balance_90d')
345
+ self.p90_eod_balance_90d = attributes[:'p90_eod_balance_90d']
346
+ end
347
+
348
+ if attributes.key?(:'p10_eod_balance_30d')
349
+ self.p10_eod_balance_30d = attributes[:'p10_eod_balance_30d']
350
+ end
351
+
352
+ if attributes.key?(:'p10_eod_balance_60d')
353
+ self.p10_eod_balance_60d = attributes[:'p10_eod_balance_60d']
354
+ end
355
+
356
+ if attributes.key?(:'p10_eod_balance_90d')
357
+ self.p10_eod_balance_90d = attributes[:'p10_eod_balance_90d']
358
+ end
359
+
360
+ if attributes.key?(:'available_balance')
361
+ self.available_balance = attributes[:'available_balance']
362
+ end
363
+
364
+ if attributes.key?(:'current_balance')
365
+ self.current_balance = attributes[:'current_balance']
366
+ end
367
+
368
+ if attributes.key?(:'balance_last_updated')
369
+ self.balance_last_updated = attributes[:'balance_last_updated']
370
+ end
371
+
372
+ if attributes.key?(:'phone_change_count_28d')
373
+ self.phone_change_count_28d = attributes[:'phone_change_count_28d']
374
+ end
375
+
376
+ if attributes.key?(:'phone_change_count_90d')
377
+ self.phone_change_count_90d = attributes[:'phone_change_count_90d']
378
+ end
379
+
380
+ if attributes.key?(:'email_change_count_28d')
381
+ self.email_change_count_28d = attributes[:'email_change_count_28d']
382
+ end
383
+
384
+ if attributes.key?(:'email_change_count_90d')
385
+ self.email_change_count_90d = attributes[:'email_change_count_90d']
386
+ end
387
+
388
+ if attributes.key?(:'address_change_count_28d')
389
+ self.address_change_count_28d = attributes[:'address_change_count_28d']
390
+ end
391
+
392
+ if attributes.key?(:'address_change_count_90d')
393
+ self.address_change_count_90d = attributes[:'address_change_count_90d']
394
+ end
395
+ end
396
+
397
+ # Show invalid properties with the reasons. Usually used together with valid?
398
+ # @return Array for valid properties with the reasons
399
+ def list_invalid_properties
400
+ invalid_properties = Array.new
401
+ invalid_properties
402
+ end
403
+
404
+ # Check to see if the all the properties in the model are valid
405
+ # @return true if the model is valid
406
+ def valid?
407
+ true
408
+ end
409
+
410
+ # Checks equality by comparing each attribute.
411
+ # @param [Object] Object to be compared
412
+ def ==(o)
413
+ return true if self.equal?(o)
414
+ self.class == o.class &&
415
+ unauthorized_transactions_count_7d == o.unauthorized_transactions_count_7d &&
416
+ unauthorized_transactions_count_30d == o.unauthorized_transactions_count_30d &&
417
+ unauthorized_transactions_count_60d == o.unauthorized_transactions_count_60d &&
418
+ unauthorized_transactions_count_90d == o.unauthorized_transactions_count_90d &&
419
+ nsf_overdraft_transactions_count_7d == o.nsf_overdraft_transactions_count_7d &&
420
+ nsf_overdraft_transactions_count_30d == o.nsf_overdraft_transactions_count_30d &&
421
+ nsf_overdraft_transactions_count_60d == o.nsf_overdraft_transactions_count_60d &&
422
+ nsf_overdraft_transactions_count_90d == o.nsf_overdraft_transactions_count_90d &&
423
+ days_since_first_plaid_connection == o.days_since_first_plaid_connection &&
424
+ plaid_connections_count_7d == o.plaid_connections_count_7d &&
425
+ plaid_connections_count_30d == o.plaid_connections_count_30d &&
426
+ total_plaid_connections_count == o.total_plaid_connections_count &&
427
+ is_savings_or_money_market_account == o.is_savings_or_money_market_account &&
428
+ total_credit_transactions_amount_10d == o.total_credit_transactions_amount_10d &&
429
+ total_debit_transactions_amount_10d == o.total_debit_transactions_amount_10d &&
430
+ p50_credit_transactions_amount_28d == o.p50_credit_transactions_amount_28d &&
431
+ p50_debit_transactions_amount_28d == o.p50_debit_transactions_amount_28d &&
432
+ p95_credit_transactions_amount_28d == o.p95_credit_transactions_amount_28d &&
433
+ p95_debit_transactions_amount_28d == o.p95_debit_transactions_amount_28d &&
434
+ days_with_negative_balance_count_90d == o.days_with_negative_balance_count_90d &&
435
+ p90_eod_balance_30d == o.p90_eod_balance_30d &&
436
+ p90_eod_balance_60d == o.p90_eod_balance_60d &&
437
+ p90_eod_balance_90d == o.p90_eod_balance_90d &&
438
+ p10_eod_balance_30d == o.p10_eod_balance_30d &&
439
+ p10_eod_balance_60d == o.p10_eod_balance_60d &&
440
+ p10_eod_balance_90d == o.p10_eod_balance_90d &&
441
+ available_balance == o.available_balance &&
442
+ current_balance == o.current_balance &&
443
+ balance_last_updated == o.balance_last_updated &&
444
+ phone_change_count_28d == o.phone_change_count_28d &&
445
+ phone_change_count_90d == o.phone_change_count_90d &&
446
+ email_change_count_28d == o.email_change_count_28d &&
447
+ email_change_count_90d == o.email_change_count_90d &&
448
+ address_change_count_28d == o.address_change_count_28d &&
449
+ address_change_count_90d == o.address_change_count_90d
450
+ end
451
+
452
+ # @see the `==` method
453
+ # @param [Object] Object to be compared
454
+ def eql?(o)
455
+ self == o
456
+ end
457
+
458
+ # Calculates hash code according to all attributes.
459
+ # @return [Integer] Hash code
460
+ def hash
461
+ [unauthorized_transactions_count_7d, unauthorized_transactions_count_30d, unauthorized_transactions_count_60d, unauthorized_transactions_count_90d, nsf_overdraft_transactions_count_7d, nsf_overdraft_transactions_count_30d, nsf_overdraft_transactions_count_60d, nsf_overdraft_transactions_count_90d, days_since_first_plaid_connection, plaid_connections_count_7d, plaid_connections_count_30d, total_plaid_connections_count, is_savings_or_money_market_account, total_credit_transactions_amount_10d, total_debit_transactions_amount_10d, p50_credit_transactions_amount_28d, p50_debit_transactions_amount_28d, p95_credit_transactions_amount_28d, p95_debit_transactions_amount_28d, days_with_negative_balance_count_90d, p90_eod_balance_30d, p90_eod_balance_60d, p90_eod_balance_90d, p10_eod_balance_30d, p10_eod_balance_60d, p10_eod_balance_90d, available_balance, current_balance, balance_last_updated, phone_change_count_28d, phone_change_count_90d, email_change_count_28d, email_change_count_90d, address_change_count_28d, address_change_count_90d].hash
462
+ end
463
+
464
+ # Builds the object from hash
465
+ # @param [Hash] attributes Model attributes in the form of hash
466
+ # @return [Object] Returns the model itself
467
+ def self.build_from_hash(attributes)
468
+ new.build_from_hash(attributes)
469
+ end
470
+
471
+ # Builds the object from hash
472
+ # @param [Hash] attributes Model attributes in the form of hash
473
+ # @return [Object] Returns the model itself
474
+ def build_from_hash(attributes)
475
+ return nil unless attributes.is_a?(Hash)
476
+ self.class.openapi_types.each_pair do |key, type|
477
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
478
+ self.send("#{key}=", nil)
479
+ elsif type =~ /\AArray<(.*)>/i
480
+ # check to ensure the input is an array given that the attribute
481
+ # is documented as an array but the input is not
482
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
483
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
484
+ end
485
+ elsif !attributes[self.class.attribute_map[key]].nil?
486
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
487
+ end
488
+ end
489
+
490
+ self
491
+ end
492
+
493
+ # Deserializes the data based on type
494
+ # @param string type Data type
495
+ # @param string value Value to be deserialized
496
+ # @return [Object] Deserialized data
497
+ def _deserialize(type, value)
498
+ case type.to_sym
499
+ when :Time
500
+ Time.parse(value)
501
+ when :Date
502
+ Date.parse(value)
503
+ when :String
504
+ value.to_s
505
+ when :Integer
506
+ value.to_i
507
+ when :Float
508
+ value.to_f
509
+ when :Boolean
510
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
511
+ true
512
+ else
513
+ false
514
+ end
515
+ when :Object
516
+ # generic object (usually a Hash), return directly
517
+ value
518
+ when /\AArray<(?<inner_type>.+)>\z/
519
+ inner_type = Regexp.last_match[:inner_type]
520
+ value.map { |v| _deserialize(inner_type, v) }
521
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
522
+ k_type = Regexp.last_match[:k_type]
523
+ v_type = Regexp.last_match[:v_type]
524
+ {}.tap do |hash|
525
+ value.each do |k, v|
526
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
527
+ end
528
+ end
529
+ else # model
530
+ # models (e.g. Pet) or oneOf
531
+ klass = Plaid.const_get(type)
532
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
533
+ end
534
+ end
535
+
536
+ # Returns the string representation of the object
537
+ # @return [String] String presentation of the object
538
+ def to_s
539
+ to_hash.to_s
540
+ end
541
+
542
+ # to_body is an alias to to_hash (backward compatibility)
543
+ # @return [Hash] Returns the object in the form of hash
544
+ def to_body
545
+ to_hash
546
+ end
547
+
548
+ # Returns the object in the form of hash
549
+ # @return [Hash] Returns the object in the form of hash
550
+ def to_hash
551
+ hash = {}
552
+ self.class.attribute_map.each_pair do |attr, param|
553
+ value = self.send(attr)
554
+ if value.nil?
555
+ is_nullable = self.class.openapi_nullable.include?(attr)
556
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
557
+ end
558
+
559
+ hash[param] = _to_hash(value)
560
+ end
561
+ hash
562
+ end
563
+
564
+ # Outputs non-array value in the form of hash
565
+ # For object, use to_hash. Otherwise, just return the value
566
+ # @param [Object] value Any valid value
567
+ # @return [Hash] Returns the value in the form of hash
568
+ def _to_hash(value)
569
+ if value.is_a?(Array)
570
+ value.compact.map { |v| _to_hash(v) }
571
+ elsif value.is_a?(Hash)
572
+ {}.tap do |hash|
573
+ value.each { |k, v| hash[k] = _to_hash(v) }
574
+ end
575
+ elsif value.respond_to? :to_hash
576
+ value.to_hash
577
+ else
578
+ value
579
+ end
580
+ end
581
+
582
+ end
583
+
584
+ end