moov_ruby 0.0.0.pre.dev.23 → 0.0.0.pre.dev.25

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 (246) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/avatars.rb +276 -1
  3. data/lib/moov/card_issuing.rb +116 -0
  4. data/lib/moov/client.rb +2 -2
  5. data/lib/moov/enriched_address.rb +1 -1
  6. data/lib/moov/enriched_profile.rb +1 -1
  7. data/lib/moov/institutions.rb +1 -1
  8. data/lib/moov/models/components/achcreditoptions.rb +40 -0
  9. data/lib/moov/models/components/achcreditoptions.rbi +17 -0
  10. data/lib/moov/models/components/achcredittransferprocessingdetails.rb +40 -0
  11. data/lib/moov/models/components/achcredittransferprocessingdetails.rbi +17 -0
  12. data/lib/moov/models/components/achdebitoptions.rb +48 -0
  13. data/lib/moov/models/components/achdebitoptions.rbi +21 -0
  14. data/lib/moov/models/components/achdebittransferprocessingdetails.rb +40 -0
  15. data/lib/moov/models/components/achdebittransferprocessingdetails.rbi +17 -0
  16. data/lib/moov/models/components/allowedscheduleerror.rb +36 -0
  17. data/lib/moov/models/components/allowedscheduleerror.rbi +15 -0
  18. data/lib/moov/models/components/asynccreatedrefund.rb +7 -3
  19. data/lib/moov/models/components/asynccreatedrefund.rbi +2 -0
  20. data/lib/moov/models/components/avataruploadrequest.rb +32 -0
  21. data/lib/moov/models/components/avataruploadrequest.rbi +13 -0
  22. data/lib/moov/models/components/avataruploadrequest_file.rb +36 -0
  23. data/lib/moov/models/components/avataruploadrequest_file.rbi +15 -0
  24. data/lib/moov/models/components/capabilityid.rb +1 -0
  25. data/lib/moov/models/components/capture.rb +77 -0
  26. data/lib/moov/models/components/capture.rbi +35 -0
  27. data/lib/moov/models/components/{refundcardstatus.rb → capturestatus.rb} +5 -4
  28. data/lib/moov/models/components/{refundcardstatus.rbi → capturestatus.rbi} +2 -2
  29. data/lib/moov/models/components/cardacquiringrefund.rb +11 -7
  30. data/lib/moov/models/components/cardacquiringrefund.rbi +4 -2
  31. data/lib/moov/models/components/cardpaymentoptions.rb +39 -0
  32. data/lib/moov/models/components/cardpaymentoptions.rbi +15 -0
  33. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rb +32 -0
  34. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rbi +13 -0
  35. data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rb +44 -0
  36. data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rbi +19 -0
  37. data/lib/moov/models/components/createcancellation.rb +32 -0
  38. data/lib/moov/models/components/createcancellation.rbi +13 -0
  39. data/lib/moov/models/components/createcapture.rb +65 -0
  40. data/lib/moov/models/components/createcapture.rbi +29 -0
  41. data/lib/moov/models/components/createdtransfer.rb +22 -26
  42. data/lib/moov/models/components/createdtransfer.rbi +8 -10
  43. data/lib/moov/models/components/createrefund.rb +9 -5
  44. data/lib/moov/models/components/createrefund.rbi +2 -0
  45. data/lib/moov/models/components/createreversal.rb +3 -3
  46. data/lib/moov/models/components/createtransfer.rb +9 -5
  47. data/lib/moov/models/components/createtransfer.rbi +2 -0
  48. data/lib/moov/models/components/createtransferfacilitatorfee.rb +36 -0
  49. data/lib/moov/models/components/createtransferfacilitatorfee.rbi +15 -0
  50. data/lib/moov/models/components/createtransferoptions.rb +2 -2
  51. data/lib/moov/models/components/feepaidby.rb +19 -0
  52. data/lib/moov/models/components/{achtransactionstatus.rbi → feepaidby.rbi} +2 -2
  53. data/lib/moov/models/components/fullissuedcard.rb +3 -3
  54. data/lib/moov/models/components/incurredfee.rb +6 -2
  55. data/lib/moov/models/components/incurredfee.rbi +2 -0
  56. data/lib/moov/models/components/instantbankcredittransferprocessingdetails.rb +44 -0
  57. data/lib/moov/models/components/instantbankcredittransferprocessingdetails.rbi +19 -0
  58. data/lib/moov/models/components/issuedcard.rb +3 -3
  59. data/lib/moov/models/components/issuedcontrols.rb +52 -0
  60. data/lib/moov/models/components/issuedcontrols.rbi +23 -0
  61. data/lib/moov/models/components/issuedcontrols_allowedschedule.rb +36 -0
  62. data/lib/moov/models/components/issuedcontrols_allowedschedule.rbi +15 -0
  63. data/lib/moov/models/components/issuedvelocitylimit.rb +60 -0
  64. data/lib/moov/models/components/issuedvelocitylimit.rbi +27 -0
  65. data/lib/moov/models/components/issuingcontrols.rb +18 -2
  66. data/lib/moov/models/components/issuingcontrols.rbi +8 -0
  67. data/lib/moov/models/components/issuingcontrols_allowedschedule.rb +36 -0
  68. data/lib/moov/models/components/issuingcontrols_allowedschedule.rbi +15 -0
  69. data/lib/moov/models/components/issuingcontrolserror.rb +18 -2
  70. data/lib/moov/models/components/issuingcontrolserror.rbi +8 -0
  71. data/lib/moov/models/components/issuingcontrolsrestrictionmode.rb +19 -0
  72. data/lib/moov/models/components/issuingcontrolsrestrictionmode.rbi +11 -0
  73. data/lib/moov/models/components/issuingintervallimit.rb +4 -1
  74. data/lib/moov/models/components/issuingmerchantcategory.rb +43 -0
  75. data/lib/moov/models/components/issuingmerchantcategory.rbi +11 -0
  76. data/lib/moov/models/components/issuingscheduleday.rb +24 -0
  77. data/lib/moov/models/components/{cardtransactionstatus.rbi → issuingscheduleday.rbi} +2 -2
  78. data/lib/moov/models/components/issuingvelocitylimit.rb +11 -7
  79. data/lib/moov/models/components/issuingvelocitylimit.rbi +4 -2
  80. data/lib/moov/models/components/issuingvelocitylimiterror.rb +6 -2
  81. data/lib/moov/models/components/issuingvelocitylimiterror.rbi +2 -0
  82. data/lib/moov/models/components/merchantcategories.rb +32 -0
  83. data/lib/moov/models/components/merchantcategories.rbi +13 -0
  84. data/lib/moov/models/components/merchantcategory.rb +37 -0
  85. data/lib/moov/models/components/merchantcategory.rbi +15 -0
  86. data/lib/moov/models/components/merchantcategoryrestrictions.rb +44 -0
  87. data/lib/moov/models/components/merchantcategoryrestrictions.rbi +19 -0
  88. data/lib/moov/models/components/merchantcategoryrestrictionserror.rb +44 -0
  89. data/lib/moov/models/components/merchantcategoryrestrictionserror.rbi +19 -0
  90. data/lib/moov/models/components/merchantentry.rb +40 -0
  91. data/lib/moov/models/components/merchantentry.rbi +17 -0
  92. data/lib/moov/models/components/merchantentryerror.rb +36 -0
  93. data/lib/moov/models/components/merchantentryerror.rbi +15 -0
  94. data/lib/moov/models/components/merchantrestrictions.rb +36 -0
  95. data/lib/moov/models/components/merchantrestrictions.rbi +15 -0
  96. data/lib/moov/models/components/merchantrestrictionserror.rb +36 -0
  97. data/lib/moov/models/components/merchantrestrictionserror.rbi +15 -0
  98. data/lib/moov/models/components/moovfeedetails.rb +5 -5
  99. data/lib/moov/models/components/paymentlinkpayoutdetails.rb +8 -2
  100. data/lib/moov/models/components/paymentlinkpayoutdetails.rbi +2 -0
  101. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +8 -2
  102. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rbi +2 -0
  103. data/lib/moov/models/components/paymentmethodswallet.rb +1 -0
  104. data/lib/moov/models/components/payoutdetailserror.rb +6 -2
  105. data/lib/moov/models/components/payoutdetailserror.rbi +2 -0
  106. data/lib/moov/models/components/product.rb +6 -2
  107. data/lib/moov/models/components/product.rbi +2 -0
  108. data/lib/moov/models/components/productcategories.rb +32 -0
  109. data/lib/moov/models/components/productcategories.rbi +13 -0
  110. data/lib/moov/models/components/productcategory.rb +48 -0
  111. data/lib/moov/models/components/productcategory.rbi +21 -0
  112. data/lib/moov/models/components/productrequest.rb +6 -2
  113. data/lib/moov/models/components/productrequest.rbi +2 -0
  114. data/lib/moov/models/components/pullfromcardoptions.rb +39 -0
  115. data/lib/moov/models/components/pullfromcardoptions.rbi +15 -0
  116. data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rb +44 -0
  117. data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rbi +19 -0
  118. data/lib/moov/models/components/pushtocardoptions.rb +32 -0
  119. data/lib/moov/models/components/pushtocardoptions.rbi +13 -0
  120. data/lib/moov/models/components/pushtocardtransferprocessingdetails.rb +44 -0
  121. data/lib/moov/models/components/pushtocardtransferprocessingdetails.rbi +19 -0
  122. data/lib/moov/models/components/refundprocessingdetails.rb +32 -0
  123. data/lib/moov/models/components/refundprocessingdetails.rbi +13 -0
  124. data/lib/moov/models/components/schedulewindow.rb +40 -0
  125. data/lib/moov/models/components/schedulewindow.rbi +17 -0
  126. data/lib/moov/models/components/schedulewindowerror.rb +40 -0
  127. data/lib/moov/models/components/schedulewindowerror.rbi +17 -0
  128. data/lib/moov/models/components/schemebasicauth.rb +36 -0
  129. data/lib/moov/models/components/schemebasicauth.rbi +15 -0
  130. data/lib/moov/models/components/schemeoauth2auth.rb +40 -0
  131. data/lib/moov/models/components/schemeoauth2auth.rbi +17 -0
  132. data/lib/moov/models/components/sendfunds.rb +6 -2
  133. data/lib/moov/models/components/sendfunds.rbi +2 -0
  134. data/lib/moov/models/components/sendfundserror.rb +6 -2
  135. data/lib/moov/models/components/sendfundserror.rbi +2 -0
  136. data/lib/moov/models/components/sendfundswire.rb +32 -0
  137. data/lib/moov/models/components/sendfundswire.rbi +13 -0
  138. data/lib/moov/models/components/sendfundswireerror.rb +32 -0
  139. data/lib/moov/models/components/sendfundswireerror.rbi +13 -0
  140. data/lib/moov/models/components/transfer.rb +22 -26
  141. data/lib/moov/models/components/transfer.rbi +8 -10
  142. data/lib/moov/models/components/transferauthorization.rb +52 -0
  143. data/lib/moov/models/components/transferauthorization.rbi +23 -0
  144. data/lib/moov/models/components/transferdestination.rb +5 -17
  145. data/lib/moov/models/components/transferdestination.rbi +0 -6
  146. data/lib/moov/models/components/transferfeepaidby.rb +32 -0
  147. data/lib/moov/models/components/transferfeepaidby.rbi +13 -0
  148. data/lib/moov/models/components/transferpaymentmethodswallet.rb +1 -0
  149. data/lib/moov/models/components/transferprocessingdetails.rb +52 -0
  150. data/lib/moov/models/components/transferprocessingdetails.rbi +23 -0
  151. data/lib/moov/models/components/transferrailoptions.rb +48 -0
  152. data/lib/moov/models/components/transferrailoptions.rbi +21 -0
  153. data/lib/moov/models/components/transfersource.rb +9 -17
  154. data/lib/moov/models/components/transfersource.rbi +2 -6
  155. data/lib/moov/models/components/transferstatus.rb +1 -0
  156. data/lib/moov/models/components/transfertype.rb +25 -0
  157. data/lib/moov/models/components/transfertype.rbi +11 -0
  158. data/lib/moov/models/components/updateissuedcard.rb +6 -2
  159. data/lib/moov/models/components/updateissuedcard.rbi +2 -0
  160. data/lib/moov/models/components/updateissuingcontrols.rb +48 -0
  161. data/lib/moov/models/components/updateissuingcontrols.rbi +21 -0
  162. data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rb +36 -0
  163. data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rbi +15 -0
  164. data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rb +44 -0
  165. data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rbi +19 -0
  166. data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rb +36 -0
  167. data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rbi +15 -0
  168. data/lib/moov/models/components/updateissuingcontrolserror.rb +48 -0
  169. data/lib/moov/models/components/updateissuingcontrolserror.rbi +21 -0
  170. data/lib/moov/models/components/wallet.rb +1 -0
  171. data/lib/moov/models/components/wallettype.rb +2 -0
  172. data/lib/moov/models/components/webhookdatatransferstatus.rb +3 -0
  173. data/lib/moov/models/components.rb +55 -10
  174. data/lib/moov/models/errors/capturevalidationerror.rb +68 -0
  175. data/lib/moov/models/errors/capturevalidationerror.rbi +31 -0
  176. data/lib/moov/models/errors/cardacquiringrefund_error.rb +11 -7
  177. data/lib/moov/models/errors/cardacquiringrefund_error.rbi +4 -2
  178. data/lib/moov/models/errors/productrequestvalidationerror.rb +6 -2
  179. data/lib/moov/models/errors/productrequestvalidationerror.rbi +2 -0
  180. data/lib/moov/models/errors/transfer_error.rb +22 -26
  181. data/lib/moov/models/errors/transfer_error.rbi +8 -10
  182. data/lib/moov/models/errors/updateissuedcarderror.rb +6 -2
  183. data/lib/moov/models/errors/updateissuedcarderror.rbi +2 -0
  184. data/lib/moov/models/errors.rb +1 -0
  185. data/lib/moov/models/operations/createcancellation_request.rb +6 -2
  186. data/lib/moov/models/operations/createcancellation_request.rbi +2 -0
  187. data/lib/moov/models/operations/createcapture_request.rb +44 -0
  188. data/lib/moov/models/operations/createcapture_request.rbi +19 -0
  189. data/lib/moov/models/operations/createcapture_response.rb +48 -0
  190. data/lib/moov/models/operations/createcapture_response.rbi +21 -0
  191. data/lib/moov/models/operations/createreversal_request.rb +3 -3
  192. data/lib/moov/models/operations/deleteavatar_request.rb +32 -0
  193. data/lib/moov/models/operations/deleteavatar_request.rbi +13 -0
  194. data/lib/moov/models/operations/deleteavatar_response.rb +44 -0
  195. data/lib/moov/models/operations/deleteavatar_response.rbi +19 -0
  196. data/lib/moov/models/operations/deleteavatar_security.rb +36 -0
  197. data/lib/moov/models/operations/deleteavatar_security.rbi +15 -0
  198. data/lib/moov/models/operations/getcapture_request.rb +40 -0
  199. data/lib/moov/models/operations/getcapture_request.rbi +17 -0
  200. data/lib/moov/models/operations/getcapture_response.rb +48 -0
  201. data/lib/moov/models/operations/getcapture_response.rbi +21 -0
  202. data/lib/moov/models/operations/initiaterefund_request.rb +6 -6
  203. data/lib/moov/models/operations/initiaterefund_request.rbi +2 -2
  204. data/lib/moov/models/operations/listcaptures_request.rb +36 -0
  205. data/lib/moov/models/operations/listcaptures_request.rbi +15 -0
  206. data/lib/moov/models/operations/listcaptures_response.rb +48 -0
  207. data/lib/moov/models/operations/listcaptures_response.rbi +21 -0
  208. data/lib/moov/models/operations/listissuingmerchantcategories_response.rb +48 -0
  209. data/lib/moov/models/operations/listissuingmerchantcategories_response.rbi +21 -0
  210. data/lib/moov/models/operations/listproductcategories_response.rb +48 -0
  211. data/lib/moov/models/operations/listproductcategories_response.rbi +21 -0
  212. data/lib/moov/models/operations/listproducts_request.rb +8 -2
  213. data/lib/moov/models/operations/listproducts_request.rbi +2 -0
  214. data/lib/moov/models/operations/listtransfers_request.rb +6 -2
  215. data/lib/moov/models/operations/listtransfers_request.rbi +2 -0
  216. data/lib/moov/models/operations/uploadavatar_request.rb +36 -0
  217. data/lib/moov/models/operations/uploadavatar_request.rbi +15 -0
  218. data/lib/moov/models/operations/uploadavatar_response.rb +44 -0
  219. data/lib/moov/models/operations/uploadavatar_response.rbi +19 -0
  220. data/lib/moov/models/operations/uploadavatar_security.rb +36 -0
  221. data/lib/moov/models/operations/uploadavatar_security.rbi +15 -0
  222. data/lib/moov/models/operations.rb +14 -0
  223. data/lib/moov/products.rb +113 -8
  224. data/lib/moov/sdk_hooks/clientcredentials.rb +386 -0
  225. data/lib/moov/sdk_hooks/hooks.rb +6 -0
  226. data/lib/moov/sdk_hooks/oauth2scopes.rb +18 -0
  227. data/lib/moov/sdkconfiguration.rb +3 -3
  228. data/lib/moov/transfers.rb +434 -5
  229. data/lib/moov_ruby.rb +1 -1
  230. metadata +144 -22
  231. data/lib/moov/models/components/achtransactiondetails.rb +0 -92
  232. data/lib/moov/models/components/achtransactiondetails.rbi +0 -43
  233. data/lib/moov/models/components/achtransactionstatus.rb +0 -24
  234. data/lib/moov/models/components/cardacquiringdispute.rb +0 -40
  235. data/lib/moov/models/components/cardacquiringdispute.rbi +0 -17
  236. data/lib/moov/models/components/cardtransactiondetails.rb +0 -93
  237. data/lib/moov/models/components/cardtransactiondetails.rbi +0 -41
  238. data/lib/moov/models/components/cardtransactionstatus.rb +0 -24
  239. data/lib/moov/models/components/instantbanktransactiondetails.rb +0 -64
  240. data/lib/moov/models/components/instantbanktransactiondetails.rbi +0 -29
  241. data/lib/moov/models/components/instantbanktransactionstatus.rb +0 -21
  242. data/lib/moov/models/components/instantbanktransactionstatus.rbi +0 -11
  243. data/lib/moov/models/components/refundcarddetails.rb +0 -56
  244. data/lib/moov/models/components/refundcarddetails.rbi +0 -25
  245. data/lib/moov/models/components/transfercapture.rb +0 -36
  246. data/lib/moov/models/components/transfercapture.rbi +0 -15
