moov_ruby 26.10.0.pre.dev.1 → 26.10.0.pre.dev.3

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 (503) hide show
  1. checksums.yaml +4 -4
  2. data/lib/crystalline/module.rb +1 -1
  3. data/lib/moov/avatars.rb +4 -4
  4. data/lib/moov/bank_accounts.rb +439 -0
  5. data/lib/moov/card_issuing.rb +117 -1
  6. data/lib/moov/client.rb +2 -2
  7. data/lib/moov/enriched_address.rb +1 -1
  8. data/lib/moov/enriched_profile.rb +1 -1
  9. data/lib/moov/images.rb +17 -2
  10. data/lib/moov/institutions.rb +2 -2
  11. data/lib/moov/models/components/account.rb +2 -2
  12. data/lib/moov/models/components/accountnameverification.rb +4 -4
  13. data/lib/moov/models/components/accounttype.rb +3 -1
  14. data/lib/moov/models/components/accountverificationstatus.rb +3 -1
  15. data/lib/moov/models/components/achcreditoptions.rb +40 -0
  16. data/lib/moov/models/components/achcreditoptions.rbi +17 -0
  17. data/lib/moov/models/components/achcredittransferprocessingdetails.rb +44 -0
  18. data/lib/moov/models/components/achcredittransferprocessingdetails.rbi +19 -0
  19. data/lib/moov/models/components/achdebitoptions.rb +48 -0
  20. data/lib/moov/models/components/achdebitoptions.rbi +21 -0
  21. data/lib/moov/models/components/achdebittransferprocessingdetails.rb +44 -0
  22. data/lib/moov/models/components/achdebittransferprocessingdetails.rbi +19 -0
  23. data/lib/moov/models/components/achreturncode.rb +3 -1
  24. data/lib/moov/models/components/achtransactionstatus.rb +3 -1
  25. data/lib/moov/models/components/adjustmentfees.rb +11 -15
  26. data/lib/moov/models/components/adjustmentfees.rbi +4 -4
  27. data/lib/moov/models/components/allowedscheduleerror.rb +36 -0
  28. data/lib/moov/models/components/allowedscheduleerror.rbi +15 -0
  29. data/lib/moov/models/components/amountdecimalrange.rb +0 -2
  30. data/lib/moov/models/components/amountdecimalrangeupdate.rb +0 -2
  31. data/lib/moov/models/components/applepayresponse.rb +2 -2
  32. data/lib/moov/models/components/applicationscope.rb +4 -2
  33. data/lib/moov/models/components/asynccreatedrefund.rb +7 -3
  34. data/lib/moov/models/components/asynccreatedrefund.rbi +2 -0
  35. data/lib/moov/models/components/authmethod.rb +3 -1
  36. data/lib/moov/models/components/bankaccount.rb +4 -4
  37. data/lib/moov/models/components/bankaccountattestation.rb +52 -0
  38. data/lib/moov/models/components/bankaccountattestation.rbi +23 -0
  39. data/lib/moov/models/components/bankaccountattestationeligibility.rb +36 -0
  40. data/lib/moov/models/components/bankaccountattestationeligibility.rbi +15 -0
  41. data/lib/moov/models/components/bankaccountattestationsummary.rb +44 -0
  42. data/lib/moov/models/components/bankaccountattestationsummary.rbi +19 -0
  43. data/lib/moov/models/components/bankaccountexception.rb +2 -2
  44. data/lib/moov/models/components/bankaccountholdertype.rb +3 -1
  45. data/lib/moov/models/components/bankaccountintegration.rb +2 -2
  46. data/lib/moov/models/components/bankaccountstatus.rb +3 -1
  47. data/lib/moov/models/components/bankaccountstatusreason.rb +3 -1
  48. data/lib/moov/models/components/bankaccounttype.rb +3 -1
  49. data/lib/moov/models/components/bankaccountverification.rb +2 -2
  50. data/lib/moov/models/components/bankaccountverificationcreated.rb +2 -2
  51. data/lib/moov/models/components/bankaccountverificationmethod.rb +3 -1
  52. data/lib/moov/models/components/bankaccountverificationstatus.rb +3 -1
  53. data/lib/moov/models/components/basicpaymentmethod.rb +1 -1
  54. data/lib/moov/models/components/billablefee.rb +2 -2
  55. data/lib/moov/models/components/billingadjustment.rb +40 -0
  56. data/lib/moov/models/components/billingadjustment.rbi +17 -0
  57. data/lib/moov/models/components/billingsummary.rb +8 -4
  58. data/lib/moov/models/components/billingsummary.rbi +2 -0
  59. data/lib/moov/models/components/billingsummary_adjustmentfees.rb +40 -0
  60. data/lib/moov/models/components/billingsummary_adjustmentfees.rbi +15 -0
  61. data/lib/moov/models/components/businesspresence.rb +3 -1
  62. data/lib/moov/models/components/businessprofile.rb +2 -2
  63. data/lib/moov/models/components/businesstype.rb +3 -1
  64. data/lib/moov/models/components/calltoaction.rb +3 -1
  65. data/lib/moov/models/components/cancellation.rb +2 -2
  66. data/lib/moov/models/components/cancellationstatus.rb +3 -1
  67. data/lib/moov/models/components/capability.rb +2 -2
  68. data/lib/moov/models/components/capabilityid.rb +3 -1
  69. data/lib/moov/models/components/capabilitystatus.rb +3 -1
  70. data/lib/moov/models/components/capture.rb +82 -0
  71. data/lib/moov/models/components/capture.rbi +37 -0
  72. data/lib/moov/models/components/{refundcardstatus.rb → capturestatus.rb} +6 -5
  73. data/lib/moov/models/components/{refundcardstatus.rbi → capturestatus.rbi} +2 -2
  74. data/lib/moov/models/components/card.rb +4 -4
  75. data/lib/moov/models/components/cardaccountupdater.rb +1 -1
  76. data/lib/moov/models/components/cardacquiringmodel.rb +3 -1
  77. data/lib/moov/models/components/cardacquiringrefund.rb +12 -8
  78. data/lib/moov/models/components/cardacquiringrefund.rbi +4 -2
  79. data/lib/moov/models/components/cardbrand.rb +3 -1
  80. data/lib/moov/models/components/cardissuing.rb +34 -0
  81. data/lib/moov/models/components/cardissuing.rbi +13 -0
  82. data/lib/moov/models/components/cardissuingerror.rb +32 -0
  83. data/lib/moov/models/components/cardissuingerror.rbi +13 -0
  84. data/lib/moov/models/components/cardissuingnetwork.rb +3 -1
  85. data/lib/moov/models/components/cardmetadata.rb +4 -4
  86. data/lib/moov/models/components/cardpaymentoptions.rb +39 -0
  87. data/lib/moov/models/components/cardpaymentoptions.rbi +15 -0
  88. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rb +32 -0
  89. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rbi +13 -0
  90. data/lib/moov/models/components/{cardtransactionstatus.rb → cardpaymenttransactionstatus.rb} +4 -3
  91. data/lib/moov/models/components/cardpaymenttransactionstatus.rbi +11 -0
  92. data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rb +48 -0
  93. data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rbi +21 -0
  94. data/lib/moov/models/components/cardtransactionfailurecode.rb +19 -1
  95. data/lib/moov/models/components/cardtype.rb +3 -1
  96. data/lib/moov/models/components/cardupdatereason.rb +3 -1
  97. data/lib/moov/models/components/cardverification.rb +3 -3
  98. data/lib/moov/models/components/cardverificationresult.rb +3 -1
  99. data/lib/moov/models/components/collectfundscardpayments.rb +1 -1
  100. data/lib/moov/models/components/collectionpaymentmethodtype.rb +3 -1
  101. data/lib/moov/models/components/createaccount.rb +2 -2
  102. data/lib/moov/models/components/createaccounttype.rb +3 -1
  103. data/lib/moov/models/components/createbankaccountattestation.rb +36 -0
  104. data/lib/moov/models/components/createbankaccountattestation.rbi +15 -0
  105. data/lib/moov/models/components/createbusinessprofile.rb +2 -2
  106. data/lib/moov/models/components/createcancellation.rb +34 -0
  107. data/lib/moov/models/components/createcancellation.rbi +13 -0
  108. data/lib/moov/models/components/createcapture.rb +68 -0
  109. data/lib/moov/models/components/createcapture.rbi +29 -0
  110. data/lib/moov/models/components/createdtransfer.rb +29 -25
  111. data/lib/moov/models/components/createdtransfer.rbi +8 -8
  112. data/lib/moov/models/components/createevidencetext.rb +1 -1
  113. data/lib/moov/models/components/createfeeplanagreement.rb +13 -3
  114. data/lib/moov/models/components/createfeeplanagreement.rbi +2 -0
  115. data/lib/moov/models/components/createpaymentlink.rb +1 -1
  116. data/lib/moov/models/components/createrefund.rb +9 -5
  117. data/lib/moov/models/components/createrefund.rbi +2 -0
  118. data/lib/moov/models/components/createreversal.rb +6 -3
  119. data/lib/moov/models/components/createsweepconfig.rb +1 -1
  120. data/lib/moov/models/components/createterminalapplication.rb +1 -1
  121. data/lib/moov/models/components/createtippresets.rb +1 -1
  122. data/lib/moov/models/components/createtransfer.rb +5 -5
  123. data/lib/moov/models/components/createtransferdestination.rb +6 -2
  124. data/lib/moov/models/components/createtransferdestination.rbi +2 -0
  125. data/lib/moov/models/components/createtransferdestinationwire.rb +32 -0
  126. data/lib/moov/models/components/createtransferdestinationwire.rbi +13 -0
  127. data/lib/moov/models/components/createtransferfacilitatorfee.rb +36 -0
  128. data/lib/moov/models/components/createtransferfacilitatorfee.rbi +15 -0
  129. data/lib/moov/models/components/createtransferoptions.rb +2 -2
  130. data/lib/moov/models/components/createtransfersourceach.rb +2 -2
  131. data/lib/moov/models/components/createtransfersourcecard.rb +1 -1
  132. data/lib/moov/models/components/createwebhook.rb +1 -1
  133. data/lib/moov/models/components/debitholdperiod.rb +3 -1
  134. data/lib/moov/models/components/depositaccountingestedresponse.rb +1 -1
  135. data/lib/moov/models/components/disbursementpaymentmethodtype.rb +3 -1
  136. data/lib/moov/models/components/dispute.rb +2 -2
  137. data/lib/moov/models/components/disputeevidenceresponse.rb +1 -1
  138. data/lib/moov/models/components/disputephase.rb +3 -1
  139. data/lib/moov/models/components/disputestatus.rb +3 -1
  140. data/lib/moov/models/components/document.rb +1 -1
  141. data/lib/moov/models/components/documenttype.rb +3 -1
  142. data/lib/moov/models/components/domesticpullfromcard.rb +3 -1
  143. data/lib/moov/models/components/domesticpushtocard.rb +3 -1
  144. data/lib/moov/models/components/estimatedactivity.rb +1 -1
  145. data/lib/moov/models/components/evidencetextresponse.rb +1 -1
  146. data/lib/moov/models/components/evidencetype.rb +3 -1
  147. data/lib/moov/models/components/evidenceuploadresponse.rb +1 -1
  148. data/lib/moov/models/components/facilitatorfee.rb +6 -17
  149. data/lib/moov/models/components/facilitatorfee.rbi +0 -4
  150. data/lib/moov/models/components/feecategory.rb +3 -1
  151. data/lib/moov/models/components/feemodel.rb +3 -1
  152. data/lib/moov/models/components/feepaidby.rb +4 -2
  153. data/lib/moov/models/components/feeplan.rb +1 -1
  154. data/lib/moov/models/components/feeplanagreement.rb +12 -4
  155. data/lib/moov/models/components/feeplanagreement.rbi +4 -0
  156. data/lib/moov/models/components/feeplanagreementstatus.rb +3 -1
  157. data/lib/moov/models/components/filedetails.rb +2 -2
  158. data/lib/moov/models/components/filepurpose.rb +3 -1
  159. data/lib/moov/models/components/filestatus.rb +3 -1
  160. data/lib/moov/models/components/fulfillment.rb +2 -2
  161. data/lib/moov/models/components/fulfillmentdetails.rb +1 -1
  162. data/lib/moov/models/components/fulfillmentmethod.rb +3 -1
  163. data/lib/moov/models/components/fulfillmenttimeframe.rb +3 -1
  164. data/lib/moov/models/components/fullissuedcard.rb +6 -5
  165. data/lib/moov/models/components/geographicreach.rb +3 -1
  166. data/lib/moov/models/components/googlepayresponse.rb +3 -3
  167. data/lib/moov/models/components/incurredfee.rb +1 -1
  168. data/lib/moov/models/components/instantbankcredittransferprocessingdetails.rb +48 -0
  169. data/lib/moov/models/components/{instantbanktransactiondetails.rbi → instantbankcredittransferprocessingdetails.rbi} +4 -12
  170. data/lib/moov/models/components/instantbankfailurecode.rb +3 -1
  171. data/lib/moov/models/components/instantbanknetwork.rb +3 -1
  172. data/lib/moov/models/components/instantbanktransactionstatus.rb +3 -1
  173. data/lib/moov/models/components/invoice.rb +1 -1
  174. data/lib/moov/models/components/invoicepayment.rb +1 -1
  175. data/lib/moov/models/components/invoicepaymenttype.rb +3 -1
  176. data/lib/moov/models/components/invoicestatus.rb +3 -1
  177. data/lib/moov/models/components/issuedcard.rb +6 -5
  178. data/lib/moov/models/components/issuedcardauthorization.rb +2 -2
  179. data/lib/moov/models/components/issuedcardauthorizationevent.rb +2 -2
  180. data/lib/moov/models/components/issuedcardauthorizationeventresult.rb +3 -1
  181. data/lib/moov/models/components/issuedcardeventtype.rb +3 -1
  182. data/lib/moov/models/components/issuedcardstate.rb +5 -1
  183. data/lib/moov/models/components/issuedcontrols.rb +52 -0
  184. data/lib/moov/models/components/issuedcontrols.rbi +23 -0
  185. data/lib/moov/models/components/issuedcontrols_allowedschedule.rb +36 -0
  186. data/lib/moov/models/components/issuedcontrols_allowedschedule.rbi +15 -0
  187. data/lib/moov/models/components/issuedvelocitylimit.rb +60 -0
  188. data/lib/moov/models/components/issuedvelocitylimit.rbi +27 -0
  189. data/lib/moov/models/components/issuingauthorizationstatus.rb +3 -1
  190. data/lib/moov/models/components/issuingcontrols.rb +19 -3
  191. data/lib/moov/models/components/issuingcontrols.rbi +8 -0
  192. data/lib/moov/models/components/issuingcontrols_allowedschedule.rb +36 -0
  193. data/lib/moov/models/components/issuingcontrols_allowedschedule.rbi +15 -0
  194. data/lib/moov/models/components/issuingcontrolserror.rb +18 -2
  195. data/lib/moov/models/components/issuingcontrolserror.rbi +8 -0
  196. data/lib/moov/models/components/issuingcontrolsrestrictionmode.rb +21 -0
  197. data/lib/moov/models/components/issuingcontrolsrestrictionmode.rbi +11 -0
  198. data/lib/moov/models/components/issuingintervallimit.rb +6 -1
  199. data/lib/moov/models/components/issuingmerchantcategory.rb +45 -0
  200. data/lib/moov/models/components/issuingmerchantcategory.rbi +11 -0
  201. data/lib/moov/models/components/issuingscheduleday.rb +24 -0
  202. data/lib/moov/models/components/{cardtransactionstatus.rbi → issuingscheduleday.rbi} +2 -2
  203. data/lib/moov/models/components/issuingvelocitylimit.rb +11 -7
  204. data/lib/moov/models/components/issuingvelocitylimit.rbi +4 -2
  205. data/lib/moov/models/components/issuingvelocitylimiterror.rb +6 -2
  206. data/lib/moov/models/components/issuingvelocitylimiterror.rbi +2 -0
  207. data/lib/moov/models/components/jsonwebkey.rb +1 -1
  208. data/lib/moov/models/components/linkedapplepaypaymentmethod.rb +1 -1
  209. data/lib/moov/models/components/linkedgooglepaypaymentmethod.rb +1 -1
  210. data/lib/moov/models/components/merchantcategories.rb +32 -0
  211. data/lib/moov/models/components/merchantcategories.rbi +13 -0
  212. data/lib/moov/models/components/merchantcategory.rb +37 -0
  213. data/lib/moov/models/components/merchantcategory.rbi +15 -0
  214. data/lib/moov/models/components/merchantcategoryrestrictions.rb +44 -0
  215. data/lib/moov/models/components/merchantcategoryrestrictions.rbi +19 -0
  216. data/lib/moov/models/components/merchantcategoryrestrictionserror.rb +44 -0
  217. data/lib/moov/models/components/merchantcategoryrestrictionserror.rbi +19 -0
  218. data/lib/moov/models/components/merchantentry.rb +40 -0
  219. data/lib/moov/models/components/merchantentry.rbi +17 -0
  220. data/lib/moov/models/components/merchantentryerror.rb +36 -0
  221. data/lib/moov/models/components/merchantentryerror.rbi +15 -0
  222. data/lib/moov/models/components/merchantrestrictions.rb +36 -0
  223. data/lib/moov/models/components/merchantrestrictions.rbi +15 -0
  224. data/lib/moov/models/components/merchantrestrictionserror.rb +36 -0
  225. data/lib/moov/models/components/merchantrestrictionserror.rbi +15 -0
  226. data/lib/moov/models/components/mode.rb +3 -1
  227. data/lib/moov/models/components/monthlyvolumerange.rb +3 -1
  228. data/lib/moov/models/components/moovfee.rb +1 -1
  229. data/lib/moov/models/components/moovfeedetails.rb +5 -5
  230. data/lib/moov/models/components/occurrencesresponse.rb +2 -2
  231. data/lib/moov/models/components/occurrencestatus.rb +3 -1
  232. data/lib/moov/models/components/onboardingpartneraccount.rb +1 -1
  233. data/lib/moov/models/components/partnerpricingagreement.rb +15 -7
  234. data/lib/moov/models/components/partnerpricingagreement.rbi +4 -0
  235. data/lib/moov/models/components/patchbusiness.rb +2 -2
  236. data/lib/moov/models/components/patchwallet.rb +1 -1
  237. data/lib/moov/models/components/paymentlink.rb +4 -6
  238. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rb +0 -2
  239. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rb +0 -2
  240. data/lib/moov/models/components/paymentlinkdisplayoptions.rb +1 -1
  241. data/lib/moov/models/components/paymentlinkdisplayoptionsupdate.rb +1 -1
  242. data/lib/moov/models/components/paymentlinkpayoutdetails.rb +5 -7
  243. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +5 -7
  244. data/lib/moov/models/components/paymentlinkstatus.rb +3 -1
  245. data/lib/moov/models/components/paymentlinktype.rb +3 -1
  246. data/lib/moov/models/components/paymentmethodsbankaccount.rb +3 -3
  247. data/lib/moov/models/components/paymentmethodscard.rb +4 -4
  248. data/lib/moov/models/components/paymentmethodswallet.rb +2 -1
  249. data/lib/moov/models/components/paymentmethodtype.rb +4 -1
  250. data/lib/moov/models/components/pendinglitigation.rb +3 -1
  251. data/lib/moov/models/components/primaryregulator.rb +3 -1
  252. data/lib/moov/models/components/pullfromcardoptions.rb +39 -0
  253. data/lib/moov/models/components/pullfromcardoptions.rbi +15 -0
  254. data/lib/moov/models/components/pullfromcardtransactionstatus.rb +22 -0
  255. data/lib/moov/models/components/pullfromcardtransactionstatus.rbi +11 -0
  256. data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rb +48 -0
  257. data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rbi +21 -0
  258. data/lib/moov/models/components/pushdeliveryspeed.rb +3 -1
  259. data/lib/moov/models/components/pushoptions.rb +5 -4
  260. data/lib/moov/models/components/pushoptionsupdate.rb +5 -4
  261. data/lib/moov/models/components/pushtocardoptions.rb +32 -0
  262. data/lib/moov/models/components/pushtocardoptions.rbi +13 -0
  263. data/lib/moov/models/components/pushtocardtransactionstatus.rb +24 -0
  264. data/lib/moov/models/components/pushtocardtransactionstatus.rbi +11 -0
  265. data/lib/moov/models/components/pushtocardtransferprocessingdetails.rb +48 -0
  266. data/lib/moov/models/components/pushtocardtransferprocessingdetails.rbi +21 -0
  267. data/lib/moov/models/components/puttippresets.rb +1 -1
  268. data/lib/moov/models/components/refundpolicy.rb +3 -1
  269. data/lib/moov/models/components/refundprocessingdetails.rb +32 -0
  270. data/lib/moov/models/components/refundprocessingdetails.rbi +13 -0
  271. data/lib/moov/models/components/refundstatus.rb +3 -1
  272. data/lib/moov/models/components/requestcard.rb +1 -1
  273. data/lib/moov/models/components/requirementerror.rb +2 -2
  274. data/lib/moov/models/components/requirementerrorcode.rb +3 -1
  275. data/lib/moov/models/components/requirementid.rb +18 -1
  276. data/lib/moov/models/components/resolutionlink.rb +1 -1
  277. data/lib/moov/models/components/resolutionlinkstatus.rb +3 -1
  278. data/lib/moov/models/components/returnpolicytype.rb +3 -1
  279. data/lib/moov/models/components/reversalamountdetails.rb +3 -1
  280. data/lib/moov/models/components/reversedwithcancellation.rb +1 -1
  281. data/lib/moov/models/components/rtprejectioncode.rb +3 -1
  282. data/lib/moov/models/components/schedulelistresponse.rb +1 -1
  283. data/lib/moov/models/components/scheduleresponse.rb +1 -1
  284. data/lib/moov/models/components/schedulewindow.rb +40 -0
  285. data/lib/moov/models/components/schedulewindow.rbi +17 -0
  286. data/lib/moov/models/components/schedulewindowerror.rb +40 -0
  287. data/lib/moov/models/components/schedulewindowerror.rbi +17 -0
  288. data/lib/moov/models/components/seccode.rb +3 -1
  289. data/lib/moov/models/components/sendfunds.rb +6 -2
  290. data/lib/moov/models/components/sendfunds.rbi +2 -0
  291. data/lib/moov/models/components/sendfundserror.rb +6 -2
  292. data/lib/moov/models/components/sendfundserror.rbi +2 -0
  293. data/lib/moov/models/components/sendfundswire.rb +32 -0
  294. data/lib/moov/models/components/sendfundswire.rbi +13 -0
  295. data/lib/moov/models/components/sendfundswireerror.rb +32 -0
  296. data/lib/moov/models/components/sendfundswireerror.rbi +13 -0
  297. data/lib/moov/models/components/sourcesystem.rb +3 -1
  298. data/lib/moov/models/components/statement.rb +6 -2
  299. data/lib/moov/models/components/statement.rbi +2 -0
  300. data/lib/moov/models/components/sweep.rb +1 -1
  301. data/lib/moov/models/components/sweepconfig.rb +3 -3
  302. data/lib/moov/models/components/sweepconfigpaymentmethod.rb +1 -1
  303. data/lib/moov/models/components/sweepconfigstatus.rb +3 -1
  304. data/lib/moov/models/components/sweepstatus.rb +3 -1
  305. data/lib/moov/models/components/sweepsubtotal.rb +1 -1
  306. data/lib/moov/models/components/terminalapplication.rb +2 -2
  307. data/lib/moov/models/components/terminalapplicationplatform.rb +3 -1
  308. data/lib/moov/models/components/terminalapplicationstatus.rb +3 -1
  309. data/lib/moov/models/components/terminalcard.rb +2 -2
  310. data/lib/moov/models/components/ticket.rb +1 -1
  311. data/lib/moov/models/components/ticketstatus.rb +3 -1
  312. data/lib/moov/models/components/tipcalculationbasis.rb +3 -1
  313. data/lib/moov/models/components/tippresets.rb +1 -1
  314. data/lib/moov/models/components/transactionsource.rb +3 -1
  315. data/lib/moov/models/components/transfer.rb +28 -24
  316. data/lib/moov/models/components/transfer.rbi +8 -8
  317. data/lib/moov/models/components/transferauthorization.rb +52 -0
  318. data/lib/moov/models/components/transferauthorization.rbi +23 -0
  319. data/lib/moov/models/components/transferdestination.rb +5 -17
  320. data/lib/moov/models/components/transferdestination.rbi +0 -6
  321. data/lib/moov/models/components/transferfailurereason.rb +3 -1
  322. data/lib/moov/models/components/transferfeepaidby.rb +2 -2
  323. data/lib/moov/models/components/transferoptions.rb +3 -3
  324. data/lib/moov/models/components/transferparty.rb +3 -1
  325. data/lib/moov/models/components/transferpaymentmethodsbankaccount.rb +3 -3
  326. data/lib/moov/models/components/transferpaymentmethodscard.rb +4 -4
  327. data/lib/moov/models/components/transferpaymentmethodswallet.rb +2 -1
  328. data/lib/moov/models/components/transferpaymentmethodtype.rb +4 -1
  329. data/lib/moov/models/components/transferprocessingdetails.rb +56 -0
  330. data/lib/moov/models/components/transferprocessingdetails.rbi +25 -0
  331. data/lib/moov/models/components/transferrailoptions.rb +52 -0
  332. data/lib/moov/models/components/transferrailoptions.rbi +23 -0
  333. data/lib/moov/models/components/transfersource.rb +9 -17
  334. data/lib/moov/models/components/transfersource.rbi +2 -6
  335. data/lib/moov/models/components/transferstatus.rb +4 -1
  336. data/lib/moov/models/components/transferterminalcard.rb +2 -2
  337. data/lib/moov/models/components/transfertype.rb +28 -0
  338. data/lib/moov/models/components/transfertype.rbi +11 -0
  339. data/lib/moov/models/components/underwriting.rb +12 -6
  340. data/lib/moov/models/components/underwriting.rbi +2 -0
  341. data/lib/moov/models/components/underwritingstatus.rb +3 -1
  342. data/lib/moov/models/components/updateevidence.rb +1 -1
  343. data/lib/moov/models/components/updateinvoice.rb +1 -1
  344. data/lib/moov/models/components/updateissuedcard.rb +8 -2
  345. data/lib/moov/models/components/updateissuedcard.rbi +2 -0
  346. data/lib/moov/models/components/updateissuedcardstate.rb +4 -0
  347. data/lib/moov/models/components/updateissuingcontrols.rb +48 -0
  348. data/lib/moov/models/components/updateissuingcontrols.rbi +21 -0
  349. data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rb +36 -0
  350. data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rbi +15 -0
  351. data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rb +44 -0
  352. data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rbi +19 -0
  353. data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rb +36 -0
  354. data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rbi +15 -0
  355. data/lib/moov/models/components/updateissuingcontrolserror.rb +48 -0
  356. data/lib/moov/models/components/updateissuingcontrolserror.rbi +21 -0
  357. data/lib/moov/models/components/updatepaymentlink.rb +1 -1
  358. data/lib/moov/models/components/updatewebhook.rb +1 -1
  359. data/lib/moov/models/components/upsertunderwriting.rb +11 -5
  360. data/lib/moov/models/components/upsertunderwriting.rbi +2 -0
  361. data/lib/moov/models/components/use.rb +3 -1
  362. data/lib/moov/models/components/verification.rb +3 -3
  363. data/lib/moov/models/components/verificationstatus.rb +3 -1
  364. data/lib/moov/models/components/verificationstatusdetail.rb +3 -1
  365. data/lib/moov/models/components/wallet.rb +3 -2
  366. data/lib/moov/models/components/walletstatus.rb +3 -1
  367. data/lib/moov/models/components/wallettransaction.rb +3 -3
  368. data/lib/moov/models/components/wallettransactionsourcetype.rb +3 -1
  369. data/lib/moov/models/components/wallettransactionstatus.rb +3 -1
  370. data/lib/moov/models/components/wallettransactiontype.rb +4 -1
  371. data/lib/moov/models/components/wallettype.rb +5 -1
  372. data/lib/moov/models/components/webhook.rb +1 -1
  373. data/lib/moov/models/components/webhookdatabankaccountcreated.rb +1 -1
  374. data/lib/moov/models/components/webhookdatabankaccountdeleted.rb +1 -1
  375. data/lib/moov/models/components/webhookdatabankaccountupdated.rb +2 -2
  376. data/lib/moov/models/components/webhookdatacancellationcreated.rb +1 -1
  377. data/lib/moov/models/components/webhookdatacancellationupdated.rb +1 -1
  378. data/lib/moov/models/components/webhookdatacapabilityrequested.rb +1 -1
  379. data/lib/moov/models/components/webhookdatacapabilityupdated.rb +2 -2
  380. data/lib/moov/models/components/webhookdatacaptureupdated.rb +44 -0
  381. data/lib/moov/models/components/webhookdatacaptureupdated.rbi +19 -0
  382. data/lib/moov/models/components/webhookdatacardautoupdated.rb +1 -1
  383. data/lib/moov/models/components/webhookdatadisputecreated.rb +2 -2
  384. data/lib/moov/models/components/webhookdatadisputeupdated.rb +2 -2
  385. data/lib/moov/models/components/webhookdatainvoiceupdated.rb +1 -1
  386. data/lib/moov/models/components/webhookdatarefundupdated.rb +1 -1
  387. data/lib/moov/models/components/webhookdatasweepupdated.rb +1 -1
  388. data/lib/moov/models/components/webhookdataterminalapplicationcreated.rb +1 -1
  389. data/lib/moov/models/components/webhookdataterminalapplicationupdated.rb +1 -1
  390. data/lib/moov/models/components/webhookdataticketupdated.rb +1 -1
  391. data/lib/moov/models/components/webhookdatatransferstatus.rb +4 -0
  392. data/lib/moov/models/components/webhookdatawallettransactionupdated.rb +1 -1
  393. data/lib/moov/models/components/webhookdatawalletupdated.rb +1 -1
  394. data/lib/moov/models/components/webhookevent.rb +3 -3
  395. data/lib/moov/models/components/webhookeventtype.rb +4 -1
  396. data/lib/moov/models/components/webhookstatus.rb +3 -1
  397. data/lib/moov/models/components/wirecreditpaymentmethod.rb +40 -0
  398. data/lib/moov/models/components/wirecreditpaymentmethod.rbi +17 -0
  399. data/lib/moov/models/components/wirecreditpaymentmethod_paymentmethodtype.rb +18 -0
  400. data/lib/moov/models/components/wirecreditpaymentmethod_paymentmethodtype.rbi +11 -0
  401. data/lib/moov/models/components/wirecredittransferpaymentmethod.rb +40 -0
  402. data/lib/moov/models/components/wirecredittransferpaymentmethod.rbi +17 -0
  403. data/lib/moov/models/components/wirecredittransferpaymentmethod_paymentmethodtype.rb +18 -0
  404. data/lib/moov/models/components/wirecredittransferpaymentmethod_paymentmethodtype.rbi +11 -0
  405. data/lib/moov/models/components/wirefailurecode.rb +28 -0
  406. data/lib/moov/models/components/wirefailurecode.rbi +11 -0
  407. data/lib/moov/models/components/wireoptions.rb +32 -0
  408. data/lib/moov/models/components/wireoptions.rbi +13 -0
  409. data/lib/moov/models/components/wiretransactionstatus.rb +23 -0
  410. data/lib/moov/models/components/wiretransactionstatus.rbi +11 -0
  411. data/lib/moov/models/components/wiretransferprocessingdetails.rb +40 -0
  412. data/lib/moov/models/components/wiretransferprocessingdetails.rbi +17 -0
  413. data/lib/moov/models/components.rb +69 -8
  414. data/lib/moov/models/errors/bankaccountattestationvalidationerror.rb +40 -0
  415. data/lib/moov/models/errors/bankaccountattestationvalidationerror.rbi +17 -0
  416. data/lib/moov/models/errors/capturevalidationerror.rb +68 -0
  417. data/lib/moov/models/errors/capturevalidationerror.rbi +31 -0
  418. data/lib/moov/models/errors/cardacquiringrefund_error.rb +12 -8
  419. data/lib/moov/models/errors/cardacquiringrefund_error.rbi +4 -2
  420. data/lib/moov/models/errors/imagemetadata_error.rb +61 -0
  421. data/lib/moov/models/errors/imagemetadata_error.rbi +27 -0
  422. data/lib/moov/models/errors/transfer_error.rb +28 -24
  423. data/lib/moov/models/errors/transfer_error.rbi +8 -8
  424. data/lib/moov/models/errors/updateissuedcarderror.rb +6 -2
  425. data/lib/moov/models/errors/updateissuedcarderror.rbi +2 -0
  426. data/lib/moov/models/errors/upsertunderwritingerror.rb +6 -2
  427. data/lib/moov/models/errors/upsertunderwritingerror.rbi +2 -0
  428. data/lib/moov/models/errors.rb +3 -0
  429. data/lib/moov/models/operations/createbankaccountattestation_request.rb +40 -0
  430. data/lib/moov/models/operations/createbankaccountattestation_request.rbi +17 -0
  431. data/lib/moov/models/operations/createbankaccountattestation_response.rb +48 -0
  432. data/lib/moov/models/operations/createbankaccountattestation_response.rbi +21 -0
  433. data/lib/moov/models/operations/createcancellation_request.rb +6 -2
  434. data/lib/moov/models/operations/createcancellation_request.rbi +2 -0
  435. data/lib/moov/models/operations/createcapture_request.rb +44 -0
  436. data/lib/moov/models/operations/createcapture_request.rbi +19 -0
  437. data/lib/moov/models/operations/createcapture_response.rb +48 -0
  438. data/lib/moov/models/operations/createcapture_response.rbi +21 -0
  439. data/lib/moov/models/operations/createreversal_request.rb +3 -3
  440. data/lib/moov/models/operations/getbankaccountattestationeligibility_request.rb +41 -0
  441. data/lib/moov/models/operations/getbankaccountattestationeligibility_request.rbi +17 -0
  442. data/lib/moov/models/operations/getbankaccountattestationeligibility_response.rb +48 -0
  443. data/lib/moov/models/operations/getbankaccountattestationeligibility_response.rbi +21 -0
  444. data/lib/moov/models/operations/getcapture_request.rb +40 -0
  445. data/lib/moov/models/operations/getcapture_request.rbi +17 -0
  446. data/lib/moov/models/operations/getcapture_response.rb +48 -0
  447. data/lib/moov/models/operations/getcapture_response.rbi +21 -0
  448. data/lib/moov/models/operations/getpaymentmethod_response.rb +2 -2
  449. data/lib/moov/models/operations/initiaterefund_request.rb +6 -6
  450. data/lib/moov/models/operations/initiaterefund_request.rbi +2 -2
  451. data/lib/moov/models/operations/listaccounts_request.rb +1 -1
  452. data/lib/moov/models/operations/listbankaccountattestations_request.rb +36 -0
  453. data/lib/moov/models/operations/listbankaccountattestations_request.rbi +15 -0
  454. data/lib/moov/models/operations/listbankaccountattestations_response.rb +48 -0
  455. data/lib/moov/models/operations/listbankaccountattestations_response.rbi +21 -0
  456. data/lib/moov/models/operations/listcaptures_request.rb +36 -0
  457. data/lib/moov/models/operations/listcaptures_request.rbi +15 -0
  458. data/lib/moov/models/operations/listcaptures_response.rb +48 -0
  459. data/lib/moov/models/operations/listcaptures_response.rbi +21 -0
  460. data/lib/moov/models/operations/listconnectedaccountsforaccount_request.rb +1 -1
  461. data/lib/moov/models/operations/listdisputes_request.rb +1 -1
  462. data/lib/moov/models/operations/listfeeplanagreements_request.rb +1 -1
  463. data/lib/moov/models/operations/listfeerevenue_request.rb +1 -1
  464. data/lib/moov/models/operations/listinvoices_request.rb +1 -1
  465. data/lib/moov/models/operations/listissuedcardauthorizationevents_request.rb +1 -1
  466. data/lib/moov/models/operations/listissuedcardauthorizations_request.rb +1 -1
  467. data/lib/moov/models/operations/listissuedcards_request.rb +1 -1
  468. data/lib/moov/models/operations/listissuedcardtransactions_request.rb +7 -3
  469. data/lib/moov/models/operations/listissuedcardtransactions_request.rbi +2 -0
  470. data/lib/moov/models/operations/listissuingmerchantcategories_response.rb +48 -0
  471. data/lib/moov/models/operations/listissuingmerchantcategories_response.rbi +21 -0
  472. data/lib/moov/models/operations/listpartnerpricingagreements_request.rb +1 -1
  473. data/lib/moov/models/operations/listpaymentlinks_request.rb +1 -1
  474. data/lib/moov/models/operations/listpaymentmethods_response.rb +2 -2
  475. data/lib/moov/models/operations/listproducts_request.rb +1 -1
  476. data/lib/moov/models/operations/listresidualfees_request.rb +1 -1
  477. data/lib/moov/models/operations/listresiduals_request.rb +1 -1
  478. data/lib/moov/models/operations/listschedules_request.rb +1 -1
  479. data/lib/moov/models/operations/liststatements_request.rb +1 -1
  480. data/lib/moov/models/operations/listsweeps_request.rb +1 -1
  481. data/lib/moov/models/operations/listtickets_request.rb +1 -1
  482. data/lib/moov/models/operations/listtransfers_request.rb +11 -3
  483. data/lib/moov/models/operations/listtransfers_request.rbi +4 -0
  484. data/lib/moov/models/operations/listwallets_request.rb +1 -1
  485. data/lib/moov/models/operations/listwallettransactions_request.rb +1 -1
  486. data/lib/moov/models/operations/retrievefees_request.rb +1 -1
  487. data/lib/moov/models/operations.rb +13 -0
  488. data/lib/moov/payment_methods.rb +2 -2
  489. data/lib/moov/sdkconfiguration.rb +3 -3
  490. data/lib/moov/transfers.rb +446 -10
  491. data/lib/moov/utils/retries.rb +41 -2
  492. data/lib/moov/utils/utils.rb +6 -2
  493. data/lib/moov_ruby.rb +1 -1
  494. metadata +170 -16
  495. data/lib/moov/models/components/achtransactiondetails.rb +0 -92
  496. data/lib/moov/models/components/achtransactiondetails.rbi +0 -43
  497. data/lib/moov/models/components/cardacquiringdispute.rb +0 -40
  498. data/lib/moov/models/components/cardacquiringdispute.rbi +0 -17
  499. data/lib/moov/models/components/cardtransactiondetails.rb +0 -93
  500. data/lib/moov/models/components/cardtransactiondetails.rbi +0 -41
  501. data/lib/moov/models/components/instantbanktransactiondetails.rb +0 -64
  502. data/lib/moov/models/components/refundcarddetails.rb +0 -56
  503. data/lib/moov/models/components/refundcarddetails.rbi +0 -25
