mt-sdk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +188 -0
  4. data/bin/console +15 -0
  5. data/lib/modern_treasury/api_helper.rb +10 -0
  6. data/lib/modern_treasury/client.rb +275 -0
  7. data/lib/modern_treasury/configuration.rb +206 -0
  8. data/lib/modern_treasury/controllers/account_collection_flow_controller.rb +130 -0
  9. data/lib/modern_treasury/controllers/account_detail_controller.rb +131 -0
  10. data/lib/modern_treasury/controllers/balance_report_controller.rb +76 -0
  11. data/lib/modern_treasury/controllers/base_controller.rb +60 -0
  12. data/lib/modern_treasury/controllers/connection_controller.rb +40 -0
  13. data/lib/modern_treasury/controllers/counterparty_controller.rb +188 -0
  14. data/lib/modern_treasury/controllers/document_controller.rb +285 -0
  15. data/lib/modern_treasury/controllers/event_controller.rb +72 -0
  16. data/lib/modern_treasury/controllers/expected_payment_controller.rb +162 -0
  17. data/lib/modern_treasury/controllers/external_account_controller.rb +202 -0
  18. data/lib/modern_treasury/controllers/incoming_payment_detail_controller.rb +150 -0
  19. data/lib/modern_treasury/controllers/internal_account_controller.rb +134 -0
  20. data/lib/modern_treasury/controllers/invoice_controller.rb +98 -0
  21. data/lib/modern_treasury/controllers/invoice_line_item_controller.rb +136 -0
  22. data/lib/modern_treasury/controllers/ledger_account_category_controller.rb +292 -0
  23. data/lib/modern_treasury/controllers/ledger_account_controller.rb +202 -0
  24. data/lib/modern_treasury/controllers/ledger_account_payout_controller.rb +126 -0
  25. data/lib/modern_treasury/controllers/ledger_account_statement_controller.rb +60 -0
  26. data/lib/modern_treasury/controllers/ledger_controller.rb +152 -0
  27. data/lib/modern_treasury/controllers/ledger_entry_controller.rb +148 -0
  28. data/lib/modern_treasury/controllers/ledger_event_handler_controller.rb +119 -0
  29. data/lib/modern_treasury/controllers/ledger_transaction_controller.rb +328 -0
  30. data/lib/modern_treasury/controllers/ledgerable_event_controller.rb +61 -0
  31. data/lib/modern_treasury/controllers/line_item_controller.rb +107 -0
  32. data/lib/modern_treasury/controllers/paper_item_controller.rb +69 -0
  33. data/lib/modern_treasury/controllers/payment_flow_controller.rb +138 -0
  34. data/lib/modern_treasury/controllers/payment_order_controller.rb +368 -0
  35. data/lib/modern_treasury/controllers/payment_reference_controller.rb +64 -0
  36. data/lib/modern_treasury/controllers/ping_controller.rb +34 -0
  37. data/lib/modern_treasury/controllers/return_controller.rb +105 -0
  38. data/lib/modern_treasury/controllers/reversal_controller.rb +99 -0
  39. data/lib/modern_treasury/controllers/routing_detail_controller.rb +131 -0
  40. data/lib/modern_treasury/controllers/transaction_controller.rb +133 -0
  41. data/lib/modern_treasury/controllers/transaction_line_item_controller.rb +39 -0
  42. data/lib/modern_treasury/controllers/validation_controller.rb +41 -0
  43. data/lib/modern_treasury/controllers/virtual_account_controller.rb +142 -0
  44. data/lib/modern_treasury/exceptions/api_exception.rb +21 -0
  45. data/lib/modern_treasury/exceptions/error_message_exception.rb +46 -0
  46. data/lib/modern_treasury/http/auth/basic_auth.rb +62 -0
  47. data/lib/modern_treasury/http/http_call_back.rb +10 -0
  48. data/lib/modern_treasury/http/http_method_enum.rb +10 -0
  49. data/lib/modern_treasury/http/http_request.rb +10 -0
  50. data/lib/modern_treasury/http/http_response.rb +10 -0
  51. data/lib/modern_treasury/http/proxy_settings.rb +22 -0
  52. data/lib/modern_treasury/models/account.rb +304 -0
  53. data/lib/modern_treasury/models/account1.rb +217 -0
  54. data/lib/modern_treasury/models/account_collection_flow.rb +178 -0
  55. data/lib/modern_treasury/models/account_collection_flow_create_request.rb +70 -0
  56. data/lib/modern_treasury/models/account_collection_flow_update_request.rb +61 -0
  57. data/lib/modern_treasury/models/account_detail.rb +211 -0
  58. data/lib/modern_treasury/models/account_detail1.rb +74 -0
  59. data/lib/modern_treasury/models/account_detail_create_request.rb +75 -0
  60. data/lib/modern_treasury/models/account_number_type2_enum.rb +48 -0
  61. data/lib/modern_treasury/models/account_number_type_enum.rb +49 -0
  62. data/lib/modern_treasury/models/account_type5_enum.rb +56 -0
  63. data/lib/modern_treasury/models/account_type_enum.rb +56 -0
  64. data/lib/modern_treasury/models/accounting.rb +88 -0
  65. data/lib/modern_treasury/models/accounting1.rb +63 -0
  66. data/lib/modern_treasury/models/accounts_type1_enum.rb +26 -0
  67. data/lib/modern_treasury/models/accounts_type_enum.rb +36 -0
  68. data/lib/modern_treasury/models/address.rb +231 -0
  69. data/lib/modern_treasury/models/address_request.rb +118 -0
  70. data/lib/modern_treasury/models/async_response.rb +68 -0
  71. data/lib/modern_treasury/models/balance.rb +164 -0
  72. data/lib/modern_treasury/models/balance_report.rb +178 -0
  73. data/lib/modern_treasury/models/balance_report_type1_enum.rb +44 -0
  74. data/lib/modern_treasury/models/balance_report_type_enum.rb +45 -0
  75. data/lib/modern_treasury/models/balance_type_enum.rb +63 -0
  76. data/lib/modern_treasury/models/balances.rb +71 -0
  77. data/lib/modern_treasury/models/balances1.rb +81 -0
  78. data/lib/modern_treasury/models/balances2.rb +120 -0
  79. data/lib/modern_treasury/models/balances3.rb +130 -0
  80. data/lib/modern_treasury/models/base_model.rb +110 -0
  81. data/lib/modern_treasury/models/charge_bearer_enum.rb +42 -0
  82. data/lib/modern_treasury/models/code1_enum.rb +200 -0
  83. data/lib/modern_treasury/models/code_enum.rb +68 -0
  84. data/lib/modern_treasury/models/connection.rb +209 -0
  85. data/lib/modern_treasury/models/contact_detail.rb +200 -0
  86. data/lib/modern_treasury/models/contact_detail_create_request.rb +75 -0
  87. data/lib/modern_treasury/models/contact_identifier_type_enum.rb +40 -0
  88. data/lib/modern_treasury/models/content_type_enum.rb +36 -0
  89. data/lib/modern_treasury/models/counterparty.rb +200 -0
  90. data/lib/modern_treasury/models/counterparty_billing_address.rb +106 -0
  91. data/lib/modern_treasury/models/counterparty_collect_account_request.rb +104 -0
  92. data/lib/modern_treasury/models/counterparty_collect_account_response.rb +82 -0
  93. data/lib/modern_treasury/models/counterparty_create_request.rb +161 -0
  94. data/lib/modern_treasury/models/counterparty_shipping_address.rb +107 -0
  95. data/lib/modern_treasury/models/counterparty_update_request.rb +107 -0
  96. data/lib/modern_treasury/models/created_at_enum.rb +36 -0
  97. data/lib/modern_treasury/models/currency1_enum.rb +37 -0
  98. data/lib/modern_treasury/models/currency_enum.rb +784 -0
  99. data/lib/modern_treasury/models/direction10_enum.rb +38 -0
  100. data/lib/modern_treasury/models/direction14_enum.rb +36 -0
  101. data/lib/modern_treasury/models/direction15_enum.rb +36 -0
  102. data/lib/modern_treasury/models/direction1_enum.rb +37 -0
  103. data/lib/modern_treasury/models/direction4_enum.rb +36 -0
  104. data/lib/modern_treasury/models/direction5_enum.rb +39 -0
  105. data/lib/modern_treasury/models/direction9_enum.rb +37 -0
  106. data/lib/modern_treasury/models/direction_enum.rb +38 -0
  107. data/lib/modern_treasury/models/document.rb +207 -0
  108. data/lib/modern_treasury/models/document_create_request.rb +92 -0
  109. data/lib/modern_treasury/models/document_detail.rb +154 -0
  110. data/lib/modern_treasury/models/documentable_type1_enum.rb +72 -0
  111. data/lib/modern_treasury/models/documentable_type2_enum.rb +72 -0
  112. data/lib/modern_treasury/models/documentable_type_enum.rb +75 -0
  113. data/lib/modern_treasury/models/effective_at_enum.rb +36 -0
  114. data/lib/modern_treasury/models/errors.rb +81 -0
  115. data/lib/modern_treasury/models/event.rb +162 -0
  116. data/lib/modern_treasury/models/expected_payment.rb +343 -0
  117. data/lib/modern_treasury/models/expected_payment_create_request.rb +254 -0
  118. data/lib/modern_treasury/models/expected_payment_update_request.rb +239 -0
  119. data/lib/modern_treasury/models/external_account.rb +283 -0
  120. data/lib/modern_treasury/models/external_account_complete_verification_request.rb +62 -0
  121. data/lib/modern_treasury/models/external_account_create_request.rb +230 -0
  122. data/lib/modern_treasury/models/external_account_update_request.rb +132 -0
  123. data/lib/modern_treasury/models/external_account_verify_request.rb +83 -0
  124. data/lib/modern_treasury/models/fallback_type_enum.rb +28 -0
  125. data/lib/modern_treasury/models/field_enum.rb +112 -0
  126. data/lib/modern_treasury/models/file.rb +81 -0
  127. data/lib/modern_treasury/models/foreign_exchange_indicator_enum.rb +38 -0
  128. data/lib/modern_treasury/models/incoming_payment_detail.rb +348 -0
  129. data/lib/modern_treasury/models/incoming_payment_detail_create_request.rb +141 -0
  130. data/lib/modern_treasury/models/incoming_payment_detail_update_request.rb +63 -0
  131. data/lib/modern_treasury/models/internal_account.rb +361 -0
  132. data/lib/modern_treasury/models/internal_account_create_request.rb +135 -0
  133. data/lib/modern_treasury/models/internal_account_update_request.rb +95 -0
  134. data/lib/modern_treasury/models/invoice.rb +342 -0
  135. data/lib/modern_treasury/models/invoice_create_request.rb +235 -0
  136. data/lib/modern_treasury/models/invoice_line_item.rb +171 -0
  137. data/lib/modern_treasury/models/invoice_line_item_create_request.rb +104 -0
  138. data/lib/modern_treasury/models/invoice_line_item_update_request.rb +240 -0
  139. data/lib/modern_treasury/models/invoice_update_request.rb +251 -0
  140. data/lib/modern_treasury/models/invoicer_address.rb +106 -0
  141. data/lib/modern_treasury/models/itemizable_type1_enum.rb +36 -0
  142. data/lib/modern_treasury/models/itemizable_type_enum.rb +36 -0
  143. data/lib/modern_treasury/models/ledger.rb +158 -0
  144. data/lib/modern_treasury/models/ledger_account.rb +220 -0
  145. data/lib/modern_treasury/models/ledger_account_category.rb +187 -0
  146. data/lib/modern_treasury/models/ledger_account_category_create_request.rb +125 -0
  147. data/lib/modern_treasury/models/ledger_account_category_update_request.rb +84 -0
  148. data/lib/modern_treasury/models/ledger_account_create_request.rb +150 -0
  149. data/lib/modern_treasury/models/ledger_account_normal_balance_enum.rb +36 -0
  150. data/lib/modern_treasury/models/ledger_account_payout.rb +238 -0
  151. data/lib/modern_treasury/models/ledger_account_payout_create_request.rb +152 -0
  152. data/lib/modern_treasury/models/ledger_account_payout_update_request.rb +85 -0
  153. data/lib/modern_treasury/models/ledger_account_statement.rb +233 -0
  154. data/lib/modern_treasury/models/ledger_account_statement_create_request.rb +122 -0
  155. data/lib/modern_treasury/models/ledger_account_update_request.rb +84 -0
  156. data/lib/modern_treasury/models/ledger_balance.rb +97 -0
  157. data/lib/modern_treasury/models/ledger_balances.rb +81 -0
  158. data/lib/modern_treasury/models/ledger_balances_with_effective_at.rb +123 -0
  159. data/lib/modern_treasury/models/ledger_create_request.rb +83 -0
  160. data/lib/modern_treasury/models/ledger_entry.rb +247 -0
  161. data/lib/modern_treasury/models/ledger_entry_create_request.rb +177 -0
  162. data/lib/modern_treasury/models/ledger_entry_of_transaction_version.rb +214 -0
  163. data/lib/modern_treasury/models/ledger_event_handler.rb +182 -0
  164. data/lib/modern_treasury/models/ledger_event_handler_conditions.rb +78 -0
  165. data/lib/modern_treasury/models/ledger_event_handler_create_request.rb +119 -0
  166. data/lib/modern_treasury/models/ledger_event_handler_ledger_entries.rb +80 -0
  167. data/lib/modern_treasury/models/ledger_event_handler_ledger_transaction_template.rb +103 -0
  168. data/lib/modern_treasury/models/ledger_transaction.rb +259 -0
  169. data/lib/modern_treasury/models/ledger_transaction_create_request.rb +164 -0
  170. data/lib/modern_treasury/models/ledger_transaction_reversal_create_request.rb +142 -0
  171. data/lib/modern_treasury/models/ledger_transaction_update_request.rb +115 -0
  172. data/lib/modern_treasury/models/ledger_transaction_version.rb +254 -0
  173. data/lib/modern_treasury/models/ledger_type_enum.rb +37 -0
  174. data/lib/modern_treasury/models/ledger_update_request.rb +84 -0
  175. data/lib/modern_treasury/models/ledgerable_event.rb +206 -0
  176. data/lib/modern_treasury/models/ledgerable_event_create_request.rb +140 -0
  177. data/lib/modern_treasury/models/ledgerable_type2_enum.rb +71 -0
  178. data/lib/modern_treasury/models/ledgerable_type5_enum.rb +69 -0
  179. data/lib/modern_treasury/models/ledgerable_type6_enum.rb +68 -0
  180. data/lib/modern_treasury/models/ledgerable_type_enum.rb +38 -0
  181. data/lib/modern_treasury/models/legacy_document_create_request.rb +70 -0
  182. data/lib/modern_treasury/models/line_item.rb +200 -0
  183. data/lib/modern_treasury/models/line_item_request.rb +98 -0
  184. data/lib/modern_treasury/models/line_item_update_request.rb +63 -0
  185. data/lib/modern_treasury/models/mreturn.rb +425 -0
  186. data/lib/modern_treasury/models/normal_balance2_enum.rb +36 -0
  187. data/lib/modern_treasury/models/normal_balance_enum.rb +36 -0
  188. data/lib/modern_treasury/models/order_by.rb +72 -0
  189. data/lib/modern_treasury/models/originating_account_number_type_enum.rb +48 -0
  190. data/lib/modern_treasury/models/originating_routing_number_type_enum.rb +68 -0
  191. data/lib/modern_treasury/models/paper_item.rb +249 -0
  192. data/lib/modern_treasury/models/party_address.rb +106 -0
  193. data/lib/modern_treasury/models/party_type5_enum.rb +36 -0
  194. data/lib/modern_treasury/models/party_type_enum.rb +36 -0
  195. data/lib/modern_treasury/models/payment_direction_enum.rb +36 -0
  196. data/lib/modern_treasury/models/payment_flow.rb +230 -0
  197. data/lib/modern_treasury/models/payment_flow_create_request.rb +103 -0
  198. data/lib/modern_treasury/models/payment_flow_update_request.rb +61 -0
  199. data/lib/modern_treasury/models/payment_method1_enum.rb +46 -0
  200. data/lib/modern_treasury/models/payment_method_enum.rb +42 -0
  201. data/lib/modern_treasury/models/payment_order.rb +820 -0
  202. data/lib/modern_treasury/models/payment_order_async_create_request.rb +536 -0
  203. data/lib/modern_treasury/models/payment_order_create_request.rb +556 -0
  204. data/lib/modern_treasury/models/payment_order_update_request.rb +543 -0
  205. data/lib/modern_treasury/models/payment_reference.rb +175 -0
  206. data/lib/modern_treasury/models/payment_reference_object.rb +156 -0
  207. data/lib/modern_treasury/models/payment_type13_enum.rb +96 -0
  208. data/lib/modern_treasury/models/payment_type1_enum.rb +97 -0
  209. data/lib/modern_treasury/models/payment_type2_enum.rb +96 -0
  210. data/lib/modern_treasury/models/payment_type4_enum.rb +96 -0
  211. data/lib/modern_treasury/models/payment_type5_enum.rb +36 -0
  212. data/lib/modern_treasury/models/payment_type6_enum.rb +97 -0
  213. data/lib/modern_treasury/models/payment_type_enum.rb +37 -0
  214. data/lib/modern_treasury/models/ping_response.rb +60 -0
  215. data/lib/modern_treasury/models/priority4_enum.rb +36 -0
  216. data/lib/modern_treasury/models/priority_enum.rb +38 -0
  217. data/lib/modern_treasury/models/reason1_enum.rb +50 -0
  218. data/lib/modern_treasury/models/reason_enum.rb +48 -0
  219. data/lib/modern_treasury/models/receiving_account.rb +304 -0
  220. data/lib/modern_treasury/models/receiving_account1.rb +219 -0
  221. data/lib/modern_treasury/models/receiving_account_type_enum.rb +36 -0
  222. data/lib/modern_treasury/models/reconciliation_method_enum.rb +38 -0
  223. data/lib/modern_treasury/models/reference_number_type1_enum.rb +248 -0
  224. data/lib/modern_treasury/models/reference_number_type_enum.rb +248 -0
  225. data/lib/modern_treasury/models/referenceable_type1_enum.rb +40 -0
  226. data/lib/modern_treasury/models/referenceable_type_enum.rb +41 -0
  227. data/lib/modern_treasury/models/return_create_request.rb +119 -0
  228. data/lib/modern_treasury/models/returnable_type1_enum.rb +48 -0
  229. data/lib/modern_treasury/models/returnable_type_enum.rb +48 -0
  230. data/lib/modern_treasury/models/reversal.rb +151 -0
  231. data/lib/modern_treasury/models/reversal_create_request.rb +86 -0
  232. data/lib/modern_treasury/models/role_enum.rb +36 -0
  233. data/lib/modern_treasury/models/routing_detail.rb +242 -0
  234. data/lib/modern_treasury/models/routing_detail1.rb +83 -0
  235. data/lib/modern_treasury/models/routing_detail_create_request.rb +87 -0
  236. data/lib/modern_treasury/models/routing_number_lookup_request.rb +124 -0
  237. data/lib/modern_treasury/models/routing_number_type1_enum.rb +68 -0
  238. data/lib/modern_treasury/models/routing_number_type7_enum.rb +55 -0
  239. data/lib/modern_treasury/models/routing_number_type8_enum.rb +68 -0
  240. data/lib/modern_treasury/models/routing_number_type_enum.rb +69 -0
  241. data/lib/modern_treasury/models/status11_enum.rb +40 -0
  242. data/lib/modern_treasury/models/status12_enum.rb +40 -0
  243. data/lib/modern_treasury/models/status15_enum.rb +41 -0
  244. data/lib/modern_treasury/models/status16_enum.rb +41 -0
  245. data/lib/modern_treasury/models/status17_enum.rb +45 -0
  246. data/lib/modern_treasury/models/status18_enum.rb +74 -0
  247. data/lib/modern_treasury/models/status19_enum.rb +52 -0
  248. data/lib/modern_treasury/models/status1_enum.rb +40 -0
  249. data/lib/modern_treasury/models/status20_enum.rb +40 -0
  250. data/lib/modern_treasury/models/status21_enum.rb +40 -0
  251. data/lib/modern_treasury/models/status22_enum.rb +40 -0
  252. data/lib/modern_treasury/models/status24_enum.rb +72 -0
  253. data/lib/modern_treasury/models/status2_enum.rb +41 -0
  254. data/lib/modern_treasury/models/status3_enum.rb +72 -0
  255. data/lib/modern_treasury/models/status4_enum.rb +52 -0
  256. data/lib/modern_treasury/models/status5_enum.rb +48 -0
  257. data/lib/modern_treasury/models/status6_enum.rb +49 -0
  258. data/lib/modern_treasury/models/status7_enum.rb +37 -0
  259. data/lib/modern_treasury/models/status8_enum.rb +37 -0
  260. data/lib/modern_treasury/models/status9_enum.rb +41 -0
  261. data/lib/modern_treasury/models/status_enum.rb +45 -0
  262. data/lib/modern_treasury/models/subtype_enum.rb +71 -0
  263. data/lib/modern_treasury/models/supported_payment_type_enum.rb +96 -0
  264. data/lib/modern_treasury/models/transactable_type_enum.rb +53 -0
  265. data/lib/modern_treasury/models/transaction.rb +311 -0
  266. data/lib/modern_treasury/models/transaction_line_item.rb +211 -0
  267. data/lib/modern_treasury/models/type10_enum.rb +64 -0
  268. data/lib/modern_treasury/models/type11_enum.rb +97 -0
  269. data/lib/modern_treasury/models/type12_enum.rb +37 -0
  270. data/lib/modern_treasury/models/type13_enum.rb +96 -0
  271. data/lib/modern_treasury/models/type14_enum.rb +64 -0
  272. data/lib/modern_treasury/models/type16_enum.rb +36 -0
  273. data/lib/modern_treasury/models/type1_enum.rb +97 -0
  274. data/lib/modern_treasury/models/type4_enum.rb +65 -0
  275. data/lib/modern_treasury/models/type5_enum.rb +97 -0
  276. data/lib/modern_treasury/models/type6_enum.rb +77 -0
  277. data/lib/modern_treasury/models/type_enum.rb +37 -0
  278. data/lib/modern_treasury/models/vendor_code_type1_enum.rb +111 -0
  279. data/lib/modern_treasury/models/vendor_code_type_enum.rb +108 -0
  280. data/lib/modern_treasury/models/verification_status1_enum.rb +44 -0
  281. data/lib/modern_treasury/models/verification_status_enum.rb +40 -0
  282. data/lib/modern_treasury/models/virtual_account.rb +247 -0
  283. data/lib/modern_treasury/models/virtual_account_create_request.rb +172 -0
  284. data/lib/modern_treasury/models/virtual_account_update_request.rb +85 -0
  285. data/lib/modern_treasury/utilities/date_time_helper.rb +11 -0
  286. data/lib/modern_treasury/utilities/file_wrapper.rb +28 -0
  287. data/lib/modern_treasury/utilities/union_type_lookup.rb +32 -0
  288. data/lib/modern_treasury.rb +316 -0
  289. data/test/controllers/controller_test_base.rb +23 -0
  290. data/test/controllers/test_account_collection_flow_controller.rb +64 -0
  291. data/test/controllers/test_connection_controller.rb +41 -0
  292. data/test/controllers/test_counterparty_controller.rb +65 -0
  293. data/test/controllers/test_document_controller.rb +41 -0
  294. data/test/controllers/test_event_controller.rb +46 -0
  295. data/test/controllers/test_expected_payment_controller.rb +71 -0
  296. data/test/controllers/test_external_account_controller.rb +63 -0
  297. data/test/controllers/test_incoming_payment_detail_controller.rb +68 -0
  298. data/test/controllers/test_internal_account_controller.rb +65 -0
  299. data/test/controllers/test_invoice_controller.rb +56 -0
  300. data/test/controllers/test_ledger_account_category_controller.rb +67 -0
  301. data/test/controllers/test_ledger_account_controller.rb +70 -0
  302. data/test/controllers/test_ledger_account_payout_controller.rb +62 -0
  303. data/test/controllers/test_ledger_account_statement_controller.rb +36 -0
  304. data/test/controllers/test_ledger_controller.rb +59 -0
  305. data/test/controllers/test_ledger_entry_controller.rb +65 -0
  306. data/test/controllers/test_ledger_event_handler_controller.rb +63 -0
  307. data/test/controllers/test_ledger_transaction_controller.rb +112 -0
  308. data/test/controllers/test_ledgerable_event_controller.rb +36 -0
  309. data/test/controllers/test_paper_item_controller.rb +43 -0
  310. data/test/controllers/test_payment_flow_controller.rb +67 -0
  311. data/test/controllers/test_payment_order_controller.rb +76 -0
  312. data/test/controllers/test_payment_reference_controller.rb +43 -0
  313. data/test/controllers/test_ping_controller.rb +31 -0
  314. data/test/controllers/test_return_controller.rb +64 -0
  315. data/test/controllers/test_transaction_controller.rb +56 -0
  316. data/test/controllers/test_virtual_account_controller.rb +63 -0
  317. data/test/http_response_catcher.rb +19 -0
  318. metadata +429 -0