@@ -0,0 +1,32 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ class CreateCancellation
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
17
+
18
+ sig { params(amount: T.nilable(Models::Components::AmountDecimal)).void }
19
+ def initialize(amount: nil)
20
+ @amount = amount
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @amount == other.amount
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::CreateCancellation
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::CreateCancellation
11
+ def amount(); end
12
+ def amount=(str_); end
13
+ end
@@ -0,0 +1,65 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+ # Request to capture funds against an authorized transfer.
11
+ class CreateCapture
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Payment method of the merchant account to capture funds into. For card-acquiring transfers, this must be a moov-wallet payment method.
16
+ field :destination_payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('destinationPaymentMethodID'), required: true } }
17
+ # Amount to capture. If omitted, the remaining authorized amount is captured.
18
+ field :amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
19
+ # Indicates whether this is the final capture against the authorization. When `true`, any remaining authorized amount is voided.
20
+ field :is_final, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('isFinal') } }
21
+ # An optional description of the capture that is used on receipts and for your own internal use.
22
+ field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
23
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
24
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
25
+ # Optional alias from a foreign/external system which can be used to reference this resource.
26
+ field :foreign_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('foreignID') } }
27
+ # An optional collection of line items for a transfer.
28
+ # When line items are provided, their total plus tax must equal the transfer amount.
29
+ field :line_items, Crystalline::Nilable.new(Models::Components::CreateTransferLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
30
+
31
+ field :amount_details, Crystalline::Nilable.new(Models::Components::CreateTransferAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
32
+ # The facilitator fee amount applied to the capture.
33
+ field :facilitator_fee_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('facilitatorFeeAmount') } }
34
+
35
+ sig { params(destination_payment_method_id: ::String, amount: T.nilable(Models::Components::AmountDecimal), is_final: T.nilable(T::Boolean), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::CreateTransferLineItems), amount_details: T.nilable(Models::Components::CreateTransferAmountDetails), facilitator_fee_amount: T.nilable(Models::Components::AmountDecimal)).void }
36
+ def initialize(destination_payment_method_id:, amount: nil, is_final: nil, description: nil, metadata: nil, foreign_id: nil, line_items: nil, amount_details: nil, facilitator_fee_amount: nil)
37
+ @destination_payment_method_id = destination_payment_method_id
38
+ @amount = amount
39
+ @is_final = is_final
40
+ @description = description
41
+ @metadata = metadata
42
+ @foreign_id = foreign_id
43
+ @line_items = line_items
44
+ @amount_details = amount_details
45
+ @facilitator_fee_amount = facilitator_fee_amount
46
+ end
47
+
48
+ sig { params(other: T.untyped).returns(T::Boolean) }
49
+ def ==(other)
50
+ return false unless other.is_a? self.class
51
+ return false unless @destination_payment_method_id == other.destination_payment_method_id
52
+ return false unless @amount == other.amount
53
+ return false unless @is_final == other.is_final
54
+ return false unless @description == other.description
55
+ return false unless @metadata == other.metadata
56
+ return false unless @foreign_id == other.foreign_id
57
+ return false unless @line_items == other.line_items
58
+ return false unless @amount_details == other.amount_details
59
+ return false unless @facilitator_fee_amount == other.facilitator_fee_amount
60
+ true
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,29 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::CreateCapture
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::CreateCapture
11
+ def destination_payment_method_id(); end
12
+ def destination_payment_method_id=(str_); end
13
+ def amount(); end
14
+ def amount=(str_); end
15
+ def is_final(); end
16
+ def is_final=(str_); end
17
+ def description(); end
18
+ def description=(str_); end
19
+ def metadata(); end
20
+ def metadata=(str_); end
21
+ def foreign_id(); end
22
+ def foreign_id=(str_); end
23
+ def line_items(); end
24
+ def line_items=(str_); end
25
+ def amount_details(); end
26
+ def amount_details=(str_); end
27
+ def facilitator_fee_amount(); end
28
+ def facilitator_fee_amount=(str_); end
29
+ end
@@ -14,9 +14,15 @@ module Moov
14
14
 