@@ -1000,15 +1000,19 @@ module Moov
1000
1000
  end
1001
1001
 
1002
1002
 
1003
- sig { params(account_id: ::String, transfer_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::CreateCancellationResponse) }
1004
- def create_cancellation(account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
1003
+ sig { params(create_cancellation: Models::Components::CreateCancellation, account_id: ::String, transfer_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::CreateCancellationResponse) }
1004
+ def create_cancellation(create_cancellation:, account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
1005
1005
  # create_cancellation - Initiate a cancellation for a card, ACH, or queued transfer.
1006
1006
  #
1007
+ # In v2026.10 and later, an auth-capture `card-payment` transfer can be canceled before any captures exist.
1008
+ # For these transfers, a successful cancellation reduces `capturableAmount` without changing `authorizedAmount`.
1009
+ # For these transfers, a partial cancellation leaves the remaining `capturableAmount` available for capture.
1007
1010
  # To access this endpoint using a [token](https://docs.moov.io/api/authentication/access-tokens/) you'll need
1008
1011
  # to specify the `/accounts/{accountID}/transfers.write` scope.
1009
1012
  request = Models::Operations::CreateCancellationRequest.new(
1010
1013
  account_id: account_id,
1011
- transfer_id: transfer_id
1014
+ transfer_id: transfer_id,
1015
+ create_cancellation: create_cancellation
1012
1016
  )
1013
1017
  url, params = @sdk_configuration.get_server_details
1014
1018
  base_url = Utils.template_url(url, params)
@@ -1020,6 +1024,17 @@ module Moov
1020
1024
  )
1021
1025
  headers = {}
1022
1026
  headers = T.cast(headers, T::Hash[String, String])
1027
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :create_cancellation, :json)
1028
+ headers['content-type'] = req_content_type
1029
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
1030
+
1031
+ if form && !form.empty?
1032
+ body = Utils.encode_form(form)
1033
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
1034
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
1035
+ else
1036
+ body = data
1037
+ end
1023
1038
  headers['Accept'] = 'application/json'
