moov_ruby 26.4.13 → 26.4.15
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/card_issuing.rb +1 -1
- data/lib/moov/images.rb +1 -1
- 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/achreturncode.rb +3 -1
- data/lib/moov/models/components/achtransactiondetails.rb +3 -3
- data/lib/moov/models/components/achtransactionstatus.rb +3 -1
- data/lib/moov/models/components/adjustmentfees.rb +11 -15
- data/lib/moov/models/components/adjustmentfees.rbi +4 -4
- data/lib/moov/models/components/applepayresponse.rb +2 -2
- data/lib/moov/models/components/applicationscope.rb +4 -2
- data/lib/moov/models/components/authmethod.rb +3 -1
- data/lib/moov/models/components/bankaccount.rb +4 -4
- 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/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 +1 -1
- data/lib/moov/models/components/cardbrand.rb +3 -1
- data/lib/moov/models/components/cardissuingnetwork.rb +3 -1
- data/lib/moov/models/components/cardtransactiondetails.rb +3 -3
- data/lib/moov/models/components/cardtransactionfailurecode.rb +3 -1
- data/lib/moov/models/components/cardtransactionstatus.rb +3 -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/createbusinessprofile.rb +2 -2
- data/lib/moov/models/components/createdtransfer.rb +6 -3
- 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 +1 -1
- 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/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/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 +2 -2
- data/lib/moov/models/components/feecategory.rb +3 -1
- data/lib/moov/models/components/feemodel.rb +3 -1
- 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 +4 -3
- data/lib/moov/models/components/geographicreach.rb +3 -1
- data/lib/moov/models/components/googlepayresponse.rb +3 -3
- data/lib/moov/models/components/instantbankfailurecode.rb +3 -1
- data/lib/moov/models/components/instantbanknetwork.rb +3 -1
- data/lib/moov/models/components/instantbanktransactiondetails.rb +3 -3
- data/lib/moov/models/components/instantbanktransactionstatus.rb +3 -1
- 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 +4 -3
- data/lib/moov/models/components/issuedcardauthorization.rb +8 -4
- data/lib/moov/models/components/issuedcardauthorization.rbi +2 -0
- 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/issuedcardtransaction.rb +6 -2
- data/lib/moov/models/components/issuedcardtransaction.rbi +2 -0
- data/lib/moov/models/components/issuingauthorizationstatus.rb +3 -1
- data/lib/moov/models/components/issuingcontrols.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/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 -4
- 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 +2 -5
- data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +2 -5
- 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 +3 -1
- data/lib/moov/models/components/pendinglitigation.rb +3 -1
- data/lib/moov/models/components/primaryregulator.rb +3 -1
- 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/puttippresets.rb +1 -1
- data/lib/moov/models/components/refundcarddetails.rb +2 -2
- data/lib/moov/models/components/refundcardstatus.rb +3 -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 +10 -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/reversedwithcancellation.rb +1 -1
- data/lib/moov/models/components/rtpfailurecode.rb +3 -1
- data/lib/moov/models/components/rtprejectioncode.rb +3 -1
- data/lib/moov/models/components/rtptransactiondetails.rb +2 -2
- data/lib/moov/models/components/rtptransactionstatus.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/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 +6 -3
- data/lib/moov/models/components/transferdestination.rb +1 -1
- data/lib/moov/models/components/transferfailurereason.rb +3 -1
- 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 +3 -1
- 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/underwriting.rb +4 -4
- 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/updatepaymentlink.rb +1 -1
- data/lib/moov/models/components/updatewebhook.rb +1 -1
- data/lib/moov/models/components/upsertunderwriting.rb +3 -3
- 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 +3 -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/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/webhookdataeventtest.rb +32 -0
- data/lib/moov/models/components/webhookdataeventtest.rbi +13 -0
- 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/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.rb +4 -1
- data/lib/moov/models/errors/cardacquiringrefund_error.rb +1 -1
- data/lib/moov/models/errors/transfer_error.rb +6 -3
- data/lib/moov/models/operations/listaccounts_request.rb +1 -1
- 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/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 +2 -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/sdkconfiguration.rb +3 -3
- data/lib/moov/transfers.rb +11 -5
- data/lib/moov/utils/retries.rb +41 -2
- data/lib/moov/utils/utils.rb +6 -2
- metadata +8 -2
|
@@ -15,13 +15,13 @@ module Moov
|
|
|
15
15
|
# Unique identifier for the webhook event.
|
|
16
16
|
field :event_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('eventID'), required: true } }
|
|
17
17
|
# The type of event that occurred.
|
|
18
|
-
field :type, Models::Components::WebhookEventType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('type'), required: true, 'decoder': ::Moov::Utils.
|
|
18
|
+
field :type, Models::Components::WebhookEventType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('type'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::WebhookEventType, false) } }
|
|
19
19
|
# The data for the webhook event. The contents are based on the event type.
|
|
20
|
-
field :data, Crystalline::Union.new(Models::Components::WebhookDataAccountCreated, Models::Components::WebhookDataAccountUpdated, Models::Components::WebhookDataAccountDisconnected, Models::Components::WebhookDataBalanceUpdated, Models::Components::WebhookDataBankAccountCreated, Models::Components::WebhookDataBankAccountUpdated, Models::Components::WebhookDataBankAccountDeleted, Models::Components::WebhookDataCancellationCreated, Models::Components::WebhookDataCancellationUpdated, Models::Components::WebhookDataCardAutoUpdated, Models::Components::WebhookDataCapabilityRequested, Models::Components::WebhookDataCapabilityUpdated, Models::Components::WebhookDataDisputeCreated, Models::Components::WebhookDataDisputeUpdated, Models::Components::WebhookDataInvoiceCreated, Models::Components::WebhookDataInvoiceUpdated, Models::Components::WebhookDataNetworkIDUpdated, Models::Components::WebhookDataPaymentMethodEnabled, Models::Components::WebhookDataPaymentMethodDisabled, Models::Components::WebhookDataRefundCreated, Models::Components::WebhookDataRefundUpdated, Models::Components::WebhookDataRepresentativeCreated, Models::Components::WebhookDataRepresentativeUpdated, Models::Components::WebhookDataRepresentativeDisabled, Models::Components::WebhookDataSweepCreated, Models::Components::WebhookDataSweepUpdated, Models::Components::WebhookDataTerminalApplicationCreated, Models::Components::WebhookDataTerminalApplicationUpdated, Models::Components::WebhookDataTicketCreated, Models::Components::WebhookDataTicketUpdated, Models::Components::WebhookDataTicketMessageAdded, Models::Components::WebhookDataTransferCreated, Models::Components::WebhookDataTransferUpdated, Models::Components::WebhookDataWalletCreated, Models::Components::WebhookDataWalletUpdated, Models::Components::WebhookDataWalletTransactionUpdated, Models::Components::WebhookBillingStatementCreated, Models::Components::WebhookDataAuthorizationExpiring), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('data'), required: true } }
|
|
20
|
+
field :data, Crystalline::Union.new(Models::Components::WebhookDataAccountCreated, Models::Components::WebhookDataAccountUpdated, Models::Components::WebhookDataAccountDisconnected, Models::Components::WebhookDataBalanceUpdated, Models::Components::WebhookDataBankAccountCreated, Models::Components::WebhookDataBankAccountUpdated, Models::Components::WebhookDataBankAccountDeleted, Models::Components::WebhookDataCancellationCreated, Models::Components::WebhookDataCancellationUpdated, Models::Components::WebhookDataCardAutoUpdated, Models::Components::WebhookDataCapabilityRequested, Models::Components::WebhookDataCapabilityUpdated, Models::Components::WebhookDataDisputeCreated, Models::Components::WebhookDataDisputeUpdated, Models::Components::WebhookDataInvoiceCreated, Models::Components::WebhookDataInvoiceUpdated, Models::Components::WebhookDataNetworkIDUpdated, Models::Components::WebhookDataPaymentMethodEnabled, Models::Components::WebhookDataPaymentMethodDisabled, Models::Components::WebhookDataRefundCreated, Models::Components::WebhookDataRefundUpdated, Models::Components::WebhookDataRepresentativeCreated, Models::Components::WebhookDataRepresentativeUpdated, Models::Components::WebhookDataRepresentativeDisabled, Models::Components::WebhookDataSweepCreated, Models::Components::WebhookDataSweepUpdated, Models::Components::WebhookDataTerminalApplicationCreated, Models::Components::WebhookDataTerminalApplicationUpdated, Models::Components::WebhookDataTicketCreated, Models::Components::WebhookDataTicketUpdated, Models::Components::WebhookDataTicketMessageAdded, Models::Components::WebhookDataTransferCreated, Models::Components::WebhookDataTransferUpdated, Models::Components::WebhookDataWalletCreated, Models::Components::WebhookDataWalletUpdated, Models::Components::WebhookDataWalletTransactionUpdated, Models::Components::WebhookBillingStatementCreated, Models::Components::WebhookDataAuthorizationExpiring, Models::Components::WebhookDataEventTest), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('data'), required: true } }
|
|
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
|
|
|
24
|
-
sig { params(event_id: ::String, type: Models::Components::WebhookEventType, data: T.any(Models::Components::WebhookDataAccountCreated, Models::Components::WebhookDataAccountUpdated, Models::Components::WebhookDataAccountDisconnected, Models::Components::WebhookDataBalanceUpdated, Models::Components::WebhookDataBankAccountCreated, Models::Components::WebhookDataBankAccountUpdated, Models::Components::WebhookDataBankAccountDeleted, Models::Components::WebhookDataCancellationCreated, Models::Components::WebhookDataCancellationUpdated, Models::Components::WebhookDataCardAutoUpdated, Models::Components::WebhookDataCapabilityRequested, Models::Components::WebhookDataCapabilityUpdated, Models::Components::WebhookDataDisputeCreated, Models::Components::WebhookDataDisputeUpdated, Models::Components::WebhookDataInvoiceCreated, Models::Components::WebhookDataInvoiceUpdated, Models::Components::WebhookDataNetworkIDUpdated, Models::Components::WebhookDataPaymentMethodEnabled, Models::Components::WebhookDataPaymentMethodDisabled, Models::Components::WebhookDataRefundCreated, Models::Components::WebhookDataRefundUpdated, Models::Components::WebhookDataRepresentativeCreated, Models::Components::WebhookDataRepresentativeUpdated, Models::Components::WebhookDataRepresentativeDisabled, Models::Components::WebhookDataSweepCreated, Models::Components::WebhookDataSweepUpdated, Models::Components::WebhookDataTerminalApplicationCreated, Models::Components::WebhookDataTerminalApplicationUpdated, Models::Components::WebhookDataTicketCreated, Models::Components::WebhookDataTicketUpdated, Models::Components::WebhookDataTicketMessageAdded, Models::Components::WebhookDataTransferCreated, Models::Components::WebhookDataTransferUpdated, Models::Components::WebhookDataWalletCreated, Models::Components::WebhookDataWalletUpdated, Models::Components::WebhookDataWalletTransactionUpdated, Models::Components::WebhookBillingStatementCreated, Models::Components::WebhookDataAuthorizationExpiring), created_on: ::DateTime).void }
|
|
24
|
+
sig { params(event_id: ::String, type: Models::Components::WebhookEventType, data: T.any(Models::Components::WebhookDataAccountCreated, Models::Components::WebhookDataAccountUpdated, Models::Components::WebhookDataAccountDisconnected, Models::Components::WebhookDataBalanceUpdated, Models::Components::WebhookDataBankAccountCreated, Models::Components::WebhookDataBankAccountUpdated, Models::Components::WebhookDataBankAccountDeleted, Models::Components::WebhookDataCancellationCreated, Models::Components::WebhookDataCancellationUpdated, Models::Components::WebhookDataCardAutoUpdated, Models::Components::WebhookDataCapabilityRequested, Models::Components::WebhookDataCapabilityUpdated, Models::Components::WebhookDataDisputeCreated, Models::Components::WebhookDataDisputeUpdated, Models::Components::WebhookDataInvoiceCreated, Models::Components::WebhookDataInvoiceUpdated, Models::Components::WebhookDataNetworkIDUpdated, Models::Components::WebhookDataPaymentMethodEnabled, Models::Components::WebhookDataPaymentMethodDisabled, Models::Components::WebhookDataRefundCreated, Models::Components::WebhookDataRefundUpdated, Models::Components::WebhookDataRepresentativeCreated, Models::Components::WebhookDataRepresentativeUpdated, Models::Components::WebhookDataRepresentativeDisabled, Models::Components::WebhookDataSweepCreated, Models::Components::WebhookDataSweepUpdated, Models::Components::WebhookDataTerminalApplicationCreated, Models::Components::WebhookDataTerminalApplicationUpdated, Models::Components::WebhookDataTicketCreated, Models::Components::WebhookDataTicketUpdated, Models::Components::WebhookDataTicketMessageAdded, Models::Components::WebhookDataTransferCreated, Models::Components::WebhookDataTransferUpdated, Models::Components::WebhookDataWalletCreated, Models::Components::WebhookDataWalletUpdated, Models::Components::WebhookDataWalletTransactionUpdated, Models::Components::WebhookBillingStatementCreated, Models::Components::WebhookDataAuthorizationExpiring, Models::Components::WebhookDataEventTest), created_on: ::DateTime).void }
|
|
25
25
|
def initialize(event_id:, type:, data:, created_on:)
|
|
26
26
|
@event_id = event_id
|
|
27
27
|
@type = type
|
|
@@ -8,7 +8,8 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# WebhookEventType - The type of event that occurred.
|
|
11
|
-
class WebhookEventType
|
|
11
|
+
class WebhookEventType
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
WILDCARD_ = new('*')
|
|
14
15
|
ACCOUNT_CREATED = new('account.created')
|
|
@@ -49,7 +50,9 @@ module Moov
|
|
|
49
50
|
WALLET_TRANSACTION_UPDATED = new('walletTransaction.updated')
|
|
50
51
|
BILLING_STATEMENT_CREATED = new('billingStatement.created')
|
|
51
52
|
AUTHORIZATION_EXPIRING = new('authorization.expiring')
|
|
53
|
+
EVENT_TEST = new('event.test')
|
|
52
54
|
end
|
|
55
|
+
open!
|
|
53
56
|
end
|
|
54
57
|
end
|
|
55
58
|
end
|
|
@@ -8,11 +8,13 @@ module Moov
|
|
|
8
8
|
module Models
|
|
9
9
|
module Components
|
|
10
10
|
# WebhookStatus - The status of a webhook.
|
|
11
|
-
class WebhookStatus
|
|
11
|
+
class WebhookStatus
|
|
12
|
+
include ::Crystalline::Enum
|
|
12
13
|
enums do
|
|
13
14
|
ENABLED = new('enabled')
|
|
14
15
|
DISABLED = new('disabled')
|
|
15
16
|
end
|
|
17
|
+
open!
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
20
|
end
|
|
@@ -47,6 +47,7 @@ module Moov
|
|
|
47
47
|
autoload :AddressSuggestion, 'moov/models/components/addresssuggestion.rb'
|
|
48
48
|
autoload :AddressUpdate, 'moov/models/components/addressupdate.rb'
|
|
49
49
|
autoload :Adjustment, 'moov/models/components/adjustment.rb'
|
|
50
|
+
autoload :AdjustmentFees, 'moov/models/components/adjustmentfees.rb'
|
|
50
51
|
autoload :Amount, 'moov/models/components/amount.rb'
|
|
51
52
|
autoload :AmountDecimal, 'moov/models/components/amountdecimal.rb'
|
|
52
53
|
autoload :AmountDecimalUpdate, 'moov/models/components/amountdecimalupdate.rb'
|
|
@@ -84,12 +85,14 @@ module Moov
|
|
|
84
85
|
autoload :BasicPaymentMethod, 'moov/models/components/basicpaymentmethod.rb'
|
|
85
86
|
autoload :BatchGetTransfersRequest, 'moov/models/components/batchgettransfersrequest.rb'
|
|
86
87
|
autoload :BillableFee, 'moov/models/components/billablefee.rb'
|
|
88
|
+
autoload :BillingAdjustment, 'moov/models/components/billingadjustment.rb'
|
|
87
89
|
autoload :BillingCountAndAmount, 'moov/models/components/billingcountandamount.rb'
|
|
88
90
|
autoload :BillingInterchangeProgramFee, 'moov/models/components/billinginterchangeprogramfee.rb'
|
|
89
91
|
autoload :BillingSummary, 'moov/models/components/billingsummary.rb'
|
|
90
92
|
autoload :BillingSummaryDetails, 'moov/models/components/billingsummarydetails.rb'
|
|
91
93
|
autoload :BillingSummaryDetailsVolumeAmount, 'moov/models/components/billingsummarydetails_volumeamount.rb'
|
|
92
94
|
autoload :BillingSummaryInterchange, 'moov/models/components/billingsummaryinterchange.rb'
|
|
95
|
+
autoload :BillingSummaryAdjustmentFees, 'moov/models/components/billingsummary_adjustmentfees.rb'
|
|
93
96
|
autoload :BillingSummaryPlatformFees, 'moov/models/components/billingsummary_platformfees.rb'
|
|
94
97
|
autoload :BillingSummaryVolumeAmount, 'moov/models/components/billingsummary_volumeamount.rb'
|
|
95
98
|
autoload :BirthDate, 'moov/models/components/birthdate.rb'
|
|
@@ -656,6 +659,7 @@ module Moov
|
|
|
656
659
|
autoload :WebhookDataCardAutoUpdated, 'moov/models/components/webhookdatacardautoupdated.rb'
|
|
657
660
|
autoload :WebhookDataDisputeCreated, 'moov/models/components/webhookdatadisputecreated.rb'
|
|
658
661
|
autoload :WebhookDataDisputeUpdated, 'moov/models/components/webhookdatadisputeupdated.rb'
|
|
662
|
+
autoload :WebhookDataEventTest, 'moov/models/components/webhookdataeventtest.rb'
|
|
659
663
|
autoload :WebhookDataInvoiceCreated, 'moov/models/components/webhookdatainvoicecreated.rb'
|
|
660
664
|
autoload :WebhookDataInvoiceUpdated, 'moov/models/components/webhookdatainvoiceupdated.rb'
|
|
661
665
|
autoload :WebhookDataNetworkIDUpdated, 'moov/models/components/webhookdatanetworkidupdated.rb'
|
|
@@ -688,7 +692,6 @@ module Moov
|
|
|
688
692
|
autoload :WireServices, 'moov/models/components/wireservices.rb'
|
|
689
693
|
autoload :AchDetails, 'moov/models/components/achdetails.rb'
|
|
690
694
|
autoload :AchPayment, 'moov/models/components/achpayment.rb'
|
|
691
|
-
autoload :AdjustmentFees, 'moov/models/components/adjustmentfees.rb'
|
|
692
695
|
autoload :AuthMethod, 'moov/models/components/authmethod.rb'
|
|
693
696
|
autoload :BillingAddress, 'moov/models/components/billingaddress.rb'
|
|
694
697
|
autoload :CardAcquiring, 'moov/models/components/cardacquiring.rb'
|
|
@@ -19,7 +19,7 @@ module Moov
|
|
|
19
19
|
|
|
20
20
|
field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
|
|
21
21
|
|
|
22
|
-
field :status, Models::Components::RefundStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.
|
|
22
|
+
field :status, Models::Components::RefundStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::RefundStatus, false) } }
|
|
23
23
|
|
|
24
24
|
field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
|
|
25
25
|
|
|
@@ -21,13 +21,16 @@ module Moov
|
|
|
21
21
|
|
|
22
22
|
field :destination, Models::Components::TransferDestination, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('destination'), required: true } }
|
|
23
23
|
# Status of a transfer.
|
|
24
|
-
field :status, Models::Components::TransferStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.
|
|
25
|
-
|
|
24
|
+
field :status, Models::Components::TransferStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::TransferStatus, false) } }
|
|
25
|
+
# Amount associated with this transfer.
|
|
26
|
+
# In v2026.10 and later, an auth-capture `card-payment` transfer reports the approved authorization amount until a final capture is created.
|
|
27
|
+
# For these transfers, when a final capture is created, this is updated to the cumulative captured amount.
|
|
28
|
+
# For other transfer types, this is the transfer amount.
|
|
26
29
|
field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
|
|
27
30
|
|
|
28
31
|
field :completed_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('completedOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
|
|
29
32
|
# Reason for a transfer's failure.
|
|
30
|
-
field :failure_reason, Crystalline::Nilable.new(Models::Components::TransferFailureReason), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureReason'), 'decoder': ::Moov::Utils.
|
|
33
|
+
field :failure_reason, Crystalline::Nilable.new(Models::Components::TransferFailureReason), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureReason'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::TransferFailureReason, true) } }
|
|
31
34
|
# An optional description of the transfer that is used on receipts and for your own internal use.
|
|
32
35
|
field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
|
|
33
36
|
# Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
|
|
@@ -47,7 +47,7 @@ module Moov
|
|
|
47
47
|
field :capability_status, Crystalline::Nilable.new(Models::Components::CapabilityStatus), { 'query_param': { 'field_name': 'capabilityStatus', 'style': 'form', 'explode': false } }
|
|
48
48
|
|
|
49
49
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
50
|
-
|
|
50
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
51
51
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
52
52
|
|
|
53
53
|
sig { params(name: T.nilable(::String), email: T.nilable(::String), type: T.nilable(Models::Components::CreateAccountType), foreign_id: T.nilable(::String), include_disconnected: T.nilable(T::Boolean), capability: T.nilable(Models::Components::CapabilityID), capability_status: T.nilable(Models::Components::CapabilityStatus), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -49,7 +49,7 @@ module Moov
|
|
|
49
49
|
field :capability_status, Crystalline::Nilable.new(Models::Components::CapabilityStatus), { 'query_param': { 'field_name': 'capabilityStatus', 'style': 'form', 'explode': false } }
|
|
50
50
|
|
|
51
51
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
52
|
-
|
|
52
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
53
53
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
54
54
|
|
|
55
55
|
sig { params(account_id: ::String, name: T.nilable(::String), email: T.nilable(::String), type: T.nilable(Models::Components::CreateAccountType), foreign_id: T.nilable(::String), include_disconnected: T.nilable(T::Boolean), capability: T.nilable(Models::Components::CapabilityID), capability_status: T.nilable(Models::Components::CapabilityStatus), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# Optional date-time parameter to filter all disputes created on and after the provided date and time.
|
|
22
22
|
field :start_date_time, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'startDateTime', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# A comma-separated list of agreement IDs to filter the results by.
|
|
22
22
|
field :agreement_id, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'agreementID', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# Optional transfer ID to filter the results by.
|
|
22
22
|
field :transfer_id, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'transferID', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
|
|
22
22
|
field :status, Crystalline::Nilable.new(Models::Components::InvoiceStatus), { 'query_param': { 'field_name': 'status', 'style': 'form', 'explode': false } }
|
|
@@ -18,7 +18,7 @@ module Moov
|
|
|
18
18
|
field :authorization_id, ::String, { 'path_param': { 'field_name': 'authorizationID', 'style': 'simple', 'explode': false } }
|
|
19
19
|
|
|
20
20
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
21
|
-
|
|
21
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
22
22
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
23
23
|
|
|
24
24
|
sig { params(account_id: ::String, authorization_id: ::String, skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# Optional ID of the issued card to filter results.
|
|
22
22
|
field :issued_card_id, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'issuedCardID', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# Optional, comma-separated states to filter the Moov list issued cards response. For example `active,closed`
|
|
22
22
|
field :states, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::IssuedCardState)), { 'query_param': { 'field_name': 'states', 'style': 'form', 'explode': false } }
|
|
@@ -16,21 +16,24 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# Optional ID of the issued card to filter results.
|
|
22
22
|
field :issued_card_id, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'issuedCardID', 'style': 'form', 'explode': false } }
|
|
23
|
+
# Optional case-insensitive substring match on the merchant name to filter results.
|
|
24
|
+
field :merchant_name, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'merchantName', 'style': 'form', 'explode': false } }
|
|
23
25
|
# Optional date-time which inclusively filters all card transactions created after this date-time.
|
|
24
26
|
field :start_date_time, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'startDateTime', 'style': 'form', 'explode': false } }
|
|
25
27
|
# Optional date-time which exclusively filters all card transactions created before this date-time.
|
|
26
28
|
field :end_date_time, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'endDateTime', 'style': 'form', 'explode': false } }
|
|
27
29
|
|
|
28
|
-
sig { params(account_id: ::String, skip: T.nilable(::Integer), count: T.nilable(::Integer), issued_card_id: T.nilable(::String), start_date_time: T.nilable(::DateTime), end_date_time: T.nilable(::DateTime)).void }
|
|
29
|
-
def initialize(account_id:, skip: nil, count: nil, issued_card_id: nil, start_date_time: nil, end_date_time: nil)
|
|
30
|
+
sig { params(account_id: ::String, skip: T.nilable(::Integer), count: T.nilable(::Integer), issued_card_id: T.nilable(::String), merchant_name: T.nilable(::String), start_date_time: T.nilable(::DateTime), end_date_time: T.nilable(::DateTime)).void }
|
|
31
|
+
def initialize(account_id:, skip: nil, count: nil, issued_card_id: nil, merchant_name: nil, start_date_time: nil, end_date_time: nil)
|
|
30
32
|
@account_id = account_id
|
|
31
33
|
@skip = skip
|
|
32
34
|
@count = count
|
|
33
35
|
@issued_card_id = issued_card_id
|
|
36
|
+
@merchant_name = merchant_name
|
|
34
37
|
@start_date_time = start_date_time
|
|
35
38
|
@end_date_time = end_date_time
|
|
36
39
|
end
|
|
@@ -42,6 +45,7 @@ module Moov
|
|
|
42
45
|
return false unless @skip == other.skip
|
|
43
46
|
return false unless @count == other.count
|
|
44
47
|
return false unless @issued_card_id == other.issued_card_id
|
|
48
|
+
return false unless @merchant_name == other.merchant_name
|
|
45
49
|
return false unless @start_date_time == other.start_date_time
|
|
46
50
|
return false unless @end_date_time == other.end_date_time
|
|
47
51
|
true
|
|
@@ -16,6 +16,8 @@ class Moov::Models::Operations::ListIssuedCardTransactionsRequest
|
|
|
16
16
|
def count=(str_); end
|
|
17
17
|
def issued_card_id(); end
|
|
18
18
|
def issued_card_id=(str_); end
|
|
19
|
+
def merchant_name(); end
|
|
20
|
+
def merchant_name=(str_); end
|
|
19
21
|
def start_date_time(); end
|
|
20
22
|
def start_date_time=(str_); end
|
|
21
23
|
def end_date_time(); end
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# A comma-separated list of agreement IDs to filter the results by.
|
|
22
22
|
field :agreement_id, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'agreementID', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# A comma-separated list of payment link types to filter results.
|
|
22
22
|
field :types, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::PaymentLinkType)), { 'query_param': { 'field_name': 'types', 'style': 'form', 'explode': false } }
|
|
@@ -18,7 +18,7 @@ module Moov
|
|
|
18
18
|
field :title, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'title', 'style': 'form', 'explode': false } }
|
|
19
19
|
|
|
20
20
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
21
|
-
|
|
21
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
22
22
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
23
23
|
|
|
24
24
|
sig { params(account_id: ::String, title: T.nilable(::String), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -18,7 +18,7 @@ module Moov
|
|
|
18
18
|
field :residual_id, ::String, { 'path_param': { 'field_name': 'residualID', 'style': 'simple', 'explode': false } }
|
|
19
19
|
|
|
20
20
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
21
|
-
|
|
21
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
22
22
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
23
23
|
# Optional date-time to inclusively filter all fees created after this date-time.
|
|
24
24
|
field :start_date_time, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'startDateTime', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
# Optional date-time to inclusively filter all residuals with a period start after this date-time.
|
|
22
22
|
field :start_date_time, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'startDateTime', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
|
|
22
22
|
field :hydrate, Crystalline::Nilable.new(Models::Operations::Hydrate), { 'query_param': { 'field_name': 'hydrate', 'style': 'form', 'explode': false } }
|
|
@@ -20,7 +20,7 @@ module Moov
|
|
|
20
20
|
field :billing_period_end_date_time, Crystalline::Nilable.new(::DateTime), { 'query_param': { 'field_name': 'billingPeriodEndDateTime', 'style': 'form', 'explode': false } }
|
|
21
21
|
|
|
22
22
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
23
|
-
|
|
23
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
24
24
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
25
25
|
|
|
26
26
|
sig { params(account_id: ::String, billing_period_start_date_time: T.nilable(::DateTime), billing_period_end_date_time: T.nilable(::DateTime), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -18,7 +18,7 @@ module Moov
|
|
|
18
18
|
field :wallet_id, ::String, { 'path_param': { 'field_name': 'walletID', 'style': 'simple', 'explode': false } }
|
|
19
19
|
|
|
20
20
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
21
|
-
|
|
21
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
22
22
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
23
23
|
# Optional parameter to filter by sweep status.
|
|
24
24
|
field :status, Crystalline::Nilable.new(Models::Components::SweepStatus), { 'query_param': { 'field_name': 'status', 'style': 'form', 'explode': false } }
|
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
field :account_id, ::String, { 'path_param': { 'field_name': 'accountID', 'style': 'simple', 'explode': false } }
|
|
17
17
|
|
|
18
18
|
field :cursor, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'cursor', 'style': 'form', 'explode': false } }
|
|
19
|
-
|
|
19
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
20
20
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
21
21
|
|
|
22
22
|
field :status, Crystalline::Nilable.new(Models::Components::TicketStatus), { 'query_param': { 'field_name': 'status', 'style': 'form', 'explode': false } }
|
|
@@ -34,13 +34,13 @@ module Moov
|
|
|
34
34
|
field :disputed, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'query_param': { 'field_name': 'disputed', 'style': 'form', 'explode': false } }
|
|
35
35
|
# Optional alias from a foreign/external system which can be used to reference this resource.
|
|
36
36
|
field :foreign_id, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'foreignID', 'style': 'form', 'explode': false } }
|
|
37
|
-
# Optional comma-separated IDs
|
|
37
|
+
# Optional comma-separated authorization IDs.
|
|
38
38
|
field :authorization_i_ds, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'authorizationIDs', 'style': 'form', 'explode': false } }
|
|
39
39
|
# Optional comma-separated IDs to filter for transfers associated with specific card captures.
|
|
40
40
|
field :capture_i_ds, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'captureIDs', 'style': 'form', 'explode': false } }
|
|
41
41
|
|
|
42
42
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
43
|
-
|
|
43
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
44
44
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
45
45
|
|
|
46
46
|
sig { params(account_id: ::String, account_i_ds: T.nilable(T::Array[::String]), status: T.nilable(Models::Components::TransferStatus), start_date_time: T.nilable(::DateTime), end_date_time: T.nilable(::DateTime), group_id: T.nilable(::String), schedule_id: T.nilable(::String), payment_link_code: T.nilable(::String), refunded: T.nilable(T::Boolean), disputed: T.nilable(T::Boolean), foreign_id: T.nilable(::String), authorization_i_ds: T.nilable(T::Array[::String]), capture_i_ds: T.nilable(T::Array[::String]), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -20,7 +20,7 @@ module Moov
|
|
|
20
20
|
field :wallet_type, Crystalline::Nilable.new(Models::Components::WalletType), { 'query_param': { 'field_name': 'walletType', 'style': 'form', 'explode': false } }
|
|
21
21
|
|
|
22
22
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
23
|
-
|
|
23
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
24
24
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
25
25
|
|
|
26
26
|
sig { params(account_id: ::String, status: T.nilable(Models::Components::WalletStatus), wallet_type: T.nilable(Models::Components::WalletType), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -18,7 +18,7 @@ module Moov
|
|
|
18
18
|
field :wallet_id, ::String, { 'path_param': { 'field_name': 'walletID', 'style': 'simple', 'explode': false } }
|
|
19
19
|
|
|
20
20
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
21
|
-
|
|
21
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
22
22
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
23
23
|
# Optional parameter to filter by transaction type.
|
|
24
24
|
field :transaction_type, Crystalline::Nilable.new(Models::Components::WalletTransactionType), { 'query_param': { 'field_name': 'transactionType', 'style': 'form', 'explode': false } }
|
|
@@ -26,7 +26,7 @@ module Moov
|
|
|
26
26
|
field :end_date_time, Crystalline::Nilable.new(::String), { 'query_param': { 'field_name': 'endDateTime', 'style': 'form', 'explode': false } }
|
|
27
27
|
|
|
28
28
|
field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
|
|
29
|
-
|
|
29
|
+
# Page size. When omitted, the server defaults to `200`.
|
|
30
30
|
field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
|
|
31
31
|
|
|
32
32
|
sig { params(account_id: ::String, transfer_id: T.nilable(::String), dispute_id: T.nilable(::String), residual_id: T.nilable(::String), start_date_time: T.nilable(::String), end_date_time: T.nilable(::String), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
|
|
@@ -88,9 +88,9 @@ module Moov
|
|
|
88
88
|
end
|
|
89
89
|
@language = 'ruby'
|
|
90
90
|
@openapi_doc_version = 'v2026.04.00'
|
|
91
|
-
@sdk_version = '26.4.
|
|
92
|
-
@gen_version = '2.
|
|
93
|
-
@user_agent = 'speakeasy-sdk/ruby 26.4.
|
|
91
|
+
@sdk_version = '26.4.15'
|
|
92
|
+
@gen_version = '2.935.1'
|
|
93
|
+
@user_agent = 'speakeasy-sdk/ruby 26.4.15 2.935.1 v2026.04.00 moov_ruby'
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
sig { returns([String, T::Hash[Symbol, String]]) }
|
data/lib/moov/transfers.rb
CHANGED
|
@@ -1004,6 +1004,9 @@ module Moov
|
|
|
1004
1004
|
def create_cancellation(account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
|
|
1005
1005
|
# create_cancellation - Initiate a cancellation for a card, ACH, or queued transfer.
|
|
1006
1006
|
#
|
|
1007
|
+
# In v2026.10 and later, an auth-capture `card-payment` transfer can be canceled before any captures exist.
|
|
1008
|
+
# For these transfers, a successful cancellation reduces `capturableAmount` without changing `authorizedAmount`.
|
|
1009
|
+
# For these transfers, a partial cancellation leaves the remaining `capturableAmount` available for capture.
|
|
1007
1010
|
# To access this endpoint using a [token](https://docs.moov.io/api/authentication/access-tokens/) you'll need
|
|
1008
1011
|
# to specify the `/accounts/{accountID}/transfers.write` scope.
|
|
1009
1012
|
request = Models::Operations::CreateCancellationRequest.new(
|
|
@@ -1108,7 +1111,7 @@ module Moov
|
|
|
1108
1111
|
else
|
|
1109
1112
|
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
|
1110
1113
|
end
|
|
1111
|
-
elsif Utils.match_status_code(http_response.status, ['400'])
|
|
1114
|
+
elsif Utils.match_status_code(http_response.status, ['400', '409', '422'])
|
|
1112
1115
|
if Utils.match_content_type(content_type, 'application/json')
|
|
1113
1116
|
http_response = @sdk_configuration.hooks.after_success(
|
|
1114
1117
|
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
@@ -1141,7 +1144,7 @@ module Moov
|
|
|
1141
1144
|
sig { params(account_id: ::String, transfer_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::ListCancellationsResponse) }
|
|
1142
1145
|
def list_cancellations(account_id:, transfer_id:, timeout_ms: nil, http_headers: nil)
|
|
1143
1146
|
# list_cancellations - Get a list of cancellations for a transfer.
|
|
1144
|
-
#
|
|
1147
|
+
#
|
|
1145
1148
|
# To access this endpoint using a [token](https://docs.moov.io/api/authentication/access-tokens/) you'll need
|
|
1146
1149
|
# to specify the `/accounts/{accountID}/transfers.read` scope.
|
|
1147
1150
|
request = Models::Operations::ListCancellationsRequest.new(
|
|
@@ -1246,7 +1249,7 @@ module Moov
|
|
|
1246
1249
|
else
|
|
1247
1250
|
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
|
1248
1251
|
end
|
|
1249
|
-
elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
|
|
1252
|
+
elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
|
|
1250
1253
|
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
1251
1254
|
elsif Utils.match_status_code(http_response.status, ['500', '504'])
|
|
1252
1255
|
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
@@ -1693,7 +1696,7 @@ module Moov
|
|
|
1693
1696
|
else
|
|
1694
1697
|
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
|
1695
1698
|
end
|
|
1696
|
-
elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
|
|
1699
|
+
elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
|
|
1697
1700
|
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
1698
1701
|
elsif Utils.match_status_code(http_response.status, ['500', '504'])
|
|
1699
1702
|
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
@@ -1834,7 +1837,10 @@ module Moov
|
|
|
1834
1837
|
|
|
1835
1838
|
sig { params(x_idempotency_key: ::String, account_id: ::String, transfer_id: ::String, create_reversal: T.nilable(Models::Components::CreateReversal), timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::CreateReversalResponse) }
|
|
1836
1839
|
def create_reversal(x_idempotency_key:, account_id:, transfer_id:, create_reversal: nil, timeout_ms: nil, http_headers: nil)
|
|
1837
|
-
# create_reversal - Reverses a card transfer by initiating a cancellation or refund depending on the transaction status.
|
|
1840
|
+
# create_reversal - Reverses a card transfer by initiating a cancellation or refund depending on the transaction status.
|
|
1841
|
+
# In v2026.10 and later, reversing an auth-capture `card-payment` transfer with no captures cancels the entire `capturableAmount`.
|
|
1842
|
+
# In those API versions, an auth-capture `card-payment` transfer with one final capture is canceled or refunded depending on its processing state.
|
|
1843
|
+
# Auth-capture `card-payment` transfers with a non-final capture or multiple captures are not supported in those API versions.
|
|
1838
1844
|
# Read our [reversals guide](https://docs.moov.io/guides/money-movement/accept-payments/card-acceptance/reversals/)
|
|
1839
1845
|
# to learn more.
|
|
1840
1846
|
#
|
data/lib/moov/utils/retries.rb
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
# frozen_string_literal: true
|
|
5
5
|
|
|
6
6
|
require 'faraday/retry'
|
|
7
|
+
require 'time'
|
|
7
8
|
require 'sorbet-runtime'
|
|
8
9
|
|
|
9
10
|
module Moov
|
|
@@ -87,12 +88,50 @@ module Moov
|
|
|
87
88
|
retry_options[:retry_if] = ->(_env, _exc) { Time.now < stop_time }
|
|
88
89
|
end
|
|
89
90
|
|
|
90
|
-
retry_options[:rate_limit_retry_header] = 'retry-after-ms'
|
|
91
|
-
retry_options[:header_parser_block] = ->(value) { value.to_f / 1000 }
|
|
92
91
|
end
|
|
93
92
|
|
|
94
93
|
retry_options
|
|
95
94
|
end
|
|
96
95
|
end
|
|
96
|
+
|
|
97
|
+
class RetryMiddleware < Faraday::Retry::Middleware
|
|
98
|
+
extend T::Sig
|
|
99
|
+
|
|
100
|
+
sig { params(retries: T.untyped, env: T.untyped).returns(T.untyped) }
|
|
101
|
+
def calculate_sleep_amount(retries, env)
|
|
102
|
+
retry_after = [calculate_retry_after(env), calculate_rate_limit_reset(env)].compact.max
|
|
103
|
+
retry_interval = calculate_retry_interval(retries)
|
|
104
|
+
return retry_interval if retry_after.nil?
|
|
105
|
+
|
|
106
|
+
# unlike the stock middleware, cap server delays at max_interval rather
|
|
107
|
+
# than abandoning the retry
|
|
108
|
+
[[retry_after, @options.max_interval].min, retry_interval].max
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
private
|
|
112
|
+
|
|
113
|
+
sig { params(env: T.untyped).returns(T.untyped) }
|
|
114
|
+
def calculate_retry_after(env)
|
|
115
|
+
response_headers = env[:response_headers]
|
|
116
|
+
return unless response_headers
|
|
117
|
+
|
|
118
|
+
ms_value = response_headers['retry-after-ms']
|
|
119
|
+
return ms_value.to_f / 1000 if ms_value&.match?(/\A\s*\d+\s*\z/)
|
|
120
|
+
|
|
121
|
+
value = response_headers['retry-after']
|
|
122
|
+
return if value.nil? || value.strip.empty?
|
|
123
|
+
return value.to_f if value.match?(/\A\s*\d+\s*\z/)
|
|
124
|
+
|
|
125
|
+
begin
|
|
126
|
+
Time.httpdate(value) - Time.now
|
|
127
|
+
rescue ArgumentError
|
|
128
|
+
begin
|
|
129
|
+
Time.iso8601(value) - Time.now
|
|
130
|
+
rescue ArgumentError
|
|
131
|
+
nil
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
97
136
|
end
|
|
98
137
|
end
|
data/lib/moov/utils/utils.rb
CHANGED
|
@@ -81,11 +81,15 @@ module Moov
|
|
|
81
81
|
|
|
82
82
|
sig { params(content_type: String, pattern: String).returns(T::Boolean) }
|
|
83
83
|
def self.match_content_type(content_type, pattern)
|
|
84
|
-
return true if
|
|
84
|
+
return true if ['*', '*/*'].include?(pattern)
|
|
85
|
+
|
|
86
|
+
# Media types are case-insensitive (RFC 9110 section 8.3.1).
|
|
87
|
+
pattern = pattern.strip.downcase
|
|
88
|
+
return true if content_type.strip.downcase == pattern
|
|
85
89
|
|
|
86
90
|
pieces = content_type.split(';')
|
|
87
91
|
pieces.each do |piece|
|
|
88
|
-
return true if pattern == piece.strip
|
|
92
|
+
return true if pattern == piece.strip.downcase
|
|
89
93
|
end
|
|
90
94
|
|
|
91
95
|
false
|