15
15
 
16
16
  field :transfer_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('transferID'), required: true } }
17
+ # The rail and direction used to move funds for a transfer.
18
+ field :transfer_type, Models::Components::TransferType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('transferType'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::TransferType, false) } }
17
19
 
18
20
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
19
21
 
22
+ field :options, Models::Components::TransferRailOptions, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('options'), required: true } }
23
+
24
+ field :processing_details, Models::Components::TransferProcessingDetails, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('processingDetails'), required: true } }
25
+
20
26
  field :source, Crystalline::Nilable.new(Models::Components::TransferSource), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('source') } }
21
27
 
22
28
  field :destination, Crystalline::Nilable.new(Models::Components::TransferDestination), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('destination') } }
@@ -27,7 +33,7 @@ module Moov
27
33
  # Reason for a transfer's failure.
28
34
  field :failure_reason, Crystalline::Nilable.new(Models::Components::TransferFailureReason), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureReason'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::TransferFailureReason, true) } }
29
35
 
30
- field :amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
36
+ field :amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
31
37
  # An optional description of the transfer that is used on receipts and for your own internal use.
32
38
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
33
39
  # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
@@ -35,23 +41,15 @@ module Moov
35
41
  # Total or markup fee.
36
42
  field :facilitator_fee, Crystalline::Nilable.new(Models::Components::FacilitatorFee), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('facilitatorFee') } }
