moov_ruby 26.10.0.pre.dev.2 → 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.
- checksums.yaml +4 -4
- data/lib/crystalline/module.rb +1 -1
- data/lib/moov/bank_accounts.rb +439 -0
- data/lib/moov/card_issuing.rb +1 -1
- data/lib/moov/images.rb +17 -2
- data/lib/moov/institutions.rb +1 -1
- data/lib/moov/models/components/account.rb +2 -2
- data/lib/moov/models/components/accountnameverification.rb +4 -4
- data/lib/moov/models/components/accounttype.rb +3 -1
- data/lib/moov/models/components/accountverificationstatus.rb +3 -1
- data/lib/moov/models/components/achcredittransferprocessingdetails.rb +6 -2
- data/lib/moov/models/components/achcredittransferprocessingdetails.rbi +2 -0
- data/lib/moov/models/components/achdebitoptions.rb +2 -2
- data/lib/moov/models/components/achdebittransferprocessingdetails.rb +6 -2
- data/lib/moov/models/components/achdebittransferprocessingdetails.rbi +2 -0
- data/lib/moov/models/components/achreturncode.rb +3 -1
- data/lib/moov/models/components/achtransactionstatus.rb +26 -0
- data/lib/moov/models/components/achtransactionstatus.rbi +11 -0
- data/lib/moov/models/components/adjustmentfees.rb +11 -15
- data/lib/moov/models/components/adjustmentfees.rbi +4 -4
- data/lib/moov/models/components/amountdecimalrange.rb +0 -2
- data/lib/moov/models/components/amountdecimalrangeupdate.rb +0 -2
- data/lib/moov/models/components/applepayresponse.rb +2 -2
- data/lib/moov/models/components/applicationscope.rb +4 -2
- data/lib/moov/models/components/asynccreatedrefund.rb +1 -1
- data/lib/moov/models/components/authmethod.rb +3 -1
- data/lib/moov/models/components/bankaccount.rb +4 -4
- data/lib/moov/models/components/bankaccountattestation.rb +52 -0
- data/lib/moov/models/components/bankaccountattestation.rbi +23 -0
- data/lib/moov/models/components/bankaccountattestationeligibility.rb +36 -0
- data/lib/moov/models/components/bankaccountattestationeligibility.rbi +15 -0
- data/lib/moov/models/components/bankaccountattestationsummary.rb +44 -0
- data/lib/moov/models/components/bankaccountattestationsummary.rbi +19 -0
- data/lib/moov/models/components/bankaccountexception.rb +2 -2
- data/lib/moov/models/components/bankaccountholdertype.rb +3 -1
- data/lib/moov/models/components/bankaccountintegration.rb +2 -2
- data/lib/moov/models/components/bankaccountstatus.rb +3 -1
- data/lib/moov/models/components/bankaccountstatusreason.rb +3 -1
- data/lib/moov/models/components/bankaccounttype.rb +3 -1
- data/lib/moov/models/components/bankaccountverification.rb +2 -2
- data/lib/moov/models/components/bankaccountverificationcreated.rb +2 -2
- data/lib/moov/models/components/bankaccountverificationmethod.rb +3 -1
- data/lib/moov/models/components/bankaccountverificationstatus.rb +3 -1
- data/lib/moov/models/components/basicpaymentmethod.rb +1 -1
- data/lib/moov/models/components/billablefee.rb +2 -2
- data/lib/moov/models/components/billingadjustment.rb +40 -0
- data/lib/moov/models/components/billingadjustment.rbi +17 -0
- data/lib/moov/models/components/billingsummary.rb +8 -4
- data/lib/moov/models/components/billingsummary.rbi +2 -0
- data/lib/moov/models/components/billingsummary_adjustmentfees.rb +40 -0
- data/lib/moov/models/components/billingsummary_adjustmentfees.rbi +15 -0
- data/lib/moov/models/components/businesspresence.rb +3 -1
- data/lib/moov/models/components/businessprofile.rb +2 -2
- data/lib/moov/models/components/businesstype.rb +3 -1
- data/lib/moov/models/components/calltoaction.rb +3 -1
- data/lib/moov/models/components/cancellation.rb +2 -2
- data/lib/moov/models/components/cancellationstatus.rb +3 -1
- data/lib/moov/models/components/capability.rb +2 -2
- data/lib/moov/models/components/capabilityid.rb +3 -1
- data/lib/moov/models/components/capabilitystatus.rb +3 -1
- data/lib/moov/models/components/capture.rb +11 -6
- data/lib/moov/models/components/capture.rbi +2 -0
- data/lib/moov/models/components/capturestatus.rb +3 -3
- data/lib/moov/models/components/card.rb +4 -4
- data/lib/moov/models/components/cardaccountupdater.rb +1 -1
- data/lib/moov/models/components/cardacquiringmodel.rb +3 -1
- data/lib/moov/models/components/cardacquiringrefund.rb +2 -2
- data/lib/moov/models/components/cardbrand.rb +3 -1
- data/lib/moov/models/components/cardissuing.rb +34 -0
- data/lib/moov/models/components/cardissuing.rbi +13 -0
- data/lib/moov/models/components/cardissuingerror.rb +32 -0
- data/lib/moov/models/components/cardissuingerror.rbi +13 -0
- data/lib/moov/models/components/cardissuingnetwork.rb +3 -1
- data/lib/moov/models/components/cardmetadata.rb +4 -4
- data/lib/moov/models/components/cardpaymentoptions.rb +1 -1
- data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rb +1 -1
- data/lib/moov/models/components/cardpaymenttransactionstatus.rb +25 -0
- data/lib/moov/models/components/cardpaymenttransactionstatus.rbi +11 -0
- data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rb +11 -7
- data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rbi +4 -2
- data/lib/moov/models/components/cardtransactionfailurecode.rb +19 -1
- data/lib/moov/models/components/cardtype.rb +3 -1
- data/lib/moov/models/components/cardupdatereason.rb +3 -1
- data/lib/moov/models/components/cardverification.rb +3 -3
- data/lib/moov/models/components/cardverificationresult.rb +3 -1
- data/lib/moov/models/components/collectfundscardpayments.rb +1 -1
- data/lib/moov/models/components/collectionpaymentmethodtype.rb +3 -1
- data/lib/moov/models/components/createaccount.rb +2 -2
- data/lib/moov/models/components/createaccounttype.rb +3 -1
- data/lib/moov/models/components/createbankaccountattestation.rb +36 -0
- data/lib/moov/models/components/createbankaccountattestation.rbi +15 -0
- data/lib/moov/models/components/createbusinessprofile.rb +2 -2
- data/lib/moov/models/components/createcancellation.rb +4 -2
- data/lib/moov/models/components/createcapture.rb +7 -4
- data/lib/moov/models/components/createdtransfer.rb +9 -5
- data/lib/moov/models/components/createevidencetext.rb +1 -1
- data/lib/moov/models/components/createfeeplanagreement.rb +13 -3
- data/lib/moov/models/components/createfeeplanagreement.rbi +2 -0
- data/lib/moov/models/components/createpaymentlink.rb +1 -1
- data/lib/moov/models/components/createrefund.rb +2 -2
- data/lib/moov/models/components/createreversal.rb +4 -1
- data/lib/moov/models/components/createsweepconfig.rb +1 -1
- data/lib/moov/models/components/createterminalapplication.rb +1 -1
- data/lib/moov/models/components/createtippresets.rb +1 -1
- data/lib/moov/models/components/createtransfer.rb +1 -1
- data/lib/moov/models/components/createtransferdestination.rb +6 -2
- data/lib/moov/models/components/createtransferdestination.rbi +2 -0
- data/lib/moov/models/components/createtransferdestinationwire.rb +32 -0
- data/lib/moov/models/components/createtransferdestinationwire.rbi +13 -0
- data/lib/moov/models/components/createtransfersourceach.rb +2 -2
- data/lib/moov/models/components/createtransfersourcecard.rb +1 -1
- data/lib/moov/models/components/createwebhook.rb +1 -1
- data/lib/moov/models/components/debitholdperiod.rb +3 -1
- data/lib/moov/models/components/depositaccountingestedresponse.rb +1 -1
- data/lib/moov/models/components/disbursementpaymentmethodtype.rb +3 -1
- data/lib/moov/models/components/dispute.rb +2 -2
- data/lib/moov/models/components/disputeevidenceresponse.rb +1 -1
- data/lib/moov/models/components/disputephase.rb +3 -1
- data/lib/moov/models/components/disputestatus.rb +3 -1
- data/lib/moov/models/components/document.rb +1 -1
- data/lib/moov/models/components/documenttype.rb +3 -1
- data/lib/moov/models/components/domesticpullfromcard.rb +3 -1
- data/lib/moov/models/components/domesticpushtocard.rb +3 -1
- data/lib/moov/models/components/estimatedactivity.rb +1 -1
- data/lib/moov/models/components/evidencetextresponse.rb +1 -1
- data/lib/moov/models/components/evidencetype.rb +3 -1
- data/lib/moov/models/components/evidenceuploadresponse.rb +1 -1
- data/lib/moov/models/components/facilitatorfee.rb +6 -17
- data/lib/moov/models/components/facilitatorfee.rbi +0 -4
- data/lib/moov/models/components/feecategory.rb +3 -1
- data/lib/moov/models/components/feemodel.rb +3 -1
- data/lib/moov/models/components/feepaidby.rb +4 -2
- data/lib/moov/models/components/feeplan.rb +1 -1
- data/lib/moov/models/components/feeplanagreement.rb +12 -4
- data/lib/moov/models/components/feeplanagreement.rbi +4 -0
- data/lib/moov/models/components/feeplanagreementstatus.rb +3 -1
- data/lib/moov/models/components/filedetails.rb +2 -2
- data/lib/moov/models/components/filepurpose.rb +3 -1
- data/lib/moov/models/components/filestatus.rb +3 -1
- data/lib/moov/models/components/fulfillment.rb +2 -2
- data/lib/moov/models/components/fulfillmentdetails.rb +1 -1
- data/lib/moov/models/components/fulfillmentmethod.rb +3 -1
- data/lib/moov/models/components/fulfillmenttimeframe.rb +3 -1
- data/lib/moov/models/components/fullissuedcard.rb +3 -2
- data/lib/moov/models/components/geographicreach.rb +3 -1
- data/lib/moov/models/components/googlepayresponse.rb +3 -3
- data/lib/moov/models/components/incurredfee.rb +1 -1
- data/lib/moov/models/components/instantbankcredittransferprocessingdetails.rb +8 -4
- data/lib/moov/models/components/instantbankcredittransferprocessingdetails.rbi +2 -0
- data/lib/moov/models/components/instantbankfailurecode.rb +3 -1
- data/lib/moov/models/components/instantbanknetwork.rb +3 -1
- data/lib/moov/models/components/instantbanktransactionstatus.rb +23 -0
- data/lib/moov/models/components/instantbanktransactionstatus.rbi +11 -0
- data/lib/moov/models/components/invoice.rb +1 -1
- data/lib/moov/models/components/invoicepayment.rb +1 -1
- data/lib/moov/models/components/invoicepaymenttype.rb +3 -1
- data/lib/moov/models/components/invoicestatus.rb +3 -1
- data/lib/moov/models/components/issuedcard.rb +3 -2
- data/lib/moov/models/components/issuedcardauthorization.rb +2 -2
- data/lib/moov/models/components/issuedcardauthorizationevent.rb +2 -2
- data/lib/moov/models/components/issuedcardauthorizationeventresult.rb +3 -1
- data/lib/moov/models/components/issuedcardeventtype.rb +3 -1
- data/lib/moov/models/components/issuedcardstate.rb +5 -1
- data/lib/moov/models/components/issuedcontrols.rb +2 -2
- data/lib/moov/models/components/issuedvelocitylimit.rb +1 -1
- data/lib/moov/models/components/issuingauthorizationstatus.rb +3 -1
- data/lib/moov/models/components/issuingcontrols.rb +3 -3
- data/lib/moov/models/components/issuingcontrols_allowedschedule.rb +1 -1
- data/lib/moov/models/components/issuingcontrolsrestrictionmode.rb +4 -2
- data/lib/moov/models/components/issuingintervallimit.rb +3 -1
- data/lib/moov/models/components/issuingmerchantcategory.rb +3 -1
- data/lib/moov/models/components/issuingvelocitylimit.rb +1 -1
- data/lib/moov/models/components/jsonwebkey.rb +1 -1
- data/lib/moov/models/components/linkedapplepaypaymentmethod.rb +1 -1
- data/lib/moov/models/components/linkedgooglepaypaymentmethod.rb +1 -1
- data/lib/moov/models/components/merchantcategory.rb +1 -1
- data/lib/moov/models/components/merchantcategoryrestrictions.rb +3 -3
- data/lib/moov/models/components/merchantentry.rb +6 -6
- data/lib/moov/models/components/merchantentry.rbi +2 -2
- data/lib/moov/models/components/merchantentryerror.rb +5 -5
- data/lib/moov/models/components/merchantentryerror.rbi +2 -2
- data/lib/moov/models/components/merchantrestrictions.rb +2 -2
- data/lib/moov/models/components/mode.rb +3 -1
- data/lib/moov/models/components/monthlyvolumerange.rb +3 -1
- data/lib/moov/models/components/moovfee.rb +1 -1
- data/lib/moov/models/components/occurrencesresponse.rb +2 -2
- data/lib/moov/models/components/occurrencestatus.rb +3 -1
- data/lib/moov/models/components/onboardingpartneraccount.rb +1 -1
- data/lib/moov/models/components/partnerpricingagreement.rb +15 -7
- data/lib/moov/models/components/partnerpricingagreement.rbi +4 -0
- data/lib/moov/models/components/patchbusiness.rb +2 -2
- data/lib/moov/models/components/patchwallet.rb +1 -1
- data/lib/moov/models/components/paymentlink.rb +4 -6
- data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rb +0 -2
- data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rb +0 -2
- data/lib/moov/models/components/paymentlinkdisplayoptions.rb +1 -1
- data/lib/moov/models/components/paymentlinkdisplayoptionsupdate.rb +1 -1
- data/lib/moov/models/components/paymentlinkpayoutdetails.rb +5 -7
- data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +5 -7
- data/lib/moov/models/components/paymentlinkstatus.rb +3 -1
- data/lib/moov/models/components/paymentlinktype.rb +3 -1
- data/lib/moov/models/components/paymentmethodsbankaccount.rb +3 -3
- data/lib/moov/models/components/paymentmethodscard.rb +4 -4
- data/lib/moov/models/components/paymentmethodswallet.rb +1 -1
- data/lib/moov/models/components/paymentmethodtype.rb +4 -1
- data/lib/moov/models/components/pendinglitigation.rb +3 -1
- data/lib/moov/models/components/primaryregulator.rb +3 -1
- data/lib/moov/models/components/pullfromcardoptions.rb +1 -1
- data/lib/moov/models/components/pullfromcardtransactionstatus.rb +22 -0
- data/lib/moov/models/components/pullfromcardtransactionstatus.rbi +11 -0
- data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rb +7 -3
- data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rbi +2 -0
- data/lib/moov/models/components/pushdeliveryspeed.rb +3 -1
- data/lib/moov/models/components/pushoptions.rb +5 -4
- data/lib/moov/models/components/pushoptionsupdate.rb +5 -4
- data/lib/moov/models/components/pushtocardtransactionstatus.rb +24 -0
- data/lib/moov/models/components/pushtocardtransactionstatus.rbi +11 -0
- data/lib/moov/models/components/pushtocardtransferprocessingdetails.rb +7 -3
- data/lib/moov/models/components/pushtocardtransferprocessingdetails.rbi +2 -0
- data/lib/moov/models/components/puttippresets.rb +1 -1
- data/lib/moov/models/components/refundpolicy.rb +3 -1
- data/lib/moov/models/components/refundstatus.rb +3 -1
- data/lib/moov/models/components/requestcard.rb +1 -1
- data/lib/moov/models/components/requirementerror.rb +2 -2
- data/lib/moov/models/components/requirementerrorcode.rb +3 -1
- data/lib/moov/models/components/requirementid.rb +18 -1
- data/lib/moov/models/components/resolutionlink.rb +1 -1
- data/lib/moov/models/components/resolutionlinkstatus.rb +3 -1
- data/lib/moov/models/components/returnpolicytype.rb +3 -1
- data/lib/moov/models/components/reversalamountdetails.rb +3 -1
- data/lib/moov/models/components/reversedwithcancellation.rb +1 -1
- data/lib/moov/models/components/rtprejectioncode.rb +3 -1
- data/lib/moov/models/components/schedulelistresponse.rb +1 -1
- data/lib/moov/models/components/scheduleresponse.rb +1 -1
- data/lib/moov/models/components/seccode.rb +3 -1
- data/lib/moov/models/components/sourcesystem.rb +3 -1
- data/lib/moov/models/components/statement.rb +6 -2
- data/lib/moov/models/components/statement.rbi +2 -0
- data/lib/moov/models/components/sweep.rb +1 -1
- data/lib/moov/models/components/sweepconfig.rb +3 -3
- data/lib/moov/models/components/sweepconfigpaymentmethod.rb +1 -1
- data/lib/moov/models/components/sweepconfigstatus.rb +3 -1
- data/lib/moov/models/components/sweepstatus.rb +3 -1
- data/lib/moov/models/components/sweepsubtotal.rb +1 -1
- data/lib/moov/models/components/terminalapplication.rb +2 -2
- data/lib/moov/models/components/terminalapplicationplatform.rb +3 -1
- data/lib/moov/models/components/terminalapplicationstatus.rb +3 -1
- data/lib/moov/models/components/terminalcard.rb +2 -2
- data/lib/moov/models/components/ticket.rb +1 -1
- data/lib/moov/models/components/ticketstatus.rb +3 -1
- data/lib/moov/models/components/tipcalculationbasis.rb +3 -1
- data/lib/moov/models/components/tippresets.rb +1 -1
- data/lib/moov/models/components/transactionsource.rb +3 -1
- data/lib/moov/models/components/transfer.rb +9 -5
- data/lib/moov/models/components/transferauthorization.rb +7 -7
- data/lib/moov/models/components/transferdestination.rb +1 -1
- data/lib/moov/models/components/transferfailurereason.rb +3 -1
- data/lib/moov/models/components/transferfeepaidby.rb +2 -2
- data/lib/moov/models/components/transferoptions.rb +3 -3
- data/lib/moov/models/components/transferparty.rb +3 -1
- data/lib/moov/models/components/transferpaymentmethodsbankaccount.rb +3 -3
- data/lib/moov/models/components/transferpaymentmethodscard.rb +4 -4
- data/lib/moov/models/components/transferpaymentmethodswallet.rb +1 -1
- data/lib/moov/models/components/transferpaymentmethodtype.rb +4 -1
- data/lib/moov/models/components/transferprocessingdetails.rb +6 -2
- data/lib/moov/models/components/transferprocessingdetails.rbi +2 -0
- data/lib/moov/models/components/transferrailoptions.rb +6 -2
- data/lib/moov/models/components/transferrailoptions.rbi +2 -0
- data/lib/moov/models/components/transfersource.rb +1 -1
- data/lib/moov/models/components/transferstatus.rb +3 -1
- data/lib/moov/models/components/transferterminalcard.rb +2 -2
- data/lib/moov/models/components/transfertype.rb +4 -1
- data/lib/moov/models/components/underwriting.rb +12 -6
- data/lib/moov/models/components/underwriting.rbi +2 -0
- data/lib/moov/models/components/underwritingstatus.rb +3 -1
- data/lib/moov/models/components/updateevidence.rb +1 -1
- data/lib/moov/models/components/updateinvoice.rb +1 -1
- data/lib/moov/models/components/updateissuedcard.rb +2 -0
- data/lib/moov/models/components/updateissuedcardstate.rb +4 -0
- data/lib/moov/models/components/updateissuingcontrols.rb +5 -5
- data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rb +1 -1
- data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rb +3 -3
- data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rb +3 -3
- data/lib/moov/models/components/updatepaymentlink.rb +1 -1
- data/lib/moov/models/components/updatewebhook.rb +1 -1
- data/lib/moov/models/components/upsertunderwriting.rb +11 -5
- data/lib/moov/models/components/upsertunderwriting.rbi +2 -0
- data/lib/moov/models/components/use.rb +3 -1
- data/lib/moov/models/components/verification.rb +3 -3
- data/lib/moov/models/components/verificationstatus.rb +3 -1
- data/lib/moov/models/components/verificationstatusdetail.rb +3 -1
- data/lib/moov/models/components/wallet.rb +2 -2
- data/lib/moov/models/components/walletstatus.rb +3 -1
- data/lib/moov/models/components/wallettransaction.rb +3 -3
- data/lib/moov/models/components/wallettransactionsourcetype.rb +3 -1
- data/lib/moov/models/components/wallettransactionstatus.rb +3 -1
- data/lib/moov/models/components/wallettransactiontype.rb +4 -1
- data/lib/moov/models/components/wallettype.rb +3 -1
- data/lib/moov/models/components/webhook.rb +1 -1
- data/lib/moov/models/components/webhookdatabankaccountcreated.rb +1 -1
- data/lib/moov/models/components/webhookdatabankaccountdeleted.rb +1 -1
- data/lib/moov/models/components/webhookdatabankaccountupdated.rb +2 -2
- data/lib/moov/models/components/webhookdatacancellationcreated.rb +1 -1
- data/lib/moov/models/components/webhookdatacancellationupdated.rb +1 -1
- data/lib/moov/models/components/webhookdatacapabilityrequested.rb +1 -1
- data/lib/moov/models/components/webhookdatacapabilityupdated.rb +2 -2
- data/lib/moov/models/components/webhookdatacaptureupdated.rb +44 -0
- data/lib/moov/models/components/webhookdatacaptureupdated.rbi +19 -0
- data/lib/moov/models/components/webhookdatacardautoupdated.rb +1 -1
- data/lib/moov/models/components/webhookdatadisputecreated.rb +2 -2
- data/lib/moov/models/components/webhookdatadisputeupdated.rb +2 -2
- data/lib/moov/models/components/webhookdatainvoiceupdated.rb +1 -1
- data/lib/moov/models/components/webhookdatarefundupdated.rb +1 -1
- data/lib/moov/models/components/webhookdatasweepupdated.rb +1 -1
- data/lib/moov/models/components/webhookdataterminalapplicationcreated.rb +1 -1
- data/lib/moov/models/components/webhookdataterminalapplicationupdated.rb +1 -1
- data/lib/moov/models/components/webhookdataticketupdated.rb +1 -1
- data/lib/moov/models/components/webhookdatatransferstatus.rb +1 -0
- data/lib/moov/models/components/webhookdatawallettransactionupdated.rb +1 -1
- data/lib/moov/models/components/webhookdatawalletupdated.rb +1 -1
- data/lib/moov/models/components/webhookevent.rb +3 -3
- data/lib/moov/models/components/webhookeventtype.rb +4 -1
- data/lib/moov/models/components/webhookstatus.rb +3 -1
- data/lib/moov/models/components/wirecreditpaymentmethod.rb +40 -0
- data/lib/moov/models/components/wirecreditpaymentmethod.rbi +17 -0
- data/lib/moov/models/components/wirecreditpaymentmethod_paymentmethodtype.rb +18 -0
- data/lib/moov/models/components/wirecreditpaymentmethod_paymentmethodtype.rbi +11 -0
- data/lib/moov/models/components/wirecredittransferpaymentmethod.rb +40 -0
- data/lib/moov/models/components/wirecredittransferpaymentmethod.rbi +17 -0
- data/lib/moov/models/components/wirecredittransferpaymentmethod_paymentmethodtype.rb +18 -0
- data/lib/moov/models/components/wirecredittransferpaymentmethod_paymentmethodtype.rbi +11 -0
- data/lib/moov/models/components/wirefailurecode.rb +28 -0
- data/lib/moov/models/components/wirefailurecode.rbi +11 -0
- data/lib/moov/models/components/wireoptions.rb +32 -0
- data/lib/moov/models/components/wireoptions.rbi +13 -0
- data/lib/moov/models/components/wiretransactionstatus.rb +23 -0
- data/lib/moov/models/components/wiretransactionstatus.rbi +11 -0
- data/lib/moov/models/components/wiretransferprocessingdetails.rb +40 -0
- data/lib/moov/models/components/wiretransferprocessingdetails.rbi +17 -0
- data/lib/moov/models/components.rb +24 -1
- data/lib/moov/models/errors/bankaccountattestationvalidationerror.rb +40 -0
- data/lib/moov/models/errors/bankaccountattestationvalidationerror.rbi +17 -0
- data/lib/moov/models/errors/cardacquiringrefund_error.rb +2 -2
- data/lib/moov/models/errors/imagemetadata_error.rb +61 -0
- data/lib/moov/models/errors/imagemetadata_error.rbi +27 -0
- data/lib/moov/models/errors/transfer_error.rb +9 -5
- data/lib/moov/models/errors/upsertunderwritingerror.rb +6 -2
- data/lib/moov/models/errors/upsertunderwritingerror.rbi +2 -0
- data/lib/moov/models/errors.rb +2 -0
- data/lib/moov/models/operations/createbankaccountattestation_request.rb +40 -0
- data/lib/moov/models/operations/createbankaccountattestation_request.rbi +17 -0
- data/lib/moov/models/operations/createbankaccountattestation_response.rb +48 -0
- data/lib/moov/models/operations/createbankaccountattestation_response.rbi +21 -0
- data/lib/moov/models/operations/createcapture_request.rb +2 -2
- data/lib/moov/models/operations/getbankaccountattestationeligibility_request.rb +41 -0
- data/lib/moov/models/operations/getbankaccountattestationeligibility_request.rbi +17 -0
- data/lib/moov/models/operations/getbankaccountattestationeligibility_response.rb +48 -0
- data/lib/moov/models/operations/getbankaccountattestationeligibility_response.rbi +21 -0
- data/lib/moov/models/operations/getcapture_request.rb +2 -2
- data/lib/moov/models/operations/getpaymentmethod_response.rb +2 -2
- data/lib/moov/models/operations/listaccounts_request.rb +1 -1
- data/lib/moov/models/operations/listbankaccountattestations_request.rb +36 -0
- data/lib/moov/models/operations/listbankaccountattestations_request.rbi +15 -0
- data/lib/moov/models/operations/listbankaccountattestations_response.rb +48 -0
- data/lib/moov/models/operations/listbankaccountattestations_response.rbi +21 -0
- data/lib/moov/models/operations/listcaptures_request.rb +2 -2
- data/lib/moov/models/operations/listconnectedaccountsforaccount_request.rb +1 -1
- data/lib/moov/models/operations/listdisputes_request.rb +1 -1
- data/lib/moov/models/operations/listfeeplanagreements_request.rb +1 -1
- data/lib/moov/models/operations/listfeerevenue_request.rb +1 -1
- data/lib/moov/models/operations/listinvoices_request.rb +1 -1
- data/lib/moov/models/operations/listissuedcardauthorizationevents_request.rb +1 -1
- data/lib/moov/models/operations/listissuedcardauthorizations_request.rb +1 -1
- data/lib/moov/models/operations/listissuedcards_request.rb +1 -1
- data/lib/moov/models/operations/listissuedcardtransactions_request.rb +7 -3
- data/lib/moov/models/operations/listissuedcardtransactions_request.rbi +2 -0
- data/lib/moov/models/operations/listpartnerpricingagreements_request.rb +1 -1
- data/lib/moov/models/operations/listpaymentlinks_request.rb +1 -1
- data/lib/moov/models/operations/listpaymentmethods_response.rb +2 -2
- data/lib/moov/models/operations/listproducts_request.rb +1 -1
- data/lib/moov/models/operations/listresidualfees_request.rb +1 -1
- data/lib/moov/models/operations/listresiduals_request.rb +1 -1
- data/lib/moov/models/operations/listschedules_request.rb +1 -1
- data/lib/moov/models/operations/liststatements_request.rb +1 -1
- data/lib/moov/models/operations/listsweeps_request.rb +1 -1
- data/lib/moov/models/operations/listtickets_request.rb +1 -1
- data/lib/moov/models/operations/listtransfers_request.rb +4 -8
- data/lib/moov/models/operations/listtransfers_request.rbi +0 -2
- data/lib/moov/models/operations/listwallets_request.rb +1 -1
- data/lib/moov/models/operations/listwallettransactions_request.rb +1 -1
- data/lib/moov/models/operations/retrievefees_request.rb +1 -1
- data/lib/moov/models/operations.rb +6 -0
- data/lib/moov/payment_methods.rb +2 -2
- data/lib/moov/sdkconfiguration.rb +3 -3
- data/lib/moov/transfers.rb +16 -9
- data/lib/moov/utils/retries.rb +41 -2
- data/lib/moov/utils/utils.rb +6 -2
- metadata +64 -2
|
@@ -15,7 +15,7 @@ module Moov
|
|
|
15
15
|
|
|
16
16
|
field :wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('walletID'), required: true } }
|
|
17
17
|
|
|
18
|
-
field :status, Models::Components::SweepConfigStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.
|
|
18
|
+
field :status, Models::Components::SweepConfigStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::SweepConfigStatus, false) } }
|
|
19
19
|
# ID of the payment method.
|
|
20
20
|
field :push_payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pushPaymentMethodID'), required: true } }
|
|
21
21
|
# ID of the payment method.
|
|
@@ -13,7 +13,7 @@ module Moov
|
|
|
13
13
|
include Crystalline::MetadataFields
|
|
14
14
|
|
|
15
15
|
# Platform of the terminal application.
|
|
16
|
-
field :platform, Models::Components::TerminalApplicationPlatform, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('platform'), required: true, 'decoder': ::Moov::Utils.
|
|
16
|
+
field :platform, Models::Components::TerminalApplicationPlatform, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('platform'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::TerminalApplicationPlatform, false) } }
|
|
17
17
|
# The app bundle identifier of the terminal application. Required if platform is `ios`.
|
|
18
18
|
field :app_bundle_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('appBundleID') } }
|
|
19
19
|
# The app package name of the terminal application. Required if platform is `android`.
|
|
@@ -15,7 +15,7 @@ module Moov
|
|
|
15
15
|
# Defines which amount should be used when calculating the final payment total. This calculation applies for percentage tip values.
|
|
16
16
|
# - `pre-tax`: Tip amounts are calculated using the subtotal amount before taxes
|
|
17
17
|
# - `post-tax`: Tip amounts are calculated using the subtotal amount + taxes
|
|
18
|
-
field :calculation_basis, Crystalline::Nilable.new(Models::Components::TipCalculationBasis), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('calculationBasis'), 'decoder': ::Moov::Utils.
|
|
18
|
+
field :calculation_basis, Crystalline::Nilable.new(Models::Components::TipCalculationBasis), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('calculationBasis'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::TipCalculationBasis, true) } }
|
|
19
19
|
# Defines the set of suggested tip preset values presented to customers. Percentages must be between 0 and 100 (exclusive) and must be unique. A maximum of 3 values are allowed.
|
|
20
20
|
field :percentage_options, Crystalline::Nilable.new(Crystalline::Array.new(::Integer)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('percentageOptions') } }
|
|
21
21
|
# Defines the set of suggested tip preset values presented to customers. Fixed amounts must be positive and unique. A maximum of 3 values are allowed.
|
|
@@ -31,7 +31,7 @@ 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
|
|
34
|
+
# Indicates which party bears fees for a transfer, keyed by fee type.
|
|
35
35
|
field :fee_paid_by, Crystalline::Nilable.new(Models::Components::TransferFeePaidBy), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feePaidBy') } }
|
|
36
36
|
|
|
37
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 }
|
|
@@ -18,12 +18,15 @@ module Moov
|
|
|
18
18
|
field :card_details, Crystalline::Nilable.new(Models::Components::CreateTransferDestinationCard), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
|
|
19
19
|
|
|
20
20
|
field :ach_details, Crystalline::Nilable.new(Models::Components::CreateTransferDestinationACH), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDetails') } }
|
|
21
|
+
# Wire-specific options supplied when creating a transfer.
|
|
22
|
+
field :wire_details, Crystalline::Nilable.new(Models::Components::CreateTransferDestinationWire), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('wireDetails') } }
|
|
21
23
|
|
|
22
|
-
sig { params(payment_method_id: ::String, card_details: T.nilable(Models::Components::CreateTransferDestinationCard), ach_details: T.nilable(Models::Components::CreateTransferDestinationACH)).void }
|
|
23
|
-
def initialize(payment_method_id:, card_details: nil, ach_details: nil)
|
|
24
|
+
sig { params(payment_method_id: ::String, card_details: T.nilable(Models::Components::CreateTransferDestinationCard), ach_details: T.nilable(Models::Components::CreateTransferDestinationACH), wire_details: T.nilable(Models::Components::CreateTransferDestinationWire)).void }
|
|
25
|
+
def initialize(payment_method_id:, card_details: nil, ach_details: nil, wire_details: nil)
|
|
24
26
|
@payment_method_id = payment_method_id
|
|
25
27
|
@card_details = card_details
|
|
26
28
|
@ach_details = ach_details
|
|
29
|
+
@wire_details = wire_details
|
|
27
30
|
end
|
|
28
31
|
|
|
29
32
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
@@ -32,6 +35,7 @@ module Moov
|
|
|
32
35
|
return false unless @payment_method_id == other.payment_method_id
|
|
33
36
|
return false unless @card_details == other.card_details
|
|
34
37
|
return false unless @ach_details == other.ach_details
|
|
38
|
+
return false unless @wire_details == other.wire_details
|
|
35
39
|
true
|
|
36
40
|
end
|
|
37
41
|
end
|
|
@@ -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
|
+
# Wire-specific options supplied when creating a transfer.
|
|
11
|
+
class CreateTransferDestinationWire
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# Optional beneficiary reference for the wire transfer. Maximum 15 characters.
|
|
16
|
+
field :beneficiary_reference, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('beneficiaryReference') } }
|
|
17
|
+
|
|
18
|
+
sig { params(beneficiary_reference: T.nilable(::String)).void }
|
|
19
|
+
def initialize(beneficiary_reference: nil)
|
|
20
|
+
@beneficiary_reference = beneficiary_reference
|
|
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 @beneficiary_reference == other.beneficiary_reference
|
|
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::CreateTransferDestinationWire
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::CreateTransferDestinationWire
|
|
11
|
+
def beneficiary_reference(); end
|
|
12
|
+
def beneficiary_reference=(str_); end
|
|
13
|
+
end
|
|
@@ -17,9 +17,9 @@ module Moov
|
|
|
17
17
|
# An optional override of the default NACHA company name for a transfer.
|
|
18
18
|
field :originating_company_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('originatingCompanyName') } }
|
|
19
19
|
# An optional override of your default ACH hold period in banking days. The hold period must be longer than or equal to your default setting.
|
|
20
|
-
field :debit_hold_period, Crystalline::Nilable.new(Models::Components::DebitHoldPeriod), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('debitHoldPeriod'), 'decoder': ::Moov::Utils.
|
|
20
|
+
field :debit_hold_period, Crystalline::Nilable.new(Models::Components::DebitHoldPeriod), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('debitHoldPeriod'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::DebitHoldPeriod, true) } }
|
|
21
21
|
# Code used to identify the ACH authorization method.
|
|
22
|
-
field :sec_code, Crystalline::Nilable.new(Models::Components::SECCode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('secCode'), 'decoder': ::Moov::Utils.
|
|
22
|
+
field :sec_code, Crystalline::Nilable.new(Models::Components::SECCode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('secCode'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::SECCode, true) } }
|
|
23
23
|
|
|
24
24
|
field :addenda, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::CreateTransferACHAddendaRecord)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('addenda') } }
|
|
25
25
|
|
|
@@ -18,7 +18,7 @@ module Moov
|
|
|
18
18
|
#
|
|
19
19
|
# Crucial for recurring and merchant-initiated transactions as per card scheme rules.
|
|
20
20
|
# Omit for customer-initiated e-commerce transactions.
|
|
21
|
-
field :transaction_source, Crystalline::Nilable.new(Models::Components::TransactionSource), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('transactionSource'), 'decoder': ::Moov::Utils.
|
|
21
|
+
field :transaction_source, Crystalline::Nilable.new(Models::Components::TransactionSource), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('transactionSource'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::TransactionSource, true) } }
|
|
22
22
|
|
|
23
23
|
sig { params(dynamic_descriptor: T.nilable(::String), transaction_source: T.nilable(Models::Components::TransactionSource)).void }
|
|
24
24
|
def initialize(dynamic_descriptor: nil, transaction_source: nil)
|
|
@@ -15,7 +15,7 @@ module Moov
|
|
|
15
15
|
# The URL where webhook events will be sent.
|
|
16
16
|
field :url, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('url'), required: true } }
|
|
17
17
|
# The status of the webhook.
|
|
18
|
-
field :status, Models::Components::WebhookStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.
|
|
18
|
+
field :status, Models::Components::WebhookStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::WebhookStatus, false) } }
|
|
19
19
|
# The list of event types this webhook should subscribe to.
|
|
20
20
|
field :event_types, Crystalline::Array.new(Models::Components::WebhookEventType), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('eventTypes'), required: true } }
|
|
21
21
|
# A description of the webhook for reference. Can be an empty string.
|
|
@@ -8,12 +8,14 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# DebitHoldPeriod - An optional override of your default ACH hold period in banking days. The hold period must be longer than or equal to your default setting.
|
|
11
|
-
class DebitHoldPeriod
|
|
11
|
+
class DebitHoldPeriod
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
NO_HOLD = new('no-hold')
|
|
14
15
|
ONE_MINUS_DAY = new('1-day')
|
|
15
16
|
TWO_MINUS_DAYS = new('2-days')
|
|
16
17
|
end
|
|
18
|
+
open!
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -15,7 +15,7 @@ module Moov
|
|
|
15
15
|
# The Moov account that owns the deposit view the account was ingested into.
|
|
16
16
|
field :moov_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('moovAccountID'), required: true } }
|
|
17
17
|
# The core banking source system that produced the ingested payload.
|
|
18
|
-
field :source_system, Models::Components::SourceSystem, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sourceSystem'), required: true, 'decoder': ::Moov::Utils.
|
|
18
|
+
field :source_system, Models::Components::SourceSystem, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sourceSystem'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::SourceSystem, false) } }
|
|
19
19
|
# The identifier of the deposit account within the source system.
|
|
20
20
|
field :source_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sourceAccountID'), required: true } }
|
|
21
21
|
# The date and time the deposit account was ingested.
|
|
@@ -8,7 +8,8 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# DisbursementPaymentMethodType - Payment methods allowed for disbursing funds.
|
|
11
|
-
class DisbursementPaymentMethodType
|
|
11
|
+
class DisbursementPaymentMethodType
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
PUSH_TO_CARD = new('push-to-card')
|
|
14
15
|
RTP_CREDIT = new('rtp-credit')
|
|
@@ -17,6 +18,7 @@ module Moov
|
|
|
17
18
|
PUSH_TO_APPLE_PAY = new('push-to-apple-pay')
|
|
18
19
|
PUSH_TO_GOOGLE_PAY = new('push-to-google-pay')
|
|
19
20
|
end
|
|
21
|
+
open!
|
|
20
22
|
end
|
|
21
23
|
end
|
|
22
24
|
end
|
|
@@ -29,9 +29,9 @@ module Moov
|
|
|
29
29
|
# The status of a particular dispute.
|
|
30
30
|
#
|
|
31
31
|
# Read our [disputes guide](https://docs.moov.io/guides/money-movement/accept-payments/card-acceptance/disputes/#dispute-statuses) to learn what each status means.
|
|
32
|
-
field :status, Models::Components::DisputeStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.
|
|
32
|
+
field :status, Models::Components::DisputeStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::DisputeStatus, false) } }
|
|
33
33
|
# The phase of a dispute within the dispute lifecycle.
|
|
34
|
-
field :phase, Models::Components::DisputePhase, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('phase'), required: true, 'decoder': ::Moov::Utils.
|
|
34
|
+
field :phase, Models::Components::DisputePhase, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('phase'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::DisputePhase, false) } }
|
|
35
35
|
|
|
36
36
|
field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
|
|
37
37
|
# Provides detail on the card network's categorization of the dispute.
|
|
@@ -17,7 +17,7 @@ module Moov
|
|
|
17
17
|
|
|
18
18
|
field :dispute_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disputeID'), required: true } }
|
|
19
19
|
|
|
20
|
-
field :evidence_type, Models::Components::EvidenceType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('evidenceType'), required: true, 'decoder': ::Moov::Utils.
|
|
20
|
+
field :evidence_type, Models::Components::EvidenceType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('evidenceType'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::EvidenceType, false) } }
|
|
21
21
|
|
|
22
22
|
field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
|
|
23
23
|
|
|
@@ -8,13 +8,15 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# DisputePhase - The phase of a dispute within the dispute lifecycle.
|
|
11
|
-
class DisputePhase
|
|
11
|
+
class DisputePhase
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
PRE_DISPUTE = new('pre-dispute')
|
|
14
15
|
INQUIRY = new('inquiry')
|
|
15
16
|
CHARGEBACK = new('chargeback')
|
|
16
17
|
UNKNOWN = new('unknown')
|
|
17
18
|
end
|
|
19
|
+
open!
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
22
|
end
|
|
@@ -10,7 +10,8 @@ module Moov
|
|
|
10
10
|
# DisputeStatus - The status of a particular dispute.
|
|
11
11
|
#
|
|
12
12
|
# Read our [disputes guide](https://docs.moov.io/guides/money-movement/accept-payments/card-acceptance/disputes/#dispute-statuses) to learn what each status means.
|
|
13
|
-
class DisputeStatus
|
|
13
|
+
class DisputeStatus
|
|
14
|
+
include ::Crystalline::Enum
|
|
14
15
|
enums do
|
|
15
16
|
RESPONSE_NEEDED = new('response-needed')
|
|
16
17
|
RESOLVED = new('resolved')
|
|
@@ -21,6 +22,7 @@ module Moov
|
|
|
21
22
|
WON = new('won')
|
|
22
23
|
LOST = new('lost')
|
|
23
24
|
end
|
|
25
|
+
open!
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
28
|
end
|
|
@@ -15,7 +15,7 @@ module Moov
|
|
|
15
15
|
|
|
16
16
|
field :document_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('documentID'), required: true } }
|
|
17
17
|
# Types of documents that can be uploaded.
|
|
18
|
-
field :type, Models::Components::DocumentType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('type'), required: true, 'decoder': ::Moov::Utils.
|
|
18
|
+
field :type, Models::Components::DocumentType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('type'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::DocumentType, false) } }
|
|
19
19
|
# The document's MIME type.
|
|
20
20
|
field :content_type, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('contentType'), required: true } }
|
|
21
21
|
|
|
@@ -8,13 +8,15 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# DocumentType - Types of documents that can be uploaded.
|
|
11
|
-
class DocumentType
|
|
11
|
+
class DocumentType
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
DRIVERS_LICENSE = new('driversLicense')
|
|
14
15
|
PASSPORT = new('passport')
|
|
15
16
|
UTILITY_BILL = new('utilityBill')
|
|
16
17
|
BANK_STATEMENT = new('bankStatement')
|
|
17
18
|
end
|
|
19
|
+
open!
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
22
|
end
|
|
@@ -8,12 +8,14 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# DomesticPullFromCard - Indicates if the card supports domestic pull-from-card transfer.
|
|
11
|
-
class DomesticPullFromCard
|
|
11
|
+
class DomesticPullFromCard
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
NOT_SUPPORTED = new('not-supported')
|
|
14
15
|
SUPPORTED = new('supported')
|
|
15
16
|
UNKNOWN = new('unknown')
|
|
16
17
|
end
|
|
18
|
+
open!
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -8,13 +8,15 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# DomesticPushToCard - Indicates which level of domestic push-to-card transfer is supported by the card, if any.
|
|
11
|
-
class DomesticPushToCard
|
|
11
|
+
class DomesticPushToCard
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
NOT_SUPPORTED = new('not-supported')
|
|
14
15
|
STANDARD = new('standard')
|
|
15
16
|
FAST_FUNDS = new('fast-funds')
|
|
16
17
|
UNKNOWN = new('unknown')
|
|
17
18
|
end
|
|
19
|
+
open!
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
22
|
end
|
|
@@ -17,7 +17,7 @@ module Moov
|
|
|
17
17
|
|
|
18
18
|
field :maximum_transaction_amount, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('maximumTransactionAmount') } }
|
|
19
19
|
# The low value in each range is included. The high value in each range is excluded.
|
|
20
|
-
field :monthly_volume_range, Crystalline::Nilable.new(Models::Components::MonthlyVolumeRange), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('monthlyVolumeRange'), 'decoder': ::Moov::Utils.
|
|
20
|
+
field :monthly_volume_range, Crystalline::Nilable.new(Models::Components::MonthlyVolumeRange), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('monthlyVolumeRange'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::MonthlyVolumeRange, true) } }
|
|
21
21
|
|
|
22
22
|
sig { params(average_transaction_amount: T.nilable(::Integer), maximum_transaction_amount: T.nilable(::Integer), monthly_volume_range: T.nilable(Models::Components::MonthlyVolumeRange)).void }
|
|
23
23
|
def initialize(average_transaction_amount: nil, maximum_transaction_amount: nil, monthly_volume_range: nil)
|
|
@@ -17,7 +17,7 @@ module Moov
|
|
|
17
17
|
|
|
18
18
|
field :dispute_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disputeID'), required: true } }
|
|
19
19
|
|
|
20
|
-
field :evidence_type, Models::Components::EvidenceType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('evidenceType'), required: true, 'decoder': ::Moov::Utils.
|
|
20
|
+
field :evidence_type, Models::Components::EvidenceType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('evidenceType'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::EvidenceType, false) } }
|
|
21
21
|
|
|
22
22
|
field :text, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('text'), required: true } }
|
|
23
23
|
|
|
@@ -8,7 +8,8 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
|
|
11
|
-
class EvidenceType
|
|
11
|
+
class EvidenceType
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
RECEIPT = new('receipt')
|
|
14
15
|
PROOF_OF_DELIVERY = new('proof-of-delivery')
|
|
@@ -19,6 +20,7 @@ module Moov
|
|
|
19
20
|
COVER_LETTER = new('cover-letter')
|
|
20
21
|
OTHER = new('other')
|
|
21
22
|
end
|
|
23
|
+
open!
|
|
22
24
|
end
|
|
23
25
|
end
|
|
24
26
|
end
|
|
@@ -23,7 +23,7 @@ module Moov
|
|
|
23
23
|
# The size of the evidence file.
|
|
24
24
|
field :size, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('size'), required: true } }
|
|
25
25
|
|
|
26
|
-
field :evidence_type, Models::Components::EvidenceType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('evidenceType'), required: true, 'decoder': ::Moov::Utils.
|
|
26
|
+
field :evidence_type, Models::Components::EvidenceType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('evidenceType'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::EvidenceType, false) } }
|
|
27
27
|
# The date and time the evidence was uploaded.
|
|
28
28
|
field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
|
|
29
29
|
|
|
@@ -12,33 +12,22 @@ module Moov
|
|
|
12
12
|
extend T::Sig
|
|
13
13
|
include Crystalline::MetadataFields
|
|
14
14
|
|
|
15
|
-
# Total facilitator fee
|
|
16
|
-
field :total, Crystalline::Nilable.new(::
|
|
17
|
-
#
|
|
18
|
-
|
|
19
|
-
# Only either `total` or `totalDecimal` can be set. Set this field if you expect the fee to be in fractions of a cent.
|
|
20
|
-
field :total_decimal, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('totalDecimal') } }
|
|
21
|
-
# Markup facilitator fee in cents. Only either `markup` or `markupDecimal` can be set.
|
|
22
|
-
field :markup, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('markup') } }
|
|
23
|
-
# Same as `markup`, but a decimal-formatted numerical string that represents up to 9 decimal place precision.
|
|
24
|
-
# Only either `markup` or `markupDecimal` can be set. Set this field if you expect the fee to be in fractions of a cent.
|
|
25
|
-
field :markup_decimal, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('markupDecimal') } }
|
|
15
|
+
# Total facilitator fee.
|
|
16
|
+
field :total, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('total') } }
|
|
17
|
+
# Markup facilitator fee.
|
|
18
|
+
field :markup, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('markup') } }
|
|
26
19
|
|
|
27
|
-
sig { params(total: T.nilable(::
|
|
28
|
-
def initialize(total: nil,
|
|
20
|
+
sig { params(total: T.nilable(Models::Components::AmountDecimal), markup: T.nilable(Models::Components::AmountDecimal)).void }
|
|
21
|
+
def initialize(total: nil, markup: nil)
|
|
29
22
|
@total = total
|
|
30
|
-
@total_decimal = total_decimal
|
|
31
23
|
@markup = markup
|
|
32
|
-
@markup_decimal = markup_decimal
|
|
33
24
|
end
|
|
34
25
|
|
|
35
26
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
36
27
|
def ==(other)
|
|
37
28
|
return false unless other.is_a? self.class
|
|
38
29
|
return false unless @total == other.total
|
|
39
|
-
return false unless @total_decimal == other.total_decimal
|
|
40
30
|
return false unless @markup == other.markup
|
|
41
|
-
return false unless @markup_decimal == other.markup_decimal
|
|
42
31
|
true
|
|
43
32
|
end
|
|
44
33
|
end
|
|
@@ -10,10 +10,6 @@ end
|
|
|
10
10
|
class Moov::Models::Components::FacilitatorFee
|
|
11
11
|
def total(); end
|
|
12
12
|
def total=(str_); end
|
|
13
|
-
def total_decimal(); end
|
|
14
|
-
def total_decimal=(str_); end
|
|
15
13
|
def markup(); end
|
|
16
14
|
def markup=(str_); end
|
|
17
|
-
def markup_decimal(); end
|
|
18
|
-
def markup_decimal=(str_); end
|
|
19
15
|
end
|
|
@@ -8,7 +8,8 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
|
|
11
|
-
class FeeCategory
|
|
11
|
+
class FeeCategory
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
ACH = new('ach')
|
|
14
15
|
CARD_ACQUIRING = new('card-acquiring')
|
|
@@ -21,6 +22,7 @@ module Moov
|
|
|
21
22
|
OTHER = new('other')
|
|
22
23
|
RTP = new('rtp')
|
|
23
24
|
end
|
|
25
|
+
open!
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
28
|
end
|
|
@@ -8,12 +8,14 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# FeeModel - Specifies the pricing model used for the calculation of the final fee.
|
|
11
|
-
class FeeModel
|
|
11
|
+
class FeeModel
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
FIXED = new('fixed')
|
|
14
15
|
BLENDED = new('blended')
|
|
15
16
|
VARIABLE = new('variable')
|
|
16
17
|
end
|
|
18
|
+
open!
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -7,12 +7,14 @@
|
|
|
7
7
|
module Moov
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
|
-
|
|
11
|
-
class FeePaidBy
|
|
10
|
+
|
|
11
|
+
class FeePaidBy
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
SOURCE = new('source')
|
|
14
15
|
DESTINATION = new('destination')
|
|
15
16
|
end
|
|
17
|
+
open!
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
20
|
end
|
|
@@ -17,7 +17,7 @@ module Moov
|
|
|
17
17
|
# The name of the fee plan.
|
|
18
18
|
field :name, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('name'), required: true } }
|
|
19
19
|
# Specifies the card processing pricing model
|
|
20
|
-
field :card_acquiring_model, Models::Components::CardAcquiringModel, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardAcquiringModel'), required: true, 'decoder': ::Moov::Utils.
|
|
20
|
+
field :card_acquiring_model, Models::Components::CardAcquiringModel, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardAcquiringModel'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CardAcquiringModel, false) } }
|
|
21
21
|
# Additional usage-based fees for this plan.
|
|
22
22
|
field :billable_fees, Crystalline::Array.new(Models::Components::BillableFee), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billableFees'), required: true } }
|
|
23
23
|
# The minimum spending amount that must be met in the billing period. If actual usage is below the minimum amount, account is charged the difference.
|
|
@@ -21,9 +21,9 @@ module Moov
|
|
|
21
21
|
|
|
22
22
|
field :accepted_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
|
|
23
23
|
|
|
24
|
-
field :status, Models::Components::FeePlanAgreementStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.
|
|
24
|
+
field :status, Models::Components::FeePlanAgreementStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::FeePlanAgreementStatus, false) } }
|
|
25
25
|
# Specifies the card processing pricing model
|
|
26
|
-
field :card_acquiring_model, Models::Components::CardAcquiringModel, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardAcquiringModel'), required: true, 'decoder': ::Moov::Utils.
|
|
26
|
+
field :card_acquiring_model, Models::Components::CardAcquiringModel, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardAcquiringModel'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CardAcquiringModel, false) } }
|
|
27
27
|
|
|
28
28
|
field :billable_fees, Crystalline::Array.new(Models::Components::BillableFee), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billableFees'), required: true } }
|
|
29
29
|
# The minimum spending amount that must be met in the billing period. If actual usage is below the minimum amount, account is charged the difference.
|
|
@@ -34,9 +34,13 @@ module Moov
|
|
|
34
34
|
field :account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('accountID') } }
|
|
35
35
|
# The description of the agreement.
|
|
36
36
|
field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
|
|
37
|
+
# The agreement this one replaced. Only set when the agreement was created by replacing another.
|
|
38
|
+
field :prior_agreement_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('priorAgreementID') } }
|
|
39
|
+
# The date and time the prior agreement was terminated.
|
|
40
|
+
field :prior_agreement_terminated_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('priorAgreementTerminatedOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
|
|
37
41
|
|
|
38
|
-
sig { params(agreement_id: ::String, plan_id: ::String, name: ::String, accepted_on: ::DateTime, status: Models::Components::FeePlanAgreementStatus, card_acquiring_model: Models::Components::CardAcquiringModel, billable_fees: T::Array[Models::Components::BillableFee], minimum_commitment: Models::Components::MinimumCommitment, monthly_platform_fee: Models::Components::MonthlyPlatformFee, account_id: T.nilable(::String), description: T.nilable(::String)).void }
|
|
39
|
-
def initialize(agreement_id:, plan_id:, name:, accepted_on:, status:, card_acquiring_model:, billable_fees:, minimum_commitment:, monthly_platform_fee:, account_id: nil, description: nil)
|
|
42
|
+
sig { params(agreement_id: ::String, plan_id: ::String, name: ::String, accepted_on: ::DateTime, status: Models::Components::FeePlanAgreementStatus, card_acquiring_model: Models::Components::CardAcquiringModel, billable_fees: T::Array[Models::Components::BillableFee], minimum_commitment: Models::Components::MinimumCommitment, monthly_platform_fee: Models::Components::MonthlyPlatformFee, account_id: T.nilable(::String), description: T.nilable(::String), prior_agreement_id: T.nilable(::String), prior_agreement_terminated_on: T.nilable(::DateTime)).void }
|
|
43
|
+
def initialize(agreement_id:, plan_id:, name:, accepted_on:, status:, card_acquiring_model:, billable_fees:, minimum_commitment:, monthly_platform_fee:, account_id: nil, description: nil, prior_agreement_id: nil, prior_agreement_terminated_on: nil)
|
|
40
44
|
@agreement_id = agreement_id
|
|
41
45
|
@plan_id = plan_id
|
|
42
46
|
@name = name
|
|
@@ -48,6 +52,8 @@ module Moov
|
|
|
48
52
|
@monthly_platform_fee = monthly_platform_fee
|
|
49
53
|
@account_id = account_id
|
|
50
54
|
@description = description
|
|
55
|
+
@prior_agreement_id = prior_agreement_id
|
|
56
|
+
@prior_agreement_terminated_on = prior_agreement_terminated_on
|
|
51
57
|
end
|
|
52
58
|
|
|
53
59
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
@@ -64,6 +70,8 @@ module Moov
|
|
|
64
70
|
return false unless @monthly_platform_fee == other.monthly_platform_fee
|
|
65
71
|
return false unless @account_id == other.account_id
|
|
66
72
|
return false unless @description == other.description
|
|
73
|
+
return false unless @prior_agreement_id == other.prior_agreement_id
|
|
74
|
+
return false unless @prior_agreement_terminated_on == other.prior_agreement_terminated_on
|
|
67
75
|
true
|
|
68
76
|
end
|
|
69
77
|
end
|
|
@@ -30,4 +30,8 @@ class Moov::Models::Components::FeePlanAgreement
|
|
|
30
30
|
def account_id=(str_); end
|
|
31
31
|
def description(); end
|
|
32
32
|
def description=(str_); end
|
|
33
|
+
def prior_agreement_id(); end
|
|
34
|
+
def prior_agreement_id=(str_); end
|
|
35
|
+
def prior_agreement_terminated_on(); end
|
|
36
|
+
def prior_agreement_terminated_on=(str_); end
|
|
33
37
|
end
|
|
@@ -8,11 +8,13 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
|
|
11
|
-
class FeePlanAgreementStatus
|
|
11
|
+
class FeePlanAgreementStatus
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
ACTIVE = new('active')
|
|
14
15
|
TERMINATED = new('terminated')
|
|
15
16
|
end
|
|
17
|
+
open!
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
20
|
end
|
|
@@ -19,9 +19,9 @@ module Moov
|
|
|
19
19
|
|
|
20
20
|
field :account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('accountID'), required: true } }
|
|
21
21
|
# The purpose of the file being uploaded.
|
|
22
|
-
field :file_purpose, Models::Components::FilePurpose, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('filePurpose'), required: true, 'decoder': ::Moov::Utils.
|
|
22
|
+
field :file_purpose, Models::Components::FilePurpose, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('filePurpose'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::FilePurpose, false) } }
|
|
23
23
|
# The file's status.
|
|
24
|
-
field :file_status, Models::Components::FileStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fileStatus'), required: true, 'decoder': ::Moov::Utils.
|
|
24
|
+
field :file_status, Models::Components::FileStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fileStatus'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::FileStatus, false) } }
|
|
25
25
|
|
|
26
26
|
field :metadata, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata'), required: true } }
|
|
27
27
|
|
|
@@ -8,7 +8,8 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# FilePurpose - The purpose of the file being uploaded.
|
|
11
|
-
class FilePurpose
|
|
11
|
+
class FilePurpose
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
BUSINESS_VERIFICATION = new('business_verification')
|
|
14
15
|
REPRESENTATIVE_VERIFICATION = new('representative_verification')
|
|
@@ -17,6 +18,7 @@ module Moov
|
|
|
17
18
|
ACCOUNT_REQUIREMENT = new('account_requirement')
|
|
18
19
|
IDENTITY_VERIFICATION = new('identity_verification')
|
|
19
20
|
end
|
|
21
|
+
open!
|
|
20
22
|
end
|
|
21
23
|
end
|
|
22
24
|
end
|