modern_treasury 0.1.0.pre.alpha.21 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +65 -0
  3. data/README.md +1 -1
  4. data/lib/modern_treasury/client.rb +0 -12
  5. data/lib/modern_treasury/errors.rb +22 -0
  6. data/lib/modern_treasury/internal/transport/base_client.rb +11 -3
  7. data/lib/modern_treasury/internal/type/array_of.rb +6 -1
  8. data/lib/modern_treasury/internal/type/base_model.rb +81 -27
  9. data/lib/modern_treasury/internal/type/boolean.rb +7 -1
  10. data/lib/modern_treasury/internal/type/converter.rb +42 -34
  11. data/lib/modern_treasury/internal/type/enum.rb +10 -2
  12. data/lib/modern_treasury/internal/type/file_input.rb +6 -1
  13. data/lib/modern_treasury/internal/type/hash_of.rb +6 -1
  14. data/lib/modern_treasury/internal/type/union.rb +12 -7
  15. data/lib/modern_treasury/internal/type/unknown.rb +7 -1
  16. data/lib/modern_treasury/models/accounting.rb +30 -0
  17. data/lib/modern_treasury/models/address.rb +94 -0
  18. data/lib/modern_treasury/models/address_request.rb +54 -0
  19. data/lib/modern_treasury/models/bulk_request_create_params.rb +147 -1383
  20. data/lib/modern_treasury/models/bulk_result.rb +5 -3
  21. data/lib/modern_treasury/models/child_legal_entity_create.rb +275 -0
  22. data/lib/modern_treasury/models/connection_legal_entity_create_params.rb +10 -627
  23. data/lib/modern_treasury/models/contact_detail.rb +81 -0
  24. data/lib/modern_treasury/models/contact_detail_create_request.rb +34 -0
  25. data/lib/modern_treasury/models/counterparty.rb +24 -177
  26. data/lib/modern_treasury/models/counterparty_create_params.rb +38 -838
  27. data/lib/modern_treasury/models/counterparty_list_params.rb +9 -1
  28. data/lib/modern_treasury/models/document.rb +4 -6
  29. data/lib/modern_treasury/models/document_create_params.rb +0 -2
  30. data/lib/modern_treasury/models/document_list_params.rb +4 -6
  31. data/lib/modern_treasury/models/expected_payment.rb +9 -1
  32. data/lib/modern_treasury/models/expected_payment_create_params.rb +12 -230
  33. data/lib/modern_treasury/models/expected_payment_list_params.rb +8 -1
  34. data/lib/modern_treasury/models/expected_payment_update_params.rb +9 -1
  35. data/lib/modern_treasury/models/external_account.rb +15 -177
  36. data/lib/modern_treasury/models/external_account_create_params.rb +19 -210
  37. data/lib/modern_treasury/models/external_account_list_params.rb +9 -1
  38. data/lib/modern_treasury/models/external_account_update_params.rb +3 -52
  39. data/lib/modern_treasury/models/foreign_exchange_quote.rb +3 -73
  40. data/lib/modern_treasury/models/foreign_exchange_rate.rb +71 -0
  41. data/lib/modern_treasury/models/identification_create_request.rb +86 -0
  42. data/lib/modern_treasury/models/incoming_payment_detail.rb +1 -0
  43. data/lib/modern_treasury/models/internal_account.rb +122 -71
  44. data/lib/modern_treasury/models/internal_account_create_params.rb +138 -1
  45. data/lib/modern_treasury/models/internal_account_update_account_capability_params.rb +34 -0
  46. data/lib/modern_treasury/models/internal_account_update_account_capability_response.rb +131 -0
  47. data/lib/modern_treasury/models/internal_accounts/balance_report_retrieve_params.rb +23 -0
  48. data/lib/modern_treasury/models/invoice.rb +13 -82
  49. data/lib/modern_treasury/models/invoice_create_params.rb +3 -83
  50. data/lib/modern_treasury/models/invoice_update_params.rb +3 -83
  51. data/lib/modern_treasury/models/ledger_account.rb +18 -142
  52. data/lib/modern_treasury/models/ledger_account_balance_monitor.rb +3 -182
  53. data/lib/modern_treasury/models/ledger_account_category.rb +12 -176
  54. data/lib/modern_treasury/models/ledger_account_category_list_params.rb +17 -6
  55. data/lib/modern_treasury/models/ledger_account_category_retrieve_params.rb +4 -2
  56. data/lib/modern_treasury/models/ledger_account_create_params.rb +2 -105
  57. data/lib/modern_treasury/models/ledger_account_create_request.rb +113 -0
  58. data/lib/modern_treasury/models/ledger_account_list_params.rb +15 -1
  59. data/lib/modern_treasury/models/ledger_account_statement_create_response.rb +6 -360
  60. data/lib/modern_treasury/models/ledger_account_statement_retrieve_response.rb +6 -360
  61. data/lib/modern_treasury/models/ledger_balance.rb +45 -0
  62. data/lib/modern_treasury/models/ledger_balances.rb +38 -0
  63. data/lib/modern_treasury/models/ledger_entry.rb +3 -183
  64. data/lib/modern_treasury/models/ledger_entry_create_request.rb +98 -0
  65. data/lib/modern_treasury/models/ledger_entry_list_params.rb +48 -8
  66. data/lib/modern_treasury/models/ledger_transaction.rb +14 -6
  67. data/lib/modern_treasury/models/ledger_transaction_create_params.rb +2 -212
  68. data/lib/modern_treasury/models/ledger_transaction_create_request.rb +123 -0
  69. data/lib/modern_treasury/models/ledger_transaction_create_reversal_params.rb +0 -1
  70. data/lib/modern_treasury/models/ledger_transaction_list_params.rb +44 -7
  71. data/lib/modern_treasury/models/ledger_transaction_update_params.rb +5 -104
  72. data/lib/modern_treasury/models/ledger_transactions/ledger_transaction_version.rb +15 -193
  73. data/lib/modern_treasury/models/legal_entity_address_create_request.rb +78 -0
  74. data/lib/modern_treasury/models/legal_entity_association.rb +1 -0
  75. data/lib/modern_treasury/models/legal_entity_association_create_params.rb +4 -448
  76. data/lib/modern_treasury/models/legal_entity_create_params.rb +10 -618
  77. data/lib/modern_treasury/models/legal_entity_update_params.rb +6 -165
  78. data/lib/modern_treasury/models/line_item.rb +3 -29
  79. data/lib/modern_treasury/models/payment_action_list_params.rb +1 -0
  80. data/lib/modern_treasury/models/payment_order.rb +34 -111
  81. data/lib/modern_treasury/models/payment_order_create_async_params.rb +32 -484
  82. data/lib/modern_treasury/models/payment_order_create_params.rb +32 -486
  83. data/lib/modern_treasury/models/payment_order_list_params.rb +9 -1
  84. data/lib/modern_treasury/models/payment_order_update_params.rb +30 -255
  85. data/lib/modern_treasury/models/payment_orders/reversal_create_params.rb +3 -232
  86. data/lib/modern_treasury/models/payment_reference.rb +11 -2
  87. data/lib/modern_treasury/models/return_create_params.rb +75 -1
  88. data/lib/modern_treasury/models/return_list_params.rb +5 -6
  89. data/lib/modern_treasury/models/return_object.rb +87 -5
  90. data/lib/modern_treasury/models/routing_detail.rb +4 -93
  91. data/lib/modern_treasury/models/routing_detail_create_params.rb +1 -0
  92. data/lib/modern_treasury/models/routing_number_lookup_request.rb +3 -55
  93. data/lib/modern_treasury/models/transaction.rb +6 -73
  94. data/lib/modern_treasury/models/transaction_create_params.rb +9 -1
  95. data/lib/modern_treasury/models/transactions/transaction_line_item.rb +9 -2
  96. data/lib/modern_treasury/models/validation_validate_routing_number_params.rb +1 -0
  97. data/lib/modern_treasury/models/virtual_account_create_params.rb +4 -117
  98. data/lib/modern_treasury/models.rb +31 -24
  99. data/lib/modern_treasury/resources/bulk_requests.rb +1 -1
  100. data/lib/modern_treasury/resources/counterparties.rb +20 -14
  101. data/lib/modern_treasury/resources/expected_payments.rb +10 -4
  102. data/lib/modern_treasury/resources/external_accounts.rb +23 -17
  103. data/lib/modern_treasury/resources/internal_accounts/balance_reports.rb +2 -2
  104. data/lib/modern_treasury/resources/internal_accounts.rb +37 -1
  105. data/lib/modern_treasury/resources/invoices.rb +2 -2
  106. data/lib/modern_treasury/resources/ledger_account_categories.rb +4 -2
  107. data/lib/modern_treasury/resources/ledger_accounts.rb +6 -2
  108. data/lib/modern_treasury/resources/ledger_entries.rb +1 -1
  109. data/lib/modern_treasury/resources/ledger_transactions.rb +5 -5
  110. data/lib/modern_treasury/resources/legal_entities.rb +4 -4
  111. data/lib/modern_treasury/resources/legal_entity_associations.rb +1 -1
  112. data/lib/modern_treasury/resources/payment_orders/reversals.rb +1 -1
  113. data/lib/modern_treasury/resources/payment_orders.rb +11 -9
  114. data/lib/modern_treasury/resources/returns.rb +4 -2
  115. data/lib/modern_treasury/resources/transactions.rb +3 -1
  116. data/lib/modern_treasury/resources/virtual_accounts.rb +1 -1
  117. data/lib/modern_treasury/version.rb +1 -1
  118. data/lib/modern_treasury.rb +16 -15
  119. data/rbi/modern_treasury/client.rbi +0 -9
  120. data/rbi/modern_treasury/errors.rbi +16 -0
  121. data/rbi/modern_treasury/internal/transport/base_client.rbi +1 -1
  122. data/rbi/modern_treasury/internal/type/boolean.rbi +2 -0
  123. data/rbi/modern_treasury/internal/type/converter.rbi +15 -15
  124. data/rbi/modern_treasury/internal/type/union.rbi +5 -0
  125. data/rbi/modern_treasury/internal/type/unknown.rbi +2 -0
  126. data/rbi/modern_treasury/models/accounting.rbi +48 -0
  127. data/rbi/modern_treasury/models/address.rbi +107 -0
  128. data/rbi/modern_treasury/models/address_request.rbi +76 -0
  129. data/rbi/modern_treasury/models/bulk_request_create_params.rbi +802 -3025
  130. data/rbi/modern_treasury/models/bulk_result.rbi +2 -0
  131. data/rbi/modern_treasury/models/child_legal_entity_create.rbi +511 -0
  132. data/rbi/modern_treasury/models/connection_legal_entity_create_params.rbi +17 -1314
  133. data/rbi/modern_treasury/models/contact_detail.rbi +124 -0
  134. data/rbi/modern_treasury/models/contact_detail_create_request.rbi +99 -0
  135. data/rbi/modern_treasury/models/counterparty.rbi +24 -264
  136. data/rbi/modern_treasury/models/counterparty_create_params.rbi +60 -1726
  137. data/rbi/modern_treasury/models/counterparty_list_params.rbi +11 -0
  138. data/rbi/modern_treasury/models/document.rbi +6 -16
  139. data/rbi/modern_treasury/models/document_create_params.rbi +0 -10
  140. data/rbi/modern_treasury/models/document_list_params.rbi +6 -16
  141. data/rbi/modern_treasury/models/expected_payment.rbi +8 -0
  142. data/rbi/modern_treasury/models/expected_payment_create_params.rbi +12 -419
  143. data/rbi/modern_treasury/models/expected_payment_list_params.rbi +9 -0
  144. data/rbi/modern_treasury/models/expected_payment_update_params.rbi +8 -0
  145. data/rbi/modern_treasury/models/external_account.rbi +15 -244
  146. data/rbi/modern_treasury/models/external_account_create_params.rbi +25 -400
  147. data/rbi/modern_treasury/models/external_account_list_params.rbi +11 -0
  148. data/rbi/modern_treasury/models/external_account_update_params.rbi +4 -86
  149. data/rbi/modern_treasury/models/foreign_exchange_quote.rbi +4 -99
  150. data/rbi/modern_treasury/models/foreign_exchange_rate.rbi +96 -0
  151. data/rbi/modern_treasury/models/identification_create_request.rbi +212 -0
  152. data/rbi/modern_treasury/models/incoming_payment_detail.rbi +5 -0
  153. data/rbi/modern_treasury/models/internal_account.rbi +332 -120
  154. data/rbi/modern_treasury/models/internal_account_create_params.rbi +333 -0
  155. data/rbi/modern_treasury/models/internal_account_update_account_capability_params.rbi +54 -0
  156. data/rbi/modern_treasury/models/internal_account_update_account_capability_response.rbi +304 -0
  157. data/rbi/modern_treasury/models/internal_accounts/balance_report_retrieve_params.rbi +37 -0
  158. data/rbi/modern_treasury/models/invoice.rbi +13 -128
  159. data/rbi/modern_treasury/models/invoice_create_params.rbi +4 -139
  160. data/rbi/modern_treasury/models/invoice_update_params.rbi +4 -139
  161. data/rbi/modern_treasury/models/ledger_account.rbi +20 -218
  162. data/rbi/modern_treasury/models/ledger_account_balance_monitor.rbi +4 -303
  163. data/rbi/modern_treasury/models/ledger_account_category.rbi +12 -301
  164. data/rbi/modern_treasury/models/ledger_account_category_list_params.rbi +23 -7
  165. data/rbi/modern_treasury/models/ledger_account_category_retrieve_params.rbi +6 -3
  166. data/rbi/modern_treasury/models/ledger_account_create_params.rbi +5 -173
  167. data/rbi/modern_treasury/models/ledger_account_create_request.rbi +194 -0
  168. data/rbi/modern_treasury/models/ledger_account_list_params.rbi +22 -0
  169. data/rbi/modern_treasury/models/ledger_account_statement_create_response.rbi +8 -612
  170. data/rbi/modern_treasury/models/ledger_account_statement_retrieve_response.rbi +8 -612
  171. data/rbi/modern_treasury/models/ledger_balance.rbi +66 -0
  172. data/rbi/modern_treasury/models/ledger_balances.rbi +75 -0
  173. data/rbi/modern_treasury/models/ledger_entry.rbi +4 -309
  174. data/rbi/modern_treasury/models/ledger_entry_create_request.rbi +137 -0
  175. data/rbi/modern_treasury/models/ledger_entry_list_params.rbi +99 -16
  176. data/rbi/modern_treasury/models/ledger_transaction.rbi +17 -11
  177. data/rbi/modern_treasury/models/ledger_transaction_create_params.rbi +5 -383
  178. data/rbi/modern_treasury/models/ledger_transaction_create_request.rbi +258 -0
  179. data/rbi/modern_treasury/models/ledger_transaction_create_reversal_params.rbi +0 -5
  180. data/rbi/modern_treasury/models/ledger_transaction_list_params.rbi +93 -18
  181. data/rbi/modern_treasury/models/ledger_transaction_update_params.rbi +7 -158
  182. data/rbi/modern_treasury/models/ledger_transactions/ledger_transaction_version.rbi +18 -316
  183. data/rbi/modern_treasury/models/legal_entity_address_create_request.rbi +157 -0
  184. data/rbi/modern_treasury/models/legal_entity_association.rbi +5 -0
  185. data/rbi/modern_treasury/models/legal_entity_association_create_params.rbi +9 -917
  186. data/rbi/modern_treasury/models/legal_entity_create_params.rbi +17 -1297
  187. data/rbi/modern_treasury/models/legal_entity_update_params.rbi +8 -378
  188. data/rbi/modern_treasury/models/line_item.rbi +4 -52
  189. data/rbi/modern_treasury/models/payment_action_list_params.rbi +5 -0
  190. data/rbi/modern_treasury/models/payment_order.rbi +81 -172
  191. data/rbi/modern_treasury/models/payment_order_create_async_params.rbi +42 -891
  192. data/rbi/modern_treasury/models/payment_order_create_params.rbi +42 -896
  193. data/rbi/modern_treasury/models/payment_order_list_params.rbi +14 -0
  194. data/rbi/modern_treasury/models/payment_order_update_params.rbi +43 -469
  195. data/rbi/modern_treasury/models/payment_orders/reversal_create_params.rbi +4 -415
  196. data/rbi/modern_treasury/models/payment_reference.rbi +54 -9
  197. data/rbi/modern_treasury/models/return_create_params.rbi +114 -0
  198. data/rbi/modern_treasury/models/return_list_params.rbi +6 -11
  199. data/rbi/modern_treasury/models/return_object.rbi +165 -16
  200. data/rbi/modern_treasury/models/routing_detail.rbi +9 -113
  201. data/rbi/modern_treasury/models/routing_detail_create_params.rbi +5 -0
  202. data/rbi/modern_treasury/models/routing_number_lookup_request.rbi +4 -87
  203. data/rbi/modern_treasury/models/transaction.rbi +19 -103
  204. data/rbi/modern_treasury/models/transaction_create_params.rbi +8 -0
  205. data/rbi/modern_treasury/models/transactions/transaction_line_item.rbi +8 -5
  206. data/rbi/modern_treasury/models/validation_validate_routing_number_params.rbi +5 -0
  207. data/rbi/modern_treasury/models/virtual_account_create_params.rbi +9 -203
  208. data/rbi/modern_treasury/models.rbi +36 -31
  209. data/rbi/modern_treasury/resources/bulk_requests.rbi +2 -1
  210. data/rbi/modern_treasury/resources/counterparties.rbi +20 -12
  211. data/rbi/modern_treasury/resources/documents.rbi +2 -2
  212. data/rbi/modern_treasury/resources/expected_payments.rbi +9 -1
  213. data/rbi/modern_treasury/resources/external_accounts.rbi +29 -22
  214. data/rbi/modern_treasury/resources/internal_accounts/balance_reports.rbi +7 -3
  215. data/rbi/modern_treasury/resources/internal_accounts.rbi +31 -0
  216. data/rbi/modern_treasury/resources/invoices.rbi +2 -8
  217. data/rbi/modern_treasury/resources/ledger_account_categories.rbi +9 -3
  218. data/rbi/modern_treasury/resources/ledger_accounts.rbi +5 -1
  219. data/rbi/modern_treasury/resources/ledger_entries.rbi +9 -2
  220. data/rbi/modern_treasury/resources/ledger_transactions.rbi +13 -13
  221. data/rbi/modern_treasury/resources/legal_entities.rbi +4 -8
  222. data/rbi/modern_treasury/resources/legal_entity_associations.rbi +1 -2
  223. data/rbi/modern_treasury/resources/payment_orders/reversals.rbi +1 -1
  224. data/rbi/modern_treasury/resources/payment_orders.rbi +16 -17
  225. data/rbi/modern_treasury/resources/returns.rbi +8 -2
  226. data/rbi/modern_treasury/resources/transactions.rbi +3 -0
  227. data/rbi/modern_treasury/resources/virtual_accounts.rbi +1 -2
  228. data/sig/modern_treasury/client.rbs +0 -6
  229. data/sig/modern_treasury/errors.rbs +9 -0
  230. data/sig/modern_treasury/internal/transport/base_client.rbs +1 -1
  231. data/sig/modern_treasury/internal/type/converter.rbs +7 -1
  232. data/sig/modern_treasury/models/accounting.rbs +15 -0
  233. data/sig/modern_treasury/models/address.rbs +70 -0
  234. data/sig/modern_treasury/models/address_request.rbs +45 -0
  235. data/sig/modern_treasury/models/bulk_request_create_params.rbs +99 -999
  236. data/sig/modern_treasury/models/bulk_result.rbs +1 -0
  237. data/sig/modern_treasury/models/child_legal_entity_create.rbs +220 -0
  238. data/sig/modern_treasury/models/connection_legal_entity_create_params.rbs +21 -548
  239. data/sig/modern_treasury/models/contact_detail.rbs +67 -0
  240. data/sig/modern_treasury/models/contact_detail_create_request.rbs +43 -0
  241. data/sig/modern_treasury/models/counterparty.rbs +20 -141
  242. data/sig/modern_treasury/models/counterparty_create_params.rbs +51 -737
  243. data/sig/modern_treasury/models/counterparty_list_params.rbs +7 -0
  244. data/sig/modern_treasury/models/document.rbs +0 -4
  245. data/sig/modern_treasury/models/document_create_params.rbs +0 -4
  246. data/sig/modern_treasury/models/document_list_params.rbs +0 -4
  247. data/sig/modern_treasury/models/expected_payment.rbs +5 -0
  248. data/sig/modern_treasury/models/expected_payment_create_params.rbs +11 -173
  249. data/sig/modern_treasury/models/expected_payment_list_params.rbs +7 -0
  250. data/sig/modern_treasury/models/expected_payment_update_params.rbs +5 -0
  251. data/sig/modern_treasury/models/external_account.rbs +13 -139
  252. data/sig/modern_treasury/models/external_account_create_params.rbs +25 -189
  253. data/sig/modern_treasury/models/external_account_list_params.rbs +7 -0
  254. data/sig/modern_treasury/models/external_account_update_params.rbs +6 -48
  255. data/sig/modern_treasury/models/foreign_exchange_quote.rbs +4 -51
  256. data/sig/modern_treasury/models/foreign_exchange_rate.rbs +50 -0
  257. data/sig/modern_treasury/models/identification_create_request.rbs +93 -0
  258. data/sig/modern_treasury/models/incoming_payment_detail.rbs +2 -0
  259. data/sig/modern_treasury/models/internal_account.rbs +148 -71
  260. data/sig/modern_treasury/models/internal_account_create_params.rbs +143 -0
  261. data/sig/modern_treasury/models/internal_account_update_account_capability_params.rbs +28 -0
  262. data/sig/modern_treasury/models/internal_account_update_account_capability_response.rbs +137 -0
  263. data/sig/modern_treasury/models/internal_accounts/balance_report_retrieve_params.rbs +10 -0
  264. data/sig/modern_treasury/models/invoice.rbs +9 -68
  265. data/sig/modern_treasury/models/invoice_create_params.rbs +6 -70
  266. data/sig/modern_treasury/models/invoice_update_params.rbs +6 -70
  267. data/sig/modern_treasury/models/ledger_account.rbs +17 -123
  268. data/sig/modern_treasury/models/ledger_account_balance_monitor.rbs +4 -142
  269. data/sig/modern_treasury/models/ledger_account_category.rbs +9 -142
  270. data/sig/modern_treasury/models/ledger_account_category_list_params.rbs +12 -5
  271. data/sig/modern_treasury/models/ledger_account_create_params.rbs +4 -84
  272. data/sig/modern_treasury/models/ledger_account_create_request.rbs +89 -0
  273. data/sig/modern_treasury/models/ledger_account_list_params.rbs +16 -0
  274. data/sig/modern_treasury/models/ledger_account_statement_create_response.rbs +8 -284
  275. data/sig/modern_treasury/models/ledger_account_statement_retrieve_response.rbs +8 -284
  276. data/sig/modern_treasury/models/ledger_balance.rbs +40 -0
  277. data/sig/modern_treasury/models/ledger_balances.rbs +30 -0
  278. data/sig/modern_treasury/models/ledger_entry.rbs +4 -142
  279. data/sig/modern_treasury/models/ledger_entry_create_request.rbs +62 -0
  280. data/sig/modern_treasury/models/ledger_entry_list_params.rbs +21 -3
  281. data/sig/modern_treasury/models/ledger_transaction.rbs +5 -2
  282. data/sig/modern_treasury/models/ledger_transaction_create_params.rbs +4 -165
  283. data/sig/modern_treasury/models/ledger_transaction_create_request.rbs +109 -0
  284. data/sig/modern_treasury/models/ledger_transaction_create_reversal_params.rbs +0 -2
  285. data/sig/modern_treasury/models/ledger_transaction_list_params.rbs +21 -5
  286. data/sig/modern_treasury/models/ledger_transaction_update_params.rbs +6 -67
  287. data/sig/modern_treasury/models/ledger_transactions/ledger_transaction_version.rbs +9 -144
  288. data/sig/modern_treasury/models/legal_entity_address_create_request.rbs +68 -0
  289. data/sig/modern_treasury/models/legal_entity_association.rbs +3 -1
  290. data/sig/modern_treasury/models/legal_entity_association_create_params.rbs +9 -380
  291. data/sig/modern_treasury/models/legal_entity_create_params.rbs +21 -548
  292. data/sig/modern_treasury/models/legal_entity_update_params.rbs +12 -168
  293. data/sig/modern_treasury/models/line_item.rbs +4 -16
  294. data/sig/modern_treasury/models/payment_action_list_params.rbs +2 -1
  295. data/sig/modern_treasury/models/payment_order.rbs +37 -71
  296. data/sig/modern_treasury/models/payment_order_create_async_params.rbs +37 -380
  297. data/sig/modern_treasury/models/payment_order_create_params.rbs +37 -384
  298. data/sig/modern_treasury/models/payment_order_list_params.rbs +9 -0
  299. data/sig/modern_treasury/models/payment_order_update_params.rbs +33 -207
  300. data/sig/modern_treasury/models/payment_orders/reversal_create_params.rbs +6 -173
  301. data/sig/modern_treasury/models/payment_reference.rbs +22 -4
  302. data/sig/modern_treasury/models/return_create_params.rbs +47 -0
  303. data/sig/modern_treasury/models/return_list_params.rbs +1 -6
  304. data/sig/modern_treasury/models/return_object.rbs +70 -12
  305. data/sig/modern_treasury/models/routing_detail.rbs +6 -71
  306. data/sig/modern_treasury/models/routing_detail_create_params.rbs +2 -0
  307. data/sig/modern_treasury/models/routing_number_lookup_request.rbs +6 -48
  308. data/sig/modern_treasury/models/transaction.rbs +10 -53
  309. data/sig/modern_treasury/models/transaction_create_params.rbs +5 -0
  310. data/sig/modern_treasury/models/transactions/transaction_line_item.rbs +5 -2
  311. data/sig/modern_treasury/models/validation_validate_routing_number_params.rbs +2 -0
  312. data/sig/modern_treasury/models/virtual_account_create_params.rbs +8 -95
  313. data/sig/modern_treasury/models.rbs +30 -24
  314. data/sig/modern_treasury/resources/counterparties.rbs +2 -0
  315. data/sig/modern_treasury/resources/expected_payments.rbs +4 -1
  316. data/sig/modern_treasury/resources/external_accounts.rbs +6 -4
  317. data/sig/modern_treasury/resources/internal_accounts/balance_reports.rbs +1 -1
  318. data/sig/modern_treasury/resources/internal_accounts.rbs +8 -0
  319. data/sig/modern_treasury/resources/invoices.rbs +2 -2
  320. data/sig/modern_treasury/resources/ledger_account_categories.rbs +2 -1
  321. data/sig/modern_treasury/resources/ledger_accounts.rbs +3 -1
  322. data/sig/modern_treasury/resources/ledger_transactions.rbs +4 -4
  323. data/sig/modern_treasury/resources/legal_entities.rbs +4 -4
  324. data/sig/modern_treasury/resources/legal_entity_associations.rbs +1 -1
  325. data/sig/modern_treasury/resources/payment_orders/reversals.rbs +1 -1
  326. data/sig/modern_treasury/resources/payment_orders.rbs +6 -5
  327. data/sig/modern_treasury/resources/returns.rbs +1 -0
  328. data/sig/modern_treasury/resources/transactions.rbs +1 -0
  329. data/sig/modern_treasury/resources/virtual_accounts.rbs +1 -1
  330. metadata +52 -49
  331. data/lib/modern_treasury/models/ledger_event_handler.rb +0 -222
  332. data/lib/modern_treasury/models/ledger_event_handler_create_params.rb +0 -177
  333. data/lib/modern_treasury/models/ledger_event_handler_delete_params.rb +0 -14
  334. data/lib/modern_treasury/models/ledger_event_handler_list_params.rb +0 -58
  335. data/lib/modern_treasury/models/ledger_event_handler_retrieve_params.rb +0 -14
  336. data/lib/modern_treasury/models/ledger_event_handler_variable.rb +0 -59
  337. data/lib/modern_treasury/models/ledgerable_event.rb +0 -92
  338. data/lib/modern_treasury/models/ledgerable_event_create_params.rb +0 -50
  339. data/lib/modern_treasury/models/ledgerable_event_retrieve_params.rb +0 -14
  340. data/lib/modern_treasury/models/paper_item.rb +0 -178
  341. data/lib/modern_treasury/models/paper_item_list_params.rb +0 -56
  342. data/lib/modern_treasury/models/paper_item_retrieve_params.rb +0 -14
  343. data/lib/modern_treasury/resources/ledger_event_handlers.rb +0 -125
  344. data/lib/modern_treasury/resources/ledgerable_events.rb +0 -65
  345. data/lib/modern_treasury/resources/paper_items.rb +0 -68
  346. data/rbi/modern_treasury/models/ledger_event_handler.rbi +0 -322
  347. data/rbi/modern_treasury/models/ledger_event_handler_create_params.rbi +0 -303
  348. data/rbi/modern_treasury/models/ledger_event_handler_delete_params.rbi +0 -32
  349. data/rbi/modern_treasury/models/ledger_event_handler_list_params.rbi +0 -92
  350. data/rbi/modern_treasury/models/ledger_event_handler_retrieve_params.rbi +0 -32
  351. data/rbi/modern_treasury/models/ledger_event_handler_variable.rbi +0 -98
  352. data/rbi/modern_treasury/models/ledgerable_event.rbi +0 -108
  353. data/rbi/modern_treasury/models/ledgerable_event_create_params.rbi +0 -75
  354. data/rbi/modern_treasury/models/ledgerable_event_retrieve_params.rbi +0 -32
  355. data/rbi/modern_treasury/models/paper_item.rbi +0 -204
  356. data/rbi/modern_treasury/models/paper_item_list_params.rbi +0 -88
  357. data/rbi/modern_treasury/models/paper_item_retrieve_params.rbi +0 -32
  358. data/rbi/modern_treasury/resources/ledger_event_handlers.rbi +0 -109
  359. data/rbi/modern_treasury/resources/ledgerable_events.rbi +0 -50
  360. data/rbi/modern_treasury/resources/paper_items.rbi +0 -51
  361. data/sig/modern_treasury/models/ledger_event_handler.rbs +0 -149
  362. data/sig/modern_treasury/models/ledger_event_handler_create_params.rbs +0 -127
  363. data/sig/modern_treasury/models/ledger_event_handler_delete_params.rbs +0 -15
  364. data/sig/modern_treasury/models/ledger_event_handler_list_params.rbs +0 -54
  365. data/sig/modern_treasury/models/ledger_event_handler_retrieve_params.rbs +0 -15
  366. data/sig/modern_treasury/models/ledger_event_handler_variable.rbs +0 -36
  367. data/sig/modern_treasury/models/ledgerable_event.rbs +0 -65
  368. data/sig/modern_treasury/models/ledgerable_event_create_params.rbs +0 -43
  369. data/sig/modern_treasury/models/ledgerable_event_retrieve_params.rbs +0 -15
  370. data/sig/modern_treasury/models/paper_item.rbs +0 -122
  371. data/sig/modern_treasury/models/paper_item_list_params.rbs +0 -54
  372. data/sig/modern_treasury/models/paper_item_retrieve_params.rbs +0 -15
  373. data/sig/modern_treasury/resources/ledger_event_handlers.rbs +0 -37
  374. data/sig/modern_treasury/resources/ledgerable_events.rbs +0 -20
  375. data/sig/modern_treasury/resources/paper_items.rbs +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6545344e52ee8011782e1a9a5f3cec4a92310c31816c73f155d6f3ff7cc207a