37
43
  # Fees charged to your platform account for transfers.
38
- field :moov_fee, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('moovFee') } }
39
- # Same as `moovFee`, but a decimal-formatted numerical string that represents up to 9 decimal place precision.
40
- field :moov_fee_decimal, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('moovFeeDecimal') } }
44
+ field :moov_fee, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('moovFee') } }
41
45
  # Processing and pass-through costs that add up to the moovFee.
42
46
  field :moov_fee_details, Crystalline::Nilable.new(Models::Components::MoovFeeDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('moovFeeDetails') } }
43
47
 
44
48
  field :group_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('groupID') } }
45
49
 
46
- field :cancellations, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::Cancellation)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cancellations') } }
47
-
48
- field :refunded_amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('refundedAmount') } }
50
+ field :refunded_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('refundedAmount') } }
49
51
 
50
- field :refunds, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::CardAcquiringRefund)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('refunds') } }
51
-
52
- field :disputed_amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disputedAmount') } }
53
-
54
- field :disputes, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::CardAcquiringDispute)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disputes') } }
52
+ field :disputed_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disputedAmount') } }
55
53
 
56
54
  field :sweep_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sweepID') } }
57
55
 
@@ -67,13 +65,16 @@ module Moov
67
65
  field :line_items, Crystalline::Nilable.new(Models::Components::TransferLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
68
66
 
69
67
  field :amount_details, Crystalline::Nilable.new(Models::Components::TransferAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
70
- # The card authorization and capture IDs associated with a transfer.
71
- field :capture, Crystalline::Nilable.new(Models::Components::TransferCapture), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capture') } }
72
68
 
73
- sig { params(transfer_id: ::String, created_on: ::DateTime, source: T.nilable(Models::Components::TransferSource), destination: T.nilable(Models::Components::TransferDestination), completed_on: T.nilable(::DateTime), status: T.nilable(Models::Components::TransferStatus), failure_reason: T.nilable(Models::Components::TransferFailureReason), amount: T.nilable(Models::Components::Amount), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), facilitator_fee: T.nilable(Models::Components::FacilitatorFee), moov_fee: T.nilable(::Integer), moov_fee_decimal: T.nilable(::String), moov_fee_details: T.nilable(Models::Components::MoovFeeDetails), group_id: T.nilable(::String), cancellations: T.nilable(T::Array[Models::Components::Cancellation]), refunded_amount: T.nilable(Models::Components::Amount), refunds: T.nilable(T::Array[Models::Components::CardAcquiringRefund]), disputed_amount: T.nilable(Models::Components::Amount), disputes: T.nilable(T::Array[Models::Components::CardAcquiringDispute]), sweep_id: T.nilable(::String), schedule_id: T.nilable(::String), occurrence_id: T.nilable(::String), payment_link_code: T.nilable(::String), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::TransferLineItems), amount_details: T.nilable(Models::Components::TransferAmountDetails), capture: T.nilable(Models::Components::TransferCapture)).void }
74
- def initialize(transfer_id:, created_on:, source: nil, destination: nil, completed_on: nil, status: nil, failure_reason: nil, amount: nil, description: nil, metadata: nil, facilitator_fee: nil, moov_fee: nil, moov_fee_decimal: nil, moov_fee_details: nil, group_id: nil, cancellations: nil, refunded_amount: nil, refunds: nil, disputed_amount: nil, disputes: nil, sweep_id: nil, schedule_id: nil, occurrence_id: nil, payment_link_code: nil, foreign_id: nil, line_items: nil, amount_details: nil, capture: nil)
69
+ field :authorization, Crystalline::Nilable.new(Models::Components::TransferAuthorization), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorization') } }
70
+
71
+ sig { params(transfer_id: ::String, transfer_type: Models::Components::TransferType, created_on: ::DateTime, options: Models::Components::TransferRailOptions, processing_details: Models::Components::TransferProcessingDetails, source: T.nilable(Models::Components::TransferSource), destination: T.nilable(Models::Components::TransferDestination), completed_on: T.nilable(::DateTime), status: T.nilable(Models::Components::TransferStatus), failure_reason: T.nilable(Models::Components::TransferFailureReason), amount: T.nilable(Models::Components::AmountDecimal), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), facilitator_fee: T.nilable(Models::Components::FacilitatorFee), moov_fee: T.nilable(Models::Components::AmountDecimal), moov_fee_details: T.nilable(Models::Components::MoovFeeDetails), group_id: T.nilable(::String), refunded_amount: T.nilable(Models::Components::AmountDecimal), disputed_amount: T.nilable(Models::Components::AmountDecimal), sweep_id: T.nilable(::String), schedule_id: T.nilable(::String), occurrence_id: T.nilable(::String), payment_link_code: T.nilable(::String), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::TransferLineItems), amount_details: T.nilable(Models::Components::TransferAmountDetails), authorization: T.nilable(Models::Components::TransferAuthorization)).void }
72
+ def initialize(transfer_id:, transfer_type:, created_on:, options:, processing_details:, source: nil, destination: nil, completed_on: nil, status: nil, failure_reason: nil, amount: nil, description: nil, metadata: nil, facilitator_fee: nil, moov_fee: nil, moov_fee_details: nil, group_id: nil, refunded_amount: nil, disputed_amount: nil, sweep_id: nil, schedule_id: nil, occurrence_id: nil, payment_link_code: nil, foreign_id: nil, line_items: nil, amount_details: nil, authorization: nil)
75
73
  @transfer_id = transfer_id