1024
1039
  headers['user-agent'] = @sdk_configuration.user_agent
1025
1040
 
@@ -1045,6 +1060,7 @@ module Moov
1045
1060
 
1046
1061
  begin
1047
1062
  http_response = T.must(connection).post(url) do |req|
1063
+ req.body = body
1048
1064
  req.headers.merge!(headers)
1049
1065
  req.options.timeout = timeout unless timeout.nil?
1050
1066
  Utils.configure_request_security(req, security)
@@ -1108,7 +1124,7 @@ module Moov
1108
1124
  else
1109
1125
  raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1110
1126
  end
1111
- elsif Utils.match_status_code(http_response.status, ['400'])
1127
+ elsif Utils.match_status_code(http_response.status, ['400', '409', '422'])
1112
1128
  if Utils.match_content_type(content_type, 'application/json')
1113
1129
  http_response = @sdk_configuration.hooks.after_success(
1114
1130
  hook_ctx: SDKHooks::AfterSuccessHookContext.new(
@@ -1141,7 +1157,7 @@ module Moov
1141
1157
  sig { params(account_id: ::String, transfer_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::ListCancellationsResponse) }
1142
1158
  def list_cancellations(account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
1143
1159
  # list_cancellations - Get a list of cancellations for a transfer.
1144
- #
1160
+ #
1145
1161
  # To access this endpoint using a [token](https://docs.moov.io/api/authentication/access-tokens/) you'll need
1146
1162
  # to specify the `/accounts/{accountID}/transfers.read` scope.
1147
1163
  request = Models::Operations::ListCancellationsRequest.new(
@@ -1246,7 +1262,7 @@ module Moov
1246
1262
  else
1247
1263
  raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1248
1264
  end
1249
- elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
1265
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
1250
1266
  raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1251
1267
  elsif Utils.match_status_code(http_response.status, ['500', '504'])
1252
1268
  raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
@@ -1385,6 +1401,421 @@ module Moov
1385
1401
  end
1386
1402
 
1387
1403
 
1404
+ sig { params(create_capture: Models::Components::CreateCapture, x_idempotency_key: ::String, account_id: ::String, transfer_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::CreateCaptureResponse) }
1405
+ def create_capture(create_capture:, x_idempotency_key:, account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
1406
+ # create_capture - Create a capture against an auth-capture `card-payment` transfer.
1407
+ # The `accountID` must identify the partner account for the transfer.
1408
+ #
1409
+ # To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
1410
+ # you'll need to specify the `/accounts/{accountID}/transfers.write` scope.
1411
+ request = Models::Operations::CreateCaptureRequest.new(
1412
+ x_idempotency_key: x_idempotency_key,
1413
+ account_id: account_id,
1414
+ transfer_id: transfer_id,
1415
+ create_capture: create_capture
1416
+ )
1417
+ url, params = @sdk_configuration.get_server_details
1418
+ base_url = Utils.template_url(url, params)
1419
+ url = Utils.generate_url(
1420
+ Models::Operations::CreateCaptureRequest,
1421
+ base_url,
1422
+ '/accounts/{accountID}/transfers/{transferID}/captures',
1423
+ request
1424
+ )
1425
+ headers = Utils.get_headers(request)
1426
+ headers = T.cast(headers, T::Hash[String, String])
1427
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :create_capture, :json)
1428
+ headers['content-type'] = req_content_type
1429
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
1430
+
1431
+ if form && !form.empty?
1432
+ body = Utils.encode_form(form)
1433
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
1434
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
1435
+ else
1436
+ body = data
1437
+ end
1438
+ headers['Accept'] = 'application/json'
1439
+ headers['user-agent'] = @sdk_configuration.user_agent
1440
+
1441
+ security = @sdk_configuration.security_source&.call
1442
+
1443
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1444
+ timeout ||= @sdk_configuration.timeout
1445
+
1446
+
1447
+ connection = @sdk_configuration.client
1448
+
1449
+ hook_ctx = SDKHooks::HookContext.new(
1450
+ config: @sdk_configuration,
1451
+ base_url: base_url,
1452
+ oauth2_scopes: nil,
1453
+ operation_id: 'createCapture',
1454
+ security_source: @sdk_configuration.security_source
1455
+ )
1456
+
1457
+ error = T.let(nil, T.nilable(StandardError))
1458
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1459
+
1460
+
1461
+ begin
1462
+ http_response = T.must(connection).post(url) do |req|
1463
+ req.body = body
1464
+ req.headers.merge!(headers)
1465
+ req.options.timeout = timeout unless timeout.nil?
1466
+ Utils.configure_request_security(req, security)
1467
+ http_headers&.each do |key, value|
1468
+ req.headers[key.to_s] = value
1469
+ end
1470
+
1471
+ @sdk_configuration.hooks.before_request(
1472
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1473
+ hook_ctx: hook_ctx
1474
+ ),
1475
+ request: req
1476
+ )
1477
+ end
1478
+ rescue StandardError => e
1479
+ error = e
1480
+ ensure
1481
+ if http_response.nil? || Utils.error_status?(http_response.status)
1482
+ http_response = @sdk_configuration.hooks.after_error(
1483
+ error: error,
1484
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1485
+ hook_ctx: hook_ctx
1486
+ ),
1487
+ response: http_response
1488
+ )
1489
+ else
1490
+ http_response = @sdk_configuration.hooks.after_success(
1491
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1492
+ hook_ctx: hook_ctx
1493
+ ),
1494
+ response: http_response
1495
+ )
1496
+ end
1497
+
1498
+ if http_response.nil?
1499
+ raise error if !error.nil?
1500
+ raise 'no response'
1501
+ end
1502
+ end
1503
+
1504
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1505
+ if Utils.match_status_code(http_response.status, ['201'])
1506
+ if Utils.match_content_type(content_type, 'application/json')
1507
+ http_response = @sdk_configuration.hooks.after_success(
1508
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1509
+ hook_ctx: hook_ctx
1510
+ ),
1511
+ response: http_response
1512
+ )
1513
+ response_data = http_response.env.response_body
1514
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Capture)
1515
+ response = Models::Operations::CreateCaptureResponse.new(
1516
+ status_code: http_response.status,
1517
+ content_type: content_type,
1518
+ raw_response: http_response,
1519
+ headers: http_response.headers,
1520
+ capture: T.unsafe(obj)
1521
+ )
1522
+
1523
+ return response
1524
+ else
1525
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1526
+ end
1527
+ elsif Utils.match_status_code(http_response.status, ['400', '409'])
1528
+ if Utils.match_content_type(content_type, 'application/json')
1529
+ http_response = @sdk_configuration.hooks.after_success(
1530
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1531
+ hook_ctx: hook_ctx
1532
+ ),
1533
+ response: http_response
1534
+ )
1535
+ response_data = http_response.env.response_body
1536
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::GenericError)
1537
+ obj.raw_response = http_response
1538
+ raise obj
1539
+ else
1540
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1541
+ end
1542
+ elsif Utils.match_status_code(http_response.status, ['422'])
1543
+ if Utils.match_content_type(content_type, 'application/json')
1544
+ http_response = @sdk_configuration.hooks.after_success(
1545
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1546
+ hook_ctx: hook_ctx
1547
+ ),
1548
+ response: http_response
1549
+ )
1550
+ response_data = http_response.env.response_body
1551
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::CaptureValidationError)
1552
+ obj.raw_response = http_response
1553
+ raise obj
1554
+ else
1555
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1556
+ end
1557
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
1558
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1559
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
1560
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1561
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1562
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1563
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1564
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1565
+ else
1566
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
1567
+
1568
+ end
1569
+ end
1570
+
1571
+
1572
+ sig { params(account_id: ::String, transfer_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::ListCapturesResponse) }
1573
+ def list_captures(account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
1574
+ # list_captures - Get a list of captures for an auth-capture `card-payment` transfer.
1575
+ #
1576
+ # To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
1577
+ # you'll need to specify the `/accounts/{accountID}/transfers.read` scope.
1578
+ request = Models::Operations::ListCapturesRequest.new(
1579
+ account_id: account_id,
1580
+ transfer_id: transfer_id
1581
+ )
1582
+ url, params = @sdk_configuration.get_server_details
1583
+ base_url = Utils.template_url(url, params)
1584
+ url = Utils.generate_url(
1585
+ Models::Operations::ListCapturesRequest,
1586
+ base_url,
1587
+ '/accounts/{accountID}/transfers/{transferID}/captures',
1588
+ request
1589
+ )
1590
+ headers = {}
1591
+ headers = T.cast(headers, T::Hash[String, String])
1592
+ headers['Accept'] = 'application/json'
1593
+ headers['user-agent'] = @sdk_configuration.user_agent
1594
+
1595
+ security = @sdk_configuration.security_source&.call
1596
+
1597
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1598
+ timeout ||= @sdk_configuration.timeout
1599
+
1600
+
1601
+ connection = @sdk_configuration.client
1602
+
1603
+ hook_ctx = SDKHooks::HookContext.new(
1604
+ config: @sdk_configuration,
1605
+ base_url: base_url,
1606
+ oauth2_scopes: nil,
1607
+ operation_id: 'listCaptures',
1608
+ security_source: @sdk_configuration.security_source
1609
+ )
1610
+
1611
+ error = T.let(nil, T.nilable(StandardError))
1612
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1613
+
1614
+
1615
+ begin
1616
+ http_response = T.must(connection).get(url) do |req|
1617
+ req.headers.merge!(headers)
1618
+ req.options.timeout = timeout unless timeout.nil?
1619
+ Utils.configure_request_security(req, security)
1620
+ http_headers&.each do |key, value|
1621
+ req.headers[key.to_s] = value
1622
+ end
1623
+
1624
+ @sdk_configuration.hooks.before_request(
1625
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1626
+ hook_ctx: hook_ctx
1627
+ ),
1628
+ request: req
1629
+ )
1630
+ end
1631
+ rescue StandardError => e
1632
+ error = e
1633
+ ensure
1634
+ if http_response.nil? || Utils.error_status?(http_response.status)
1635
+ http_response = @sdk_configuration.hooks.after_error(
1636
+ error: error,
1637
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1638
+ hook_ctx: hook_ctx
1639
+ ),
1640
+ response: http_response
1641
+ )
1642
+ else
1643
+ http_response = @sdk_configuration.hooks.after_success(
1644
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1645
+ hook_ctx: hook_ctx
1646
+ ),
1647
+ response: http_response
1648
+ )
1649
+ end
1650
+
1651
+ if http_response.nil?
1652
+ raise error if !error.nil?
1653
+ raise 'no response'
1654
+ end
1655
+ end
1656
+
1657
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1658
+ if Utils.match_status_code(http_response.status, ['200'])
1659
+ if Utils.match_content_type(content_type, 'application/json')
1660
+ http_response = @sdk_configuration.hooks.after_success(
1661
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1662
+ hook_ctx: hook_ctx
1663
+ ),
1664
+ response: http_response
1665
+ )
1666
+ response_data = http_response.env.response_body
1667
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Crystalline::Array.new(Models::Components::Capture))
1668
+ response = Models::Operations::ListCapturesResponse.new(
1669
+ status_code: http_response.status,
1670
+ content_type: content_type,
1671
+ raw_response: http_response,
1672
+ headers: http_response.headers,
1673
+ captures: T.unsafe(obj)
1674
+ )
1675
+
1676
+ return response
1677
+ else
1678
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1679
+ end
1680
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
1681
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1682
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
1683
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1684
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1685
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1686
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1687
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1688
+ else
1689
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
1690
+
1691
+ end
1692
+ end
1693
+
1694
+
1695
+ sig { params(account_id: ::String, transfer_id: ::String, capture_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::GetCaptureResponse) }
1696
+ def get_capture(account_id:, transfer_id:, capture_id:, timeout_ms: nil, http_headers: nil)
1697
+ # get_capture - Get details of a capture for an auth-capture `card-payment` transfer.
1698
+ #
1699
+ # To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
1700
+ # you'll need to specify the `/accounts/{accountID}/transfers.read` scope.
1701
+ request = Models::Operations::GetCaptureRequest.new(
1702
+ account_id: account_id,
1703
+ transfer_id: transfer_id,
1704
+ capture_id: capture_id
1705
+ )
1706
+ url, params = @sdk_configuration.get_server_details
1707
+ base_url = Utils.template_url(url, params)
1708
+ url = Utils.generate_url(
1709
+ Models::Operations::GetCaptureRequest,
1710
+ base_url,
1711
+ '/accounts/{accountID}/transfers/{transferID}/captures/{captureID}',
1712
+ request
1713
+ )
1714
+ headers = {}
1715
+ headers = T.cast(headers, T::Hash[String, String])
1716
+ headers['Accept'] = 'application/json'
1717
+ headers['user-agent'] = @sdk_configuration.user_agent
1718
+
1719
+ security = @sdk_configuration.security_source&.call
1720
+
1721
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1722
+ timeout ||= @sdk_configuration.timeout
1723
+
1724
+
1725
+ connection = @sdk_configuration.client
1726
+
1727
+ hook_ctx = SDKHooks::HookContext.new(
1728
+ config: @sdk_configuration,
1729
+ base_url: base_url,
1730
+ oauth2_scopes: nil,
1731
+ operation_id: 'getCapture',
1732
+ security_source: @sdk_configuration.security_source
1733
+ )
1734
+
1735
+ error = T.let(nil, T.nilable(StandardError))
1736
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1737
+
1738
+
1739
+ begin
1740
+ http_response = T.must(connection).get(url) do |req|
1741
+ req.headers.merge!(headers)
1742
+ req.options.timeout = timeout unless timeout.nil?
1743
+ Utils.configure_request_security(req, security)
1744
+ http_headers&.each do |key, value|
1745
+ req.headers[key.to_s] = value
1746
+ end
1747
+
1748
+ @sdk_configuration.hooks.before_request(
1749
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1750
+ hook_ctx: hook_ctx
1751
+ ),
1752
+ request: req
1753
+ )
1754
+ end
1755
+ rescue StandardError => e
1756
+ error = e
1757
+ ensure
1758
+ if http_response.nil? || Utils.error_status?(http_response.status)
1759
+ http_response = @sdk_configuration.hooks.after_error(
1760
+ error: error,
1761
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1762
+ hook_ctx: hook_ctx
1763
+ ),
1764
+ response: http_response
1765
+ )
1766
+ else
1767
+ http_response = @sdk_configuration.hooks.after_success(
1768
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1769
+ hook_ctx: hook_ctx
1770
+ ),
1771
+ response: http_response
1772
+ )
1773
+ end
1774
+
1775
+ if http_response.nil?
1776
+ raise error if !error.nil?
1777
+ raise 'no response'
1778
+ end
1779
+ end
1780
+
1781
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1782
+ if Utils.match_status_code(http_response.status, ['200'])
1783
+ if Utils.match_content_type(content_type, 'application/json')
1784
+ http_response = @sdk_configuration.hooks.after_success(
1785
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1786
+ hook_ctx: hook_ctx
1787
+ ),
1788
+ response: http_response
1789
+ )
1790
+ response_data = http_response.env.response_body
1791
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Capture)
1792
+ response = Models::Operations::GetCaptureResponse.new(
1793
+ status_code: http_response.status,
1794
+ content_type: content_type,
1795
+ raw_response: http_response,
1796
+ headers: http_response.headers,
1797
+ capture: T.unsafe(obj)
1798
+ )
1799
+
1800
+ return response
1801
+ else
1802
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1803
+ end
1804
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
1805
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1806
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
1807
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1808
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1809
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1810
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1811
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1812
+ else
1813
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
1814
+
1815
+ end
1816
+ end
1817
+
1818
+
1388
1819
  sig { params(request: Models::Operations::InitiateRefundRequest, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::InitiateRefundResponse) }