@@ -0,0 +1,230 @@
1
+ # modern_treasury
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module ModernTreasury
7
+ # ExternalAccountCreateRequest Model.
8
+ class ExternalAccountCreateRequest < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Can be `checking`, `savings` or `other`.
13
+ # @return [AccountTypeEnum]
14
+ attr_accessor :account_type
15
+
16
+ # Either `individual` or `business`.
17
+ # @return [PartyTypeEnum]
18
+ attr_accessor :party_type
19
+
20
+ # Either `individual` or `business`.
21
+ # @return [AddressRequest]
22
+ attr_accessor :party_address
23
+
24
+ # A nickname for the external account. This is only for internal usage and
25
+ # won't affect any payments
26
+ # @return [String]
27
+ attr_accessor :name
28
+
29
+ # A nickname for the external account. This is only for internal usage and
30
+ # won't affect any payments
31
+ # @return [UUID | String]
32
+ attr_accessor :counterparty_id
33
+
34
+ # A nickname for the external account. This is only for internal usage and
35
+ # won't affect any payments
36
+ # @return [Array[AccountDetail1]]
37
+ attr_accessor :account_details
38
+
39
+ # A nickname for the external account. This is only for internal usage and
40
+ # won't affect any payments
41
+ # @return [Array[RoutingDetail1]]
42
+ attr_accessor :routing_details
43
+
44
+ # Additional data represented as key-value pairs. Both the key and value
45
+ # must be strings.
46
+ # @return [Hash[String, String]]
47
+ attr_accessor :metadata
48
+
49
+ # If this value isn't provided, it will be inherited from the counterparty's
50
+ # name.
51
+ # @return [String]
52
+ attr_accessor :party_name
53
+
54
+ # If this value isn't provided, it will be inherited from the counterparty's
55
+ # name.
56
+ # @return [String]
57
+ attr_accessor :party_identifier
58
+
59
+ # If this value isn't provided, it will be inherited from the counterparty's
60
+ # name.
61
+ # @return [LedgerAccountCreateRequest]
62
+ attr_accessor :ledger_account
63
+
64
+ # If you've enabled the Modern Treasury + Plaid integration in your Plaid
65
+ # account, you can pass the processor token in this field.
66
+ # @return [String]
67
+ attr_accessor :plaid_processor_token
68
+
69
+ # If you've enabled the Modern Treasury + Plaid integration in your Plaid
70
+ # account, you can pass the processor token in this field.
71
+ # @return [Array[ContactDetailCreateRequest]]
72
+ attr_accessor :contact_details
73
+
74
+ # A mapping from model property names to API property names.
75
+ def self.names
76
+ @_hash = {} if @_hash.nil?
77
+ @_hash['account_type'] = 'account_type'
78
+ @_hash['party_type'] = 'party_type'
79
+ @_hash['party_address'] = 'party_address'
80
+ @_hash['name'] = 'name'
81
+ @_hash['counterparty_id'] = 'counterparty_id'
82
+ @_hash['account_details'] = 'account_details'
83
+ @_hash['routing_details'] = 'routing_details'
84
+ @_hash['metadata'] = 'metadata'
85
+ @_hash['party_name'] = 'party_name'
86
+ @_hash['party_identifier'] = 'party_identifier'
87
+ @_hash['ledger_account'] = 'ledger_account'
88
+ @_hash['plaid_processor_token'] = 'plaid_processor_token'
89
+ @_hash['contact_details'] = 'contact_details'
90
+ @_hash
91
+ end
92
+
93
+ # An array for optional fields
94
+ def self.optionals
95
+ %w[
96
+ account_type
97
+ party_type
98
+ party_address
99
+ name
100
+ account_details
101
+ routing_details
102
+ metadata
103
+ party_name
104
+ party_identifier
105
+ ledger_account
106
+ plaid_processor_token
107
+ contact_details
108
+ ]
109
+ end
110
+
111
+ # An array for nullable fields
112
+ def self.nullables
113
+ %w[
114
+ party_type
115
+ name
116
+ counterparty_id
117
+ ]
118
+ end
119
+
120
+ def initialize(counterparty_id = nil, account_type = SKIP,
121
+ party_type = SKIP, party_address = SKIP, name = SKIP,
122
+ account_details = SKIP, routing_details = SKIP,
123
+ metadata = SKIP, party_name = SKIP, party_identifier = SKIP,
124
+ ledger_account = SKIP, plaid_processor_token = SKIP,
125
+ contact_details = SKIP)
126
+ @account_type = account_type unless account_type == SKIP
127
+ @party_type = party_type unless party_type == SKIP
128
+ @party_address = party_address unless party_address == SKIP
129
+ @name = name unless name == SKIP
130
+ @counterparty_id = counterparty_id
131
+ @account_details = account_details unless account_details == SKIP
132
+ @routing_details = routing_details unless routing_details == SKIP
133
+ @metadata = metadata unless metadata == SKIP
134
+ @party_name = party_name unless party_name == SKIP
135
+ @party_identifier = party_identifier unless party_identifier == SKIP
136
+ @ledger_account = ledger_account unless ledger_account == SKIP
137
+ @plaid_processor_token = plaid_processor_token unless plaid_processor_token == SKIP
138
+ @contact_details = contact_details unless contact_details == SKIP
139
+ end
140
+
141
+ # Creates an instance of the object from a hash.
142
+ def self.from_hash(hash)
143
+ return nil unless hash
144
+
145
+ # Extract variables from the hash.
146
+ counterparty_id =
147
+ hash.key?('counterparty_id') ? hash['counterparty_id'] : nil
148
+ account_type = hash.key?('account_type') ? hash['account_type'] : SKIP
149
+ party_type = hash.key?('party_type') ? hash['party_type'] : SKIP
150
+ party_address = AddressRequest.from_hash(hash['party_address']) if hash['party_address']
151
+ name = hash.key?('name') ? hash['name'] : SKIP
152
+ # Parameter is an array, so we need to iterate through it
153
+ account_details = nil
154
+ unless hash['account_details'].nil?
155
+ account_details = []
156
+ hash['account_details'].each do |structure|
157
+ account_details << (AccountDetail1.from_hash(structure) if structure)
158
+ end
159
+ end
160
+
161
+ account_details = SKIP unless hash.key?('account_details')
162
+ # Parameter is an array, so we need to iterate through it
163
+ routing_details = nil
164
+ unless hash['routing_details'].nil?
165
+ routing_details = []
166
+ hash['routing_details'].each do |structure|
167
+ routing_details << (RoutingDetail1.from_hash(structure) if structure)
168
+ end
169
+ end
170
+
171
+ routing_details = SKIP unless hash.key?('routing_details')
172
+ metadata = hash.key?('metadata') ? hash['metadata'] : SKIP
173
+ party_name = hash.key?('party_name') ? hash['party_name'] : SKIP
174
+ party_identifier =
175
+ hash.key?('party_identifier') ? hash['party_identifier'] : SKIP
176
+ ledger_account = LedgerAccountCreateRequest.from_hash(hash['ledger_account']) if
177
+ hash['ledger_account']
178
+ plaid_processor_token =
179
+ hash.key?('plaid_processor_token') ? hash['plaid_processor_token'] : SKIP
180
+ # Parameter is an array, so we need to iterate through it
181
+ contact_details = nil
182
+ unless hash['contact_details'].nil?
183
+ contact_details = []
184
+ hash['contact_details'].each do |structure|
185
+ contact_details << (ContactDetailCreateRequest.from_hash(structure) if structure)
186
+ end
187
+ end
188
+
189
+ contact_details = SKIP unless hash.key?('contact_details')
190
+
191
+ # Create object from extracted values.
192
+ ExternalAccountCreateRequest.new(counterparty_id,
193
+ account_type,
194
+ party_type,
195
+ party_address,
196
+ name,
197
+ account_details,
198
+ routing_details,
199
+ metadata,
200
+ party_name,
201
+ party_identifier,
202
+ ledger_account,
203
+ plaid_processor_token,
204
+ contact_details)
205
+ end
206
+
207
+ # Provides a human-readable string representation of the object.
208
+ def to_s
209
+ class_name = self.class.name.split('::').last
210
+ "<#{class_name} account_type: #{@account_type}, party_type: #{@party_type}, party_address:"\
211
+ " #{@party_address}, name: #{@name}, counterparty_id: #{@counterparty_id}, account_details:"\
212
+ " #{@account_details}, routing_details: #{@routing_details}, metadata: #{@metadata},"\
213
+ " party_name: #{@party_name}, party_identifier: #{@party_identifier}, ledger_account:"\
214
+ " #{@ledger_account}, plaid_processor_token: #{@plaid_processor_token}, contact_details:"\
215
+ " #{@contact_details}>"
216
+ end
217
+
218
+ # Provides a debugging-friendly string with detailed object information.
219
+ def inspect
220
+ class_name = self.class.name.split('::').last
221
+ "<#{class_name} account_type: #{@account_type.inspect}, party_type: #{@party_type.inspect},"\
222
+ " party_address: #{@party_address.inspect}, name: #{@name.inspect}, counterparty_id:"\
223
+ " #{@counterparty_id.inspect}, account_details: #{@account_details.inspect},"\
224
+ " routing_details: #{@routing_details.inspect}, metadata: #{@metadata.inspect}, party_name:"\
225
+ " #{@party_name.inspect}, party_identifier: #{@party_identifier.inspect}, ledger_account:"\
226
+ " #{@ledger_account.inspect}, plaid_processor_token: #{@plaid_processor_token.inspect},"\
227
+ " contact_details: #{@contact_details.inspect}>"
228
+ end
229
+ end
230
+ end
@@ -0,0 +1,132 @@
1
+ # modern_treasury
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module ModernTreasury
7
+ # ExternalAccountUpdateRequest Model.
8
+ class ExternalAccountUpdateRequest < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Either `individual` or `business`.
13
+ # @return [PartyTypeEnum]
14
+ attr_accessor :party_type
15
+
16
+ # Can be `checking`, `savings` or `other`.
17
+ # @return [AccountTypeEnum]
18
+ attr_accessor :account_type
19
+
20
+ # Can be `checking`, `savings` or `other`.
21
+ # @return [UUID | String]
22
+ attr_accessor :counterparty_id
23
+
24
+ # A nickname for the external account. This is only for internal usage and
25
+ # won't affect any payments
26
+ # @return [String]
27
+ attr_accessor :name
28
+
29
+ # If this value isn't provided, it will be inherited from the counterparty's
30
+ # name.
31
+ # @return [String]
32
+ attr_accessor :party_name
33
+
34
+ # If this value isn't provided, it will be inherited from the counterparty's
35
+ # name.
36
+ # @return [AddressRequest]
37
+ attr_accessor :party_address
38
+
39
+ # Additional data in the form of key-value pairs. Pairs can be removed by
40
+ # passing an empty string or `null` as the value.
41
+ # @return [Hash[String, String]]
42
+ attr_accessor :metadata
43
+
44
+ # A mapping from model property names to API property names.
45
+ def self.names
46
+ @_hash = {} if @_hash.nil?
47
+ @_hash['party_type'] = 'party_type'
48
+ @_hash['account_type'] = 'account_type'
49
+ @_hash['counterparty_id'] = 'counterparty_id'
50
+ @_hash['name'] = 'name'
51
+ @_hash['party_name'] = 'party_name'
52
+ @_hash['party_address'] = 'party_address'
53
+ @_hash['metadata'] = 'metadata'
54
+ @_hash
55
+ end
56
+
57
+ # An array for optional fields
58
+ def self.optionals
59
+ %w[
60
+ party_type
61
+ account_type
62
+ counterparty_id
63
+ name
64
+ party_name
65
+ party_address
66
+ metadata
67
+ ]
68
+ end
69
+
70
+ # An array for nullable fields
71
+ def self.nullables
72
+ %w[
73
+ party_type
74
+ counterparty_id
75
+ name
76
+ ]
77
+ end
78
+
79
+ def initialize(party_type = SKIP, account_type = SKIP,
80
+ counterparty_id = SKIP, name = SKIP, party_name = SKIP,
81
+ party_address = SKIP, metadata = SKIP)
82
+ @party_type = party_type unless party_type == SKIP
83
+ @account_type = account_type unless account_type == SKIP
84
+ @counterparty_id = counterparty_id unless counterparty_id == SKIP
85
+ @name = name unless name == SKIP
86
+ @party_name = party_name unless party_name == SKIP
87
+ @party_address = party_address unless party_address == SKIP
88
+ @metadata = metadata unless metadata == SKIP
89
+ end
90
+
91
+ # Creates an instance of the object from a hash.
92
+ def self.from_hash(hash)
93
+ return nil unless hash
94
+
95
+ # Extract variables from the hash.
96
+ party_type = hash.key?('party_type') ? hash['party_type'] : SKIP
97
+ account_type = hash.key?('account_type') ? hash['account_type'] : SKIP
98
+ counterparty_id =
99
+ hash.key?('counterparty_id') ? hash['counterparty_id'] : SKIP
100
+ name = hash.key?('name') ? hash['name'] : SKIP
101
+ party_name = hash.key?('party_name') ? hash['party_name'] : SKIP
102
+ party_address = AddressRequest.from_hash(hash['party_address']) if hash['party_address']
103
+ metadata = hash.key?('metadata') ? hash['metadata'] : SKIP
104
+
105
+ # Create object from extracted values.
106
+ ExternalAccountUpdateRequest.new(party_type,
107
+ account_type,
108
+ counterparty_id,
109
+ name,
110
+ party_name,
111
+ party_address,
112
+ metadata)
113
+ end
114
+
115
+ # Provides a human-readable string representation of the object.
116
+ def to_s
117
+ class_name = self.class.name.split('::').last
118
+ "<#{class_name} party_type: #{@party_type}, account_type: #{@account_type},"\
119
+ " counterparty_id: #{@counterparty_id}, name: #{@name}, party_name: #{@party_name},"\
120
+ " party_address: #{@party_address}, metadata: #{@metadata}>"
121
+ end
122
+
123
+ # Provides a debugging-friendly string with detailed object information.
124
+ def inspect
125
+ class_name = self.class.name.split('::').last
126
+ "<#{class_name} party_type: #{@party_type.inspect}, account_type: #{@account_type.inspect},"\
127
+ " counterparty_id: #{@counterparty_id.inspect}, name: #{@name.inspect}, party_name:"\
128
+ " #{@party_name.inspect}, party_address: #{@party_address.inspect}, metadata:"\
129
+ " #{@metadata.inspect}>"
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,83 @@
1
+ # modern_treasury
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module ModernTreasury
7
+ # ExternalAccountVerifyRequest Model.
8
+ class ExternalAccountVerifyRequest < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The ID of the internal account where the micro-deposits originate from.
13
+ # Both credit and debit capabilities must be enabled.
14
+ # @return [UUID | String]
15
+ attr_accessor :originating_account_id
16
+
17
+ # Both ach and eft are supported payment types.
18
+ # @return [PaymentType4Enum]
19
+ attr_accessor :payment_type
20
+
21
+ # Three-letter ISO currency code.
22
+ # @return [CurrencyEnum]
23
+ attr_accessor :currency
24
+
25
+ # A mapping from model property names to API property names.
26
+ def self.names
27
+ @_hash = {} if @_hash.nil?
28
+ @_hash['originating_account_id'] = 'originating_account_id'
29
+ @_hash['payment_type'] = 'payment_type'
30
+ @_hash['currency'] = 'currency'
31
+ @_hash
32
+ end
33
+
34
+ # An array for optional fields
35
+ def self.optionals
36
+ %w[
37
+ currency
38
+ ]
39
+ end
40
+
41
+ # An array for nullable fields
42
+ def self.nullables
43
+ []
44
+ end
45
+
46
+ def initialize(originating_account_id = nil, payment_type = nil,
47
+ currency = SKIP)
48
+ @originating_account_id = originating_account_id
49
+ @payment_type = payment_type
50
+ @currency = currency unless currency == SKIP
51
+ end
52
+
53
+ # Creates an instance of the object from a hash.
54
+ def self.from_hash(hash)
55
+ return nil unless hash
56
+
57
+ # Extract variables from the hash.
58
+ originating_account_id =
59
+ hash.key?('originating_account_id') ? hash['originating_account_id'] : nil
60
+ payment_type = hash.key?('payment_type') ? hash['payment_type'] : nil
61
+ currency = hash.key?('currency') ? hash['currency'] : SKIP
62
+
63
+ # Create object from extracted values.
64
+ ExternalAccountVerifyRequest.new(originating_account_id,
65
+ payment_type,
66
+ currency)
67
+ end
68
+
69
+ # Provides a human-readable string representation of the object.
70
+ def to_s
71
+ class_name = self.class.name.split('::').last
72
+ "<#{class_name} originating_account_id: #{@originating_account_id}, payment_type:"\
73
+ " #{@payment_type}, currency: #{@currency}>"
74
+ end
75
+
76
+ # Provides a debugging-friendly string with detailed object information.
77
+ def inspect
78
+ class_name = self.class.name.split('::').last
79
+ "<#{class_name} originating_account_id: #{@originating_account_id.inspect}, payment_type:"\
80
+ " #{@payment_type.inspect}, currency: #{@currency.inspect}>"
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,28 @@
1
+ # modern_treasury
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module ModernTreasury
7
+ # A payment type to fallback to if the original type is not valid for the
8
+ # receiving account. Currently, this only supports falling back from RTP to
9
+ # ACH (type=rtp and fallback_type=ach)
10
+ class FallbackTypeEnum
11
+ FALLBACK_TYPE_ENUM = [
12
+ # TODO: Write general description for ACH
13
+ ACH = 'ach'.freeze
14
+ ].freeze
15
+
16
+ def self.validate(value)
17
+ return false if value.nil?
18
+
19
+ FALLBACK_TYPE_ENUM.include?(value)
20
+ end
21
+
22
+ def self.from_value(value, default_value = ACH)
23
+ return default_value if value.nil?
24
+
25
+ default_value
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,112 @@
1
+ # modern_treasury
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module ModernTreasury
7
+ # Field.
8
+ class FieldEnum
9
+ FIELD_ENUM = [
10
+ # TODO: Write general description for NAME
11
+ NAME = 'name'.freeze,
12
+
13
+ # TODO: Write general description for NAMEONACCOUNT
14
+ NAMEONACCOUNT = 'nameOnAccount'.freeze,
15
+
16
+ # TODO: Write general description for TAXPAYERIDENTIFIER
17
+ TAXPAYERIDENTIFIER = 'taxpayerIdentifier'.freeze,
18
+
19
+ # TODO: Write general description for ACCOUNTTYPE
20
+ ACCOUNTTYPE = 'accountType'.freeze,
21
+
22
+ # TODO: Write general description for ACCOUNTNUMBER
23
+ ACCOUNTNUMBER = 'accountNumber'.freeze,
24
+
25
+ # TODO: Write general description for IBANNUMBER
26
+ IBANNUMBER = 'ibanNumber'.freeze,
27
+
28
+ # TODO: Write general description for CLABENUMBER
29
+ CLABENUMBER = 'clabeNumber'.freeze,
30
+
31
+ # TODO: Write general description for WALLETADDRESS
32
+ WALLETADDRESS = 'walletAddress'.freeze,
33
+
34
+ # TODO: Write general description for PANNUMBER
35
+ PANNUMBER = 'panNumber'.freeze,
36
+
37
+ # TODO: Write general description for ROUTINGNUMBER
38
+ ROUTINGNUMBER = 'routingNumber'.freeze,
39
+
40
+ # TODO: Write general description for ABAWIREROUTINGNUMBER
41
+ ABAWIREROUTINGNUMBER = 'abaWireRoutingNumber'.freeze,
42
+
43
+ # TODO: Write general description for SWIFTCODE
44
+ SWIFTCODE = 'swiftCode'.freeze,
45
+
46
+ # TODO: Write general description for AUBSB
47
+ AUBSB = 'auBsb'.freeze,
48
+
49
+ # TODO: Write general description for CACPA
50
+ CACPA = 'caCpa'.freeze,
51
+
52
+ # TODO: Write general description for CNAPS
53
+ CNAPS = 'cnaps'.freeze,
54
+
55
+ # TODO: Write general description for GBSORTCODE
56
+ GBSORTCODE = 'gbSortCode'.freeze,
57
+
58
+ # TODO: Write general description for INIFSC
59
+ INIFSC = 'inIfsc'.freeze,
60
+
61
+ # TODO: Write general description for MYBRANCHCODE
62
+ MYBRANCHCODE = 'myBranchCode'.freeze,
63
+
64
+ # TODO: Write general description for BRCODIGO
65
+ BRCODIGO = 'brCodigo'.freeze,
66
+
67
+ # TODO: Write general description for ROUTINGNUMBERTYPE
68
+ ROUTINGNUMBERTYPE = 'routingNumberType'.freeze,
69
+
70
+ # TODO: Write general description for ADDRESS
71
+ ADDRESS = 'address'.freeze
72
+ ].freeze
73
+
74
+ def self.validate(value)
75
+ return false if value.nil?
76
+
77
+ FIELD_ENUM.include?(value)
78
+ end
79
+
80
+ def self.from_value(value, default_value = NAME)
81
+ return default_value if value.nil?
82
+
83
+ str = value.to_s.strip
84
+
85
+ case str.downcase
86
+ when 'name' then NAME
87
+ when 'nameonaccount' then NAMEONACCOUNT
88
+ when 'taxpayeridentifier' then TAXPAYERIDENTIFIER
89
+ when 'accounttype' then ACCOUNTTYPE
90
+ when 'accountnumber' then ACCOUNTNUMBER
91
+ when 'ibannumber' then IBANNUMBER
92
+ when 'clabenumber' then CLABENUMBER
93
+ when 'walletaddress' then WALLETADDRESS
94
+ when 'pannumber' then PANNUMBER
95
+ when 'routingnumber' then ROUTINGNUMBER
96
+ when 'abawireroutingnumber' then ABAWIREROUTINGNUMBER
97
+ when 'swiftcode' then SWIFTCODE
98
+ when 'aubsb' then AUBSB
99
+ when 'cacpa' then CACPA
100
+ when 'cnaps' then CNAPS
101
+ when 'gbsortcode' then GBSORTCODE
102
+ when 'inifsc' then INIFSC
103
+ when 'mybranchcode' then MYBRANCHCODE
104
+ when 'brcodigo' then BRCODIGO
105
+ when 'routingnumbertype' then ROUTINGNUMBERTYPE
106
+ when 'address' then ADDRESS
107
+ else
108
+ default_value
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,81 @@
1
+ # modern_treasury
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module ModernTreasury
7
+ # File Model.
8
+ class File < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The size of the document in bytes.
13
+ # @return [Integer]
14
+ attr_accessor :size
15
+
16
+ # The original filename of the document.
17
+ # @return [String]
18
+ attr_accessor :filename
19
+
20
+ # The MIME content type of the document.
21
+ # @return [String]
22
+ attr_accessor :content_type
23
+
24
+ # A mapping from model property names to API property names.
25
+ def self.names
26
+ @_hash = {} if @_hash.nil?
27
+ @_hash['size'] = 'size'
28
+ @_hash['filename'] = 'filename'
29
+ @_hash['content_type'] = 'content_type'
30
+ @_hash
31
+ end
32
+
33
+ # An array for optional fields
34
+ def self.optionals
35
+ %w[
36
+ size
37
+ filename
38
+ content_type
39
+ ]
40
+ end
41
+
42
+ # An array for nullable fields
43
+ def self.nullables
44
+ []
45
+ end
46
+
47
+ def initialize(size = SKIP, filename = SKIP, content_type = SKIP)
48
+ @size = size unless size == SKIP
49
+ @filename = filename unless filename == SKIP
50
+ @content_type = content_type unless content_type == SKIP
51
+ end
52
+
53
+ # Creates an instance of the object from a hash.
54
+ def self.from_hash(hash)
55
+ return nil unless hash
56
+
57
+ # Extract variables from the hash.
58
+ size = hash.key?('size') ? hash['size'] : SKIP
59
+ filename = hash.key?('filename') ? hash['filename'] : SKIP
60
+ content_type = hash.key?('content_type') ? hash['content_type'] : SKIP
61
+
62
+ # Create object from extracted values.
63
+ File.new(size,
64
+ filename,
65
+ content_type)
66
+ end
67
+
68
+ # Provides a human-readable string representation of the object.
69
+ def to_s
70
+ class_name = self.class.name.split('::').last
71
+ "<#{class_name} size: #{@size}, filename: #{@filename}, content_type: #{@content_type}>"
72
+ end
73
+
74
+ # Provides a debugging-friendly string with detailed object information.
75
+ def inspect
76
+ class_name = self.class.name.split('::').last
77
+ "<#{class_name} size: #{@size.inspect}, filename: #{@filename.inspect}, content_type:"\
78
+ " #{@content_type.inspect}>"
79
+ end
80
+ end
81
+ end