74
+ @transfer_type = transfer_type
76
75
  @created_on = created_on
76
+ @options = options
77
+ @processing_details = processing_details
77
78
  @source = source
78
79
  @destination = destination
79
80
  @completed_on = completed_on
@@ -84,14 +85,10 @@ module Moov
84
85
  @metadata = metadata
85
86
  @facilitator_fee = facilitator_fee
86
87
  @moov_fee = moov_fee
87
- @moov_fee_decimal = moov_fee_decimal
88
88
  @moov_fee_details = moov_fee_details
89
89
  @group_id = group_id
90
- @cancellations = cancellations
91
90
  @refunded_amount = refunded_amount
92
- @refunds = refunds
93
91
  @disputed_amount = disputed_amount
94
- @disputes = disputes
95
92
  @sweep_id = sweep_id
96
93
  @schedule_id = schedule_id
97
94
  @occurrence_id = occurrence_id
@@ -99,14 +96,17 @@ module Moov
99
96
  @foreign_id = foreign_id
100
97
  @line_items = line_items
101
98
  @amount_details = amount_details
102
- @capture = capture
99
+ @authorization = authorization
103
100
  end
104
101
 
105
102
  sig { params(other: T.untyped).returns(T::Boolean) }
106
103
  def ==(other)
107
104
  return false unless other.is_a? self.class