1389
1820
  def initiate_refund(request:, timeout_ms: nil, http_headers: nil)
1390
1821
  # initiate_refund - Initiate a refund for a card transfer.
@@ -1406,6 +1837,7 @@ module Moov
1406
1837
  headers = T.cast(headers, T::Hash[String, String])
1407
1838
  req_content_type, data, form = Utils.serialize_request_body(request, false, false, :create_refund, :json)
1408
1839
  headers['content-type'] = req_content_type
1840
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
1409
1841
 
1410
1842
  if form && !form.empty?
1411
1843
  body = Utils.encode_form(form)
@@ -1693,7 +2125,7 @@ module Moov
1693
2125
  else
1694
2126
  raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
1695
2127
  end
1696
- elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
2128
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
1697
2129
  raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1698
2130
  elsif Utils.match_status_code(http_response.status, ['500', '504'])
1699
2131
  raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
@@ -1832,9 +2264,12 @@ module Moov
1832
2264
  end
1833
2265
 
1834
2266
 
1835
- sig { params(x_idempotency_key: ::String, account_id: ::String, transfer_id: ::String, create_reversal: T.nilable(Models::Components::CreateReversal), timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::CreateReversalResponse) }
1836
- def create_reversal(x_idempotency_key:, account_id:, transfer_id:, create_reversal: nil, timeout_ms: nil, http_headers: nil)
1837
- # create_reversal - Reverses a card transfer by initiating a cancellation or refund depending on the transaction status.
2267
+ sig { params(create_reversal: Models::Components::CreateReversal, x_idempotency_key: ::String, account_id: ::String, transfer_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::CreateReversalResponse) }
2268
+ def create_reversal(create_reversal:, x_idempotency_key:, account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
2269
+ # create_reversal - Reverses a card transfer by initiating a cancellation or refund depending on the transaction status.
2270
+ # In v2026.10 and later, reversing an auth-capture `card-payment` transfer with no captures cancels the entire `capturableAmount`.
2271
+ # In those API versions, an auth-capture `card-payment` transfer with one final capture is canceled or refunded depending on its processing state.
2272
+ # Auth-capture `card-payment` transfers with a non-final capture or multiple captures are not supported in those API versions.
1838
2273
  # Read our [reversals guide](https://docs.moov.io/guides/money-movement/accept-payments/card-acceptance/reversals/)
1839
2274
  # to learn more.
1840
2275
  #
@@ -1858,6 +2293,7 @@ module Moov
1858
2293
  headers = T.cast(headers, T::Hash[String, String])
1859
2294
  req_content_type, data, form = Utils.serialize_request_body(request, false, false, :create_reversal, :json)
1860
2295
  headers['content-type'] = req_content_type
2296
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
1861
2297
 
1862
2298
  if form && !form.empty?
1863
2299
  body = Utils.encode_form(form)
@@ -4,6 +4,7 @@
4
4
  # frozen_string_literal: true
5
5
 
6
6
  require 'faraday/retry'
7
+ require 'time'
7
8
  require 'sorbet-runtime'
8
9
 
9
10
  module Moov
@@ -87,12 +88,50 @@ module Moov
87
88
  retry_options[:retry_if] = ->(_env, _exc) { Time.now < stop_time }
88
89
  end
89
90
 
90
- retry_options[:rate_limit_retry_header] = 'retry-after-ms'
91
- retry_options[:header_parser_block] = ->(value) { value.to_f / 1000 }
92
91
  end
93
92
 
94
93
  retry_options
95
94
  end
96
95
  end
96
+
97
+ class RetryMiddleware < Faraday::Retry::Middleware
98
+ extend T::Sig
99
+
100
+ sig { params(retries: T.untyped, env: T.untyped).returns(T.untyped) }
101
+ def calculate_sleep_amount(retries, env)
102
+ retry_after = [calculate_retry_after(env), calculate_rate_limit_reset(env)].compact.max
103
+ retry_interval = calculate_retry_interval(retries)
104
+ return retry_interval if retry_after.nil?
105
+
106
+ # unlike the stock middleware, cap server delays at max_interval rather
107
+ # than abandoning the retry
108
+ [[retry_after, @options.max_interval].min, retry_interval].max
109
+ end
110
+
111
+ private
112
+
113
+ sig { params(env: T.untyped).returns(T.untyped) }
114
+ def calculate_retry_after(env)
115
+ response_headers = env[:response_headers]
116
+ return unless response_headers
117
+
118
+ ms_value = response_headers['retry-after-ms']
119
+ return ms_value.to_f / 1000 if ms_value&.match?(/\A\s*\d+\s*\z/)
120
+
121
+ value = response_headers['retry-after']
122
+ return if value.nil? || value.strip.empty?
123
+ return value.to_f if value.match?(/\A\s*\d+\s*\z/)
124
+
125
+ begin
126
+ Time.httpdate(value) - Time.now
127
+ rescue ArgumentError
128
+ begin
129
+ Time.iso8601(value) - Time.now
130
+ rescue ArgumentError
131
+ nil
132
+ end
133
+ end
134
+ end
135
+ end
97
136
  end
98
137
  end
@@ -81,11 +81,15 @@ module Moov
81
81
 
82
82
  sig { params(content_type: String, pattern: String).returns(T::Boolean) }
83
83
  def self.match_content_type(content_type, pattern)
84
- return true if content_type == pattern || ['*', '*/*'].include?(pattern)
84
+ return true if ['*', '*/*'].include?(pattern)
85
+
86
+ # Media types are case-insensitive (RFC 9110 section 8.3.1).
87
+ pattern = pattern.strip.downcase
88
+ return true if content_type.strip.downcase == pattern
85
89
 
86
90
  pieces = content_type.split(';')
87
91
  pieces.each do |piece|
88
- return true if pattern == piece.strip
92
+ return true if pattern == piece.strip.downcase
89
93
  end
90
94
 
91
95
  false
data/lib/moov_ruby.rb CHANGED
@@ -40,8 +40,8 @@ module Moov
40
40
  autoload :Webhooks, 'moov/webhooks'
41
41
  autoload :Industries, 'moov/industries'
42
42
  autoload :Institutions, 'moov/institutions'
43
- autoload :IssuingTransactions, 'moov/issuing_transactions'
44
43
  autoload :CardIssuing, 'moov/card_issuing'
44
+ autoload :IssuingTransactions, 'moov/issuing_transactions'
45
45
  autoload :Authentication, 'moov/authentication'
46
46
  autoload :Onboarding, 'moov/onboarding'
47
47
  autoload :Ping, 'moov/ping'