4
- data.tar.gz: d5d6a14ca7c9820c7dc53475f228581cd7369a3d74f0e892e51f676e13018d14
3
+ metadata.gz: 581026f5fdefb4ecafbb971dc320b00c833ee17b7e6467437e46e964ec67134d
4
+ data.tar.gz: 4eab42899864540e6ca98a5c5687c3c330da0d45e34bfe463f072aa6035e972e
5
5
  SHA512:
6
- metadata.gz: 835ae7e37e8b518b6262bf89029df5df1b13f42b58b531c8fc01efb8ba89b96df092b8e1b05f6a9e752e8e65bab135676359aae6b16c5aa3f0adb82fe46b6ec3
7
- data.tar.gz: cb3e668b989d2f719d23ee95833f4d4cb604b51257e6e5daf9715e81f06de08cce77f789ff1d73a73edf13efdde7685d451d9b0dab9c25baf67ca6b02e8987d4
6
+ metadata.gz: fb4beec913eefc5ee728d8a5cddbc0edd53cc35d928cd4b386cf65a0d3571eff2341d8b6087503c148d45ef3d6ed6b472ecd4fdd8dca3ae04730621496940139
7
+ data.tar.gz: 61dc97956b212b16371044a170acde7ec5433e83fff2d2952ca8a339e27952bce8685853059dfbffc1b64ce7e00a20bf4f25ada55e40efc12f45e4bdc2c5e7f8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,70 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0 (2025-08-02)
4
+
5
+ Full Changelog: [v0.1.0-alpha.22...v0.1.0](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.1.0-alpha.22...v0.1.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([bc8de9c](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/bc8de9c156d8b75282e5ba888d497deff4b25948))
10
+ * **api:** api update ([95b4873](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/95b48736c2249d8ccc4fe706b3fa526b2f468dc2))
11
+ * **api:** api update ([a62983f](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/a62983f37beadf31634a2a9a9b05837b6b095f63))
12
+ * **api:** api update ([b70a332](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/b70a332777ce561b2fe2f93954aae68cb17b5cf2))
13
+ * **api:** api update ([21fda11](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/21fda11f539d2ea327078312237e2a444b958bfe))
14
+ * **api:** api update ([7d169fa](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/7d169fa6917ce333c76f12628fdd7756aed457ce))
15
+ * **api:** api update ([52d87f6](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/52d87f65e23cc16e10e52fde4ccc81e16a5555ed))
16
+ * **api:** api update ([d466528](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/d46652814f67800f534a702724f406845fd1d416))
17
+ * **api:** api update ([e909ebb](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/e909ebb243d92bc2bd4d23253286e2bdde19eac7))
18
+ * **api:** api update ([f258c75](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/f258c75ae2ae55f46b3318a6d668b670b68eabd2))
19
+ * **api:** api update ([0e4f36d](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/0e4f36dfe47b52ae6eb0738028f4461ef7549051))
20
+ * **api:** manual updates ([12a73dd](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/12a73dd911d167d15d43eb33804f4cda8f3cdd97))
21
+ * **api:** manual updates ([fd4e901](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/fd4e9014ddc3073041f9e5d9b57414f38100f741))
22
+ * **api:** manual updates ([8f250b4](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/8f250b4874e7be94b4823d695bb2a1a93df4afed))
23
+ * **api:** manual updates ([d172b95](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/d172b955661a9a12bc3b59479d8a24a05961c992))
24
+ * **api:** manual updates ([27b506d](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/27b506d96912a07b4753d1686556bf45cc96f269))
25
+ * **api:** manual updates ([b28aa54](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/b28aa54fb130b017a9047236cbfdf4350cb7c72b))
26
+ * **api:** manual updates ([7cfaf73](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/7cfaf730ca33e1405eda1a7472f2e0fa76c7e126))
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * **api:** make Legal Entity change backwards compatibile ([d4be112](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/d4be112f8ca0f26e72f47cf12738a336b2d591c2))
32
+ * **client:** unique model names ([b35f861](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/b35f86118ac5ca888f11ac7a03c3fc46eeb96540))
33
+ * **internal:** ensure sorbet test always runs serially ([245ad18](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/245ad18fda1d808d934cd93019f1463c9e22132d))
34
+
35
+
36
+ ### Chores
37
+
38
+ * **internal:** increase visibility of internal helper method ([5ab5275](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/5ab5275f39dd4309e6fa034071004c2370ea4d4d))
39
+ * update contribute.md ([503a762](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/503a762153cde391cc8b30c87255517e313e7524))
40
+
41
+ ## 0.1.0-alpha.22 (2025-07-07)
42
+
43
+ Full Changelog: [v0.1.0-alpha.21...v0.1.0-alpha.22](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.1.0-alpha.21...v0.1.0-alpha.22)
44
+
45
+ ### Features
46
+
47
+ * **api:** api update ([f9b7650](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/f9b765072627604455f57237b76a32e07a03e30a))
48
+ * **api:** api update ([9a357cc](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/9a357cc723fd191f542d6975b4f84cb5acc555e1))
49
+ * **api:** api update ([0ea5708](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/0ea5708a1c1057643b10481fe3f28599c238b387))
50
+ * **api:** api update ([a9e4c9b](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/a9e4c9b8984b08a8887e3897f44e45b32222af0e))
51
+ * **api:** api update ([7e4655b](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/7e4655b211def4398f04e5f190c264eb82b92487))
52
+ * **api:** api update ([b387235](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/b387235b089476f0ed63ac717eb2308f1fbbb6f8))
53
+
54
+
55
+ ### Bug Fixes
56
+
57
+ * **ci:** release-doctor — report correct token name ([e04ac73](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/e04ac73389f3bcec56f7403dea71e818a03022cf))
58
+ * issue where we cannot mutate arrays on base model derivatives ([e387253](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/e387253acf1d48294e42fee99ce023668308aedf))
59
+
60
+
61
+ ### Chores
62
+
63
+ * **ci:** enable for pull requests ([00b3946](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/00b394631003a1c1e8f961e838b25bb1b5391805))
64
+ * **ci:** link to correct github repo ([c7048da](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/c7048dad5371a6b9e7c5467bd0aefa0df97df3b4))
65
+ * **ci:** only run for pushes and fork pull requests ([1d387c6](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/1d387c65cbf539ef9b5a188a2201c1af732b60e7))
66
+ * **internal:** allow streams to also be unwrapped on a per-row basis ([658a566](https://github.com/Modern-Treasury/modern-treasury-ruby/commit/658a566873f97d28b0734af37806a4e0a16e3740))
67
+
3
68
  ## 0.1.0-alpha.21 (2025-06-04)
4
69
 
5
70
  Full Changelog: [v0.1.0-alpha.20...v0.1.0-alpha.21](https://github.com/Modern-Treasury/modern-treasury-ruby/compare/v0.1.0-alpha.20...v0.1.0-alpha.21)
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "modern_treasury", "~> 0.1.0.pre.alpha.21"
18
+ gem "modern_treasury", "~> 0.1.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -60,9 +60,6 @@ module ModernTreasury
60
60
  # @return [ModernTreasury::Resources::Ledgers]
61
61
  attr_reader :ledgers
62
62
 
63
- # @return [ModernTreasury::Resources::LedgerableEvents]
64
- attr_reader :ledgerable_events
65
-
66
63
  # @return [ModernTreasury::Resources::LedgerAccountCategories]
67
64
  attr_reader :ledger_account_categories
68
65
 
@@ -78,9 +75,6 @@ module ModernTreasury
78
75
  # @return [ModernTreasury::Resources::LedgerEntries]
79
76
  attr_reader :ledger_entries
80
77
 
81
- # @return [ModernTreasury::Resources::LedgerEventHandlers]
82
- attr_reader :ledger_event_handlers
83
-
84
78
  # @return [ModernTreasury::Resources::LedgerTransactions]
85
79
  attr_reader :ledger_transactions
86
80
 
@@ -105,9 +99,6 @@ module ModernTreasury
105
99
  # @return [ModernTreasury::Resources::Validations]
106
100
  attr_reader :validations
107
101
 
108
- # @return [ModernTreasury::Resources::PaperItems]
109
- attr_reader :paper_items
110
-
111
102
  # @return [ModernTreasury::Resources::VirtualAccounts]
112
103
  attr_reader :virtual_accounts
113
104
 
@@ -226,14 +217,12 @@ module ModernTreasury
226
217
  @routing_details = ModernTreasury::Resources::RoutingDetails.new(client: self)
227
218
  @internal_accounts = ModernTreasury::Resources::InternalAccounts.new(client: self)
228
219
  @ledgers = ModernTreasury::Resources::Ledgers.new(client: self)
229
- @ledgerable_events = ModernTreasury::Resources::LedgerableEvents.new(client: self)
230
220
  @ledger_account_categories = ModernTreasury::Resources::LedgerAccountCategories.new(client: self)
231
221
  @ledger_accounts = ModernTreasury::Resources::LedgerAccounts.new(client: self)
232
222
  @ledger_account_balance_monitors =
233
223
  ModernTreasury::Resources::LedgerAccountBalanceMonitors.new(client: self)
234
224
  @ledger_account_statements = ModernTreasury::Resources::LedgerAccountStatements.new(client: self)
235
225
  @ledger_entries = ModernTreasury::Resources::LedgerEntries.new(client: self)
236
- @ledger_event_handlers = ModernTreasury::Resources::LedgerEventHandlers.new(client: self)
237
226
  @ledger_transactions = ModernTreasury::Resources::LedgerTransactions.new(client: self)
238
227
  @line_items = ModernTreasury::Resources::LineItems.new(client: self)
239
228
  @payment_flows = ModernTreasury::Resources::PaymentFlows.new(client: self)
@@ -242,7 +231,6 @@ module ModernTreasury
242
231
  @returns = ModernTreasury::Resources::Returns.new(client: self)
243
232
  @transactions = ModernTreasury::Resources::Transactions.new(client: self)
244
233
  @validations = ModernTreasury::Resources::Validations.new(client: self)
245
- @paper_items = ModernTreasury::Resources::PaperItems.new(client: self)
246
234
  @virtual_accounts = ModernTreasury::Resources::VirtualAccounts.new(client: self)
247
235
  @bulk_requests = ModernTreasury::Resources::BulkRequests.new(client: self)
248
236
  @bulk_results = ModernTreasury::Resources::BulkResults.new(client: self)
@@ -9,6 +9,28 @@ module ModernTreasury
9
9
  end
10
10
 
11
11
  class ConversionError < ModernTreasury::Errors::Error
12
+ # @return [StandardError, nil]
13
+ def cause = @cause.nil? ? super : @cause
14
+
15
+ # @api private
16
+ #
17
+ # @param on [Class<StandardError>]
18
+ # @param method [Symbol]
19
+ # @param target [Object]
20
+ # @param value [Object]
21
+ # @param cause [StandardError, nil]
22
+ def initialize(on:, method:, target:, value:, cause: nil)
23
+ cls = on.name.split("::").last
24
+
25
+ message = [
26
+ "Failed to parse #{cls}.#{method} from #{value.class} to #{target.inspect}.",
27
+ "To get the unparsed API response, use #{cls}[#{method.inspect}].",
28
+ cause && "Cause: #{cause.message}"
29
+ ].filter(&:itself).join(" ")
30
+
31
+ @cause = cause
32
+ super(message)
33
+ end
12
34
  end
13
35
 
14
36
  class APIError < ModernTreasury::Errors::Error
@@ -365,7 +365,7 @@ module ModernTreasury
365
365
  #
366
366
  # @raise [ModernTreasury::Errors::APIError]
367
367
  # @return [Array(Integer, Net::HTTPResponse, Enumerable<String>)]
368
- private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
368
+ def send_request(request, redirect_count:, retry_count:, send_retry_header:)
369
369
  url, headers, max_retries, timeout = request.fetch_values(:url, :headers, :max_retries, :timeout)
370
370
  input = {
371
371
  **request.except(:timeout),
@@ -478,6 +478,7 @@ module ModernTreasury
478
478
  self.class.validate!(req)
479
479
  model = req.fetch(:model) { ModernTreasury::Internal::Type::Unknown }
480
480
  opts = req[:options].to_h
481
+ unwrap = req[:unwrap]
481
482
  ModernTreasury::RequestOptions.validate!(opts)
482
483
  request = build_request(req.except(:options), opts)
483
484
  url = request.fetch(:url)
@@ -494,11 +495,18 @@ module ModernTreasury
494
495
  decoded = ModernTreasury::Internal::Util.decode_content(response, stream: stream)
495
496
  case req
496
497
  in {stream: Class => st}
497
- st.new(model: model, url: url, status: status, response: response, stream: decoded)
498
+ st.new(
499
+ model: model,
500
+ url: url,
501
+ status: status,
502
+ response: response,
503
+ unwrap: unwrap,
504
+ stream: decoded
505
+ )
498
506
  in {page: Class => page}
499
507
  page.new(client: self, req: req, headers: response, page_data: decoded)
500
508
  else
501
- unwrapped = ModernTreasury::Internal::Util.dig(decoded, req[:unwrap])
509
+ unwrapped = ModernTreasury::Internal::Util.dig(decoded, unwrap)
502
510
  ModernTreasury::Internal::Type::Converter.coerce(model, unwrapped)
503
511
  end
504
512
  end
@@ -62,10 +62,14 @@ module ModernTreasury
62
62
  #
63
63
  # @param state [Hash{Symbol=>Object}] .
64
64
  #
65
- # @option state [Boolean, :strong] :strictness
65
+ # @option state [Boolean] :translate_names
66
+ #
67
+ # @option state [Boolean] :strictness
66
68
  #
67
69
  # @option state [Hash{Symbol=>Object}] :exactness
68
70
  #
71
+ # @option state [Class<StandardError>] :error
72
+ #
69
73
  # @option state [Integer] :branched
70
74
  #
71
75
  # @return [Array<Object>, Object]
@@ -74,6 +78,7 @@ module ModernTreasury
74
78
 
75
79
  unless value.is_a?(Array)
76
80
  exactness[:no] += 1
81
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{Array}")
77
82
  return value
78
83
  end
79
84
 
@@ -60,7 +60,7 @@ module ModernTreasury
60
60
  [ModernTreasury::Internal::Type::Converter.type_info(type_info), type_info]
61
61
  end
62
62
 
63
- setter = "#{name_sym}="
63
+ setter = :"#{name_sym}="
64
64
  api_name = info.fetch(:api_name, name_sym)
65
65
  nilable = info.fetch(:nil?, false)
66
66
  const = if required && !nilable
@@ -84,28 +84,61 @@ module ModernTreasury
84
84
  type_fn: type_fn
85
85
  }
86
86
 
87
- define_method(setter) { @data.store(name_sym, _1) }
87
+ define_method(setter) do |value|
88
+ target = type_fn.call
89
+ state = ModernTreasury::Internal::Type::Converter.new_coerce_state(translate_names: false)
90
+ coerced = ModernTreasury::Internal::Type::Converter.coerce(target, value, state: state)
91
+ status = @coerced.store(name_sym, state.fetch(:error) || true)
92
+ stored =
93
+ case [target, status]
94
+ in [ModernTreasury::Internal::Type::Converter | Symbol, true]
95
+ coerced
96
+ else
97
+ value
98
+ end
99
+ @data.store(name_sym, stored)
100
+ end
88
101
 
102
+ # rubocop:disable Style/CaseEquality
103
+ # rubocop:disable Metrics/BlockLength
89
104
  define_method(name_sym) do
90
105
  target = type_fn.call
91
- value = @data.fetch(name_sym) { const == ModernTreasury::Internal::OMIT ? nil : const }
92
- state = {strictness: :strong, exactness: {yes: 0, no: 0, maybe: 0}, branched: 0}
93
- if (nilable || !required) && value.nil?
94
- nil
95
- else
96
- ModernTreasury::Internal::Type::Converter.coerce(
97
- target, value, state: state
106
+
107
+ case @coerced[name_sym]
108
+ in true | false if ModernTreasury::Internal::Type::Converter === target
109
+ @data.fetch(name_sym)
110
+ in ::StandardError => e
111
+ raise ModernTreasury::Errors::ConversionError.new(
112
+ on: self.class,
113
+ method: __method__,
114
+ target: target,
115
+ value: @data.fetch(name_sym),
116
+ cause: e
98
117
  )
118
+ else
119
+ Kernel.then do
120
+ value = @data.fetch(name_sym) { const == ModernTreasury::Internal::OMIT ? nil : const }
121
+ state = ModernTreasury::Internal::Type::Converter.new_coerce_state(translate_names: false)
122
+ if (nilable || !required) && value.nil?
123
+ nil
124
+ else
125
+ ModernTreasury::Internal::Type::Converter.coerce(
126
+ target, value, state: state
127
+ )
128
+ end
129
+ rescue StandardError => e
130
+ raise ModernTreasury::Errors::ConversionError.new(
131
+ on: self.class,
132
+ method: __method__,
133
+ target: target,
134
+ value: value,
135
+ cause: e
136
+ )
137
+ end
99
138
  end
100
- rescue StandardError => e
101
- cls = self.class.name.split("::").last
102
- message = [
103
- "Failed to parse #{cls}.#{__method__} from #{value.class} to #{target.inspect}.",
104
- "To get the unparsed API response, use #{cls}[#{__method__.inspect}].",
105
- "Cause: #{e.message}"
106
- ].join(" ")
107
- raise ModernTreasury::Errors::ConversionError.new(message)
108
139
  end
140
+ # rubocop:enable Metrics/BlockLength
141
+ # rubocop:enable Style/CaseEquality
109
142
  end
110
143
 
111
144
  # @api private
@@ -205,23 +238,28 @@ module ModernTreasury
205
238
  #
206
239
  # @param state [Hash{Symbol=>Object}] .
207
240
  #
208
- # @option state [Boolean, :strong] :strictness
241
+ # @option state [Boolean] :translate_names
242
+ #
243
+ # @option state [Boolean] :strictness
209
244
  #
210
245
  # @option state [Hash{Symbol=>Object}] :exactness
211
246
  #
247
+ # @option state [Class<StandardError>] :error
248
+ #
212
249
  # @option state [Integer] :branched
213
250
  #
214
251
  # @return [self, Object]
215
252
  def coerce(value, state:)
216
253
  exactness = state.fetch(:exactness)
217
254
 
218
- if value.is_a?(self.class)
255
+ if value.is_a?(self)
219
256
  exactness[:yes] += 1
220
257
  return value
221
258
  end
222
259
 
223
260
  unless (val = ModernTreasury::Internal::Util.coerce_hash(value)).is_a?(Hash)
224
261
  exactness[:no] += 1
262
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{Hash}")
225
263
  return value
226
264
  end
227
265
  exactness[:yes] += 1
@@ -229,13 +267,15 @@ module ModernTreasury
229
267
  keys = val.keys.to_set
230
268
  instance = new
231
269
  data = instance.to_h
270
+ status = instance.instance_variable_get(:@coerced)
232
271
 
233
272
  # rubocop:disable Metrics/BlockLength
234
273
  fields.each do |name, field|
235
274
  mode, required, target = field.fetch_values(:mode, :required, :type)
236
275
  api_name, nilable, const = field.fetch_values(:api_name, :nilable, :const)
276
+ src_name = state.fetch(:translate_names) ? api_name : name
237
277
 
238
- unless val.key?(api_name)
278
+ unless val.key?(src_name)
239
279
  if required && mode != :dump && const == ModernTreasury::Internal::OMIT
240
280
  exactness[nilable ? :maybe : :no] += 1
241
281
  else
@@ -244,9 +284,10 @@ module ModernTreasury
244
284
  next
245
285
  end
246
286
 
247
- item = val.fetch(api_name)
248
- keys.delete(api_name)
287
+ item = val.fetch(src_name)
288
+ keys.delete(src_name)
249
289
 
290
+ state[:error] = nil
250
291
  converted =
251
292
  if item.nil? && (nilable || !required)
252
293
  exactness[nilable ? :yes : :maybe] += 1
@@ -260,6 +301,8 @@ module ModernTreasury
260
301
  item
261
302
  end
262
303
  end
304
+
305
+ status.store(name, state.fetch(:error) || true)
263
306
  data.store(name, converted)
264
307
  end
265
308
  # rubocop:enable Metrics/BlockLength
@@ -403,10 +446,10 @@ module ModernTreasury
403
446
  # @return [Hash{Symbol=>Object}]
404
447
  #
405
448
  # @example
406
- # # `async_response` is a `ModernTreasury::AsyncResponse`
407
- # async_response => {
408
- # id: id,
409
- # object: object
449
+ # # `accounting` is a `ModernTreasury::Accounting`
450
+ # accounting => {
451
+ # account_id: account_id,
452
+ # class_id: class_id
410
453
  # }
411
454
  def deconstruct_keys(keys)
412
455
  (keys || self.class.known_fields.keys)
@@ -437,7 +480,18 @@ module ModernTreasury
437
480
  # Create a new instance of a model.
438
481
  #
439
482
  # @param data [Hash{Symbol=>Object}, self]
440
- def initialize(data = {}) = (@data = ModernTreasury::Internal::Util.coerce_hash!(data).to_h)
483
+ def initialize(data = {})
484
+ @data = {}
485
+ @coerced = {}
486
+ ModernTreasury::Internal::Util.coerce_hash!(data).each do
487
+ if self.class.known_fields.key?(_1)
488
+ public_send(:"#{_1}=", _2)
489
+ else
490
+ @data.store(_1, _2)
491
+ @coerced.store(_1, false)
492
+ end
493
+ end
494
+ end
441
495
 
442
496
  class << self
443
497
  # @api private
@@ -31,14 +31,20 @@ module ModernTreasury
31
31
  class << self
32
32
  # @api private
33
33
  #
34
+ # Coerce value to Boolean if possible, otherwise return the original value.
35
+ #
34
36
  # @param value [Boolean, Object]
35
37
  #
36
38
  # @param state [Hash{Symbol=>Object}] .
37
39
  #
38
- # @option state [Boolean, :strong] :strictness
40
+ # @option state [Boolean] :translate_names
41
+ #
42
+ # @option state [Boolean] :strictness
39
43
  #
40
44
  # @option state [Hash{Symbol=>Object}] :exactness
41
45
  #
46
+ # @option state [Class<StandardError>] :error
47
+ #
42
48
  # @option state [Integer] :branched
43
49
  #
44
50
  # @return [Boolean, Object]
@@ -15,10 +15,14 @@ module ModernTreasury
15
15
  #
16
16
  # @param state [Hash{Symbol=>Object}] .
17
17
  #
18
- # @option state [Boolean, :strong] :strictness
18
+ # @option state [Boolean] :translate_names
19
+ #
20
+ # @option state [Boolean] :strictness
19
21
  #
20
22
  # @option state [Hash{Symbol=>Object}] :exactness
21
23
  #
24
+ # @option state [Class<StandardError>] :error
25
+ #
22
26
  # @option state [Integer] :branched
23
27
  #
24
28
  # @return [Object]
@@ -94,6 +98,21 @@ module ModernTreasury
94
98
  end
95
99
  end
96
100
 
101
+ # @api private
102
+ #
103
+ # @param translate_names [Boolean]
104
+ #
105
+ # @return [Hash{Symbol=>Object}]
106
+ def new_coerce_state(translate_names: true)
107
+ {
108
+ translate_names: translate_names,
109
+ strictness: true,
110
+ exactness: {yes: 0, no: 0, maybe: 0},
111
+ error: nil,
112
+ branched: 0
113
+ }
114
+ end
115
+
97
116
  # @api private
98
117
  #
99
118
  # Based on `target`, transform `value` into `target`, to the extent possible:
@@ -110,14 +129,11 @@ module ModernTreasury
110
129
  #
111
130
  # @param value [Object]
112
131
  #
113
- # @param state [Hash{Symbol=>Object}] The `strictness` is one of `true`, `false`, or `:strong`. This informs the
114
- # coercion strategy when we have to decide between multiple possible conversion
115
- # targets:
132
+ # @param state [Hash{Symbol=>Object}] The `strictness` is one of `true`, `false`. This informs the coercion strategy
133
+ # when we have to decide between multiple possible conversion targets:
116
134
  #
117
135
  # - `true`: the conversion must be exact, with minimum coercion.
118
136
  # - `false`: the conversion can be approximate, with some coercion.
119
- # - `:strong`: the conversion must be exact, with no coercion, and raise an error
120
- # if not possible.
121
137
  #
122
138
  # The `exactness` is `Hash` with keys being one of `yes`, `no`, or `maybe`. For
123
139
  # any given conversion attempt, the exactness will be updated based on how closely
@@ -130,21 +146,20 @@ module ModernTreasury
130
146
  #
131
147
  # See implementation below for more details.
132
148
  #
133
- # @option state [Boolean, :strong] :strictness
149
+ # @option state [Boolean] :translate_names
150
+ #
151
+ # @option state [Boolean] :strictness
134
152
  #
135
153
  # @option state [Hash{Symbol=>Object}] :exactness
136
154
  #
155
+ # @option state [Class<StandardError>] :error
156
+ #
137
157
  # @option state [Integer] :branched
138
158
  #
139
159
  # @return [Object]
140
- def coerce(
141
- target,
142
- value,
143
- state: {strictness: true, exactness: {yes: 0, no: 0, maybe: 0}, branched: 0}
144
- )
145
- # rubocop:disable Lint/SuppressedException
160
+ def coerce(target, value, state: ModernTreasury::Internal::Type::Converter.new_coerce_state)
146
161
  # rubocop:disable Metrics/BlockNesting
147
- strictness, exactness = state.fetch_values(:strictness, :exactness)
162
+ exactness = state.fetch(:exactness)
148
163
 
149
164
  case target
150
165
  in ModernTreasury::Internal::Type::Converter
@@ -160,29 +175,26 @@ module ModernTreasury
160
175
  exactness[value.nil? ? :yes : :maybe] += 1
161
176
  return nil
162
177
  in -> { _1 <= Integer }
163
- if value.is_a?(Integer)
178
+ case value
179
+ in Integer
164
180
  exactness[:yes] += 1
165
181
  return value
166
- elsif strictness == :strong && Integer(value, exception: false) != value
167
- message = "no implicit conversion of #{value.class} into #{target.inspect}"
168
- raise value.is_a?(Numeric) ? ArgumentError.new(message) : TypeError.new(message)
169
182
  else
170
183
  Kernel.then do
171
184
  return Integer(value).tap { exactness[:maybe] += 1 }
172
- rescue ArgumentError, TypeError
185
+ rescue ArgumentError, TypeError => e
186
+ state[:error] = e
173
187
  end
174
188
  end
175
189
  in -> { _1 <= Float }
176
190
  if value.is_a?(Numeric)
177
191
  exactness[:yes] += 1
178
192
  return Float(value)
179
- elsif strictness == :strong
180
- message = "no implicit conversion of #{value.class} into #{target.inspect}"
181
- raise TypeError.new(message)
182
193
  else
183
194
  Kernel.then do
184
195
  return Float(value).tap { exactness[:maybe] += 1 }
185
- rescue ArgumentError, TypeError
196
+ rescue ArgumentError, TypeError => e
197
+ state[:error] = e
186
198
  end
187
199
  end
188
200
  in -> { _1 <= String }
@@ -194,16 +206,13 @@ module ModernTreasury
194
206
  exactness[:yes] += 1
195
207
  return value.string
196
208
  else
197
- if strictness == :strong
198
- message = "no implicit conversion of #{value.class} into #{target.inspect}"
199
- raise TypeError.new(message)
200
- end
209
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{String}")
201
210
  end
202
211
  in -> { _1 <= Date || _1 <= Time }
203
212
  Kernel.then do
204
213
  return target.parse(value).tap { exactness[:yes] += 1 }
205
214
  rescue ArgumentError, TypeError => e
206
- raise e if strictness == :strong
215
+ state[:error] = e
207
216
  end
208
217
  in -> { _1 <= StringIO } if value.is_a?(String)
209
218
  exactness[:yes] += 1
@@ -221,10 +230,8 @@ module ModernTreasury
221
230
  return value
222
231
  end
223
232
  else
224
- if strictness == :strong
225
- message = "cannot convert non-matching #{value.class} into #{target.inspect}"
226
- raise ArgumentError.new(message)
227
- end
233
+ message = "cannot convert non-matching #{value.class} into #{target.inspect}"
234
+ state[:error] = ArgumentError.new(message)
228
235
  end
229
236
  else
230
237
  end
@@ -232,7 +239,6 @@ module ModernTreasury
232
239
  exactness[:no] += 1
233
240
  value
234
241
  # rubocop:enable Metrics/BlockNesting
235
- # rubocop:enable Lint/SuppressedException
236
242
  end
237
243
 
238
244
  # @api private
@@ -277,8 +283,10 @@ module ModernTreasury
277
283
  define_sorbet_constant!(:CoerceState) do
278
284
  T.type_alias do
279
285
  {
280
- strictness: T.any(T::Boolean, Symbol),
286
+ translate_names: T::Boolean,
287
+ strictness: T::Boolean,
281
288
  exactness: {yes: Integer, no: Integer, maybe: Integer},
289
+ error: T::Class[StandardError],
282
290
  branched: Integer
283
291
  }
284
292
  end
@@ -77,10 +77,14 @@ module ModernTreasury
77
77
  #
78
78
  # @param state [Hash{Symbol=>Object}] .
79
79
  #
80
- # @option state [Boolean, :strong] :strictness
80
+ # @option state [Boolean] :translate_names
81
+ #
82
+ # @option state [Boolean] :strictness
81
83
  #
82
84
  # @option state [Hash{Symbol=>Object}] :exactness
83
85
  #
86
+ # @option state [Class<StandardError>] :error
87
+ #
84
88
  # @option state [Integer] :branched
85
89
  #
86
90
  # @return [Symbol, Object]
@@ -91,8 +95,12 @@ module ModernTreasury
91
95
  if values.include?(val)
92
96
  exactness[:yes] += 1
93
97
  val
98
+ elsif values.first&.class == val.class
99
+ exactness[:maybe] += 1
100
+ value
94
101
  else
95
- exactness[values.first&.class == val.class ? :maybe : :no] += 1
102
+ exactness[:no] += 1
103
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{self}")
96
104
  value
97
105
  end
98
106
  end