108
105
  return false unless @transfer_id == other.transfer_id
106
+ return false unless @transfer_type == other.transfer_type
109
107
  return false unless @created_on == other.created_on
108
+ return false unless @options == other.options
109
+ return false unless @processing_details == other.processing_details
110
110
  return false unless @source == other.source
111
111
  return false unless @destination == other.destination
112
112
  return false unless @completed_on == other.completed_on
@@ -117,14 +117,10 @@ module Moov
117
117
  return false unless @metadata == other.metadata
118
118
  return false unless @facilitator_fee == other.facilitator_fee
119
119
  return false unless @moov_fee == other.moov_fee
120
- return false unless @moov_fee_decimal == other.moov_fee_decimal
121
120
  return false unless @moov_fee_details == other.moov_fee_details
122
121
  return false unless @group_id == other.group_id
123
- return false unless @cancellations == other.cancellations
124
122
  return false unless @refunded_amount == other.refunded_amount
125
- return false unless @refunds == other.refunds
126
123
  return false unless @disputed_amount == other.disputed_amount
127
- return false unless @disputes == other.disputes
128
124
  return false unless @sweep_id == other.sweep_id
129
125
  return false unless @schedule_id == other.schedule_id
130
126
  return false unless @occurrence_id == other.occurrence_id
@@ -132,7 +128,7 @@ module Moov
132
128
  return false unless @foreign_id == other.foreign_id
133
129
  return false unless @line_items == other.line_items
134
130
  return false unless @amount_details == other.amount_details
135
- return false unless @capture == other.capture
131
+ return false unless @authorization == other.authorization
136
132
  true
137
133
  end
138
134
  end
@@ -10,8 +10,14 @@ end
10
10
  class Moov::Models::Components::CreatedTransfer
11
11
  def transfer_id(); end
12
12
  def transfer_id=(str_); end
13
+ def transfer_type(); end
14
+ def transfer_type=(str_); end
13
15
  def created_on(); end
14
16
  def created_on=(str_); end
17
+ def options(); end
18
+ def options=(str_); end
19
+ def processing_details(); end
20
+ def processing_details=(str_); end
15
21
  def source(); end
16
22
  def source=(str_); end
17
23
  def destination(); end
@@ -32,22 +38,14 @@ class Moov::Models::Components::CreatedTransfer
32
38
  def facilitator_fee=(str_); end
33
39
  def moov_fee(); end
34
40
  def moov_fee=(str_); end
35
- def moov_fee_decimal(); end
36
- def moov_fee_decimal=(str_); end
37
41
  def moov_fee_details(); end
38
42
  def moov_fee_details=(str_); end
39
43
  def group_id(); end
40
44
  def group_id=(str_); end
41
- def cancellations(); end
42
- def cancellations=(str_); end
43
45
  def refunded_amount(); end
44
46
  def refunded_amount=(str_); end
45
- def refunds(); end
46
- def refunds=(str_); end
47
47
  def disputed_amount(); end
48
48
  def disputed_amount=(str_); end
49
- def disputes(); end
50
- def disputes=(str_); end
51
49
  def sweep_id(); end
52
50
  def sweep_id=(str_); end
53
51
  def schedule_id(); end
@@ -62,6 +60,6 @@ class Moov::Models::Components::CreatedTransfer
62
60
  def line_items=(str_); end
63
61
  def amount_details(); end
64
62
  def amount_details=(str_); end
65
- def capture(); end
66
- def capture=(str_); end
63
+ def authorization(); end
64
+ def authorization=(str_); end
67
65
  end
@@ -9,19 +9,22 @@ module Moov
9
9
  module Components
10
10
  # Specifies a partial amount to refund.
11
11
  #
12
- # This request body is optional, an empty body will issue a refund for the full amount of the original transfer.
12
+ # Before v2026.10, this request body may be omitted. In v2026.10 and later, send an empty object to refund the full amount of the original transfer.
13
13
  class CreateRefund
14
14
  extend T::Sig
15
15
  include Crystalline::MetadataFields
16
16
 
17
- # Amount to refund in cents. If null, the original transfer's full amount will be refunded.
18
- field :amount, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
17
+ # Amount to refund. Before v2026.10, specify the amount in integer cents. If omitted, the original transfer's full amount will be refunded.
18
+ field :amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
19
+ # ID of the capture to refund. Required for multi-capture card payment transfers.
20
+ field :capture_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('captureID') } }
19
21
  # Breakdown of the refunded amount.
20
22
  field :amount_details, Crystalline::Nilable.new(Models::Components::RefundAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
21
23
 
22
- sig { params(amount: T.nilable(::Integer), amount_details: T.nilable(Models::Components::RefundAmountDetails)).void }
23
- def initialize(amount: nil, amount_details: nil)
24
+ sig { params(amount: T.nilable(Models::Components::AmountDecimal), capture_id: T.nilable(::String), amount_details: T.nilable(Models::Components::RefundAmountDetails)).void }
25
+ def initialize(amount: nil, capture_id: nil, amount_details: nil)
24
26
  @amount = amount
27
+ @capture_id = capture_id
25
28
  @amount_details = amount_details
26
29
  end
27
30
 
@@ -29,6 +32,7 @@ module Moov
29
32
  def ==(other)
30
33
  return false unless other.is_a? self.class
31
34
  return false unless @amount == other.amount
35
+ return false unless @capture_id == other.capture_id
32
36
  return false unless @amount_details == other.amount_details
33
37
  true
34
38
  end
@@ -10,6 +10,8 @@ end
10
10
  class Moov::Models::Components::CreateRefund
11
11
  def amount(); end
12
12
  def amount=(str_); end
13
+ def capture_id(); end
14
+ def capture_id=(str_); end
13
15
  def amount_details(); end
14
16
  def amount_details=(str_); end
15
17
  end
@@ -12,12 +12,12 @@ module Moov
12
12
  extend T::Sig
13
13
  include Crystalline::MetadataFields
14
14
 
15
- # Amount to reverse in cents. Partial amounts will automatically trigger a refund instead of a cancellation.
16
- field :amount, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
15
+ # Amount to reverse. Before v2026.10, specify the amount in integer cents. Partial amounts automatically trigger a refund instead of a cancellation.
16
+ field :amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
17
17
  # Breakdown of the reversed amount.
18
18
  field :amount_details, Crystalline::Nilable.new(Models::Components::ReversalAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
19
19
 
20
- sig { params(amount: ::Integer, amount_details: T.nilable(Models::Components::ReversalAmountDetails)).void }
20
+ sig { params(amount: Models::Components::AmountDecimal, amount_details: T.nilable(Models::Components::ReversalAmountDetails)).void }
21
21
  def initialize(amount:, amount_details: nil)
22
22
  @amount = amount
23
23
  @amount_details = amount_details
@@ -17,9 +17,9 @@ module Moov
17
17
  # The final stage of a transfer and the ultimate recipient of the funds.
18
18
  field :destination, Models::Components::CreateTransferDestination, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('destination'), required: true } }
19
19
 
20
- field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
21
- # Total or markup fee.
22
- field :facilitator_fee, Crystalline::Nilable.new(Models::Components::FacilitatorFee), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('facilitatorFee') } }
20
+ field :amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
21
+ # Total or markup fee to apply when creating a transfer.
22
+ field :facilitator_fee, Crystalline::Nilable.new(Models::Components::CreateTransferFacilitatorFee), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('facilitatorFee') } }
23
23
  # An optional description of the transfer that is used on receipts and for your own internal use.
24
24
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
25
25
  # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
@@ -31,9 +31,11 @@ module Moov
31
31
  field :line_items, Crystalline::Nilable.new(Models::Components::CreateTransferLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
32
32
 
33
33
  field :amount_details, Crystalline::Nilable.new(Models::Components::CreateTransferAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
34
+ # Indicates which party bears fees for the transfer, keyed by fee type.
35
+ field :fee_paid_by, Crystalline::Nilable.new(Models::Components::TransferFeePaidBy), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feePaidBy') } }
34
36
 
35
- sig { params(source: Models::Components::CreateTransferSource, destination: Models::Components::CreateTransferDestination, amount: Models::Components::Amount, facilitator_fee: T.nilable(Models::Components::FacilitatorFee), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::CreateTransferLineItems), amount_details: T.nilable(Models::Components::CreateTransferAmountDetails)).void }
36
- def initialize(source:, destination:, amount:, facilitator_fee: nil, description: nil, metadata: nil, foreign_id: nil, line_items: nil, amount_details: nil)
37
+ sig { params(source: Models::Components::CreateTransferSource, destination: Models::Components::CreateTransferDestination, amount: Models::Components::AmountDecimal, facilitator_fee: T.nilable(Models::Components::CreateTransferFacilitatorFee), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::CreateTransferLineItems), amount_details: T.nilable(Models::Components::CreateTransferAmountDetails), fee_paid_by: T.nilable(Models::Components::TransferFeePaidBy)).void }
38
+ def initialize(source:, destination:, amount:, facilitator_fee: nil, description: nil, metadata: nil, foreign_id: nil, line_items: nil, amount_details: nil, fee_paid_by: nil)
37
39
  @source = source
38
40
  @destination = destination
39
41
  @amount = amount
@@ -43,6 +45,7 @@ module Moov
43
45
  @foreign_id = foreign_id
44
46
  @line_items = line_items
45
47
  @amount_details = amount_details
48
+ @fee_paid_by = fee_paid_by
46
49
  end
47
50
 
48
51
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -57,6 +60,7 @@ module Moov
57
60
  return false unless @foreign_id == other.foreign_id
58
61
  return false unless @line_items == other.line_items
59
62
  return false unless @amount_details == other.amount_details
63
+ return false unless @fee_paid_by == other.fee_paid_by
60
64
  true
61
65
  end
62
66
  end
@@ -26,4 +26,6 @@ class Moov::Models::Components::CreateTransfer
26
26
  def line_items=(str_); end
27
27
  def amount_details(); end
28
28
  def amount_details=(str_); end
29
+ def fee_paid_by(); end
30
+ def fee_paid_by=(str_); end
29
31
  end
@@ -0,0 +1,36 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+ # Total or markup fee to apply when creating a transfer.
11
+ class CreateTransferFacilitatorFee
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Total facilitator fee. Only either `total` or `markup` can be set.
16
+ field :total, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('total') } }
17
+ # Markup facilitator fee. Only either `total` or `markup` can be set.
18
+ field :markup, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('markup') } }
19
+
20
+ sig { params(total: T.nilable(Models::Components::AmountDecimal), markup: T.nilable(Models::Components::AmountDecimal)).void }
21
+ def initialize(total: nil, markup: nil)
22
+ @total = total
23
+ @markup = markup
24
+ end
25
+
26
+ sig { params(other: T.untyped).returns(T::Boolean) }
27
+ def ==(other)
28
+ return false unless other.is_a? self.class
29
+ return false unless @total == other.total
30
+ return false unless @markup == other.markup
31
+ true
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::CreateTransferFacilitatorFee
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::CreateTransferFacilitatorFee
11
+ def total(); end
12
+ def total=(str_); end
13
+ def markup(); end
14
+ def markup=(str_); end
15
+ end
@@ -17,9 +17,9 @@ module Moov
17
17
 
18
18
  field :destination, Models::Components::SourceDestinationOptions, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('destination'), required: true } }
19
19
 
20
- field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
20
+ field :amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
21
21
 
22
- sig { params(source: Models::Components::SourceDestinationOptions, destination: Models::Components::SourceDestinationOptions, amount: Models::Components::Amount).void }
22
+ sig { params(source: Models::Components::SourceDestinationOptions, destination: Models::Components::SourceDestinationOptions, amount: Models::Components::AmountDecimal).void }
23
23
  def initialize(source:, destination:, amount:)
24
24
  @source = source
25
25
  @destination = destination
@@ -0,0 +1,19 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+ # FeePaidBy - Indicates which party to a money movement bears an incurred fee.
11
+ class FeePaidBy < T::Enum
12
+ enums do
13
+ SOURCE = new('source')
14
+ DESTINATION = new('destination')
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -2,10 +2,10 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
 
5
- class Moov::Models::Components::ACHTransactionStatus
5
+ class Moov::Models::Components::FeePaidBy
6
6
  extend ::Crystalline::MetadataFields::ClassMethods
7
7
  end
8
8
 
9
9
 
10
- class Moov::Models::Components::ACHTransactionStatus
10
+ class Moov::Models::Components::FeePaidBy
11
11
  end
@@ -45,10 +45,10 @@ module Moov
45
45
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
46
46
  # Billing address associated with the card.
47
47
  field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
48
+ # Spend controls applied to an issued card, including velocity runtime state.
49
+ field :controls, Crystalline::Nilable.new(Models::Components::IssuedControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
48
50
 
49
- field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
50
-
51
- sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
51
+ sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuedControls)).void }
52
52
  def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, pan:, cvv:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
53
53
  @issued_card_id = issued_card_id
54
54
  @brand = brand
@@ -30,9 +30,11 @@ module Moov
30
30
  field :fee_group, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feeGroup') } }
31
31
  # Unique identifier for this residual payment calculation.
32
32
  field :residual_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('residualID') } }
33
+ # Indicates which party to the money movement bore this fee.
34
+ field :fee_paid_by, Crystalline::Nilable.new(Models::Components::FeePaidBy), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feePaidBy'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::FeePaidBy, true) } }
33
35
 
34
- sig { params(fee_id: T.nilable(::String), account_id: T.nilable(::String), wallet_id: T.nilable(::String), created_on: T.nilable(::DateTime), fee_name: T.nilable(::String), amount: T.nilable(Models::Components::AmountDecimal), generated_by: T.nilable(Models::Components::GeneratedBy), fee_group: T.nilable(::String), residual_id: T.nilable(::String)).void }
35
- def initialize(fee_id: nil, account_id: nil, wallet_id: nil, created_on: nil, fee_name: nil, amount: nil, generated_by: nil, fee_group: nil, residual_id: nil)
36
+ sig { params(fee_id: T.nilable(::String), account_id: T.nilable(::String), wallet_id: T.nilable(::String), created_on: T.nilable(::DateTime), fee_name: T.nilable(::String), amount: T.nilable(Models::Components::AmountDecimal), generated_by: T.nilable(Models::Components::GeneratedBy), fee_group: T.nilable(::String), residual_id: T.nilable(::String), fee_paid_by: T.nilable(Models::Components::FeePaidBy)).void }
37
+ def initialize(fee_id: nil, account_id: nil, wallet_id: nil, created_on: nil, fee_name: nil, amount: nil, generated_by: nil, fee_group: nil, residual_id: nil, fee_paid_by: nil)
36
38
  @fee_id = fee_id
37
39
  @account_id = account_id
38
40
  @wallet_id = wallet_id
@@ -42,6 +44,7 @@ module Moov
42
44
  @generated_by = generated_by
43
45
  @fee_group = fee_group
44
46
  @residual_id = residual_id
47
+ @fee_paid_by = fee_paid_by
45
48
  end
46
49
 
47
50
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -56,6 +59,7 @@ module Moov
56
59
  return false unless @generated_by == other.generated_by
57
60
  return false unless @fee_group == other.fee_group
58
61
  return false unless @residual_id == other.residual_id
62
+ return false unless @fee_paid_by == other.fee_paid_by
59
63
  true
60
64
  end
61
65
  end
@@ -26,4 +26,6 @@ class Moov::Models::Components::IncurredFee
26
26
  def fee_group=(str_); end
27
27
  def residual_id(); end
28
28
  def residual_id=(str_); end
29
+ def fee_paid_by(); end
30
+ def fee_paid_by=(str_); end
29
31
  end