From 833d8fc2b3e3071eda007411b6b71ec6c487d214 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Mon, 19 Jan 2026 13:15:08 +0000 Subject: [PATCH 1/2] ## Python SDK Changes: * `gr4vy.three-ds-scenarios.create()`: **Added** * `gr4vy.three-ds-scenarios.list()`: **Added** * `gr4vy.three-ds-scenarios.update()`: **Added** * `gr4vy.three-ds-scenarios.delete()`: **Added** --- .speakeasy/gen.lock | 1396 ++++++++++------- .speakeasy/gen.yaml | 4 +- .speakeasy/workflow.lock | 14 +- README.md | 7 + RELEASES.md | 12 +- docs/models/createthreedsscenarioglobals.md | 8 + docs/models/createthreedsscenariorequest.md | 9 + docs/models/deletethreedsscenarioglobals.md | 8 + docs/models/deletethreedsscenariorequest.md | 9 + docs/models/getthreedsscenarioglobals.md | 8 + docs/models/getthreedsscenariorequest.md | 10 + docs/models/getthreedsscenarioresponse.md | 8 + docs/models/threedsecurescenario.md | 14 + docs/models/threedsecurescenarioconditions.md | 13 + docs/models/threedsecurescenariocreate.md | 9 + docs/models/threedsecurescenariooutcome.md | 10 + ...reedsecurescenariooutcomeauthentication.md | 8 + ...ooutcomeauthenticationtransactionstatus.md | 16 + .../threedsecurescenariooutcomeresult.md | 8 + ...escenariooutcomeresulttransactionstatus.md | 12 + docs/models/threedsecurescenarios.md | 11 + docs/models/threedsecurescenarioupdate.md | 9 + docs/models/updatethreedsscenarioglobals.md | 8 + docs/models/updatethreedsscenariorequest.md | 10 + docs/sdks/threedsscenarios/README.md | 232 +++ pyproject.toml | 2 +- src/gr4vy/_version.py | 6 +- src/gr4vy/basesdk.py | 26 +- src/gr4vy/models/__init__.py | 132 ++ .../models/accountsreceivablesreportspec.py | 19 +- .../models/accountupdaterinquirysummary.py | 19 +- src/gr4vy/models/accountupdaterjob.py | 19 +- src/gr4vy/models/accountupdateroptions.py | 61 +- .../models/add_buyer_shipping_detailsop.py | 35 +- src/gr4vy/models/add_buyerop.py | 35 +- src/gr4vy/models/add_payment_linkop.py | 35 +- src/gr4vy/models/add_reportop.py | 35 +- src/gr4vy/models/address.py | 77 +- src/gr4vy/models/adyencardoptions.py | 65 +- src/gr4vy/models/adyenoptions.py | 33 +- src/gr4vy/models/adyensepaoptions.py | 61 +- src/gr4vy/models/adyensplitsoptions.py | 33 +- src/gr4vy/models/affirmitineraryoptions.py | 69 +- src/gr4vy/models/affirmoptions.py | 33 +- src/gr4vy/models/airline.py | 117 +- src/gr4vy/models/airlineleg.py | 133 +- src/gr4vy/models/airlinepassenger.py | 85 +- .../models/applepaypaymentmethodcreate.py | 69 +- src/gr4vy/models/auditlogentries.py | 33 +- src/gr4vy/models/auditlogentry.py | 33 +- src/gr4vy/models/auditlogentryuser.py | 33 +- src/gr4vy/models/billingdetails.py | 65 +- .../braintreedynamicdatafieldsoptions.py | 53 +- src/gr4vy/models/braintreeoptions.py | 37 +- src/gr4vy/models/browserinfo.py | 33 +- src/gr4vy/models/buyer.py | 63 +- src/gr4vy/models/buyercreate.py | 47 +- src/gr4vy/models/buyers.py | 33 +- src/gr4vy/models/buyerupdate.py | 47 +- src/gr4vy/models/cancel_transactionop.py | 35 +- src/gr4vy/models/capture_transactionop.py | 49 +- src/gr4vy/models/cardpaymentmethodcreate.py | 63 +- src/gr4vy/models/cardschemedefinition.py | 19 +- .../models/cardwithurlpaymentmethodcreate.py | 67 +- src/gr4vy/models/cartitem.py | 105 +- src/gr4vy/models/chaseoptions.py | 33 +- src/gr4vy/models/checkoutsession.py | 75 +- src/gr4vy/models/checkoutsessioncreate.py | 71 +- .../models/checkoutsessionpaymentmethod.py | 43 +- .../checkoutsessionpaymentmethodcreate.py | 46 +- .../checkoutsessionpaymentmethoddetails.py | 33 +- ...eckoutsessionwithurlpaymentmethodcreate.py | 59 +- .../clicktopayfpanpaymentmethodcreate.py | 65 +- .../models/clicktopaypaymentmethodcreate.py | 57 +- .../models/configure_digital_walletop.py | 35 +- .../models/create_account_updater_jobop.py | 35 +- ...eate_apple_pay_digital_wallet_sessionop.py | 35 +- src/gr4vy/models/create_checkout_sessionop.py | 35 +- .../create_full_transaction_refundop.py | 49 +- src/gr4vy/models/create_gift_cardop.py | 35 +- ...ate_google_pay_digital_wallet_sessionop.py | 35 +- ...yment_method_network_token_cryptogramop.py | 35 +- .../create_payment_method_network_tokenop.py | 35 +- ..._payment_method_payment_service_tokenop.py | 35 +- src/gr4vy/models/create_payment_methodop.py | 35 +- .../create_payment_service_sessionop.py | 35 +- src/gr4vy/models/create_payment_serviceop.py | 35 +- src/gr4vy/models/create_payoutop.py | 35 +- .../models/create_report_execution_urlop.py | 35 +- .../models/create_three_ds_scenarioop.py | 79 + .../models/create_transaction_refundop.py | 35 +- src/gr4vy/models/create_transactionop.py | 51 +- src/gr4vy/models/createsession.py | 33 +- src/gr4vy/models/cryptogram.py | 19 +- .../models/cybersourceantifraudoptions.py | 45 +- src/gr4vy/models/cybersourceoptions.py | 55 +- .../models/delete_buyer_shipping_detailsop.py | 35 +- src/gr4vy/models/delete_buyerop.py | 35 +- src/gr4vy/models/delete_checkout_sessionop.py | 35 +- src/gr4vy/models/delete_digital_walletop.py | 35 +- src/gr4vy/models/delete_gift_cardop.py | 35 +- .../delete_payment_method_network_tokenop.py | 35 +- ..._payment_method_payment_service_tokenop.py | 35 +- src/gr4vy/models/delete_payment_methodop.py | 35 +- src/gr4vy/models/delete_payment_serviceop.py | 35 +- .../models/delete_three_ds_scenarioop.py | 76 + .../models/detailedsettlementreportspec.py | 19 +- src/gr4vy/models/digitalwallet.py | 60 +- src/gr4vy/models/digitalwalletcreate.py | 51 +- src/gr4vy/models/digitalwalletupdate.py | 61 +- src/gr4vy/models/dlocaloptions.py | 33 +- src/gr4vy/models/dlocalupioptions.py | 33 +- src/gr4vy/models/dlocalupiwalletoptions.py | 51 +- src/gr4vy/models/dlocalwalletoptions.py | 33 +- src/gr4vy/models/expire_payment_linkop.py | 35 +- src/gr4vy/models/fiservinstallmentoptions.py | 55 +- src/gr4vy/models/fiservoptions.py | 33 +- src/gr4vy/models/forterantifraudoptions.py | 61 +- .../models/forterantifraudoptionscartitem.py | 31 +- ...erantifraudoptionscartitembasicitemdata.py | 33 +- ...rterantifraudoptionscartitembeneficiary.py | 31 +- ...ifraudoptionscartitembeneficiaryaddress.py | 37 +- ...fraudoptionscartitembeneficiarycomments.py | 45 +- ...tionscartitembeneficiarypersonaldetails.py | 33 +- ...antifraudoptionscartitemdeliverydetails.py | 31 +- .../models/forterantifraudoptionsdiscount.py | 31 +- ...raudoptionsdiscountcoupondiscountamount.py | 33 +- .../models/get_buyer_shipping_detailsop.py | 35 +- src/gr4vy/models/get_buyerop.py | 35 +- src/gr4vy/models/get_checkout_sessionop.py | 35 +- src/gr4vy/models/get_digital_walletop.py | 35 +- src/gr4vy/models/get_gift_cardop.py | 35 +- src/gr4vy/models/get_payment_linkop.py | 35 +- src/gr4vy/models/get_payment_methodop.py | 35 +- src/gr4vy/models/get_payment_serviceop.py | 35 +- src/gr4vy/models/get_payoutop.py | 35 +- src/gr4vy/models/get_refundop.py | 35 +- src/gr4vy/models/get_report_executionop.py | 35 +- src/gr4vy/models/get_reportop.py | 35 +- src/gr4vy/models/get_three_ds_scenarioop.py | 105 ++ src/gr4vy/models/get_transaction_refundop.py | 35 +- .../models/get_transaction_settlementop.py | 35 +- src/gr4vy/models/get_transactionop.py | 35 +- src/gr4vy/models/giftcard.py | 33 +- src/gr4vy/models/giftcardcreate.py | 33 +- src/gr4vy/models/giftcardredemption.py | 59 +- src/gr4vy/models/giftcards.py | 33 +- src/gr4vy/models/giftcardservice.py | 19 +- src/gr4vy/models/giftcardsummary.py | 71 +- src/gr4vy/models/givingblockoptions.py | 33 +- src/gr4vy/models/googlepayassurancedetails.py | 33 +- .../googlepayfpanpaymentmethodcreate.py | 65 +- .../models/googlepaypaymentmethodcreate.py | 73 +- src/gr4vy/models/guestbuyer.py | 61 +- src/gr4vy/models/internal/globals.py | 19 +- src/gr4vy/models/latitudeoptions.py | 33 +- .../models/list_all_report_executionsop.py | 85 +- src/gr4vy/models/list_audit_logsop.py | 65 +- src/gr4vy/models/list_buyer_gift_cardsop.py | 55 +- .../models/list_buyer_payment_methodsop.py | 75 +- .../models/list_buyer_shipping_detailsop.py | 35 +- src/gr4vy/models/list_buyersop.py | 57 +- .../models/list_card_scheme_definitionsop.py | 35 +- src/gr4vy/models/list_digital_walletsop.py | 35 +- src/gr4vy/models/list_gift_card_balancesop.py | 35 +- src/gr4vy/models/list_gift_cardsop.py | 63 +- src/gr4vy/models/list_merchant_accountsop.py | 33 +- src/gr4vy/models/list_payment_linksop.py | 51 +- .../list_payment_method_network_tokensop.py | 35 +- ...payment_method_payment_service_tokensop.py | 49 +- src/gr4vy/models/list_payment_methodsop.py | 81 +- src/gr4vy/models/list_payment_optionsop.py | 35 +- .../list_payment_service_definitionsop.py | 33 +- src/gr4vy/models/list_payment_servicesop.py | 57 +- src/gr4vy/models/list_payoutsop.py | 49 +- src/gr4vy/models/list_report_executionsop.py | 49 +- src/gr4vy/models/list_reportsop.py | 65 +- .../models/list_transaction_actionsop.py | 35 +- src/gr4vy/models/list_transaction_eventsop.py | 49 +- .../models/list_transaction_refundsop.py | 35 +- .../models/list_transaction_settlementsop.py | 35 +- src/gr4vy/models/list_transactionsop.py | 233 +-- src/gr4vy/models/mattildatapioptions.py | 33 +- src/gr4vy/models/merchantaccount.py | 105 +- src/gr4vy/models/merchantaccountcreate.py | 105 +- src/gr4vy/models/merchantaccounts.py | 33 +- src/gr4vy/models/merchantaccountupdate.py | 109 +- .../mockcardmerchantadvicecodeoptions.py | 33 +- src/gr4vy/models/mockcardoptions.py | 33 +- src/gr4vy/models/networktoken.py | 19 +- src/gr4vy/models/networktokencreate.py | 33 +- .../models/networktokenpaymentmethodcreate.py | 69 +- src/gr4vy/models/nuveiairlinedataoptions.py | 33 +- src/gr4vy/models/nuveiidealoptions.py | 33 +- src/gr4vy/models/nuveioptions.py | 33 +- src/gr4vy/models/nuveipseoptions.py | 31 +- src/gr4vy/models/oxxooptions.py | 33 +- src/gr4vy/models/paymentlink.py | 119 +- src/gr4vy/models/paymentlinkcreate.py | 119 +- src/gr4vy/models/paymentlinks.py | 33 +- src/gr4vy/models/paymentmethod.py | 103 +- src/gr4vy/models/paymentmethodcard.py | 33 +- src/gr4vy/models/paymentmethoddetailscard.py | 33 +- src/gr4vy/models/paymentmethods.py | 33 +- src/gr4vy/models/paymentmethodstoredcard.py | 19 +- src/gr4vy/models/paymentmethodsummary.py | 95 +- src/gr4vy/models/paymentoption.py | 33 +- src/gr4vy/models/paymentoptioncontext.py | 33 +- .../models/paymentoptioncontextapprovalui.py | 33 +- src/gr4vy/models/paymentoptionrequest.py | 44 +- src/gr4vy/models/paymentservice.py | 71 +- src/gr4vy/models/paymentservicecreate.py | 73 +- src/gr4vy/models/paymentservicedefinition.py | 33 +- src/gr4vy/models/paymentservicedefinitions.py | 33 +- src/gr4vy/models/paymentservices.py | 33 +- src/gr4vy/models/paymentservicetoken.py | 33 +- src/gr4vy/models/paymentservicetokencreate.py | 33 +- src/gr4vy/models/paymentserviceupdate.py | 91 +- src/gr4vy/models/payoutconnectionoptions.py | 33 +- src/gr4vy/models/payoutcreate.py | 69 +- src/gr4vy/models/payoutmerchant.py | 33 +- src/gr4vy/models/payoutmerchantsummary.py | 33 +- src/gr4vy/models/payoutpaymentservice.py | 33 +- src/gr4vy/models/payoutsummaries.py | 33 +- src/gr4vy/models/payoutsummary.py | 71 +- src/gr4vy/models/paypaloptions.py | 33 +- src/gr4vy/models/paypalshippingoptions.py | 33 +- src/gr4vy/models/paypalshippingoptionsitem.py | 33 +- src/gr4vy/models/plaidpaymentmethodcreate.py | 63 +- src/gr4vy/models/powertranzoptions.py | 33 +- src/gr4vy/models/recipient.py | 33 +- .../models/redirectpaymentmethodcreate.py | 45 +- src/gr4vy/models/refund.py | 79 +- src/gr4vy/models/refunds.py | 33 +- .../register_digital_wallet_domainop.py | 35 +- src/gr4vy/models/report.py | 67 +- src/gr4vy/models/reportcreate.py | 33 +- src/gr4vy/models/reportexecution.py | 19 +- src/gr4vy/models/reportexecutions.py | 33 +- src/gr4vy/models/reportexecutionsummary.py | 19 +- .../models/reportexecutionurlgenerate.py | 19 +- src/gr4vy/models/reports.py | 33 +- src/gr4vy/models/reportsummary.py | 35 +- src/gr4vy/models/reportupdate.py | 33 +- src/gr4vy/models/requiredcheckoutfields.py | 33 +- .../resume_payment_method_network_tokenop.py | 35 +- src/gr4vy/models/security.py | 19 +- src/gr4vy/models/settlement.py | 41 +- src/gr4vy/models/shippingdetails.py | 71 +- src/gr4vy/models/shippingdetailscreate.py | 49 +- src/gr4vy/models/shippingdetailsupdate.py | 49 +- src/gr4vy/models/statementdescriptor.py | 69 +- src/gr4vy/models/stripeconnectoptions.py | 61 +- src/gr4vy/models/stripeoptions.py | 33 +- .../suspend_payment_method_network_tokenop.py | 35 +- src/gr4vy/models/sync_transactionop.py | 35 +- src/gr4vy/models/threedsecure.py | 33 +- src/gr4vy/models/threedsecuredatav1.py | 33 +- src/gr4vy/models/threedsecuredatav2.py | 33 +- src/gr4vy/models/threedsecureerror.py | 33 +- src/gr4vy/models/threedsecurescenario.py | 77 + .../models/threedsecurescenarioconditions.py | 84 + .../models/threedsecurescenariocreate.py | 24 + .../models/threedsecurescenariooutcome.py | 57 + ...reedsecurescenariooutcomeauthentication.py | 31 + .../threedsecurescenariooutcomeresult.py | 27 + src/gr4vy/models/threedsecurescenarios.py | 58 + .../models/threedsecurescenarioupdate.py | 54 + src/gr4vy/models/threedsecurev2.py | 69 +- src/gr4vy/models/tokenpaymentmethodcreate.py | 33 +- src/gr4vy/models/transaction.py | 223 ++- src/gr4vy/models/transactionaction.py | 19 +- src/gr4vy/models/transactionbuyer.py | 63 +- src/gr4vy/models/transactioncancel.py | 33 +- src/gr4vy/models/transactioncapture.py | 33 +- src/gr4vy/models/transactioncapturecreate.py | 33 +- .../models/transactionconnectionoptions.py | 209 ++- src/gr4vy/models/transactioncreate.py | 177 ++- src/gr4vy/models/transactionevent.py | 19 +- src/gr4vy/models/transactionevents.py | 33 +- src/gr4vy/models/transactiongiftcard.py | 33 +- src/gr4vy/models/transactionpaymentmethod.py | 99 +- src/gr4vy/models/transactionpaymentservice.py | 19 +- .../models/transactionrefundallcreate.py | 33 +- src/gr4vy/models/transactionrefundcreate.py | 41 +- .../models/transactionretriesreportspec.py | 19 +- src/gr4vy/models/transactionsreportspec.py | 19 +- src/gr4vy/models/transactionsummaries.py | 33 +- src/gr4vy/models/transactionsummary.py | 101 +- .../models/transactionthreedsecuresummary.py | 51 +- src/gr4vy/models/transactionupdate.py | 33 +- src/gr4vy/models/transactionvoid.py | 33 +- src/gr4vy/models/travelhubcustomdata.py | 33 +- src/gr4vy/models/travelhuboptions.py | 33 +- src/gr4vy/models/trustlyoptions.py | 33 +- .../unregister_digital_wallet_domainop.py | 35 +- .../models/update_buyer_shipping_detailsop.py | 35 +- src/gr4vy/models/update_buyerop.py | 35 +- src/gr4vy/models/update_checkout_sessionop.py | 35 +- src/gr4vy/models/update_digital_walletop.py | 35 +- src/gr4vy/models/update_payment_serviceop.py | 35 +- src/gr4vy/models/update_reportop.py | 35 +- .../models/update_three_ds_scenarioop.py | 91 ++ src/gr4vy/models/update_transactionop.py | 35 +- .../verify_payment_service_credentialsop.py | 35 +- src/gr4vy/models/verifycredentials.py | 33 +- src/gr4vy/models/void_transactionop.py | 49 +- src/gr4vy/models/wpayeverdaypayoptions.py | 61 +- src/gr4vy/models/wpaypaytooptions.py | 33 +- src/gr4vy/models/wpaypaytoresourceoptions.py | 33 +- .../models/wpaypaytosimulationoptions.py | 33 +- src/gr4vy/sdk.py | 3 + src/gr4vy/three_ds_scenarios.py | 1322 ++++++++++++++++ src/gr4vy/utils/__init__.py | 14 +- 314 files changed, 10802 insertions(+), 5782 deletions(-) create mode 100644 docs/models/createthreedsscenarioglobals.md create mode 100644 docs/models/createthreedsscenariorequest.md create mode 100644 docs/models/deletethreedsscenarioglobals.md create mode 100644 docs/models/deletethreedsscenariorequest.md create mode 100644 docs/models/getthreedsscenarioglobals.md create mode 100644 docs/models/getthreedsscenariorequest.md create mode 100644 docs/models/getthreedsscenarioresponse.md create mode 100644 docs/models/threedsecurescenario.md create mode 100644 docs/models/threedsecurescenarioconditions.md create mode 100644 docs/models/threedsecurescenariocreate.md create mode 100644 docs/models/threedsecurescenariooutcome.md create mode 100644 docs/models/threedsecurescenariooutcomeauthentication.md create mode 100644 docs/models/threedsecurescenariooutcomeauthenticationtransactionstatus.md create mode 100644 docs/models/threedsecurescenariooutcomeresult.md create mode 100644 docs/models/threedsecurescenariooutcomeresulttransactionstatus.md create mode 100644 docs/models/threedsecurescenarios.md create mode 100644 docs/models/threedsecurescenarioupdate.md create mode 100644 docs/models/updatethreedsscenarioglobals.md create mode 100644 docs/models/updatethreedsscenariorequest.md create mode 100644 docs/sdks/threedsscenarios/README.md create mode 100644 src/gr4vy/models/create_three_ds_scenarioop.py create mode 100644 src/gr4vy/models/delete_three_ds_scenarioop.py create mode 100644 src/gr4vy/models/get_three_ds_scenarioop.py create mode 100644 src/gr4vy/models/threedsecurescenario.py create mode 100644 src/gr4vy/models/threedsecurescenarioconditions.py create mode 100644 src/gr4vy/models/threedsecurescenariocreate.py create mode 100644 src/gr4vy/models/threedsecurescenariooutcome.py create mode 100644 src/gr4vy/models/threedsecurescenariooutcomeauthentication.py create mode 100644 src/gr4vy/models/threedsecurescenariooutcomeresult.py create mode 100644 src/gr4vy/models/threedsecurescenarios.py create mode 100644 src/gr4vy/models/threedsecurescenarioupdate.py create mode 100644 src/gr4vy/models/update_three_ds_scenarioop.py create mode 100644 src/gr4vy/three_ds_scenarios.py diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 3fcbdecc..65ec9b53 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,19 +1,19 @@ lockVersion: 2.0.0 id: 833c6a67-4a4a-4ef1-ba24-165a29264e4a management: - docChecksum: c0c0c1b8bbe1e8acbad8d0990d56bf22 + docChecksum: 68a8d6d5952abdbb6d18faeed392a246 docVersion: 1.0.0 - speakeasyVersion: 1.685.0 - generationVersion: 2.794.1 - releaseVersion: 1.10.12 - configChecksum: 6ee2d97c3cef078a022a8ad1da70e98e + speakeasyVersion: 1.688.0 + generationVersion: 2.796.4 + releaseVersion: 1.10.13 + configChecksum: 2afe345eb3305619f93d0c7c2647bbab repoURL: https://github.com/gr4vy/gr4vy-python.git installationURL: https://github.com/gr4vy/gr4vy-python.git published: true persistentEdits: - generation_id: 1b199db8-88f0-4d43-98a3-9421ed9c9eee - pristine_commit_hash: 02e474bbbc9931d36cc43d1040d0c4094d22233f - pristine_tree_hash: fda76d750cb511891350ab78a0ba47ceda53b936 + generation_id: e1830dba-d8f7-4d65-b406-92734e102c12 + pristine_commit_hash: 7b8caeba13c5a7840884bfe0facb3db40d284d34 + pristine_tree_hash: 61a857d0baaf627a86dcaec3c8e199b186af1bdb features: python: additionalDependencies: 1.0.0 @@ -33,14 +33,14 @@ features: ignores: 3.0.1 methodArguments: 1.0.2 nameOverrides: 3.0.1 - nullables: 1.0.1 + nullables: 1.0.2 openEnums: 1.0.2 pagination: 3.0.7 responseFormat: 1.0.1 retries: 3.0.3 - sdkHooks: 1.2.0 + sdkHooks: 1.2.1 serverIDs: 3.0.0 - unions: 3.1.1 + unions: 3.1.2 trackedFiles: .gitattributes: id: 24139dae6567 @@ -522,6 +522,14 @@ trackedFiles: id: c0562d6fdba0 last_write_checksum: sha1:f65b0f8cd6a8a5c1badddb5724ed4b346cfbe8a6 pristine_git_object: 6f3f6107dde63495b9222fbf864248ce1bfd12e3 + docs/models/createthreedsscenarioglobals.md: + id: 4bfb80f5302b + last_write_checksum: sha1:5f0e51cdcfca2ec540403c8ed7c9df6a14f6a854 + pristine_git_object: db36fc79234f0a950fe270c74882a21de0cc0f95 + docs/models/createthreedsscenariorequest.md: + id: 5888030d8179 + last_write_checksum: sha1:7d53ba801d5a6cc4c8f9ee3596c09c3c189d4a34 + pristine_git_object: 58904d0e208a4617a7302bb2b3b747f9a3bf06c7 docs/models/createtransactionglobals.md: id: 5080e771a3e7 last_write_checksum: sha1:45d3447247eb7c2bb4ff62fce948943dcbb98526 @@ -642,6 +650,14 @@ trackedFiles: id: e1ca399ab707 last_write_checksum: sha1:65e1d0aa5077997147c234c296e859c23d72f406 pristine_git_object: 7749f9056ee4cad53ec32a80149656db0c550448 + docs/models/deletethreedsscenarioglobals.md: + id: 7dff0271721e + last_write_checksum: sha1:1dbd546081d0eebc1571f0bfe9ae6aa1ebe7382d + pristine_git_object: 37203b00bd4c843883f52f131a632e0a7bfa7c30 + docs/models/deletethreedsscenariorequest.md: + id: 16ec4f8553e2 + last_write_checksum: sha1:8ace4212b9d931dbab7c1424d0f6812eb8efb1eb + pristine_git_object: e973927e1159eb8a23557f1550d87862535f3872 docs/models/detailedsettlementreportspec.md: id: 38fe9486762c last_write_checksum: sha1:411660106d837b929b247e5fc2191bcbbc2ce327 @@ -886,6 +902,18 @@ trackedFiles: id: 72dd32ddd709 last_write_checksum: sha1:ab9d19da19ea21360712b988af108dcb044bfe75 pristine_git_object: 644c86587cd561da1b15a2f8acaee845ad1847bc + docs/models/getthreedsscenarioglobals.md: + id: 457870fb8c56 + last_write_checksum: sha1:0610c14de3a6f8f80d50979637e09bd26fc70b3c + pristine_git_object: 3799d1fa61f5382d3660a79190c432209ffd561b + docs/models/getthreedsscenariorequest.md: + id: e83358d14035 + last_write_checksum: sha1:28ff845d187c03a31e5fe5bd1e29e333b8c878ed + pristine_git_object: 85d00d9e2678e5571aab42b1267308a762ff18ed + docs/models/getthreedsscenarioresponse.md: + id: 4716e84d0d8b + last_write_checksum: sha1:00bedccb74af26c3a6f26c8375ce2f24b09506c9 + pristine_git_object: 6615634fe21b0ebe0f7cf91747fa9b0041b58834 docs/models/gettransactionglobals.md: id: a3953c1b1b96 last_write_checksum: sha1:13f80609a0ac5f57a23685eace2d4c905789168c @@ -1798,6 +1826,46 @@ trackedFiles: id: b82f6ee4f7ee last_write_checksum: sha1:5a0f9b126e10f996ada372e37edcec0ac29744ff pristine_git_object: dd568d1fece413d6f3be0c57e19efc84a1feb9e7 + docs/models/threedsecurescenario.md: + id: 1d7dfb82a4ec + last_write_checksum: sha1:4f67578653f80bbce8c62521d794234b05771e20 + pristine_git_object: 0734e990ec94fa89c41fe1b3f5f7375bab8072e5 + docs/models/threedsecurescenarioconditions.md: + id: fad57f6957b3 + last_write_checksum: sha1:d488688ef855f3d65b4fae148e48ce1334320bc3 + pristine_git_object: d085a3328f926839636783b399c1b989437c7050 + docs/models/threedsecurescenariocreate.md: + id: 48fc7b769ad2 + last_write_checksum: sha1:df83865eb2da553aa4ac5e47849cb8d3709934be + pristine_git_object: 96bd6308267f7a9ff7e59d0e83e5c85cc1dbbf57 + docs/models/threedsecurescenariooutcome.md: + id: c50999fee162 + last_write_checksum: sha1:3036ffce1cf2db782d3ec747f5441564dbb8d90a + pristine_git_object: dac8bd990d10e1702fe385a468bc6029b23d467d + docs/models/threedsecurescenariooutcomeauthentication.md: + id: 3c3e3953794a + last_write_checksum: sha1:81a4bc03626f9c9e92563100a990b7b76848be0b + pristine_git_object: e295b10a1424a19e744de210a813f3ad432fd3ef + docs/models/threedsecurescenariooutcomeauthenticationtransactionstatus.md: + id: 917e6b7d96cd + last_write_checksum: sha1:1392401e5ed0acf852a0e3323a417c6df9fc6daa + pristine_git_object: 8edeecd22fc11bfaf0de0a8d0a0a5ea1e9c19aea + docs/models/threedsecurescenariooutcomeresult.md: + id: fbdb7bf7e938 + last_write_checksum: sha1:6ba73cb72556ad4a17419a1b4092294b17849721 + pristine_git_object: 8034028f56152e5d222c94f998c3fb80a0b2a74f + docs/models/threedsecurescenariooutcomeresulttransactionstatus.md: + id: c3612aa180a5 + last_write_checksum: sha1:87404b3a37c4eee2d484b3a82c6d8ab54d9cafc2 + pristine_git_object: 0b2d4e578b4c436867235142323b0167f26bbb4e + docs/models/threedsecurescenarios.md: + id: 55eee0edd1d6 + last_write_checksum: sha1:a463efeec7eb835cef63709fb718553672792ec3 + pristine_git_object: 3141882c899d7e2d85a06ba81d7d3b73e94f70fa + docs/models/threedsecurescenarioupdate.md: + id: 8196d04e1490 + last_write_checksum: sha1:b0fee83781286edb734d315fbedfeaffb740d019 + pristine_git_object: da23f573f9083ed4419654b22aa3900ea5bb9f9e docs/models/threedsecurestatus.md: id: 55899ed81968 last_write_checksum: sha1:c3566b0ba4082c25bbd960652e612b7f2a510c9c @@ -2002,6 +2070,14 @@ trackedFiles: id: 8e79ed21c7b6 last_write_checksum: sha1:034350ddca5b06022b00f17076bf58e953cd22d3 pristine_git_object: a641d19c1ac92350f3c07bc9271a6b0a870df673 + docs/models/updatethreedsscenarioglobals.md: + id: bcce3e0da3e5 + last_write_checksum: sha1:1d3cf05e668c864ea111f4c5d8c42e333d56320e + pristine_git_object: a4497f6959297c25538f52f7e25114d6f1134241 + docs/models/updatethreedsscenariorequest.md: + id: 45223e6e4966 + last_write_checksum: sha1:245b5a6e801518cdb3bc303e9990cf3f0d73c8e5 + pristine_git_object: 031fac6a10da66fd9ff63252f38454bf0aceff6b docs/models/updatetransactionglobals.md: id: d1be28dd3d72 last_write_checksum: sha1:64deecec45a8f8323cff857d5a7e7d52fa2e3db3 @@ -2198,6 +2274,10 @@ trackedFiles: id: 57ad62844f79 last_write_checksum: sha1:362894b9f8c3e1e12abb43e7442703693d925db1 pristine_git_object: a3f212b22be155a47de24e7e217168022f33403f + docs/sdks/threedsscenarios/README.md: + id: 81ff4c3f8215 + last_write_checksum: sha1:e7a911d50a015cfd120fd3e6863fbbf0bfe50cbb + pristine_git_object: 1c164f363de02939f9ce80cf4dc53933c585e5b2 docs/sdks/transactions/README.md: id: 85592abe3c6b last_write_checksum: sha1:130efd9cac1263652e0a8d5d9d83f68e39d5f7cb @@ -2224,8 +2304,8 @@ trackedFiles: pristine_git_object: e8cd3e85682cd3d489cf3c5be75a0563d0c9f4bf pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:97f3b5569a6a45f2350db51d11064c4565f48342 - pristine_git_object: dd361d5c02c2a47d79d8ecd5f964f44dd1ffe74e + last_write_checksum: sha1:84d58dd559c03ee67e5faf0440ed224c79f92171 + pristine_git_object: 566545311b8aa3025397c060ed7879d7e8d581c4 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:63a92abbd1de3323613f0d4c1ae4412076577710 @@ -2252,8 +2332,8 @@ trackedFiles: pristine_git_object: 83a0d00f9b5b1a6d837643a32bfd0f82cd4f98ce src/gr4vy/_version.py: id: 1b5ad1da47aa - last_write_checksum: sha1:604c6c229e36d81b353eb040fd98ba95c6160cb6 - pristine_git_object: e8a73eeb4344899add2e1e57574978103cf35068 + last_write_checksum: sha1:29aad01c3e7b294c3e0f08f2afc5dad8ddd3b6fe + pristine_git_object: 17456b857d19b4397e5bc312662ea15ae68a6106 src/gr4vy/account_updater.py: id: 6dc8f39e2fb9 last_write_checksum: sha1:fabc79a59dd06fb927ce2d834fbafbcad5836a4b @@ -2276,8 +2356,8 @@ trackedFiles: pristine_git_object: 93727063293c64b3f5a6ecce8d52ddca19a262b3 src/gr4vy/basesdk.py: id: c0a7e53766ee - last_write_checksum: sha1:52de8848a811b6b9010287036016bf11fad24a8b - pristine_git_object: 40da7bd53f1b0cf3334a61121b43ed4a803f101c + last_write_checksum: sha1:bb6e2a13822c9a8a4b883388ac7c677aff1a22c0 + pristine_git_object: 801b0d9f297ff819c5ffb72bce681e780b8fee2d src/gr4vy/buyers_gift_cards.py: id: 7e27f7deeab1 last_write_checksum: sha1:93956d90c2092bd10ec004a24bd583f7e44ca221 @@ -2404,48 +2484,48 @@ trackedFiles: pristine_git_object: 2d392799bbe0b66682b15c14348917eccbcd684e src/gr4vy/models/__init__.py: id: 427cc7fddfe2 - last_write_checksum: sha1:27a988875d3377e255521d06967cb23e1e50c57f - pristine_git_object: 565fc9d45df7abda6d0d56b3e888e54e2eee00c3 + last_write_checksum: sha1:d2c5c451fe5f80cd2bea9e0156047b008af614f3 + pristine_git_object: 9c07d100223a9704c31ccce60e20235e89182c57 src/gr4vy/models/accountsreceivablesreportspec.py: id: cc6a9368f988 - last_write_checksum: sha1:3bbf41c27e4bea011331f20e28cf16a1109fd7dc - pristine_git_object: dd74c0230349fdfd59b870a9a47eca459678ea27 + last_write_checksum: sha1:dcf155a79da77b3ca554d2cf60138dd4fbae33bd + pristine_git_object: 587c192ed2d4b3861fe3b4785f571d2e6eb58683 src/gr4vy/models/accountupdaterinquirysummary.py: id: 9687035e25d8 - last_write_checksum: sha1:2ee12ed8f9881812085657f1562b61cb07c6c2ca - pristine_git_object: 8f18c6dff7c55531a7ab49504315e3a289db7bb9 + last_write_checksum: sha1:b181c5d55c3bd9226d2b43abba139a0f8ff2f5d5 + pristine_git_object: 1fc49e08d3f301548f7dbaa208c631c587b40113 src/gr4vy/models/accountupdaterjob.py: id: 8ad0e2f36e56 - last_write_checksum: sha1:7b828984d46c4e062846b69fc53627d36597a15f - pristine_git_object: 2fcdb6c7ba6a3795949749d5abf1bdddf2ad0523 + last_write_checksum: sha1:dfb621ebdf76a9c66f16eb17ceecbb087f7b30fa + pristine_git_object: 50f62a4f5d995e4446aeb827e4f4e5fc993f72ef src/gr4vy/models/accountupdaterjobcreate.py: id: f4ea6db64a8a last_write_checksum: sha1:d801fe5f5143c8627c4b8e13acf7ed90d1cd7a65 pristine_git_object: 41f57e99c513c95c01f21f95185668adb9680d51 src/gr4vy/models/accountupdateroptions.py: id: 871c02c08a48 - last_write_checksum: sha1:a23111192b095ba28685aee2902b7de7f8ff86a8 - pristine_git_object: ddde2ce18cbad41017f7ea83000f171113153e4f + last_write_checksum: sha1:c6d223edb95f1e23356e8e0caa9958c9bcfa5610 + pristine_git_object: 1dd28435c5a26f6414e3812962166a133fc794b2 src/gr4vy/models/add_buyer_shipping_detailsop.py: id: daa8d37a78aa - last_write_checksum: sha1:ac03fd89e05639cc5726d5922338e6aca9dc11e7 - pristine_git_object: 3910f642e7f92bd39669498a07c73fd8a980defd + last_write_checksum: sha1:a8039a43e1641071945649269928f63bfeddcef5 + pristine_git_object: e41022ab36c2744df794aa492bc07efffe511d3a src/gr4vy/models/add_buyerop.py: id: 89832afe5306 - last_write_checksum: sha1:00794fc1986011487315a971a148089ce96af87f - pristine_git_object: 9e45a8e3a62f7bf1f2a7b112a8fb46cb51380439 + last_write_checksum: sha1:389c600a18ace7a8390cd381d8012dc93c76b033 + pristine_git_object: 841cfcf57c4f4098f952c56fefb121e952b0d8ea src/gr4vy/models/add_payment_linkop.py: id: fe838eed8f62 - last_write_checksum: sha1:b21ce4c739ea4c3f57e86213c1d74017fc899969 - pristine_git_object: 377aa6cdbcd5a3f34704c97794a6b3a797afa0a1 + last_write_checksum: sha1:696ea835cd82c65d5553a5fa1e43180467b11802 + pristine_git_object: 13994120604226c9dc7720b01e9e20ece17c746e src/gr4vy/models/add_reportop.py: id: 4c01f1c5fdbc - last_write_checksum: sha1:07e422aaca0ce3384409bc0ae050ba708e26f1a0 - pristine_git_object: 370a8dc6cb1e99c89c5df3ec9cd99a776de50c25 + last_write_checksum: sha1:e859f61fb967dc713fc8cd3254d71727333ea56f + pristine_git_object: 0a998c0b0cca7b0128dd0ff88fbe3981bbdacdc7 src/gr4vy/models/address.py: id: 663cd87bb41d - last_write_checksum: sha1:47438479f967b2f3ff5cbdbfde0fcac919d50e1d - pristine_git_object: fbac96b502513853026a7d2d2f37d07fa96f9076 + last_write_checksum: sha1:bbb42455d52b5e22b177e2527bc71b27e65b0bd3 + pristine_git_object: f496f11481bb73f3f6c00329c5c27f01a15240ce src/gr4vy/models/adyenautorescuesepascenariosenum.py: id: 32cb2b27e248 last_write_checksum: sha1:a3b8261d99a74cbbc1f226362c240b46c76c4470 @@ -2456,48 +2536,48 @@ trackedFiles: pristine_git_object: 6e326e646ca00e7e57cad5b8bbc0fd793b8ef2a9 src/gr4vy/models/adyencardoptions.py: id: a85776b081fa - last_write_checksum: sha1:a8869f4a1fb5af7b57c4c5ed0eacd252cb9b1e7e - pristine_git_object: e582e7e0e35c9fc0e0b3360351acef4edfd3f362 + last_write_checksum: sha1:5c511f3ce8a4212e3daba00390446beb21a6ceca + pristine_git_object: b0620d1d0434e3e0868194bfc7ea30939a8cf630 src/gr4vy/models/adyenoptions.py: id: 77d460c16e14 - last_write_checksum: sha1:8c06f78f700eed6a3124de4084e7166b92804546 - pristine_git_object: 7af17426b1fe11c944df7766df5d3978097c398f + last_write_checksum: sha1:f9d7a6c8b6a32a37f16bfa6d225a6c28202af9cf + pristine_git_object: 12831768dc612e1ce44b20f23a885c7f4dd4f708 src/gr4vy/models/adyensepaoptions.py: id: 212ffe8f7a45 - last_write_checksum: sha1:7e20553238e99d8e6e39f2c2495d4fb88e57aa50 - pristine_git_object: 43d6aa3f69f03a0de471591821185a643951da70 + last_write_checksum: sha1:28fdbb4a252a8c40bdb296cba9df05128def618e + pristine_git_object: 656a20e44b390984a74df3643f4e4022156e4f47 src/gr4vy/models/adyensplitsoptions.py: id: 345fa89e2d7c - last_write_checksum: sha1:79ba70d7c8726f23dc81ebc0d75f0b1ee7ee1ae5 - pristine_git_object: f4e00d175bd92efefa14f3292070354b5c766bad + last_write_checksum: sha1:38b885396125cea195b9c4ec557448ac9595a0fb + pristine_git_object: 6959b0cd35e3c3bb8f67d7e30629f179e19eeb53 src/gr4vy/models/affirmitineraryoptions.py: id: 3936aa4a6297 - last_write_checksum: sha1:7b22035041d34e0c8ac50ccf0eecf3b239ded96d - pristine_git_object: a156c86501290ec725a1cacecdea9f791728660e + last_write_checksum: sha1:7e09056de804d5c6b5fc81a864827b96d8602ff7 + pristine_git_object: 4e63b27f5c74e6e1af74d02fced7c7a3260656c5 src/gr4vy/models/affirmoptions.py: id: 839beb6301e3 - last_write_checksum: sha1:af5dcb7f55e6f4442a54cb50479da9ba9c25c065 - pristine_git_object: 594b114343b8eff976f8795c99536a60811c8dc5 + last_write_checksum: sha1:8867c3e2f4bb485c9dc311ef8ac20c93fc39014a + pristine_git_object: 5df1eadbda5ff0269da920abf93623dea31bbd2f src/gr4vy/models/airline.py: id: 98557348893f - last_write_checksum: sha1:f52e35ab557a0ce90a8058f03d63f9d7fe763425 - pristine_git_object: 13ffd29a5e1dec12bcc10c08437b54c29a110125 + last_write_checksum: sha1:682be09d0b0ba86ae79f821ff067eb887a87d710 + pristine_git_object: e984bd72326e3de89c950c3c339455b672dc41bd src/gr4vy/models/airlineleg.py: id: 695de00af874 - last_write_checksum: sha1:b4991e08d58044cf3207d6d75b6301e7880895cd - pristine_git_object: 68a3fd7cb8addfa9e60c32baffd13b7ac102a3fd + last_write_checksum: sha1:7f1898f78e749da25fb3e7c660e8e61a6f7a709c + pristine_git_object: 847b2412b05bbe246f30efeb4a882f8eeb3b471c src/gr4vy/models/airlinepassenger.py: id: 5a0988d6ff0f - last_write_checksum: sha1:108acdba69872f05b90bcaf65b31ed7599eee1eb - pristine_git_object: 3109539e304186d62d04c3a4ca545012ea4d48f9 + last_write_checksum: sha1:6cd071de29ad43859438e159b0da9dd646bb7052 + pristine_git_object: 42e84fc2f4a70e03736807450a3aa9a01e4862c8 src/gr4vy/models/antifrauddecision.py: id: 87ef178e6e2a last_write_checksum: sha1:0005be541a8447aeed9b82fd8f256eaaaabf7a3d pristine_git_object: 780aee3eb459740d83b7ffef6c815a1785a3f0e0 src/gr4vy/models/applepaypaymentmethodcreate.py: id: 6f8d3c72e27c - last_write_checksum: sha1:9e9278d2b96589ad6ba606017ac7b3121aa88b48 - pristine_git_object: 1bad756eda7bb6cae5d6867e33f920ff31d98443 + last_write_checksum: sha1:95140d20f370d684222e5cdbf154ad48a48fe09b + pristine_git_object: 1f560923fab52988cde4c314350c428be011a866 src/gr4vy/models/applepaysessionrequest.py: id: 1300871e71e8 last_write_checksum: sha1:b82211a644d44f13fbb89a482cba14f843b55831 @@ -2512,84 +2592,84 @@ trackedFiles: pristine_git_object: beee80521633c442838d755bff60f8752871ce42 src/gr4vy/models/auditlogentries.py: id: 8bad49c71c0d - last_write_checksum: sha1:f04b7e17e08b7ed6cce0cdf9cfd685c2aa82a751 - pristine_git_object: d42181e008c4026cde381cfb54f635dff273bcec + last_write_checksum: sha1:20f013faba48bd3cd2243c143892753ac4b29c66 + pristine_git_object: e15e8d1a5b03a2c7bab8ca833c21fd604fb97ae0 src/gr4vy/models/auditlogentry.py: id: cbf13b54c7f4 - last_write_checksum: sha1:ecb6637b1d0371516aece6295939fa2e5e03455a - pristine_git_object: 80b2d2d152129b4f30fc73bfa55c04aa5ba30473 + last_write_checksum: sha1:4fcd786997c43746ca559b8be2722fe75b9de859 + pristine_git_object: cc2fdc46d58af22bb9ff9a2156e2bd1381954be4 src/gr4vy/models/auditlogentryresource.py: id: 0efdefccd086 last_write_checksum: sha1:a18b2847957195e022653bc0e52170ab7bafacad pristine_git_object: 3c03749311d9cfeaff0054615a95fe805b3af137 src/gr4vy/models/auditlogentryuser.py: id: 49c595891a8d - last_write_checksum: sha1:9fbf6ccbb3d8941cb7cfd4e0825176b18363b267 - pristine_git_object: 3ede4a5542e292c863dedd6df18ed781c552763e + last_write_checksum: sha1:32325984999b992c4ac17094fa2bd1ec24a61f00 + pristine_git_object: cdb21268546a40a3561c53d6c2bfe8bd1952e2f5 src/gr4vy/models/avsresponsecode.py: id: bdf834cdd83f last_write_checksum: sha1:72ddc064beeda9d7773c62ae80b1c9c42a409280 pristine_git_object: be3c99e368f8ffc8ba619ea086ba8b5bbfd518f2 src/gr4vy/models/billingdetails.py: id: 6640c6d47e8f - last_write_checksum: sha1:e33cfd6e750682920dd2eaa3fab0e00255b2d187 - pristine_git_object: 19419307cfc5296ad71447714c736f0d22b4abbd + last_write_checksum: sha1:c4efcf5dab6ebbdc5db3077fd3e994ffc8f97cf2 + pristine_git_object: 95285e44f918302850fc84547b4104b052b341b7 src/gr4vy/models/braintreedynamicdatafieldsoptions.py: id: 7087afc8294f - last_write_checksum: sha1:b64a3282c59778f5f2d3ff5a48c92770dbbb5a52 - pristine_git_object: 76d7097ba5a741f162e67b599f465e63ff0f3bb4 + last_write_checksum: sha1:2a5d6291cc353fb4969fdc025d5f5b33edba8aa2 + pristine_git_object: ca24a380259322c32a67d7f5a1b04bf2aa41e630 src/gr4vy/models/braintreeoptions.py: id: c1f2e863aa72 - last_write_checksum: sha1:4c17b8ab68ce9616a65ddacd04feb4e469c034a0 - pristine_git_object: 6425f4fb1b9452f65d4928826604b8109e069188 + last_write_checksum: sha1:4e0c6579ced6f59fe15e3a65c0878d4c29d9ae49 + pristine_git_object: e35a986edb7291d2987d2857314824a1f39cf206 src/gr4vy/models/browserinfo.py: id: 40ac9950ea28 - last_write_checksum: sha1:f3c1723fc2435134a80731430d30d0705906d848 - pristine_git_object: ed8f39a1be9816dfde9912a8955bc183cf46daec + last_write_checksum: sha1:8d0506864fee0bc259845b359d6fdd64a0491e62 + pristine_git_object: cf3a510fa1209c542201696c870e321abe1caf75 src/gr4vy/models/buyer.py: id: 00e2d1cefee3 - last_write_checksum: sha1:1b0dae0e9eadbce83c9ce18c4c649fc56981c385 - pristine_git_object: 0bad7fa309daa33ae02819f68caced44b7922c34 + last_write_checksum: sha1:761628c16173983148bd86130c5248d889fa212f + pristine_git_object: 80e95ffd05194d7c8e98c8dbee761adc84c04349 src/gr4vy/models/buyercreate.py: id: a77b7335440c - last_write_checksum: sha1:1926530bf5f57ad24fa451ae1b0b4966bea04f32 - pristine_git_object: 105b5383bbbda96e8e3345cb55ada219275e0e17 + last_write_checksum: sha1:8392a155a5df5c410f1b8177968282635498a190 + pristine_git_object: 0fd638a8b5bf8abe99a018e98eb6224507fc0840 src/gr4vy/models/buyers.py: id: 4b106d302b03 - last_write_checksum: sha1:5c684e3e5b827f3ad19f9e20801b363c811ac834 - pristine_git_object: 53651e20fface3f415a75fdf0921907efcab70e1 + last_write_checksum: sha1:312d6d445975783adc54270ab8772eff1e550d08 + pristine_git_object: c7cef7d9c6cbb13a04aea268b8fa987cdc6ed8b0 src/gr4vy/models/buyerupdate.py: id: 04821124614b - last_write_checksum: sha1:651e6eb15b63ce696bff51449b743c09556430d5 - pristine_git_object: 85bebc16c8a5f92bba6906054ec1e5d336be6d51 + last_write_checksum: sha1:89f869e945b12deb01a68c7e9bd08ad87e254419 + pristine_git_object: b508a6ee183dd4b4d6aa57ced7ae9024ebcc05ca src/gr4vy/models/cancel_transactionop.py: id: 27dd21a4397b - last_write_checksum: sha1:22a02ae155e6dfaa917183d2c0cbfa3ed66fbc53 - pristine_git_object: 361be84f3aae81d0c42d1952532b8c620d2327d7 + last_write_checksum: sha1:493842cf541c46d161e47c613ef486ace6fa9010 + pristine_git_object: ea472bbd6f00ff980a40eb0b71809934e4b91473 src/gr4vy/models/cancelstatus.py: id: fd0bb4552679 last_write_checksum: sha1:6f647f7206ea26da7e069f81d033d10decd6271b pristine_git_object: 9c07ce68fa1a96fad83539592f950f68dfb19c5e src/gr4vy/models/capture_transactionop.py: id: 2b1662028651 - last_write_checksum: sha1:e7e1a3053d513cbd55dbd1e9f0a51cceeea9bb31 - pristine_git_object: 4a067cd6dded03ec211e7a2c46fed101e17d0bb2 + last_write_checksum: sha1:897e80dc8aa3ac84f5cebd7acf7d610524d1b681 + pristine_git_object: 4ee824a881355d4c6e2f5edd5ba3546928ef561d src/gr4vy/models/capturestatus.py: id: e67d540a3637 last_write_checksum: sha1:7a7466a8398b7b2742d75479f3d2afcb099bfa77 pristine_git_object: a17ef133d358ace305f72f041fd3dbe75ee97711 src/gr4vy/models/cardpaymentmethodcreate.py: id: 615cf9b0e1e3 - last_write_checksum: sha1:1db004e17284b3e60ee6d8fc55439662622f9d53 - pristine_git_object: cbafd9dac8efbf339a6f765eb2a125f4e34f0043 + last_write_checksum: sha1:63b28ce247cca4fc7d3c0a6794bde342f75feed7 + pristine_git_object: 7ffc2fdbd4bff0ee349814e424eab5a19ffb93fe src/gr4vy/models/cardscheme.py: id: bc66fdddf58e last_write_checksum: sha1:22372870f3a27791206813adc705189cfe6444ae pristine_git_object: 4dec834430031f1d37f7dde15dec2de3538dc87e src/gr4vy/models/cardschemedefinition.py: id: 48c984385889 - last_write_checksum: sha1:00abc2ccbb115ddc8c99afaff866eaca106b2c83 - pristine_git_object: b29e9330fdc0ae28e854138c7cb0118586219245 + last_write_checksum: sha1:2f1bb175f47855092c1bc39443f556c8857ca36f + pristine_git_object: 779a737c6a1cfb39a30565910504e9f29de1b164 src/gr4vy/models/cardschemedefinitions.py: id: 30408a100ae9 last_write_checksum: sha1:bbea7d08909f0dba108343b1fbda92553a1fe49b @@ -2600,52 +2680,52 @@ trackedFiles: pristine_git_object: 78c7c67ff31709b4f0dc042a5724e04944b6acd6 src/gr4vy/models/cardwithurlpaymentmethodcreate.py: id: 654b2338ae88 - last_write_checksum: sha1:4d929e5b8519b7f30d12ed9be36e735adb78c3a6 - pristine_git_object: a89b91af528904f775ca61be1302095edaae0e63 + last_write_checksum: sha1:a2be97a8ae34613821c32aa48f9b643e42ee72b6 + pristine_git_object: fc0d6515be3ae05c0483f10c3f63036741404209 src/gr4vy/models/cartitem.py: id: 65243967d320 - last_write_checksum: sha1:b9a5485417762288d295df7af85229961b7ae31a - pristine_git_object: 0f301844e5fe60ecdb5e8e97d99516c9cbaa3c0a + last_write_checksum: sha1:1e30a48479a6d0381aa5dccebce66f1d32e85173 + pristine_git_object: 5752b7ac0f64bfb17e1b793a6a121e99744bba83 src/gr4vy/models/chaseoptions.py: id: 871df09f4301 - last_write_checksum: sha1:899ed9466e495525373a900ea99a48cffb72a800 - pristine_git_object: e984bf68bbcb1f9c4bb7134cd8343d6e0fafa09a + last_write_checksum: sha1:fdf61190eef33c7f3154a001face22cbe0e9c792 + pristine_git_object: 6733363ad819093fce07ccfa69c3a1381e6265a0 src/gr4vy/models/checkoutpayoutoptions.py: id: fc0cfde95536 last_write_checksum: sha1:34a5378eced910644915df9c42604c73f8fa659e pristine_git_object: a84484ef16e1de3f9af4c726825ec1330ef03eeb src/gr4vy/models/checkoutsession.py: id: 65ce7d0b73a0 - last_write_checksum: sha1:d6839b87bb6d3a337cb6e097548ef26d77d6e17f - pristine_git_object: 56bb85fbd0e3f9e23c885bda74e694167c482109 + last_write_checksum: sha1:5e1785c0b8cb0c92873bfb8b444449be85b67bbf + pristine_git_object: af66c829707f3010f99059d5adf9729dc46a3bf0 src/gr4vy/models/checkoutsessioncreate.py: id: ddad235ab388 - last_write_checksum: sha1:b950389fe041cac8faf25a0cfc1eadae88669bdd - pristine_git_object: 8fe42d76146403077c0c0a907eb2f22b528ebad3 + last_write_checksum: sha1:31d6c1bf2cb247bd3e53b9bc54693f00929a4b1e + pristine_git_object: 93fa08340a51518082a43d90fe3b149440c96a14 src/gr4vy/models/checkoutsessionpaymentmethod.py: id: 47ee3eb957bc - last_write_checksum: sha1:e60afba4ea9616567b311c4fc33e31e84dd5bf6a - pristine_git_object: f707a202ade602e49660ce1f4fa101887b787edc + last_write_checksum: sha1:e34079437defba02f81a82e678f17b4b78f379f2 + pristine_git_object: 9670ccde0135d372c4c01487480ded21b661de3e src/gr4vy/models/checkoutsessionpaymentmethodcreate.py: id: ba7c15c528be - last_write_checksum: sha1:a3282a69f8def16d96d8e01849bdd8c438a4e3b5 - pristine_git_object: 6700f29dba58321ab983496fc3bf58a5d8772e8b + last_write_checksum: sha1:4611d9652c7610e844d538206bfb7da64eb6aa31 + pristine_git_object: 771190043bcc5ba81380e9b6cdad118d2a6e3ee2 src/gr4vy/models/checkoutsessionpaymentmethoddetails.py: id: 4309d665a0ec - last_write_checksum: sha1:180a5c2f740dc572d25de2cc7edd595789b6fe13 - pristine_git_object: c173f066e470ad1e65d9c602b1f7e2d484ef8033 + last_write_checksum: sha1:a2e1ca6b3f44fde463ee55880fcbe48ce9d5ad8c + pristine_git_object: f749bacad0d8339886cf41b77e4c380a5af89b04 src/gr4vy/models/checkoutsessionwithurlpaymentmethodcreate.py: id: 8093d02c85af - last_write_checksum: sha1:8efed5345f976fa5b2710e3371ec195f7eecb47d - pristine_git_object: b2f54e95e4b37e35f8d31e7f7016de9f95a2d752 + last_write_checksum: sha1:4d29c99f75d4e14a9156bab4dd84462413464fc2 + pristine_git_object: 2e7354b291129857ed24007953eb12effebc1ae3 src/gr4vy/models/clicktopayfpanpaymentmethodcreate.py: id: e05ecc77e3e1 - last_write_checksum: sha1:66fa471d3bbf74ce05848d990e1f7efd66a48740 - pristine_git_object: 35535ba8e12d2af96c5901ed4f101746067491cf + last_write_checksum: sha1:3019869dfbd695e4a5eb6cb6dbec14b578084840 + pristine_git_object: 8fcd3af206e26ebca63986a92b5bb35f73e49345 src/gr4vy/models/clicktopaypaymentmethodcreate.py: id: efb32d678f4b - last_write_checksum: sha1:fd0e423cdbe68985da5c4a69b73844528caa7d39 - pristine_git_object: f8706e8e990899291ceacd57296f3b328b022ed5 + last_write_checksum: sha1:b74dd7ca6dbeef8dc64ebcabe204f0a6b73e6450 + pristine_git_object: 024ce6567deff309025eab82ca3c04583f27aff0 src/gr4vy/models/clicktopaysession.py: id: 8d3d6f8fbd84 last_write_checksum: sha1:dbd396c95303afef4a94706f4d7446d51d77d02b @@ -2656,80 +2736,84 @@ trackedFiles: pristine_git_object: 2772e0589d8cfd763ad30098680d213f0db6b211 src/gr4vy/models/configure_digital_walletop.py: id: d71cc153c5f2 - last_write_checksum: sha1:ff814251f74b923746de240862415524798b28c9 - pristine_git_object: 5757ff5b868787592088f2d965666ebb3b51a3a1 + last_write_checksum: sha1:0461ba08a81c34a58c577a406570a92bfa17f805 + pristine_git_object: 9738b9ac52a910aa644b2bcac319c79289ace2ab src/gr4vy/models/create_account_updater_jobop.py: id: 284b0b88230e - last_write_checksum: sha1:d8560d057b7897e87ece718698ddbc54df9db943 - pristine_git_object: b02475c55f43891c77bc1db69a811c7444c33e87 + last_write_checksum: sha1:41f614191ff303eff43bd2d29cb889ec46521dbb + pristine_git_object: 047ce71cfcfddfbe6a460ac7a4e60f601aa953fd src/gr4vy/models/create_apple_pay_digital_wallet_sessionop.py: id: a58074291415 - last_write_checksum: sha1:94242b9a2a3e473af9e0b79d20a2e28433bcdb35 - pristine_git_object: d32c11c97ac49a22bb813a8a1bec078b27a1e45a + last_write_checksum: sha1:eaf5d1b10a52f0b2124a110fbd015a2550118e50 + pristine_git_object: 7a3480b1bb1b46aa5b6172654f5adc29c0057fdb src/gr4vy/models/create_checkout_sessionop.py: id: 74e7fe5dc099 - last_write_checksum: sha1:d63876af591ce57a97033c13a12451349672ba23 - pristine_git_object: c279ae57caae18454c8d4c6679f8e3a7176a2140 + last_write_checksum: sha1:5e0e950cdac871b24de4333137cda227af5b7ae3 + pristine_git_object: 650a269a3da39bb6cf665e927e46a965eec0e988 src/gr4vy/models/create_full_transaction_refundop.py: id: 5a200097ad4f - last_write_checksum: sha1:d999b94632516d4cfbc68dd5fd15b028fd320f3a - pristine_git_object: 34fdb085ca2a7614126125ada8fe25b00b9a3707 + last_write_checksum: sha1:7adc30873a199c07aaa26f9296104f5560c588a1 + pristine_git_object: 97e150aed32551c019c89ba0ca9d4c1eab0a1b10 src/gr4vy/models/create_gift_cardop.py: id: baf590891ccd - last_write_checksum: sha1:24ef54ceff768b154cbe15a21fe4f738f8a1c1e5 - pristine_git_object: 903c3dea07f9473492bd6e069c579948fe0f4928 + last_write_checksum: sha1:9bd309ccb53cdd5aefd62e4a3ae73fc5c02dec4a + pristine_git_object: 290eda9b3471fb2de550399113e6c3214f678e00 src/gr4vy/models/create_google_pay_digital_wallet_sessionop.py: id: 6921a6f851f6 - last_write_checksum: sha1:bae87da61810e10945861a073fd89b91d6d8174f - pristine_git_object: 291d99bb34a36cc871bf3afa5cb31a8053137dae + last_write_checksum: sha1:8691d786143163b7556802e6eebb783b50bad3f3 + pristine_git_object: 1d3fdbed265b3e70a2faa874b519bf931100ffe2 src/gr4vy/models/create_payment_method_network_token_cryptogramop.py: id: 3512b52e3192 - last_write_checksum: sha1:8f5f1a97aeb915a9e8a27a20124b7f381f0c4951 - pristine_git_object: 71af9c2d4072de5d98cc7d5a2824e9d52ea6887d + last_write_checksum: sha1:2eb7c091d80cdd32a93f6df867a1b746ac4f59d5 + pristine_git_object: d04952aefafa8dedae82253608ccceb3edaa3d52 src/gr4vy/models/create_payment_method_network_tokenop.py: id: 73aa512eef18 - last_write_checksum: sha1:ddfed39599e1499c79a073bffc937f69337e8fba - pristine_git_object: 9fb863c4cfa1038d5d562bda486415919cde8c70 + last_write_checksum: sha1:0c7bfa1100be0301b7384e02ba81dc61fb6bbe4c + pristine_git_object: 0151313f278647ae5033c9d37c97deec5777c609 src/gr4vy/models/create_payment_method_payment_service_tokenop.py: id: 813c793869ab - last_write_checksum: sha1:cf71ef7bef8287ec64e53f8371733eb4d4f2acae - pristine_git_object: 2818c18e7005b5dca747c4474234d98b71821046 + last_write_checksum: sha1:305b9c2067f72dc13aee0e6cd8b4b0f1d0ff1616 + pristine_git_object: 54ec99908210c47066f44b012b86ea11d5d77160 src/gr4vy/models/create_payment_methodop.py: id: f14db52a26ca - last_write_checksum: sha1:52a0b701dbde66ddc24c47016ff0cdfd9aee7adb - pristine_git_object: e84c162c8712df9583d890646aa67cdaae236e60 + last_write_checksum: sha1:24e182e5643915d4644f3c458d1fcae98d50cb92 + pristine_git_object: fe3022452739041a661629c7dd2d649c78fd2a88 src/gr4vy/models/create_payment_service_definition_sessionop.py: id: 9f8513b610d6 last_write_checksum: sha1:52d1e01b776bf16266ba42b11c43236752ad81d0 pristine_git_object: ae9d6464f3e52b54467961cc5ad7bc2805f7eff3 src/gr4vy/models/create_payment_service_sessionop.py: id: 49e2904059f1 - last_write_checksum: sha1:5b163c634d2873eb93d1db1f692b166b9de311be - pristine_git_object: 9f85851f9a1853387aefeba0658210241663e8ea + last_write_checksum: sha1:09aa1812d9ad94438ff6ed3f458bfaf07f4ddc9d + pristine_git_object: 4c5daea802298e7910a499f585f03acbf562a859 src/gr4vy/models/create_payment_serviceop.py: id: 99dedcaa7b84 - last_write_checksum: sha1:b5924c556ab9a55fcbbe8d618b5be5e7b50d4a6d - pristine_git_object: 1b8709c0dc5e62f0e45b3c075d508c61ebbeb47f + last_write_checksum: sha1:a6cc329666c423b46ae4c72849fdda634bd2d4ea + pristine_git_object: f5b113cc68c4056caf728e67a101e665020f6794 src/gr4vy/models/create_payoutop.py: id: fa2b9a7bc0b6 - last_write_checksum: sha1:7e74cf41ea062018130ea76efcff5e829be72f4a - pristine_git_object: 3f2d3b41a15c853ab1eb3d53bed6c92862512c96 + last_write_checksum: sha1:f10f246c21050c2a6e9c5d8198f1c1bb05f37140 + pristine_git_object: 35627971f5e9337ba57a5ba81c2c7061c09e06a5 src/gr4vy/models/create_report_execution_urlop.py: id: e7252aef8bbc - last_write_checksum: sha1:4cb5b894d7a4b1eb8090185c75320706080e04d7 - pristine_git_object: 2070cf1dc0e8d8b482f528ce969ce5ebea56d670 + last_write_checksum: sha1:341757dff5b1fd888aa72df94e947dfe859bb7b7 + pristine_git_object: cc64fe8e845d24c3ba58b7f48008d5e3e98c007a + src/gr4vy/models/create_three_ds_scenarioop.py: + id: bfeb1cbc0784 + last_write_checksum: sha1:1f39032f0877aafaab9967cf33a3c33dfb25c5b1 + pristine_git_object: b792162803ea4097ca254333c0b72b95e66bf44e src/gr4vy/models/create_transaction_refundop.py: id: 93a72d971539 - last_write_checksum: sha1:a65e21d161c66165deab2264ebcd629c1b85ee03 - pristine_git_object: 4dbf989eceb89c085ebef8be610749022e07d6be + last_write_checksum: sha1:067b4f78d76a83cd7796625dbe3348aa65bf019f + pristine_git_object: a6114cf236a8d42a9ec25d0db53222dd173f7410 src/gr4vy/models/create_transactionop.py: id: 4e21f05e12c3 - last_write_checksum: sha1:01755c0d985bdc161c3a9aeaf4607937d2913bab - pristine_git_object: 2362b3647875a202819e46cb8ad093597d0c8c46 + last_write_checksum: sha1:6f1446a6d74bf0b35f950405a19f66757f3fe115 + pristine_git_object: 33dd14d829d83b6d4c34d83b2f80d2d411024d55 src/gr4vy/models/createsession.py: id: 27bdf61dbb60 - last_write_checksum: sha1:398fec4c15d0164605e6e0233b2a89c33fe59ace - pristine_git_object: 5a56053287497553dd5928d310471a2d86616af7 + last_write_checksum: sha1:e18f245023a97905a30fb8d84f4dde761ea17c6c + pristine_git_object: 42d15920047714bed0cc4a8158c94e66aa93ba90 src/gr4vy/models/createsessionstatus.py: id: 82ae6c1a0f7a last_write_checksum: sha1:87493bad971ab5f5758b697052517ed165aaaecc @@ -2740,8 +2824,8 @@ trackedFiles: pristine_git_object: cd30074d2804a63c3684533f25f81f695b619ccc src/gr4vy/models/cryptogram.py: id: 33634e5b83f3 - last_write_checksum: sha1:3cbe3b295157c07f6111ad9a92bd38d816e82b6a - pristine_git_object: 4304de5e555ce13dd6e839993dcc555ba0ce5ff2 + last_write_checksum: sha1:323e26ff447f36ac688d5a6427e11bd2ed4f483d + pristine_git_object: a7a95a5ad5221a92de20e622877ef8d7dd42607a src/gr4vy/models/cryptogramcreate.py: id: 48560142672d last_write_checksum: sha1:1a456a27d71567c30df71f02af0f8c98d2c4ab0d @@ -2752,12 +2836,12 @@ trackedFiles: pristine_git_object: e301e45f4748bf34c807bf5a93cef1a48344e947 src/gr4vy/models/cybersourceantifraudoptions.py: id: fccf9974e2f8 - last_write_checksum: sha1:d61f7c1f9358e2662dc7f068e38b5962fa97711f - pristine_git_object: 8a7b77988cef0696dc5a1f5980f9aa2c48622b1d + last_write_checksum: sha1:7a5dcfe651dd93c4e6b4ddb0b4da1a9e524ccbd6 + pristine_git_object: db4e6051469f0c038ba08b791a580261fb940bc8 src/gr4vy/models/cybersourceoptions.py: id: d90919e61a28 - last_write_checksum: sha1:88d0eae89cf124af6ae09e76bd47a1d2349b5567 - pristine_git_object: 9fe3c72c57dac64159e9fda390d11dd86f3fb4d4 + last_write_checksum: sha1:1c0d1b64b7a516cdeb43fabe02c6bc14ea987e01 + pristine_git_object: da737fe361e633950e233803f417ff83e4f17117 src/gr4vy/models/definitionfield.py: id: ba9e7ba0e6e8 last_write_checksum: sha1:ba81c66c9d29b08aa9598fe266a152879225cac3 @@ -2768,52 +2852,56 @@ trackedFiles: pristine_git_object: a968e7d2bb2cd0c730a90375dff370b960b89a9e src/gr4vy/models/delete_buyer_shipping_detailsop.py: id: 231a96d5c5cc - last_write_checksum: sha1:5bc5770a420352f6d541e875348ff080cbf2309a - pristine_git_object: 1eac9740e4d4d201e28630f12b7df7451a5af3c1 + last_write_checksum: sha1:1e8c44f258ee9b27bc150e585811dee2652b7ed6 + pristine_git_object: fbab352d330597f68f5d208c5e240fd721de8ac3 src/gr4vy/models/delete_buyerop.py: id: "252859156589" - last_write_checksum: sha1:6562e09b856636c70319a6eec25ab0f3b4cd2f9b - pristine_git_object: 7a09812f0d7c76b9cdb3fa583088b98f24755d67 + last_write_checksum: sha1:d6ed9cffd4a2d04bf932eb47c553a1ada6e09167 + pristine_git_object: ef9ea35f39ec1fc75818153949f32e2296def1bd src/gr4vy/models/delete_checkout_sessionop.py: id: 8d6b5a6d8c71 - last_write_checksum: sha1:e2d7351f8b657da8085fecb25ec265cd49fd0e4d - pristine_git_object: d8b3ba5263d58aa94042639ec81c6408e6d04e64 + last_write_checksum: sha1:541d2d6782a9f2956020ef8a6751c6842234fbf7 + pristine_git_object: ce76d1d844e4e00f9d199754d48a7a8b1686c615 src/gr4vy/models/delete_digital_walletop.py: id: bdab16ccde1e - last_write_checksum: sha1:dfbaecec7b427fa17cb7a01b67e1eef2c24dfda5 - pristine_git_object: 0828ef4e80aef7edfbd7c8f3a751b2b73e882c14 + last_write_checksum: sha1:0b883058ff2e5c869871469daa1e4ca8bede022a + pristine_git_object: 11270b413d69970c3a7aecf0689e4a18962b8639 src/gr4vy/models/delete_gift_cardop.py: id: 33df282be209 - last_write_checksum: sha1:3e855d70918ffc1a1e63df1c2e8a277d8b9e6c27 - pristine_git_object: 656401975352b0ed95b27e27f7d0f2d26782f6de + last_write_checksum: sha1:54544450e7135cd740022291ef575e336accdc8e + pristine_git_object: 1aefd86184608c04b626d7bef2e358fc0a3ce4aa src/gr4vy/models/delete_payment_method_network_tokenop.py: id: 3f6a409932ab - last_write_checksum: sha1:ce594766c9662461e23ba130e384ee8ab2217b12 - pristine_git_object: d9b598536fe8f5e751a7d224994cfd808e1bea2d + last_write_checksum: sha1:65a7acc24ce9ba07bc8ae8e66cd53155ea594e46 + pristine_git_object: 78b273f2e1426e06a146d1309765e9065500c98e src/gr4vy/models/delete_payment_method_payment_service_tokenop.py: id: a396cdd56a33 - last_write_checksum: sha1:00ec731daba4072cb62c56a1afc94d3cb76551b8 - pristine_git_object: 7bdf5398df41a34b753231c8cee0829950d3643d + last_write_checksum: sha1:7359779c0f01101c17d252cdccc620c981b7041d + pristine_git_object: 1736aefb71c1194d16c7cfa50b9a194d0a2e1b87 src/gr4vy/models/delete_payment_methodop.py: id: bef8d387bd5d - last_write_checksum: sha1:fe5563886dc0b7a6f5170ba7b74b2b0536c77231 - pristine_git_object: 4af47f26e42e71511ffe008f00be7aabe016717e + last_write_checksum: sha1:ad8a795d5a4e3a2c14faec344313bd5ee8b039ed + pristine_git_object: f5adc84c6edb4074e2ea270f03f5355ca4e5e800 src/gr4vy/models/delete_payment_serviceop.py: id: 8b438d670f6c - last_write_checksum: sha1:df3871bb57a178fcddaee9174f4d15f70307c355 - pristine_git_object: c84687ae9ff1b46fd34a2c7a7791ffc1af59c956 + last_write_checksum: sha1:d7ca788ed860a461be1411600a91b4211f078e79 + pristine_git_object: f68f7c9618be8f7bbdf6f99b2e68b3fe265492bf + src/gr4vy/models/delete_three_ds_scenarioop.py: + id: 9d36ef9e6969 + last_write_checksum: sha1:027c50d26eb5c76282e40eaa0b9ca198b3b8f34d + pristine_git_object: fde128127ad14350d868ef27b13956b49f1c80d1 src/gr4vy/models/detailedsettlementreportspec.py: id: eb64e156ba49 - last_write_checksum: sha1:201f15c7cb670d413c6ad8b42aefddd6d75c7bbd - pristine_git_object: 684bfce4795c812985dbecd630eedd015ad2255a + last_write_checksum: sha1:8cc28b2b0bab79a8480c51a55ef8fc8e2b1306d5 + pristine_git_object: a3c34308c0f4807c53c1225379fd8a8567fd44a9 src/gr4vy/models/digitalwallet.py: id: d6e903e09f09 - last_write_checksum: sha1:cde5f2825a9e6ee8b27716751f0557caec1e71a3 - pristine_git_object: 61a48530c96b4b8ecd15c795501b33691a5b3e3d + last_write_checksum: sha1:ad416811476626092cadf4ed418b60e69116bc83 + pristine_git_object: 4cde513a46da3451c2c39ee7b5378ae8791252d4 src/gr4vy/models/digitalwalletcreate.py: id: 6b3d9db35f0a - last_write_checksum: sha1:52b427297f6493a284bb8a1709aa3dc466d21a96 - pristine_git_object: 512075592ba8db49ce695e96ac465f1f7234f0ac + last_write_checksum: sha1:b8102d77e057a6cee3c033129da86f02a9cd26d0 + pristine_git_object: 25dff2ba945261ca04079accb59c241738c17747 src/gr4vy/models/digitalwalletdomain.py: id: 4e83d0d5679e last_write_checksum: sha1:11fbd848823ddd70c571bce01f33170b4ba7f40d @@ -2828,28 +2916,28 @@ trackedFiles: pristine_git_object: b75d8f7f67fb9d0cd9bdf303f2cafad17ef65663 src/gr4vy/models/digitalwalletupdate.py: id: a9dcd742b817 - last_write_checksum: sha1:61b1b0438992e138ffaed31891eba2f84c8c1d12 - pristine_git_object: 72002b8419f27b0dbd6be2fafb77a39c27775e63 + last_write_checksum: sha1:daa3a4ba7c1e497516e9be3dad2b8b859422aca4 + pristine_git_object: 223eff0d69dd5940880a9cd9043b74bac432aa68 src/gr4vy/models/dlocaloptions.py: id: 2c8a82e27697 - last_write_checksum: sha1:7ee6d78fc1509eb54dbfc0bca7a9fff26cf2b9cc - pristine_git_object: d0d734c794ff6b4b3e332111f618e0cbffe77f54 + last_write_checksum: sha1:6612dc509f5742b0026f81ec00614af9e8ef7421 + pristine_git_object: d1aa53ef1d7fe31a874fa61668a45adc26436d4d src/gr4vy/models/dlocalupioptions.py: id: d31af8d25176 - last_write_checksum: sha1:13f16fcbaf85cd4f874b3f06f7f4a5f916c808c5 - pristine_git_object: 2dcdea912cf9c2991e5fc62c5975f12dd3153709 + last_write_checksum: sha1:d12cea48012dd56930eb686252a85bf8069d7e28 + pristine_git_object: 39ec71d0bee296797139f09bb85d51b06251202b src/gr4vy/models/dlocalupirecurringinfooptions.py: id: c6918e07579d last_write_checksum: sha1:791e2af0511e7fd60b9b6026615f1e24a490e9e1 pristine_git_object: 311d44262c2495c8b341549944034e839148f189 src/gr4vy/models/dlocalupiwalletoptions.py: id: "460313141724" - last_write_checksum: sha1:39e299ef1bd23413e71783f965e1ad689b0401aa - pristine_git_object: 4ba732c3647643e6eb2ff82dd79fd66602abe06e + last_write_checksum: sha1:d89f04ae254243134fe1ecfa240e735210217768 + pristine_git_object: aafebba3b1cfa85dd54eb704c72cc798dd7de46d src/gr4vy/models/dlocalwalletoptions.py: id: 485448c851d9 - last_write_checksum: sha1:960839cb91a8bc3710459697aaa411893977fc75 - pristine_git_object: 4d3d22f4c5b46f87357362bef1b120795c93e560 + last_write_checksum: sha1:bd7182ba38cf514e8fad00f4828eee9cf342b564 + pristine_git_object: c7c1698740bd61e0362a3ca4a8e443704de5ea5c src/gr4vy/models/errordetail.py: id: 288e2721a37a last_write_checksum: sha1:9dc90822953e2cc52dc4f5d21fbd18a2be4850cf @@ -2860,20 +2948,20 @@ trackedFiles: pristine_git_object: 8de656f0c2909082175174c2f2baf0f6f9e6eed7 src/gr4vy/models/expire_payment_linkop.py: id: 6113455281ef - last_write_checksum: sha1:da6a61e8d83d25eca4c10324aa1c1bdf10546d60 - pristine_git_object: ed39146370a4434531c82751c3667762b60f3682 + last_write_checksum: sha1:2fbc73d18c5ba8356b6d781dbc9906a2e19d195b + pristine_git_object: 17645f866433d271d9c5d7461340e27bc81315a8 src/gr4vy/models/field.py: id: 724bfc0480fa last_write_checksum: sha1:7909dd9411cf92b91dd766f75540dc42ff443f84 pristine_git_object: 9fee449b1c26b73cb33d02e5e93d6e239b4f2857 src/gr4vy/models/fiservinstallmentoptions.py: id: 8e07cd8c494c - last_write_checksum: sha1:1ec72390d7a024ec33974a00e5394761db403ec2 - pristine_git_object: de005af26443d4ebe1a1983762a693e7964a8b80 + last_write_checksum: sha1:daea49d63f2f1485abeeefed2b455fcc4fee6940 + pristine_git_object: bfbbff048304233fc1378732b7c5091d8764d5a6 src/gr4vy/models/fiservoptions.py: id: 16ad2a3267e4 - last_write_checksum: sha1:bd35f59bc7a7cc9a847da585d90fcda41b6a67ff - pristine_git_object: fca7659b27213f04877fd8abe17a225222c22058 + last_write_checksum: sha1:a8efc4c5fafb1d62276415ce1953cf41dfc28bdb + pristine_git_object: b8f612c377e9e69d6b25ae0f636510b6116dc615 src/gr4vy/models/flow.py: id: a9aa8db3de5a last_write_checksum: sha1:26f2febb8fe5c8d931bf3a29d3a404889f54a168 @@ -2884,136 +2972,140 @@ trackedFiles: pristine_git_object: e8fc9e9bf55b0aaedca1d2917b731df1aac0dd93 src/gr4vy/models/forterantifraudoptions.py: id: 933b9a2e51ad - last_write_checksum: sha1:0ab4d6cedf7c0536e19eef9ba4fa1b4e667c4a9c - pristine_git_object: f514e33c8d9a5af234f3561d0cccdb4de9bb7975 + last_write_checksum: sha1:6e3e6cb97dd477d0333616eb41e95a30e23fc1a9 + pristine_git_object: cde502ea528ec51259ab9517ceeb11a6d171c150 src/gr4vy/models/forterantifraudoptionscartitem.py: id: aad8d5b3146c - last_write_checksum: sha1:11abf68d7f6ab43465f2d11f270030dae0b980a1 - pristine_git_object: be637a736122c07eb685e3471d0fa0157aa95cec + last_write_checksum: sha1:06be9cd372bc4fa3273077222aba7631e3eae08f + pristine_git_object: b48307b95f30a95345a90544fb6e5fe53c1b0434 src/gr4vy/models/forterantifraudoptionscartitembasicitemdata.py: id: d62cc0f0893d - last_write_checksum: sha1:25177dab46cdaebb319583673845038a68e6e844 - pristine_git_object: 7495f0f82609aa3438612a2acf0f3d6e557a7564 + last_write_checksum: sha1:ba56ce971cf725fc1e90971c66cce36d72bb9075 + pristine_git_object: 8df92fd03feb8d6dbbd26a53d089b30535bfbb9a src/gr4vy/models/forterantifraudoptionscartitembeneficiary.py: id: e8ac6638ee4d - last_write_checksum: sha1:d77339805943ddb11905f36a30b505233d9f740e - pristine_git_object: 04556f907b1740e1e7036b89e54ecbd986f6afc2 + last_write_checksum: sha1:d2c4250b7151b23ee36b33aa3c286422fb5a6b80 + pristine_git_object: 5739066087c428843a7cff50fd9e2f7e96b614ae src/gr4vy/models/forterantifraudoptionscartitembeneficiaryaddress.py: id: 497f7d6d9d7e - last_write_checksum: sha1:1100e69aaf28875c4ac57017799f71b48d499a49 - pristine_git_object: 2fbfb1bf80cc440f2daf5a84bdeaa7ce0b7ba763 + last_write_checksum: sha1:5146e404dadc96a5209e461eacd8d865c5f0c182 + pristine_git_object: 5a65f8f1ff6fae4f1dcf20c857ff3c96d445c2e1 src/gr4vy/models/forterantifraudoptionscartitembeneficiarycomments.py: id: 6cc1fea324ab - last_write_checksum: sha1:7072634cec260d52818fd066401b6bd0b07b5a7e - pristine_git_object: 4efbcc86d8396afc6fb76af62ea984bc7ceeea13 + last_write_checksum: sha1:da006234b6a25bf2e19e462e6d534e52131e5951 + pristine_git_object: 510edb9af20e8cc3b136cadff79e679b7651a04e src/gr4vy/models/forterantifraudoptionscartitembeneficiarypersonaldetails.py: id: 400c884ddb36 - last_write_checksum: sha1:693992ab78d1546c24b3691f75ec5c6d14e2092e - pristine_git_object: e2dccae2e3c18580caaa3aef2e46f2a68a71dddc + last_write_checksum: sha1:df5015cb32ead0f2ff801c14a6822edb084f7783 + pristine_git_object: 40351f0f2d6937151201e866888e2f5329101b3c src/gr4vy/models/forterantifraudoptionscartitembeneficiaryphone.py: id: 277c96b270c8 last_write_checksum: sha1:fabf7b699bcd361d600e1029c1bbf33ae94705e3 pristine_git_object: 304b5770b67377b766044103a9b5e2819c6c71e6 src/gr4vy/models/forterantifraudoptionscartitemdeliverydetails.py: id: 3b962e56f75d - last_write_checksum: sha1:663c17488776bad62577420b2ea575271a5fe20f - pristine_git_object: 3344fdb52130f1cca69357a330912c9c0637cf9a + last_write_checksum: sha1:f519559afde27a23b665acbe8465c5610201ad37 + pristine_git_object: 652739da4a74946744ded40a5899451edc18a2e0 src/gr4vy/models/forterantifraudoptionsdiscount.py: id: c8b1acb91f11 - last_write_checksum: sha1:8417519eede595d6e0913ff5747075ce5b3241cd - pristine_git_object: 9f28a265287b7243e4ff6bf84d51e6b967552805 + last_write_checksum: sha1:d22fb85de753805fb863ede0a177794376d6af1a + pristine_git_object: 1a136cb634471e09cfdf611198eeed62946538f7 src/gr4vy/models/forterantifraudoptionsdiscountcoupondiscountamount.py: id: 8a4266631182 - last_write_checksum: sha1:b606c9f61d4b15ea8257987c2f42e1be628b69ee - pristine_git_object: e4b9e5c4d96e6f23b9e43f53e63835e777a0afa8 + last_write_checksum: sha1:755d17d3c8db09762ae384c93b177b5ae01476f7 + pristine_git_object: ca222805ae873adf850128de597df868978538b7 src/gr4vy/models/get_buyer_shipping_detailsop.py: id: 104a49b79415 - last_write_checksum: sha1:aa138adc5f79e3307813062e460738a81ca0cb79 - pristine_git_object: d3943bb01353838fadc49c53da944c014239c961 + last_write_checksum: sha1:09e8d77311acbd86dbdeb16f558167553ffd62aa + pristine_git_object: 16f00d21aeabf7cc1f7bc4664c593062e41ecb01 src/gr4vy/models/get_buyerop.py: id: d177fdad5ab0 - last_write_checksum: sha1:23aa926edde52708488497b1b6386a2b1d983d07 - pristine_git_object: 61ee96d5c3b9b6bf34333b8aaaad41489faea503 + last_write_checksum: sha1:320e83321f3c609d4387cd6447c556088c05d5b9 + pristine_git_object: b884fe6c6e909c21caa0106d9aa238596928fe50 src/gr4vy/models/get_checkout_sessionop.py: id: fc105b87dd18 - last_write_checksum: sha1:f58580a06247c85febab21db6dbb08cbad0aeaac - pristine_git_object: 5f5e0ffbf96f21604bff22228ae4278be3f4b3be + last_write_checksum: sha1:4b5510c944846beeb518cacf01ed5fc7ae5b80fe + pristine_git_object: 6781dbfbf1fc0b3f3a27be1ff4efc8b55109a0e2 src/gr4vy/models/get_digital_walletop.py: id: fa173fab7b0f - last_write_checksum: sha1:48e33f4ae270a8be6f11032b6db552d1ac605e32 - pristine_git_object: 8fa52f3e98c1246f5021ec7069a05fc6adb65b5f + last_write_checksum: sha1:e26e84180a687f5beb12023642f9077345c39988 + pristine_git_object: 11400ae56789c2973480b659d532d8f80fa125b7 src/gr4vy/models/get_gift_cardop.py: id: b913f671469a - last_write_checksum: sha1:3ef4f52861955430606368bfdf88d37ae18ca292 - pristine_git_object: b57d9f19483b9db04b3d5d3d6f02f45c686b593b + last_write_checksum: sha1:a4a334b4e65fbc9190e72c0d218610046ad8c2b5 + pristine_git_object: 50c1b6e60448d3a16cbfd3cf2a0d9c83f59221e5 src/gr4vy/models/get_merchant_accountop.py: id: 7a9daa346d0d last_write_checksum: sha1:a51c6871bb6ec83eaf219e9f54af54f346617e38 pristine_git_object: e9000f6d09b139ae4940ba95f8ef53a595f296de src/gr4vy/models/get_payment_linkop.py: id: "750521910e18" - last_write_checksum: sha1:7addabae672c118fa67c0daeef8664e96eb4d067 - pristine_git_object: 2db6b9f7a7d09e399544008306b064cf9f297716 + last_write_checksum: sha1:b8c3e1906ccfd607c599d5711454ff251b915fb0 + pristine_git_object: 5bf0aeb7c4dc7a73b5d68c990128fe6c715b7596 src/gr4vy/models/get_payment_methodop.py: id: af408a2a4f08 - last_write_checksum: sha1:f1e6bdc7d544797d74d50e00be989d199da13111 - pristine_git_object: 9d51b4e09a1cc181ceb324072d684457dbeeb6a8 + last_write_checksum: sha1:49033eddad81225d9e7a01d29819fe09c25eb078 + pristine_git_object: 601724492bcebcc056bfa4ee34120ca03086ad0c src/gr4vy/models/get_payment_service_definitionop.py: id: 224ec46fafa4 last_write_checksum: sha1:59f87fd326c305d8780e7d121dc8933fa0fbd42b pristine_git_object: 813de10647c8cda24ee2e282274b144a00543ea1 src/gr4vy/models/get_payment_serviceop.py: id: a7a07b6edfc6 - last_write_checksum: sha1:9c11bac82f75d8f7096313ebe46db9cb9d67bdd9 - pristine_git_object: 9ce7c47cada253bcc88279dcb89a03ce879ec743 + last_write_checksum: sha1:0a304abe773b05e577f1d1a34c67bff44aad9458 + pristine_git_object: fbfed101172286c4e19bd188f7ecc3f34e0aabcc src/gr4vy/models/get_payoutop.py: id: 8b67981993b7 - last_write_checksum: sha1:fc129c44d140a7a501cb437e7ee6a5daefd7d645 - pristine_git_object: 86cfa72fa770467d3f4cae60d66826d0ec171e67 + last_write_checksum: sha1:2e5e4a6cb2d67e274c021bfba550ce520a137055 + pristine_git_object: cca69490fd432d42337345f5795c71c72836ce4f src/gr4vy/models/get_refundop.py: id: 7e03bcff761f - last_write_checksum: sha1:cec32481ccdf700898f5257b67f444e025ec3306 - pristine_git_object: 3acb8df3e4ddf4072c276fa9362d88940378a2f7 + last_write_checksum: sha1:de9269761aa21c044bd29310386f46d709a3a533 + pristine_git_object: f62758a964c61bd8788ebf89d44e1e286fb503a0 src/gr4vy/models/get_report_executionop.py: id: daf7debbbfc6 - last_write_checksum: sha1:406696d5c154f119355e4a6c70382b6cdcb3e02f - pristine_git_object: 0720763e74f2f93c4b2c94cb9ec3e06aef8309af + last_write_checksum: sha1:6b8a1a9a8e25761051225617560068d0d790645e + pristine_git_object: 46f992f805ed3e08b54d17e8c00a1a4b68864c17 src/gr4vy/models/get_reportop.py: id: f00eedc8d0a2 - last_write_checksum: sha1:355ff495aeede1bb6ad43f3a71571c3e53bcaff4 - pristine_git_object: e7a8d75687fc2432cfa76857accd4a7ca024879b + last_write_checksum: sha1:6931d692aad55fb93c88455b037d4d2887460cae + pristine_git_object: e41d02a67ed05c2ed94bdcf9e7669212a9d737d9 + src/gr4vy/models/get_three_ds_scenarioop.py: + id: e94380a641a8 + last_write_checksum: sha1:b6e7a201b43cca7966c88ce49a8f8b5369080c07 + pristine_git_object: 23d81b768adb6da7b257a51ee9d1a3640bbf147f src/gr4vy/models/get_transaction_refundop.py: id: f66fd18b1f56 - last_write_checksum: sha1:dec16897ed94fcb77d82a759f121ee68e37b340d - pristine_git_object: 8e4488cb5a08de2c380ed6395271f1bde8308567 + last_write_checksum: sha1:3367f6686480298e395ab13f8a87e1456590ad35 + pristine_git_object: 8f620699243c11a36f6f644171d5a416d5122b9e src/gr4vy/models/get_transaction_settlementop.py: id: 52d04f62aff4 - last_write_checksum: sha1:6e953b577b64f225f43a1ffa244683f8b3b6ef43 - pristine_git_object: a1853eb7be5fe190d2f95226386354a8d33582d2 + last_write_checksum: sha1:086835db069dbc815ce286e07fe495b98de2ad55 + pristine_git_object: 7b5a8f74c818bf41082d649ecf259cd9680218a8 src/gr4vy/models/get_transactionop.py: id: "182586553541" - last_write_checksum: sha1:a5de8d7609e165cbf7e70b15aae5cf72b90aef07 - pristine_git_object: 098afef0260e4dd8bc9833effcb3a1001380c607 + last_write_checksum: sha1:33a349a9be64ecfd4ac0d63cfc77ad90ff36f7b6 + pristine_git_object: 8d7247123dcaf48d2a755fc3e62af173aa888008 src/gr4vy/models/giftcard.py: id: 3b34ddbbf19e - last_write_checksum: sha1:73425068e69036e6feda0bc1c0cab58f9d8f6f07 - pristine_git_object: 596c6c3de5255104741f18191ee475999e8cfde9 + last_write_checksum: sha1:e6d97e78eeb0818d7252f448577e1d9299067a2b + pristine_git_object: 4bc3eef320d9207695558b8d4212c87e6dac4414 src/gr4vy/models/giftcardbalancerequest.py: id: b3bd5e4c5c86 last_write_checksum: sha1:1883599e231c48f73f6024e973a4396d832426e4 pristine_git_object: a19055c100c5360b1bdba926a8f2265d51e02e2e src/gr4vy/models/giftcardcreate.py: id: a5ebeacacc67 - last_write_checksum: sha1:7c525a30764d70e6f4aa7342c46bba3c7e44aa13 - pristine_git_object: da626c58b41341ced04cf1f2084a7f514e9064ba + last_write_checksum: sha1:0e38c04bff1662db2a54f9161ee0ab397fccc9b0 + pristine_git_object: 2bf02486ceac4b8209b8f43b1dfcf83891680b65 src/gr4vy/models/giftcarderrorcode.py: id: ce66c97d4c7e last_write_checksum: sha1:764db38240971c701deea84b89e2024f88a5f6e9 pristine_git_object: 3ab9a6f58296e7a2c39d2f516f27d41addeed6ea src/gr4vy/models/giftcardredemption.py: id: 13296445ae55 - last_write_checksum: sha1:ba74fea9d5bfba1a769ee9e4956bd0be2487afae - pristine_git_object: 0921cc2a0e9445400a9ba5d3ef15fc705477b74b + last_write_checksum: sha1:32b84deb6ebb4f417ab93e513a892bb8f852f109 + pristine_git_object: e0630d33447aaf0058fe8222a2526c5317bcba7e src/gr4vy/models/giftcardredemptionstatus.py: id: 9ec3b9c14717 last_write_checksum: sha1:a0827c6d831b3113444acc063bf653c38d7f8f7d @@ -3024,12 +3116,12 @@ trackedFiles: pristine_git_object: 5be193ddfc9ecab3513504a1fa06d6248ce9116d src/gr4vy/models/giftcards.py: id: 2f9081556e8b - last_write_checksum: sha1:3851f1451b797f8d3e7174badb4ae45fbfea28a4 - pristine_git_object: 26ab8706c71bd6e72e233bdbb12c300da79f509f + last_write_checksum: sha1:1992331979d03f85cccfd3aff58096bbd6522616 + pristine_git_object: 989fd70d2eb2bcf97f2b8bf5e01ab1eb2192a4af src/gr4vy/models/giftcardservice.py: id: a958b4a8d80e - last_write_checksum: sha1:c00d45199627f394005d12f73610cc689aa81677 - pristine_git_object: a89250b190da5b03c976dff9067282b1c920ace1 + last_write_checksum: sha1:68f3b23440090c86476d0694e827ac224ee2366e + pristine_git_object: 4f5c845bbe8cfae995839261b04a6f9bae012448 src/gr4vy/models/giftcardserviceprovider.py: id: ad227de98764 last_write_checksum: sha1:913fab7636c42ab31b6710025fed15bf9e2b3523 @@ -3044,8 +3136,8 @@ trackedFiles: pristine_git_object: b41e976a1d72e25d5cb644293c72c3677596ca4d src/gr4vy/models/giftcardsummary.py: id: cb08835b1f74 - last_write_checksum: sha1:15ab00f8583b7ded847aae1af79a3d7f9759cafd - pristine_git_object: beb334296b462c2a3d4ac54cac145a690d13a204 + last_write_checksum: sha1:694b3b1d327aa6904026414301b2eb69e4eb58ad + pristine_git_object: 0b183a5b6874a05eeb0e6d0306bbefc929c825b5 src/gr4vy/models/giftcardtokentransactioncreate.py: id: 49e5e02cf4b9 last_write_checksum: sha1:c6699e82ea6dfbeb01a850395fbda40608c80a85 @@ -3056,20 +3148,20 @@ trackedFiles: pristine_git_object: 5896e73e28ec07580256f7b44085e82d789a6111 src/gr4vy/models/givingblockoptions.py: id: c9e9f369770c - last_write_checksum: sha1:cbae04b32280cc3f5c2c281a47e4f8c230a446ac - pristine_git_object: 7099c44c575462775e25c5c3c330dbca7f0a1c67 + last_write_checksum: sha1:b61a85107e46f0b01ad0592cf6c3604f113ee704 + pristine_git_object: 02394e3f2ad2c04e1d87afd0ff64680ee02a4d7d src/gr4vy/models/googlepayassurancedetails.py: id: 054ed0eec332 - last_write_checksum: sha1:88b27bd85a42ea7cdb9914788de4abe5330463f6 - pristine_git_object: 8184e355f9276688ea2a511a47f7509186a4a6f4 + last_write_checksum: sha1:d2bc9db6c3a9c199dcba72e5ef3c25c379a19f5b + pristine_git_object: 3f07edceca450995dbbfae186e1e41270f67a728 src/gr4vy/models/googlepayfpanpaymentmethodcreate.py: id: 0cd77ee23fb8 - last_write_checksum: sha1:aedccc04e690a576eb83ba78c54d807ebb3c6b97 - pristine_git_object: 32080d81269c0bea3f86b9eb6667082a7a43d9db + last_write_checksum: sha1:50beb1979975491aa4dab0f202b661889aa9a89e + pristine_git_object: 091f3aeb69a9b07682af377ff96312a834822b55 src/gr4vy/models/googlepaypaymentmethodcreate.py: id: 0298d52059c6 - last_write_checksum: sha1:76392b7f8bbb2f3589a18beecd016546621efdd2 - pristine_git_object: c222ced4b605b658d4728d87fb01ca03ad9ced4e + last_write_checksum: sha1:2a3487287080c70b4148afab639d1b0b08b77d7f + pristine_git_object: fcea44a16517f44225f152c825361b075b80bdfc src/gr4vy/models/googlepaypaymentoptioncontext.py: id: a07e8ef59cb9 last_write_checksum: sha1:2c171104056dd069d4a376da9edef598958f079a @@ -3084,8 +3176,8 @@ trackedFiles: pristine_git_object: f798f11bf71a4f9a5e2560e1a1f59a2ab6b99e4f src/gr4vy/models/guestbuyer.py: id: 358b694dfe0a - last_write_checksum: sha1:276681807c6fe6c01d9ae2de40ff47277b4ed9ad - pristine_git_object: 83cce5aec31e1a83dc9f15c31fb4c7677293351b + last_write_checksum: sha1:a83d2e9d4d0ab982e0207653c8d8b15154c98fbc + pristine_git_object: f7a141c9068f30bf4bec6f149588831dc74f4662 src/gr4vy/models/instrumenttype.py: id: c103465b49eb last_write_checksum: sha1:38af1650021a524dea6da2f41f5eceb119fd3cdd @@ -3100,136 +3192,136 @@ trackedFiles: pristine_git_object: e7070a1222c2ed3fa3f6f54e6f122cae7ff9a449 src/gr4vy/models/internal/globals.py: id: 0776cadaeda1 - last_write_checksum: sha1:3c98054551ee49d4778aa27a6bb0c9636e5e1312 - pristine_git_object: 4740ca72233d1d6a145050f01aa2992c0f874325 + last_write_checksum: sha1:85b78db43cf05725c97b814144bfbe3d29aedf4a + pristine_git_object: 43bd76bde903d1a2594dafec9cdbf5d18b73c49c src/gr4vy/models/latitudeoptions.py: id: 75043d25ef29 - last_write_checksum: sha1:1d47a81f68caa2d93ab28ee2757fffa15debad01 - pristine_git_object: 2c232fff872df622a2dfeed1840a6c6ac7e57a2f + last_write_checksum: sha1:625694abdc3ee1b11318ff3deb4ee8f84d640315 + pristine_git_object: 5041789444c581204088b55a75a25b985f9915ed src/gr4vy/models/list_all_report_executionsop.py: id: 040d40b04f0b - last_write_checksum: sha1:9b24b1f26986f76c4bedd9702f93ebca979dc948 - pristine_git_object: da7cd2792a3e576250db0f4f9ab44882ef903076 + last_write_checksum: sha1:b941ac8189b4e61f6856ba04e80f5aae6648fc26 + pristine_git_object: 7ef488f55a05fb669414d82a645a386d778740be src/gr4vy/models/list_audit_logsop.py: id: b5643c3173b5 - last_write_checksum: sha1:a13fd502268e2b8be07c5ff48e7b1aca83daf57b - pristine_git_object: 14d1c9ac2a38776eeb80f65961921c1a9ff35a07 + last_write_checksum: sha1:dabf6a4c65010d1a94243df1d11e2de7ade06f4f + pristine_git_object: e5a744bae9703be389c0fb38be2318eb754000ef src/gr4vy/models/list_buyer_gift_cardsop.py: id: bc95496f621d - last_write_checksum: sha1:f8187e04bb0499860a1545f787e8a35315d88005 - pristine_git_object: 410c7e75707d5fa9ef7b18b64370538b3f6b2ce4 + last_write_checksum: sha1:6e14b4295a066bdd37057b03999c31db61a18128 + pristine_git_object: 64fde3c44f710ad3c7090682e7684ef5028e375a src/gr4vy/models/list_buyer_payment_methodsop.py: id: 69a4959bb64d - last_write_checksum: sha1:a926863989fcaec27bea47d558c983f8fc14cad2 - pristine_git_object: fafde5a0d74ffe852da1a9e16785a0849015fdc6 + last_write_checksum: sha1:9849793d1846f02407b3896be899b91d5ecb8a78 + pristine_git_object: 97e8b2b94f3c40188a53b479a99c4f0b9d085f99 src/gr4vy/models/list_buyer_shipping_detailsop.py: id: 15e633698675 - last_write_checksum: sha1:bb16ed4a67b24214dc2877aa68ce83c476bd9bf3 - pristine_git_object: a453eeff3c9e77278dc84bcb3fdeba62c5a71999 + last_write_checksum: sha1:db3664b0bd843aadf50b313753027151d0d2a51b + pristine_git_object: d8e96b1e3a131d1dcb19a1547c6428918c4c24e4 src/gr4vy/models/list_buyersop.py: id: 01621dff1a87 - last_write_checksum: sha1:81d48c240e3d3da0303756de0f1c2db44eb7a5bf - pristine_git_object: e36e17c42c5166e69f406a382aef34be817e0ddc + last_write_checksum: sha1:346dc2add720874de6d482662a47fb949fd4a53e + pristine_git_object: a72fae5ce5b5224830518c012ee7456c4c8182d4 src/gr4vy/models/list_card_scheme_definitionsop.py: id: b83161c72ba6 - last_write_checksum: sha1:7537fd2ae681e329e12db604f6b674df8de086ed - pristine_git_object: 1e45efab0e508dcf774287e57f19d1ed92ec0d06 + last_write_checksum: sha1:a06ac7a5d22b76ef35f81e9dc77c8ae2d51deb77 + pristine_git_object: 735c1d0671a425d8f974d68c9b63d4f76b47b84f src/gr4vy/models/list_digital_walletsop.py: id: d56080b47fe8 - last_write_checksum: sha1:af707d52a85fb29243ff9d16848b6e4a43a71477 - pristine_git_object: 487d8cd71691a585f6b3c0ee5701189ce9c04fd4 + last_write_checksum: sha1:bc2ee6c4f20c5290ce59abe51c150ac8f32844ab + pristine_git_object: 101dc05aa12004923d1a6d59bca6d111a149558f src/gr4vy/models/list_gift_card_balancesop.py: id: 174c75a46885 - last_write_checksum: sha1:717e1ae03ec64786e56fa9b9c4b36cf865e4b61d - pristine_git_object: cfee5a709a10d45f41b9675827d1f46f87e7beca + last_write_checksum: sha1:71a5b924db48f118bafda0c96ff259e8300533e7 + pristine_git_object: 189d9cf5b9c63f6810f2c1f45a4d27f9fb1a2687 src/gr4vy/models/list_gift_cardsop.py: id: c26ca71533b4 - last_write_checksum: sha1:581a89a11ae0463e4efcafec9df82ed6694ce927 - pristine_git_object: 430670be8280d903871273b97a4f05a4d5afc20a + last_write_checksum: sha1:570f6dfcaf664f5bba9ba8360d8ea8a37ad03bd9 + pristine_git_object: 6a9253d1de985e03e41201f172459f59ea79652c src/gr4vy/models/list_merchant_accountsop.py: id: aea0a640417a - last_write_checksum: sha1:f7b24833f4e886e86fc29543b2b2e27977899d81 - pristine_git_object: 31fdccebc61232a001fa096b33ffd43c23cff5a2 + last_write_checksum: sha1:ab9119369e75a8c047390db5b7139843132fdfa9 + pristine_git_object: 64db8f95de967d50537e9311a980ba3667f32b00 src/gr4vy/models/list_payment_linksop.py: id: f4a8f650ccc2 - last_write_checksum: sha1:38f5f3f3e0af720fbea423dd20f4af375ab9d13a - pristine_git_object: 70a7983a6393f7d4325bcf7a669fdaee4faffaa3 + last_write_checksum: sha1:05241b687155888795c4005f823b4f0d41196ed9 + pristine_git_object: 51649d1cb9435608d6c700ac29e0b9e0e254c16f src/gr4vy/models/list_payment_method_network_tokensop.py: id: 095efe5b41c6 - last_write_checksum: sha1:7fc2c7346fa63710fbc63fc3f622bd118811988c - pristine_git_object: f923e477ceaa31ca5f3ab97611d2cd44fc992b1e + last_write_checksum: sha1:e6aee7b411cf615ebed7e96487b0e548ef6d3522 + pristine_git_object: 39efe07b2dcd11812940318ecba72dc0c4ec9348 src/gr4vy/models/list_payment_method_payment_service_tokensop.py: id: 7977bb28341b - last_write_checksum: sha1:62a0f5da746b85140aa0d9900420dc2a3fb76ba0 - pristine_git_object: 817d9d565836897157fa0d899cbacb03fa6ddc3d + last_write_checksum: sha1:d847234edc21fc293ddd52d251e1c0869c47c2f2 + pristine_git_object: 009eacc182438e3b4940df923117f17a6c21772e src/gr4vy/models/list_payment_methodsop.py: id: a8e09ae7d6fd - last_write_checksum: sha1:bbfd6eea4d0bd33beb8d4b442cc1f2f201c05a9b - pristine_git_object: 3c656b3fde01975fde2fcaaf26957b2cc55dd8fa + last_write_checksum: sha1:74e50a33a8e266d37acf6149bef94cac14a6141d + pristine_git_object: 256d012d1cc6b416e9e9455db30bfb4deff18e83 src/gr4vy/models/list_payment_optionsop.py: id: b4e3d6a42e54 - last_write_checksum: sha1:066194b53b8c8518b447145d538fc817f9f7ecd6 - pristine_git_object: 0bc1b01723b5ecb7006794de3c0817e89f8323d4 + last_write_checksum: sha1:a7ee73afbaa47ea321e16ab679627c9465085f3f + pristine_git_object: 571320304b1c325b66cc285e51e496432f90520d src/gr4vy/models/list_payment_service_definitionsop.py: id: 2dbf99af9311 - last_write_checksum: sha1:9e95ec1e4a1cc08b5b4d13291de811323590f200 - pristine_git_object: 02b911cc276928a0624861bb1d34a02e90a824e5 + last_write_checksum: sha1:9254d690a933eac7472a8fd3b30471cbf1108581 + pristine_git_object: cd3f8ea43c301dfab9417b8e43fc830d1f2856ec src/gr4vy/models/list_payment_servicesop.py: id: be713c450ec5 - last_write_checksum: sha1:fc3c35220cefeda35dfdfecbbd2482bec27d3156 - pristine_git_object: 76b8fb76a5c4d59144c4f54c7d328759b4c0f66a + last_write_checksum: sha1:7e574f99817a290aaf0000db08e0dafed16b1da6 + pristine_git_object: dc1a6b18130181f6a1dd3e791e3dc2131baf78a0 src/gr4vy/models/list_payoutsop.py: id: 72a6630515f6 - last_write_checksum: sha1:10f3e4118825ba9d56382cc8702415ec5a9503ce - pristine_git_object: cf8234019b5ed638cb379b197afd3c6d7b0e17ab + last_write_checksum: sha1:d317bba3392903c4e7b309262b8fcb65e6c0367d + pristine_git_object: 3a2f7fe8e1bd134b4ad3ef9be1653e64561ebbfc src/gr4vy/models/list_report_executionsop.py: id: c01ce51dac86 - last_write_checksum: sha1:0f09d8e4dca29815b1f07b3e22512d5e656eb35d - pristine_git_object: 2b4b6d958be0497a8ed0e1d088a48d680a57600d + last_write_checksum: sha1:db56bd0be7d20452f172aefd01ccbdea4f92226b + pristine_git_object: 05effbe353e6e91defefd45a3482eb7490aaf7ca src/gr4vy/models/list_reportsop.py: id: e04af97d8861 - last_write_checksum: sha1:a960728d1e714e3a8d528b1c0f62dd56f1d1c61b - pristine_git_object: c9fce0f876e93bfee079c0752d29ac0b864bac6c + last_write_checksum: sha1:17c6eb1aab0b382eb6f0e80c23efbe261d482055 + pristine_git_object: 0c880c2858427f86b945e4850aa317cd65ac46c4 src/gr4vy/models/list_transaction_actionsop.py: id: 30dd9c4d0912 - last_write_checksum: sha1:2a78dd91210fd6e2395b32a018942c403c252e88 - pristine_git_object: 631e9493d62f2afbdef0b181c64822e9d5cae374 + last_write_checksum: sha1:754979fdc1e7ceb74484672e96024955d3041f59 + pristine_git_object: b13f257e949e4689a01104d9bfe108149c7edc8f src/gr4vy/models/list_transaction_eventsop.py: id: 4329d0e8ec10 - last_write_checksum: sha1:7a1f81b80915cdb5aef047b73d07d55b034a1fde - pristine_git_object: 65d04a7fae6737e35b0377df813611c8e5a884a4 + last_write_checksum: sha1:e359047eaf42eb85d35ec0d67bc9cd7f4201e718 + pristine_git_object: 293147d817a465ca5f1000f523640a21249f6f1f src/gr4vy/models/list_transaction_refundsop.py: id: 466a9fa07037 - last_write_checksum: sha1:e5ba6ac7672c90021966e879376975d3794be274 - pristine_git_object: 750bf360f6259231059e4b6463832aa7b3cd6e51 + last_write_checksum: sha1:ae8839c70c8fb981e5d95ba876fbdb6eca0fa831 + pristine_git_object: bf60a90cf4a69748289cb2d401a50552da9a367a src/gr4vy/models/list_transaction_settlementsop.py: id: 8e4845c0b4ca - last_write_checksum: sha1:75668fe8f7cc298f48b66061e01d129f34361faa - pristine_git_object: 34b717e601a0b58fe6affe38adca18598194db76 + last_write_checksum: sha1:d51b253d64260863cefce34b177b5f5dc44f7c2d + pristine_git_object: 7589be208dd07ce277621731e51065d8c6c4d19c src/gr4vy/models/list_transactionsop.py: id: 3db9b8525a5c - last_write_checksum: sha1:3883272a3376c6be18035b4975cc12dc764bfd5d - pristine_git_object: 8591228f57cdaac527e1fc8b3574c43da46fbabe + last_write_checksum: sha1:5c380c9fde0f65acf6fcb5539bb544b1e80ccb0c + pristine_git_object: 5e24616dcba1d84bd5b1ee8c44928ca9e7b33a0b src/gr4vy/models/mattildatapioptions.py: id: 0f2489008cf3 - last_write_checksum: sha1:558c4c3242c21ec5da0f729fe31299d7fd8436f0 - pristine_git_object: e1aa0886bb12702621cccde5a8d9173fbff20daf + last_write_checksum: sha1:fe4b8ba4d7786e5d12317526f8c5e54dd0cdc392 + pristine_git_object: d47c2de17eced050a94bb16e7c89115693c73125 src/gr4vy/models/merchantaccount.py: id: add81dd64f62 - last_write_checksum: sha1:02c33076e6433e823991e4fbeeae1cabf3dbbfd4 - pristine_git_object: b041adfc995a98bb9c300043f5be26fb8969ca05 + last_write_checksum: sha1:3f4e3978841d1c9947ba9a27f3d4e5b5e712c533 + pristine_git_object: 1d4be7c56dd3806778ca715ef3fd48a909923b72 src/gr4vy/models/merchantaccountcreate.py: id: 0885475f0c84 - last_write_checksum: sha1:5279a6978dbf79eff26728998684a8c181c8cba8 - pristine_git_object: 411ed50eece2c18ee3f1a5cbaf0f27b2ae1d33bb + last_write_checksum: sha1:c4ceaf15fe653f241a89b42e9dbe7b896616d0c6 + pristine_git_object: a3d79d931d4da51ed069aad4676545902cd610e7 src/gr4vy/models/merchantaccounts.py: id: 54ec47424955 - last_write_checksum: sha1:d47a963705e862fae40e59094ab08314bd1c5913 - pristine_git_object: 01b296e05fe92f3119a483c7c63ded997d86606f + last_write_checksum: sha1:c850d0e6c81d46d1743034cbdb868b32567a98f3 + pristine_git_object: acc21aaa4b4adde13b69a6b9746478ade2105bda src/gr4vy/models/merchantaccountupdate.py: id: 54746d93e043 - last_write_checksum: sha1:0a5bd0bd364da5b65fdf7ffdc2b2062adcc870ad - pristine_git_object: fbff0772d290165b7fe40372669584bfd10fd63e + last_write_checksum: sha1:7694251b999c7b5e6571bce5e7937a0eb96821ba + pristine_git_object: 0e1f4ba8bc5f0859a42b4f617e4e8f4e6f41447c src/gr4vy/models/merchantprofilescheme.py: id: 0b23e83e9512 last_write_checksum: sha1:41672390c45f586f1fa7ec190eac3577a04f3dc5 @@ -3244,12 +3336,12 @@ trackedFiles: pristine_git_object: 1046452ff059b85b96ec2fcd173cd763b0a9af0b src/gr4vy/models/mockcardmerchantadvicecodeoptions.py: id: 01ae18d5b401 - last_write_checksum: sha1:221aa920d7cdf1ce85a8db7f24e6a421c824c9a2 - pristine_git_object: fe8647bf0926694c7cb5bcf8ac4ec73509bb125e + last_write_checksum: sha1:82c57678e705d5d444b0b44c9ffb595ca335cee7 + pristine_git_object: 7df75ec7723a98a3fd269ce546cd443c40ad42a5 src/gr4vy/models/mockcardoptions.py: id: f409f2497f59 - last_write_checksum: sha1:04f4ea078e863c88cdac7f0cbde2483bdf10a6c2 - pristine_git_object: 76f2f41bb4db6f589544541a52a1002a5ae7b22e + last_write_checksum: sha1:ae98c4f34fc77a154f9f7653d9735593b8bcba75 + pristine_git_object: c7e3e72504ff7b5f08ef648c7b08258959241bea src/gr4vy/models/mode.py: id: 7bd5d8dc63cb last_write_checksum: sha1:ef9008aa3b59f143bcfd708efee531120a3531ea @@ -3260,16 +3352,16 @@ trackedFiles: pristine_git_object: 3855954bc7226d1d067c4ad343cd8513f6b0b779 src/gr4vy/models/networktoken.py: id: 10ae8f44c0f4 - last_write_checksum: sha1:332d21f14e5e3de7788d436652cafa31380afde3 - pristine_git_object: 08de8ef1f6959b743aef4f708791f776bad08b1f + last_write_checksum: sha1:82ac7430dbcb0746ded7522882c447f92ddfb373 + pristine_git_object: ea24c5ff0ff8495bbd1667bf9b38f4a755da2f0e src/gr4vy/models/networktokencreate.py: id: 7edf1b72468f - last_write_checksum: sha1:fa735fb9d211fa707760f082679b4d7e5d4b146f - pristine_git_object: d310b7935f576cf8478a690df1d3e1e8884ed631 + last_write_checksum: sha1:97201edf7bd8159db8e9dbeefedeebed5fbe6c4a + pristine_git_object: 9f804c475487364c375baa8262f5f0b789f784fc src/gr4vy/models/networktokenpaymentmethodcreate.py: id: 8e1f48dc24db - last_write_checksum: sha1:7831de194b74e6a15922680663995f3aeb6f7112 - pristine_git_object: 80d1f7f9d3f2264b9e87961fae113710593343a5 + last_write_checksum: sha1:6e5d6f3cd1dfae64e25f1f8fb22cc34d0b8e678f + pristine_git_object: d263f62a1386f71cbb5719225e01dc45308848b9 src/gr4vy/models/networktokens.py: id: 9797a824a337 last_write_checksum: sha1:b7401cd6a5ed6a502625f4c36a6219fc5a3c0ef3 @@ -3280,216 +3372,216 @@ trackedFiles: pristine_git_object: 6b2200b07f7467ddbbda9326db29658c5d9063fd src/gr4vy/models/nuveiairlinedataoptions.py: id: 3433e7ecb636 - last_write_checksum: sha1:fb998c52cdb94a3c35832355b4db9167033a00e1 - pristine_git_object: d80f679c8204ce47bd389857376724ca662878e7 + last_write_checksum: sha1:98e83f5e4b7c9bc70af41517e8b1008c58ccf546 + pristine_git_object: 36725791dcb3dad20c22d8b929078c721b562675 src/gr4vy/models/nuveiidealoptions.py: id: cde66c16beec - last_write_checksum: sha1:9cdaaee072a4c90959c6cdc99875a02f7b605c33 - pristine_git_object: 7ef69edf25709425fd90e4f7d336a389c82e1188 + last_write_checksum: sha1:23b49c03905455d9f77302528fad37b7ffcb329b + pristine_git_object: 087924b05092ef8bb3aa0ffce16d0f196c7940cc src/gr4vy/models/nuveioptions.py: id: c651fb5bdc5a - last_write_checksum: sha1:b42a8238e9cab51f122f3fb96cab284d86eac1d3 - pristine_git_object: 3946547bf33695f448d22ffe9b31aa4734b6cca5 + last_write_checksum: sha1:009f40fde0a66d60f478797eb7695e84de780f61 + pristine_git_object: 21fe5992346bc17c79ff442cf1ac84cc6c959768 src/gr4vy/models/nuveipseoptions.py: id: f968238f62b6 - last_write_checksum: sha1:b4f1ed574dd147dd979cb7cb04c7ba4988055dc3 - pristine_git_object: bd126d976c0a185de28690f35a9cf2c00a078968 + last_write_checksum: sha1:663e24288c13e57b7225de15d8c0d87ed3de3f5c + pristine_git_object: 2b7d0e177473689a88a41677344b0a621ffc3de0 src/gr4vy/models/oxxooptions.py: id: 74c7524f2b8b - last_write_checksum: sha1:ce595214542f3d66fd086c83a36d87b71ba773ef - pristine_git_object: 9646893c48a46826a713ec9120d30dd1292639d1 + last_write_checksum: sha1:7c8963466a02f4079b0ce5c6f8b0d228d3e46589 + pristine_git_object: bb955a01635f772f4d51b3514d3b1c6623f431c7 src/gr4vy/models/paymentlink.py: id: 47106b89b1d1 - last_write_checksum: sha1:1db62970838292f6ead8be1334b388cb25a34df0 - pristine_git_object: 51d0e1cbdd0132040ae5ab6ded9dc43356491418 + last_write_checksum: sha1:d5b3fbb367fb0d1e80919411c78080b46d35ddd0 + pristine_git_object: 093add8db1a625bc58c30f8b359c3f8ac7d44be6 src/gr4vy/models/paymentlinkcreate.py: id: fe02bafa886f - last_write_checksum: sha1:3659d042316bf2ea8cab033c77b98d337b341b04 - pristine_git_object: 34536479448bb9e705a85a0201f4f9ee3d512e7e + last_write_checksum: sha1:18e8ddc1b65cc419cf72c934f90812426e1fda4e + pristine_git_object: ee5bd6ee97a28fe1c4c0a7dd58478ea8ddc706ec src/gr4vy/models/paymentlinks.py: id: 7093cb5f2185 - last_write_checksum: sha1:6ac9963eaa58afff95a7e0b8b0b1893290c54c4b - pristine_git_object: c8842c0f7c1449098a95847e66c0a8b0d4577c28 + last_write_checksum: sha1:421c1efc328301e214281094f2cf074875bacd10 + pristine_git_object: 918a3d1c7ed34a59a7450a88c96ec7e2a02dd461 src/gr4vy/models/paymentlinkstatus.py: id: 92056084b942 last_write_checksum: sha1:60a8901b44ae56ac9f6980bd21f9433597873c99 pristine_git_object: 0045117824ce0d410b8b7bace7c7ee017bfcdf38 src/gr4vy/models/paymentmethod.py: id: 439e077ceae5 - last_write_checksum: sha1:c6ca05351e7236f6bd6e684ec58adabb6a2698c0 - pristine_git_object: d8b97781cf2cb11445a1b63e8a62e47feb136bbe + last_write_checksum: sha1:753abe6a7e59391c34c9101c66e1b48cdbe7d758 + pristine_git_object: f954fe242aeab2bc69812f1d784042c3b2856998 src/gr4vy/models/paymentmethodcard.py: id: 24a83b540a41 - last_write_checksum: sha1:133337958e10ccaf51adf8a4024e17bbc09d6610 - pristine_git_object: 1d82cd4d45f481006810eb0d1805fd9b99e02492 + last_write_checksum: sha1:d6ca2a6f9b6c98dfd0d9842ae909857915feb950 + pristine_git_object: 1351e3d75fae5de602ed95cfd1dca18fad38aced src/gr4vy/models/paymentmethoddetailscard.py: id: 3f51993752d8 - last_write_checksum: sha1:b51b6165352324dc36ac10689dbe688b811e40ab - pristine_git_object: a46e4fec8d20be0e27f139153486f090a5bbf983 + last_write_checksum: sha1:94cff7613797ebda725c15661ce1f4bc39462f1f + pristine_git_object: 7d60e8da650b53565235ce610eee7a0a377d11a5 src/gr4vy/models/paymentmethods.py: id: 319e8ae25e12 - last_write_checksum: sha1:23fc67b95dbb1881ddcbf15bbabe5f8cf3c749c4 - pristine_git_object: 7db5feb05450d4e7ba7f0b7f2494849eddd451b8 + last_write_checksum: sha1:83dcb55b73e2185c1743161df42b9080e20e9add + pristine_git_object: 7f1d79631f5ff3e7604dd712d149af344af7552a src/gr4vy/models/paymentmethodstatus.py: id: 825b3f009f3a last_write_checksum: sha1:671f9235f4b271795b7bb3d45559451b68be47c1 pristine_git_object: ca43e0ee79740c61d0f383046a125dc6e9e851f4 src/gr4vy/models/paymentmethodstoredcard.py: id: 6429cd0fde6e - last_write_checksum: sha1:4e8b31880931a2f8e4daec3ef68f5a361431d34b - pristine_git_object: e0ba55c4b25659e9439d77611f51e06f9552d802 + last_write_checksum: sha1:7dcf4fb125e4369c338b914f4c11239f8df43cc4 + pristine_git_object: 9969c3fb08c6bdf74795b1fd3f7e6893e435e950 src/gr4vy/models/paymentmethodsummaries.py: id: d05be6c3eb04 last_write_checksum: sha1:c450ef4fb165f17d2e60b62bde574a3f24cbcff5 pristine_git_object: d1be61a779e4c14640229bd954ab66f3d41f910f src/gr4vy/models/paymentmethodsummary.py: id: 835c442fc243 - last_write_checksum: sha1:fe08e90b9cdbfda53bac996ef6d69167dd7de9b4 - pristine_git_object: 465b95609491af1eb00541e0a23d4e43f23c9247 + last_write_checksum: sha1:5ad701a273ca83814ea1b6e0041a0cc45f2ced6c + pristine_git_object: 4bc9cc63b22706791e232aefb56f489d235c388d src/gr4vy/models/paymentoption.py: id: 14989a8d7e20 - last_write_checksum: sha1:edeae08f82598e138347211e39d6944f821834af - pristine_git_object: 34fe11fb0232339a7cb5a34e7d9049f6da1f02bf + last_write_checksum: sha1:4858aff72e68df50a0e3651d7b96e3798b818172 + pristine_git_object: c594cc23fd895b6e255cf41c504cec4ff4cd562b src/gr4vy/models/paymentoptioncontext.py: id: ff2fd46cd842 - last_write_checksum: sha1:718b8dea21a2806b4033c9ad61ac979f28a1f430 - pristine_git_object: 775e3dae30278e714cefd5e3813aa14c929088c1 + last_write_checksum: sha1:f20705bb0e5539c447a68106ee213b4724a495a7 + pristine_git_object: 95a9b0281bdef0614c2b7317a1938986b0b3b73d src/gr4vy/models/paymentoptioncontextapprovalui.py: id: d6baeabf5a8c - last_write_checksum: sha1:5e2b968e7f5df41e2dd22c4b7bb7acd40f4ff436 - pristine_git_object: a042dc852b02660c0c319b1e9a184b1e0d381527 + last_write_checksum: sha1:b17d5eb5117d1035f907e975f4f923a56c6b6309 + pristine_git_object: 86111f7439e362b18424c3cd6cd448f6d6a0c4f8 src/gr4vy/models/paymentoptionrequest.py: id: 6d2c16b935a1 - last_write_checksum: sha1:b5af4c26bc3eb5543169fb8fc2c004d864b0556f - pristine_git_object: 0a7bedabd8618db71929d0faa7e0fd4d6cbd5efb + last_write_checksum: sha1:09b6292d4b8d9624eb80d9d5ea26e2e63a566aa6 + pristine_git_object: 54ec1a668d1fa581977ed479c1f86bea0afeab5f src/gr4vy/models/paymentoptions.py: id: be1fa3bec355 last_write_checksum: sha1:dc4fc648e0f947f02a5f46a9a9220e4390466056 pristine_git_object: 40291e099004c738324228607f3b74310f5bca8e src/gr4vy/models/paymentservice.py: id: 6eadf2ed5b54 - last_write_checksum: sha1:8878ca018ab704aed01d73d63321ef755b519818 - pristine_git_object: 6a59e1498dd50cd3ce7271f2a66ae14e4363e3b5 + last_write_checksum: sha1:5b54b31cf6206ad207c2f6822fdbf74ae77ebcab + pristine_git_object: de8b5e3286d080e1d6b7bf8094890d97954b3888 src/gr4vy/models/paymentserviceconfiguration.py: id: 29f147a1668f last_write_checksum: sha1:36aea95e3a235b689d9ff355ab0f884fa9d83f42 pristine_git_object: fb309128f3b4dbe6659131ce4470fb17740b1dbd src/gr4vy/models/paymentservicecreate.py: id: 38733bbdd072 - last_write_checksum: sha1:eeeb563f309448791898bb284227c6e570bd939d - pristine_git_object: f8079f227451733c45d7674c145b3ef9afd46b33 + last_write_checksum: sha1:0f69e6bb8c852d4362f4755c7fd1e2e7a32a63d8 + pristine_git_object: aa229e1041115d9e86f36c6f7626dfabd56378e4 src/gr4vy/models/paymentservicedefinition.py: id: ef7f48a1d220 - last_write_checksum: sha1:2cdd0bb9b97d314caf433bb09cf5e30945a094ce - pristine_git_object: 18b809c89ad0b9a620e873ff3aeafe6a0ee3674b + last_write_checksum: sha1:c1a13ac8702ad46d5c2d3066e8c51364a154126f + pristine_git_object: 9df45aafcb5b6e94d48279d36406ab4444eef053 src/gr4vy/models/paymentservicedefinitions.py: id: 2529232a0bc4 - last_write_checksum: sha1:00959b91bf8d874bab4e3ca6e9c27389a35c1bf9 - pristine_git_object: 568be298e929eab64c7a5ecf2cba51eea751d13e + last_write_checksum: sha1:a24212d29b044a14910a346bd798eb5753739336 + pristine_git_object: 6e8c5b92e1418eedf924c7cee0727dae0df3a910 src/gr4vy/models/paymentservices.py: id: 6cec6ba5ea3b - last_write_checksum: sha1:78e17c2c848501dc9c8f8182fa6d65f6938a9212 - pristine_git_object: 9c8ced19268913e651f77051421ea2c5f872b19b + last_write_checksum: sha1:1bbd4483c777f7d6646b8920f1c844165c857051 + pristine_git_object: e63cccf529ee91da6696d3ac5a0c0213f47eaf4b src/gr4vy/models/paymentservicestatus.py: id: 6613ecba2d62 last_write_checksum: sha1:138b81dd2cbdfcaa6d0141c20afa2591374445e5 pristine_git_object: 4b5a85a374b64686ab16c9f2feb313c0b1f80663 src/gr4vy/models/paymentservicetoken.py: id: cd4ffa11abd0 - last_write_checksum: sha1:7805958bb65bc4a0c6e7e49ac53439dfa5141bdb - pristine_git_object: 5ec4f534e916d41150c375575f6377baf5aca7eb + last_write_checksum: sha1:43c8f88b9d303ed2391f115310177ce5eaf87805 + pristine_git_object: 77a4fc553bfdcd42ada8271f07a3a72be00295b3 src/gr4vy/models/paymentservicetokencreate.py: id: 187cbd5c662c - last_write_checksum: sha1:ae326b91d13801b91bb2e3aec69c3cab5050e00d - pristine_git_object: 0258ecbb2759c13a63b91f01a3a137d58d7eab59 + last_write_checksum: sha1:d8fe66f1033003e475aa5e02fff965aef259c613 + pristine_git_object: b2b4f9c94b30d9ad027d06e2067256b37dd30baf src/gr4vy/models/paymentservicetokens.py: id: 7472bb589829 last_write_checksum: sha1:9c8d73c49e50ad770622a23b3a6bb8460970e436 pristine_git_object: a5450c34944fa4d18b94da5fe14ac51b4e778e81 src/gr4vy/models/paymentserviceupdate.py: id: 40d321460016 - last_write_checksum: sha1:aa524cd3702a22d7d771c14d56d87d0d08550d73 - pristine_git_object: fcfcb592e8f4abd7a1dfbb099d9bc650b5f54646 + last_write_checksum: sha1:e1729239bb14551a76b7507da38d0fc4a0182f45 + pristine_git_object: bc0899a79e69c92316a59e2c1c8a53b11a4ee29b src/gr4vy/models/payoutcategory.py: id: 91b214932477 last_write_checksum: sha1:4641d66eefd4e4b11acf0a18b971d433e36f67da pristine_git_object: 6a08b220dd2e36649b681c48351ae2bdabd12cd0 src/gr4vy/models/payoutconnectionoptions.py: id: 4e30e60a7cb6 - last_write_checksum: sha1:d4aadbe2390a41a6ed526acf08f9e2ecd9842054 - pristine_git_object: bb6a43bc83566b865756a2e21e97eec36304b453 + last_write_checksum: sha1:d41e75222483675d9966781d2ad22478e3329cbd + pristine_git_object: 50e5bee9946a3c57893fca88aa0547cb4f7a5b26 src/gr4vy/models/payoutcreate.py: id: d0fee4646c4f - last_write_checksum: sha1:1f8214cde2d74a1e072809e27338d644e0c358cb - pristine_git_object: c1b3147d36dcc228315551dc009149a8c173a343 + last_write_checksum: sha1:e021a7178eb9eaf1138084ec84589b57ddd1e1a9 + pristine_git_object: ce61a4729f5bcad6605fbb5211d199bbd2db08bc src/gr4vy/models/payoutmerchant.py: id: 5ec67c32ccc8 - last_write_checksum: sha1:02c728edec60b2e98fb6b70d0c8bf7c4e9230191 - pristine_git_object: 328337b32a779fad5c08643fedc876c8a08f272d + last_write_checksum: sha1:7b81898ebba1852619a1798e4430c51620f895a9 + pristine_git_object: 23c8c3107ea9512b268cf3b5b195940ea0e133e7 src/gr4vy/models/payoutmerchantsummary.py: id: e06d41510bdf - last_write_checksum: sha1:2a0c8b7897e934862d9a1f56058d93b577ceb41f - pristine_git_object: 60afb763c2f7edf9ee9fcdfbd92a42b02b5a074d + last_write_checksum: sha1:4779255d37770f833fde65cd172953d143ba8c2b + pristine_git_object: 5273c66f9c1eb1b6591e652c4308ccf4f75ade80 src/gr4vy/models/payoutpaymentservice.py: id: 994c8601ce30 - last_write_checksum: sha1:65f8537efc9842e25e5f35f4bda366dfdf4ba95a - pristine_git_object: 6c769018e7da36ee14d544e5b88b52c377b4a51d + last_write_checksum: sha1:608bf21b1c41afe0e22734c1685fba788c8fe53b + pristine_git_object: 5e606ea27d75238fa8912e20346be6a0b7765f2b src/gr4vy/models/payoutstatus.py: id: 52f3c54422ff last_write_checksum: sha1:5e2b6bc6fc80a93afa1a83ca8d1ab3f3010292dd pristine_git_object: 2abe9e4c492b6a56384cb651ce9c7eea25558e8c src/gr4vy/models/payoutsummaries.py: id: b004d89b12cb - last_write_checksum: sha1:04afeebd24e20fc3e89d22cbd6e2b21d11a726dd - pristine_git_object: 44c00746d29a47735036b76bd755d96916780789 + last_write_checksum: sha1:cd9ce512778f40cf938453731f4f38355bf77042 + pristine_git_object: 0484d8f5f28185c9a5270d6c9127c24fbab559c4 src/gr4vy/models/payoutsummary.py: id: 619affdab141 - last_write_checksum: sha1:f302e334238aba1cd703a6b2af419ebf1e0a4fe8 - pristine_git_object: dd768cdfcec1cf650ac1b485986e3f9e9604eacf + last_write_checksum: sha1:c8a4c440400af24e7dd94392220f12a3466154ce + pristine_git_object: 517ad4bfc14deba22b09f9fa40eb2f5a2f08986c src/gr4vy/models/paypaloptions.py: id: 7fbf9b72257a - last_write_checksum: sha1:f71252017f8de64e6fc2f0e30cb1b2fe1fae2689 - pristine_git_object: ab689378cff28fe31cf853f7fba1168944db6629 + last_write_checksum: sha1:4b3116ea4a83d7002f989371f988d4ad67e94e7e + pristine_git_object: 541f6cf0404d61ddc9eb39e0a8d2ff957ec532d0 src/gr4vy/models/paypalshippingoptions.py: id: 94e59d735836 - last_write_checksum: sha1:ad2edbb61de4449770b876e63c1ff9fd45ecbe8a - pristine_git_object: df4c691e7632acf58f0ab891e98e8740c8815249 + last_write_checksum: sha1:abdc8e6b4aca97da8456925d5ea0d68241c5dd25 + pristine_git_object: 8cb96728caa7c6157aec0ae60865c4dcfbb8b756 src/gr4vy/models/paypalshippingoptionsitem.py: id: 7b6c95f8e75c - last_write_checksum: sha1:272d14789db63a8b2037a4ed3547adff01011260 - pristine_git_object: 9326cbcc0949aad4d2a289afdecd52ba80d2079d + last_write_checksum: sha1:5963cf16a026f1cc224135ad202f0a61db7ccfb4 + pristine_git_object: e76e47b5561ad13b804c6dae71b1c00c6b1087db src/gr4vy/models/paypalshippingoptionsitemamount.py: id: ccfc873df257 last_write_checksum: sha1:89204db04b07f268e0f158829aabec97e6f5b874 pristine_git_object: 9bf9e6bdd2cd7141686d377c08f84393292a23c2 src/gr4vy/models/plaidpaymentmethodcreate.py: id: 16d9f8af22ec - last_write_checksum: sha1:a622f77011915d88acc0cff52bc0c1efbc97e7c7 - pristine_git_object: b89b3505be5857e0ff2bfddc7eb4f84e4f15ebfc + last_write_checksum: sha1:348bbe357a9bfc25a2685ace372e62b1639bde69 + pristine_git_object: d7c32a4cf1381ae40f4fece135a19db213ca9b93 src/gr4vy/models/powertranzoptions.py: id: 423b7b783e03 - last_write_checksum: sha1:1af70829ff7432f52cd2734f133ae04d7615caa1 - pristine_git_object: f8fd538b9e3859df034f9091ec9467d7681b19dc + last_write_checksum: sha1:d9b156f65e2bb8e7b579374398d67e0fe40af265 + pristine_git_object: 8d0e898e2e86ec50d81ce1d36e0729204b3aa6c5 src/gr4vy/models/producttype.py: id: 333f04ba215f last_write_checksum: sha1:76843c4ab0c501ce2837b1acdb162c9085d09ce3 pristine_git_object: c066da2de32f677bc31941f67ca44ecdce7658ed src/gr4vy/models/recipient.py: id: 6e4397cd74fe - last_write_checksum: sha1:ab59026ebf1c819422ec51c24963e5e5c87b30e4 - pristine_git_object: 279fca7fb6e57004c3ac71fca973e8d64f963b8f + last_write_checksum: sha1:92c06f1ef543836b31f07a2422fa13e0a28ad84c + pristine_git_object: 8bafcd5c9d6084f8ba860f0f0dbe0f23b056b67d src/gr4vy/models/redirectpaymentmethodcreate.py: id: 490d27963970 - last_write_checksum: sha1:6b6ff1e2e4a2a826f95580e9ba17541ccde73540 - pristine_git_object: f20ae2ae49120081b386ecda19cde52bc53b34dd + last_write_checksum: sha1:cc23e93d5e620f3bdb30a06ca6d50e9d7369aa79 + pristine_git_object: b6c294e983564d3b7b42f529e5863558251f7f81 src/gr4vy/models/refund.py: id: 8aa63978d78c - last_write_checksum: sha1:ecc88decea9987e92c23510e040414b4e6edd63f - pristine_git_object: 176b9b6b78a07106205ee9ddd85e47b02f865f0c + last_write_checksum: sha1:53f68382c82548ca63b58f3b917b36cdcf4586ea + pristine_git_object: 9721749bfe884b365f261b6985156cb692c1e5a6 src/gr4vy/models/refunds.py: id: a78ea31739c4 - last_write_checksum: sha1:5d1f05a0a2bd9ff2006d7a15352f91ecc6279000 - pristine_git_object: 9ab4b994ed221d75fe00c4ee5850fa565027846a + last_write_checksum: sha1:a5ffc535f526a26e4ff061c488f4b963263baca9 + pristine_git_object: 1f3243ea146f9539bf345183c0a9c80e55ba603e src/gr4vy/models/refundstatus.py: id: b8f637dc9033 last_write_checksum: sha1:e2ca822574710103170549e123afe952ab4abce8 @@ -3500,52 +3592,52 @@ trackedFiles: pristine_git_object: 4acd7825fdbbfb06e4a7fa45d9f5b614ccd95f53 src/gr4vy/models/register_digital_wallet_domainop.py: id: 77b78b8d979c - last_write_checksum: sha1:b1c9fdae0e6d01464127cdc0a2fabc826ea6ef04 - pristine_git_object: d856bd0ac789f9ed4e5a5014c1ab5ef5d7517a20 + last_write_checksum: sha1:cf4297296e47ddc7d0588c2c2343d8f4d993111b + pristine_git_object: 52d9f19127852d4d06d6f4e8049e3a9dbf43f756 src/gr4vy/models/report.py: id: 02da3b3612c8 - last_write_checksum: sha1:1814eee8afde1715f563f9af573ecf84f2b8333d - pristine_git_object: 2aa9a55ef4ffec2989ace191871341e2c647d24c + last_write_checksum: sha1:16fc729f2f14ccab3270a72bbadce559cd2b99da + pristine_git_object: 61e8009f64dcb9969d714c6516696c42014ecc50 src/gr4vy/models/reportcreate.py: id: 5a33f73638b0 - last_write_checksum: sha1:9f7a2c581d3dde8de70133e6acfff8261fe49aba - pristine_git_object: 8a3ef701203d29afd5d12621f4d5794756b2f90f + last_write_checksum: sha1:2413aad78fd43ecd997781ca4384cd66cf836925 + pristine_git_object: bd0b5a356c2f8b74c5edef3d18536db5ec85add6 src/gr4vy/models/reportcreatortype.py: id: 18f0168629a8 last_write_checksum: sha1:7f0bb4353827dd2ca0a6031222f0516f9a46394e pristine_git_object: 78fb69c584131048e6c7ff6ce6f94bc7fbf24065 src/gr4vy/models/reportexecution.py: id: b88fb0fa3d73 - last_write_checksum: sha1:2b17e04ae0fe6d75b44674c0794da59fceb18bca - pristine_git_object: cf71c419a6861acc83e83b1eb63d194a2650ab18 + last_write_checksum: sha1:b636d6f2e21e95b0063d275433af2028291a7e9c + pristine_git_object: d38dcdb2b38db65cbc21ba43437b142ddf0e0257 src/gr4vy/models/reportexecutioncontext.py: id: 7851d0e8b7b6 last_write_checksum: sha1:9e2d727e0cdeef5bae6ba0fe08d1fe9b36777c65 pristine_git_object: 57b62db55e9a88be2bafd48deb590380f15fba50 src/gr4vy/models/reportexecutions.py: id: 71a2f91dbcab - last_write_checksum: sha1:4ea903dcdd0d441ea21d69f5a1c3c5ef0b93b06d - pristine_git_object: 73c460f0a4f3caf7209442a0811dc0f130db3a4b + last_write_checksum: sha1:eb9963c778f988211faf12476e6c1fdadaa15d36 + pristine_git_object: 93c5c0c2ce83d4335d726a9368266426d471cae4 src/gr4vy/models/reportexecutionstatus.py: id: 4ead233c4e40 last_write_checksum: sha1:3c5a3dc52fa931e605d45cb48389d6869219b313 pristine_git_object: 7a71e08070f171a0fdc8bd8012d18f9996c4d2e8 src/gr4vy/models/reportexecutionsummary.py: id: 08e775a8f7a5 - last_write_checksum: sha1:33cd1932886e4bb2fbc73211b3f5276bae46e646 - pristine_git_object: 544aed7fc261a56257ce1af042643a7d0cc096a8 + last_write_checksum: sha1:6f4d36137305675b3ff4ab13084533d2e168a6db + pristine_git_object: a6db0d355a7b901dc77a813666f9f8ec0d57fc3a src/gr4vy/models/reportexecutionurl.py: id: 06045b068f09 last_write_checksum: sha1:db4b80bcfc6472e8153d924c7d2b0adde8a51a08 pristine_git_object: fcc3287c5c88cee7c476797a9dc4ebf26455fc73 src/gr4vy/models/reportexecutionurlgenerate.py: id: 4ab934245866 - last_write_checksum: sha1:1b728ce59e5c87bee4b38f3d5bf332efa71eb67d - pristine_git_object: f01b0d3f7ff1e27fccf3d5670eae493d1d2a4d31 + last_write_checksum: sha1:48f01d04eb8063cbc069a16e93098c4ddf8b02b3 + pristine_git_object: 810ebbfd10812161503f16d78278c89d3c84249d src/gr4vy/models/reports.py: id: 26d044774938 - last_write_checksum: sha1:67843969e5ef69ab8a74827917eb5f9cf5324912 - pristine_git_object: 8dae31fcea8c9cecf35792e716da2c4cfbc83bf8 + last_write_checksum: sha1:e3fc8fb986ad30372bcd8a8c99f64ffa6cbc3e39 + pristine_git_object: ca3f2c63c2834f2cba0d48690c620db0ecb76666 src/gr4vy/models/reportschedule.py: id: 35b165c2db1d last_write_checksum: sha1:120bc2a0404dcb99f6dbdf51ae37337997c35d09 @@ -3560,68 +3652,68 @@ trackedFiles: pristine_git_object: 0f9bb88c2019fc240d2a0243de43e8ba62f166ca src/gr4vy/models/reportsummary.py: id: 154ed43e6395 - last_write_checksum: sha1:68793a8c4b00fb33e7df900617f11f373b7345f7 - pristine_git_object: 191b585d298e1a48f40810a754bbdc09318ddae0 + last_write_checksum: sha1:5604a6e2f1565e3fd878734062fadfe922ce9bed + pristine_git_object: c4217877e3703ffea4d8dbf57d770de23342f9c1 src/gr4vy/models/reportupdate.py: id: 8f6820ba6def - last_write_checksum: sha1:a3205197fefa4b33d97e844b352cdb2c3bcdfc73 - pristine_git_object: be16b0858db72d30db59d680c849cae9d761bc29 + last_write_checksum: sha1:aa105e4aff9a57891195fc648d02a9bbf9680011 + pristine_git_object: fa7414f040a6b45ba0dd76ec542f2ebb642af7b1 src/gr4vy/models/requiredcheckoutfields.py: id: 640ccca15ad4 - last_write_checksum: sha1:534d08f4f675c6c186dd26f82133dea9aa7ff985 - pristine_git_object: 2f91365b467d9f33944be601347896e9008467cc + last_write_checksum: sha1:2d0110e957e1645e75b5dafb0dbe8e819152d0c8 + pristine_git_object: baa758b24ca18ab4605e4166564ebb32b051f743 src/gr4vy/models/resume_payment_method_network_tokenop.py: id: ae425ac45ee7 - last_write_checksum: sha1:3061b8da0ffa4ef4fe21fbe3d7b0b1d660b00f1a - pristine_git_object: 1aacd81b46ea4a4cd6813522127f04dd4561433a + last_write_checksum: sha1:37725d84028c11010ae611fc6124f10542370fb3 + pristine_git_object: 3749a366787dc88d2961e785d0d2e5904cd247dc src/gr4vy/models/security.py: id: 5eea80acf07f - last_write_checksum: sha1:aa582be6e8ad9ca2399eb492f78742b8eda4151c - pristine_git_object: 6cf4069d332ddbb2dbd1f33a30937429201ad351 + last_write_checksum: sha1:3b1949d6e8b65887d46059b59cc532da24fdb603 + pristine_git_object: 345dd29f037202b1d565ae35ef97c49e91baae51 src/gr4vy/models/settlement.py: id: dde37ba0f855 - last_write_checksum: sha1:eb9074f3e318e71653d3bb5b0fccaedf0050832f - pristine_git_object: 7e96eec8c60e31a1da0363a9f1e74b01198594c6 + last_write_checksum: sha1:73c55e8100d7c4ffae4209f5e11a935dd337f94b + pristine_git_object: 8ad5a6decc7bd4fbf43fd87f723a98dfa204d449 src/gr4vy/models/settlements.py: id: 897767c002dd last_write_checksum: sha1:83077f675a3b873e9f5c662406b1fab06d164be2 pristine_git_object: c65ac4d0838ccf60aefc98868464447a56644fab src/gr4vy/models/shippingdetails.py: id: 2b082ce43a19 - last_write_checksum: sha1:16fc498173c7f5e2b19beabd53f2e1a06b662aa3 - pristine_git_object: 19d34bf3b72a705a1e076f7742ba467a2250e793 + last_write_checksum: sha1:abc09a9264a65635b391f74808318bf17cacf7b5 + pristine_git_object: fb54af33e8c3f6c274f8a51431b6adc781191ef7 src/gr4vy/models/shippingdetailscreate.py: id: 959b375ed147 - last_write_checksum: sha1:df017bc20160282098fc0d0ad6160c3d65f4d691 - pristine_git_object: 71e6369c9499ddca6a2c76d6340c449df8688b63 + last_write_checksum: sha1:e7f7aaa94f11954b08764f1350533a10e2505023 + pristine_git_object: f9a9afd715fb772e0c0d781dac9aaebebd678b86 src/gr4vy/models/shippingdetailslist.py: id: 60183b338896 last_write_checksum: sha1:5ce535561d752961c3b1ea5d6cef0b4a9e6022ad pristine_git_object: c8647cac1f64331325d5ece665cc3f5be44c8dc4 src/gr4vy/models/shippingdetailsupdate.py: id: f810ad9fa350 - last_write_checksum: sha1:9fae1f6913685fbfa3c8aaca07d97dc5b07cd64b - pristine_git_object: 8bb6e9438ceca3468629bb7ed98f654ed8281c27 + last_write_checksum: sha1:25691e2732ed5fe38c12f32176e7eb6353cab4f5 + pristine_git_object: be28d10424ad727d51ce1ee7256286361d631ec7 src/gr4vy/models/statementdescriptor.py: id: 39bafa5997c9 - last_write_checksum: sha1:e0dd5d7940b0c0a70ef5d8dbfef27df147e68b91 - pristine_git_object: c3208648123140f15a30b56d85e6a2d8cbae736c + last_write_checksum: sha1:276115f2681e4f1475ff2dc460ac23fd16c5f416 + pristine_git_object: fd7e43bd35a567908773dcc847b175f06614a8e6 src/gr4vy/models/stripeconnectoptions.py: id: f89055383e42 - last_write_checksum: sha1:beae48191b2c2cae1082dfc8155d0847469526af - pristine_git_object: e06eda11cb8d9c0488e7a1bfa8c6be20b5f64147 + last_write_checksum: sha1:4cc40ce643f4f2c1eb4df8194a34f135df57a84b + pristine_git_object: f89ae21a50486d3401623c0eff8577ed802244ba src/gr4vy/models/stripeoptions.py: id: e528180f8162 - last_write_checksum: sha1:16a303a3402861ba35c66a6419049b8dbfe57994 - pristine_git_object: 5a67defa3e92764659175ddd6c0416ce8a52d9b3 + last_write_checksum: sha1:77b482ddbdc760330b4a73746de29cdb92b32b49 + pristine_git_object: 1e5fae3423566be29c5d8e80289dd73155a84d18 src/gr4vy/models/suspend_payment_method_network_tokenop.py: id: 56f58d7fc722 - last_write_checksum: sha1:e61b1d73587cb948d324825ce0c332ec46472747 - pristine_git_object: bdf8b9dd298de3ac2b54d7c82d03846b2801ee2d + last_write_checksum: sha1:904c90bb59be0a21b43ed9fd962b81c98b770de1 + pristine_git_object: 018224d8885d7b6c02b5cef951083e6410be3d38 src/gr4vy/models/sync_transactionop.py: id: 0538b7adce48 - last_write_checksum: sha1:0f6d50c1ea7fc22f15bbe1d44b6928df58cb2ba0 - pristine_git_object: 1b7dca3446938053e772e67a94c963399a7b2805 + last_write_checksum: sha1:09469b4ceaaff68e7aaa9272c72db0ef0c37d421 + pristine_git_object: 7a79253523ec6b205b4caeb8ae30235b4b253e41 src/gr4vy/models/taxid.py: id: eef53a13f713 last_write_checksum: sha1:b7ce1cd10ffa4ebad84d9323aa70fd2db1910abd @@ -3632,84 +3724,116 @@ trackedFiles: pristine_git_object: e61b9954bd08eff0e1cb10eeff200264a99eaf4e src/gr4vy/models/threedsecure.py: id: 665663cf801f - last_write_checksum: sha1:ee5dd8edbf7312a3263960b9a94642fcd02b28dc - pristine_git_object: 604ed414fab5ea49ad601ae76d5344f21d34d5f0 + last_write_checksum: sha1:0d6b411c4ff08bc3cc6876e174fc7c2f910d631c + pristine_git_object: daae14e07215747f86c9e55e170c386be21c284d src/gr4vy/models/threedsecuredatav1.py: id: 082f021da827 - last_write_checksum: sha1:944abd8b744836fb6482d7797936bd633367b468 - pristine_git_object: 718d733f3ea3127c466568c5fee4d448b84cc818 + last_write_checksum: sha1:6128b8036c4c65dc560843d7e444ae7813ac6635 + pristine_git_object: 792722e5c3e537e6130e0239778bca57ec8f4412 src/gr4vy/models/threedsecuredatav2.py: id: 6f813e6ccdcd - last_write_checksum: sha1:b5601cc52c7edcfbe4b3d3eb0756e758a544813f - pristine_git_object: 7299f63c286e3558f71d8be716e7613842e4a6d4 + last_write_checksum: sha1:f7f0fc086db999fcfd212a0054388c074034e860 + pristine_git_object: fb8ef301bed8e92de2c3728d329a5c2457020994 src/gr4vy/models/threedsecureerror.py: id: f282d5affa72 - last_write_checksum: sha1:da26543054a6d34cb8143d031e850e35e258ee06 - pristine_git_object: 58d2e757b1e31cc01b1ab990238f79698f535ba0 + last_write_checksum: sha1:faf30457fae66dbe3eb0f4776773869358e57811 + pristine_git_object: d2980c01008a04e919e3462ddb3189fb7abc7eb8 src/gr4vy/models/threedsecuremethod.py: id: e4780a0032fa last_write_checksum: sha1:6d0aa90484f9af396fa70b949aa1bcdc73d4e2d7 pristine_git_object: 7fb5dc264fd57c52a015b3792bf319fc3c1a69cd + src/gr4vy/models/threedsecurescenario.py: + id: f9dd299b36b2 + last_write_checksum: sha1:6e9a143548e903bd041fe9e7f5377e8c49b46f25 + pristine_git_object: 4588a4a3170773bb229d048fb74293819dbe592c + src/gr4vy/models/threedsecurescenarioconditions.py: + id: 096a5a3eca0f + last_write_checksum: sha1:05136610cf9bc74e7976f5ba88ee0678536b1870 + pristine_git_object: 67416bc381f3ebb737e312b557395ea37e2a109b + src/gr4vy/models/threedsecurescenariocreate.py: + id: 5090c7b234af + last_write_checksum: sha1:d2c9bceacc05b2aa8567072c9c39b3a57755b83f + pristine_git_object: cbbfbec849cb6b23670c2e560961d39a33d2e135 + src/gr4vy/models/threedsecurescenariooutcome.py: + id: af534db9523b + last_write_checksum: sha1:334ac772ad948f3a2cca7b9f9c859ca660e6f812 + pristine_git_object: 89c47c4154241a0f0f312dea756bbc5c7d9a83cd + src/gr4vy/models/threedsecurescenariooutcomeauthentication.py: + id: f963dbe8f490 + last_write_checksum: sha1:a59bc301f8f5c096cd4bb845dad88644569b4b54 + pristine_git_object: b1cd48c8cc8c19bf39be92ec4f1c836a1fe57072 + src/gr4vy/models/threedsecurescenariooutcomeresult.py: + id: cc7fc0bd3c28 + last_write_checksum: sha1:5870e3f1f7391e58db26ff6158304e0a771373bd + pristine_git_object: d9a78856f5b07884fb163cb8ff363a1a9c745b39 + src/gr4vy/models/threedsecurescenarios.py: + id: 6667679cc28d + last_write_checksum: sha1:25a3eac68f524d3dd89ee812deb1958ac180fb41 + pristine_git_object: 66cc94888965b73ff602bb08321b7484b007a86b + src/gr4vy/models/threedsecurescenarioupdate.py: + id: e1dbbfe9a4aa + last_write_checksum: sha1:80894aaf22bf8914f5be1515691f17666637ee1d + pristine_git_object: 2d3badf2c810c66b92365b7edd3dd2cc2283c6c7 src/gr4vy/models/threedsecurestatus.py: id: 60de082dafca last_write_checksum: sha1:b6184e44b0c2d3ae93020f727b0e1bc2cfa74008 pristine_git_object: cd1d2ad2af5bf6d32ffe5f05f8d1c2888603986d src/gr4vy/models/threedsecurev2.py: id: 46f6420aaf4f - last_write_checksum: sha1:bd735fc78e9d66b53224125867cc9098d30d04a4 - pristine_git_object: 2049a8f2b26461852af572a798846cc89ab0c8c0 + last_write_checksum: sha1:06a78a75dcae51f65361d8aac8e83e6abe0c13c2 + pristine_git_object: 3aa1371eb3f551a76bcf67444383174a5d95558c src/gr4vy/models/tokenpaymentmethodcreate.py: id: 423c8b99951a - last_write_checksum: sha1:5ee127c02d839a2729d87f14e0f9dea8175e536e - pristine_git_object: 618275d492ecdc5cd626427f7cb0f3879d5d6670 + last_write_checksum: sha1:b6da7ef5e6775856040cb87cf80d009109837ca9 + pristine_git_object: fcae68e708c2211bd189d79876136c4840ecb07f src/gr4vy/models/transaction.py: id: 7b4f25439f19 - last_write_checksum: sha1:aaa813b6a3da4687a1136926cac31aaee699780c - pristine_git_object: 6ac1db426de29c3d612a6c2ab331dbbb5754fb1a + last_write_checksum: sha1:ee969f00633be113ed5d1e5d9c3268c5fa7beb14 + pristine_git_object: d861d18dfd82cc3398385a422c83cc39c0b48379 src/gr4vy/models/transactionaction.py: id: 37b8b7f1e4b4 - last_write_checksum: sha1:18523046892f5fa1800811cf4e9cac4285d367d6 - pristine_git_object: d2e95abbf8c71a56b35cb998d9ec24dd34407b68 + last_write_checksum: sha1:c81e42290e14cb39f02cee5cdacc7a8fbd48e2f6 + pristine_git_object: e167335d89bfe02d3bcee88f58920127ed28452d src/gr4vy/models/transactionactions.py: id: cce442cab6e3 last_write_checksum: sha1:63b88d2745e75c78395026ec358457c7144e201e pristine_git_object: be0d6becfb795a87edc17df2737ee904460aaba8 src/gr4vy/models/transactionbuyer.py: id: 054aeeabf8b5 - last_write_checksum: sha1:15bcbbf5dc17ae0f1499e2062a3ebbbafd105fb2 - pristine_git_object: 8e269ab53b38a0eedb0b74730551d9cb46323183 + last_write_checksum: sha1:d7ebf9e326fe91a693b905673909982f213efe12 + pristine_git_object: f5c594821e1584ce1175480e58d7f3a43c8d52d2 src/gr4vy/models/transactioncancel.py: id: 3725a4947019 - last_write_checksum: sha1:68a4f88cd9a0915477d42250b1bfec253f426658 - pristine_git_object: ea545e0ee7d09a6b666c753816be41e51eeb2b69 + last_write_checksum: sha1:1e383aaadac75440eaa92fd51a11415931a7fd86 + pristine_git_object: 729fb099aa68b1efd1ed631640b2639d7dadfa23 src/gr4vy/models/transactioncapture.py: id: 3def58b3f1dc - last_write_checksum: sha1:deb6c7856e7bcc01fa3163e4c7bfa604869ae0fa - pristine_git_object: 8d2b9be3a221def592f12db945ce5d9130acfa3f + last_write_checksum: sha1:c4652f6ef864203c69cb7f9b476e75996a9b649f + pristine_git_object: a55cffc6faa1b91fd9fc665f84929f3b0fc01c2e src/gr4vy/models/transactioncapturecreate.py: id: 3cf410dfbb05 - last_write_checksum: sha1:53cf283d6ccdd84ddf5c3021854f579b48c89899 - pristine_git_object: b3dcd84a0d825fd14f5c93f34f0a256be50fa5de + last_write_checksum: sha1:85502c3779fc87a97dc9f3cf92f5ff3d638e4833 + pristine_git_object: d131f6923f2e506c7df2e7e6631ea68d3703b10b src/gr4vy/models/transactionconnectionoptions.py: id: e12dfa576d74 - last_write_checksum: sha1:b825b1eea4b760fefa56e84c4eceecc2b64db821 - pristine_git_object: b5989e318a364a2988071d2660b84a65e8b5ecf1 + last_write_checksum: sha1:87f6458f759c54e51e9fc9a4e60b6fa1f49a485f + pristine_git_object: 8cd3081476cc22fb56109e016e8b28e07433dc38 src/gr4vy/models/transactioncreate.py: id: 640e0433670e - last_write_checksum: sha1:ac9f9d0d63c5956a6109450a5e24a4d38fffcccd - pristine_git_object: ccbc0e22972143e9814b2c4045ed92c6db36b045 + last_write_checksum: sha1:3076c5f17dfe09d2211b1fadd7a95588c6900a23 + pristine_git_object: 8469f7483adb333d70b28347e7d8e75e04088113 src/gr4vy/models/transactionevent.py: id: 89844a174227 - last_write_checksum: sha1:a035348d5ab3e2d719c2a25878c24e984b7a3075 - pristine_git_object: 64c910f0f4aa07ba980089a7bd076e42bca51730 + last_write_checksum: sha1:91bcf896174f626686aa437bdadf9a62171ef606 + pristine_git_object: c353ee684ca1c879a2a0b2f2340e11b4c59fd830 src/gr4vy/models/transactionevents.py: id: be49f777ddc0 - last_write_checksum: sha1:fb20942aaffbfd2db109910e18a5ffb944725610 - pristine_git_object: 3cf782c8ea8bbac3cea74463ab58a6f5245f849c + last_write_checksum: sha1:c9eae6a9ae4cf4fbfd299908a8aa956fa4294a0e + pristine_git_object: c82e13dbc5c139a5164429c13df897a1152ac280 src/gr4vy/models/transactiongiftcard.py: id: 9b767829e395 - last_write_checksum: sha1:8e830b357d5d037b6327269679595ea95ac699fa - pristine_git_object: c28e674b0c071116b6b1faeefffa36e44b6670c0 + last_write_checksum: sha1:f7c6f48195c390dc35f1b9352ef3532bfb269213 + pristine_git_object: 90d1d71abfecc4196f229b0bccc70ff17edaa81b src/gr4vy/models/transactionintent.py: id: eaf979b44c8b last_write_checksum: sha1:fee95f3e31510ceacf4205e7b60427c0dc4b4aa1 @@ -3720,104 +3844,108 @@ trackedFiles: pristine_git_object: c6f2a8e365cd8a36e873e204ae47d6d8c56baa52 src/gr4vy/models/transactionpaymentmethod.py: id: cac8a01a26ac - last_write_checksum: sha1:cf3f1e75eb8a50990cecb6bb056e77bfd9a170e9 - pristine_git_object: 3343c43665094de20048d43a8f1f9bd0dc89f8bb + last_write_checksum: sha1:f65cc0b23b81b0fbfa2b2dd4dede3ff7650ba4d5 + pristine_git_object: b58fcba7f7ded763535fffc1c6f75fb0fcadabc8 src/gr4vy/models/transactionpaymentservice.py: id: 426b5f5212ad - last_write_checksum: sha1:ac757c3a86dc0baae0235405813da69bb6fca187 - pristine_git_object: 4327f037d4657650d2405ef842e57ec1fd985227 + last_write_checksum: sha1:1169bd1348f64baf2c3b49248d9b3e8edee067a9 + pristine_git_object: 02798ec2d91288c0e75415c20487dca74e00b716 src/gr4vy/models/transactionpaymentsource.py: id: dab45199460b last_write_checksum: sha1:2d5af8baa29becc8053f435be3e8d189476cbb01 pristine_git_object: c10f4e1e0a29ff0e63bd060291d274bd9096d965 src/gr4vy/models/transactionrefundallcreate.py: id: e4c8a29fbecf - last_write_checksum: sha1:bea9b5a9c9eeab175fe5f368d5f72978f628e3d1 - pristine_git_object: b36ef76252d806c92013161a5037247ea0e5a06b + last_write_checksum: sha1:fc8a1078eabfc0f2dfbd712fedcd7f2ac0b910a3 + pristine_git_object: bbbef301feeb88e52b653d93b49944f5be4e686d src/gr4vy/models/transactionrefundcreate.py: id: 0b73acaf2759 - last_write_checksum: sha1:ab4f805d1d8a4a27e188476fbaa56b5b173423ee - pristine_git_object: 4618f8982f461d31e5094307deb8b2386e74bee4 + last_write_checksum: sha1:617cd604b0892f3d4abbdf634d37fcdac5c93aac + pristine_git_object: b23cc2393609d25c481f47fb13e039deb1c67276 src/gr4vy/models/transactionretriesreportspec.py: id: 321a076040cc - last_write_checksum: sha1:dbe208b5e992e7b259f89fa0f4379604a66bf1b5 - pristine_git_object: f5e6b106592f07463ed6469053a72452367d0cd6 + last_write_checksum: sha1:d8263dc208720dddec38cd080fdbda0d56bc8427 + pristine_git_object: 379a50bc8990c8b3efc48781bdeb237b14093801 src/gr4vy/models/transactionsreportspec.py: id: 66f4abe8baf5 - last_write_checksum: sha1:a0d3b28ed538c6cb908a374cfb763d19aa59e3d9 - pristine_git_object: d52c0a3ffd84d1d7996610c75095568a315e5fa3 + last_write_checksum: sha1:95e62b17136297d4e46f5dfeb1a4cc84df33d270 + pristine_git_object: 1a65e21e217643b7d3a08517a78afea826bc4de2 src/gr4vy/models/transactionstatus.py: id: 424149873df3 last_write_checksum: sha1:1a6becb51314ca7d2e0debb96b37331b5d866545 pristine_git_object: a52b5660c7bca78a3d2ff9b9dd43e8e53af9d077 src/gr4vy/models/transactionsummaries.py: id: "522398695204" - last_write_checksum: sha1:5d4a48ca9df4edc67caab9bc4fb1494b57d0bd93 - pristine_git_object: 6816913426ce2b5d250d5646083102e57dc53eeb + last_write_checksum: sha1:76e073870c3b2aae0be8e084476cfaf2174672d9 + pristine_git_object: 122143d3c662dcb96404c453b0f54663237243bf src/gr4vy/models/transactionsummary.py: id: f6d5ef4e39f9 - last_write_checksum: sha1:dcba1a936cde40e62fc520458239072c214517ba - pristine_git_object: 63538acfe3e4bafe4f7c863338bcf7f3a858e134 + last_write_checksum: sha1:dadff142a9dcdb49181aa3a972e8b8170fede95c + pristine_git_object: 164137f7c3da2d6b71ecea4e7d208466f3f9833d src/gr4vy/models/transactionthreedsecuresummary.py: id: 0605662319b6 - last_write_checksum: sha1:e7050a4000f82c7b3ca978d4a2a5b53b1d4ae801 - pristine_git_object: ae8f4f2c17d0709bf2bc21d19dba2b5c2f715337 + last_write_checksum: sha1:b468418f9c3883344792321fc0a18aedca7741e7 + pristine_git_object: cd7c2637c135203072ff16fa72cdc86679b77746 src/gr4vy/models/transactionupdate.py: id: c6f258f04762 - last_write_checksum: sha1:7c3c8ff00c57b36ee9a0fabe156865042de272c7 - pristine_git_object: 210294464191133a1aea4f2cb469ee07ce9e7396 + last_write_checksum: sha1:82116fffa3d54bbf5b12528bc40534459a78237f + pristine_git_object: d1c69c9a6dd8ac32cd14fb97c00e66fae7c9e249 src/gr4vy/models/transactionvoid.py: id: 3b1d2c2612ff - last_write_checksum: sha1:d7d0be648457af3b61cd64b3ca091bd1ca78ddfe - pristine_git_object: 0f9223b6fb79be789019cd522e1c5bb2e7a66aa6 + last_write_checksum: sha1:d310663e5745b804e3093e408caea659d1b90315 + pristine_git_object: 3d3cd065f3adb43b3d469b075c58c2d00f24430d src/gr4vy/models/travelhubcustomdata.py: id: 9bb2774dfb81 - last_write_checksum: sha1:ec433c462c37e5ad5fa26f49f2f21ab95c05896b - pristine_git_object: ffde63a9bd22e2d7b330cead9606385da868b9d2 + last_write_checksum: sha1:5b2ee7137ea61e6ee69f68e8918b8523923f6134 + pristine_git_object: f0b553265cbc09fd98a79ccc6a11678abcff2ae0 src/gr4vy/models/travelhuboptions.py: id: b3cd592553bc - last_write_checksum: sha1:f770b42b38ebaae34980bee8a40f83fd65efe36c - pristine_git_object: acf625ec6b82297c4c9990837c88ff979b267888 + last_write_checksum: sha1:738202d23e500f3edd124898bfe393a7dd076c58 + pristine_git_object: 82b81c6ca2f3a002700708bfa6a69a0c58162b2a src/gr4vy/models/trustlyoptions.py: id: 1fc00297f51d - last_write_checksum: sha1:a3b68ed41085c8dc618be403210e9d852daec212 - pristine_git_object: 554f24feb67d17b5762ae86d9efdcbb4ff53f583 + last_write_checksum: sha1:73f95a2d33d59e9eaf9d5170f092bcbe5c5b12d0 + pristine_git_object: f67231a4762f87d3fb084d04e15d5dbd41961ebc src/gr4vy/models/unregister_digital_wallet_domainop.py: id: 7c3d4329dcb9 - last_write_checksum: sha1:d2091767d7e762769fe091450bc68d876f8b3834 - pristine_git_object: eb58abbbcac522ea290819d2f08cdd33592c048c + last_write_checksum: sha1:469cb11f1a4329c3e70263d0963f69282cc8fd7c + pristine_git_object: b1534f202f1024272d054e0ce41389ca61b82915 src/gr4vy/models/update_buyer_shipping_detailsop.py: id: fa7e1a9bddef - last_write_checksum: sha1:5bcc7ab10bfcc28fddd337ab8b9bbe1578c981ce - pristine_git_object: e597c98a79c47aa1b150979be65d31a5df0a230d + last_write_checksum: sha1:27e1cfec83eec375e2fc5a86cf653f72ab07ab91 + pristine_git_object: 9f1b3eb3ed0048c63c11acad252b07f396c7141e src/gr4vy/models/update_buyerop.py: id: 47522eff6c3e - last_write_checksum: sha1:67dd5fd010e402c5fd0d0b6565fb559d4bef1e57 - pristine_git_object: 4d5197098af20ee249d4ec2d4ce6be6aa1fb60ac + last_write_checksum: sha1:0581247b8a25eb92b4e416c45a015e0b5d4e7d5d + pristine_git_object: f9e5befe790532be667665ff3807b0037689fd3a src/gr4vy/models/update_checkout_sessionop.py: id: 1562c9801ebf - last_write_checksum: sha1:69c0ab412a78cfcb4c5380cd95b38dd19e403f36 - pristine_git_object: 83c00be940b126f81409b9ad40acc3d4426ac518 + last_write_checksum: sha1:da296f296b56f409e867f0857c1eda074d6e68ab + pristine_git_object: b843f2d68753c62208ed8ed8d86a82a43b426a29 src/gr4vy/models/update_digital_walletop.py: id: f3caa58bb2af - last_write_checksum: sha1:a5d7d40ce31310f2e4e7b7b5fd20abf9df2d9722 - pristine_git_object: 9384030e885ffb72c0981c3f08b990968b642234 + last_write_checksum: sha1:d4e95f4fa3acd13e3fd5e707ae54f3619e0c1d37 + pristine_git_object: dfa31467acc905171e081641cf6e434e89271b40 src/gr4vy/models/update_merchant_accountop.py: id: a5c141ca5ee7 last_write_checksum: sha1:e3257b4ebaa77c1aa2d02609fe6328cc37d1ce97 pristine_git_object: 37ccccaf84c276c9cad1acec7484e7b1de110c6c src/gr4vy/models/update_payment_serviceop.py: id: 29c1e70fd707 - last_write_checksum: sha1:b604c35e08835a869cbeb809144b31c6ecdfb69d - pristine_git_object: 3050a48c175be1f9f8dfcc4f691ffd0a0f048f59 + last_write_checksum: sha1:91731b7a54e78ae635ee7e7d07b14e0f95612efb + pristine_git_object: 68c042835a07e5e98daf7e4621281d42cff43ce2 src/gr4vy/models/update_reportop.py: id: 5a46e58dee72 - last_write_checksum: sha1:b4b46d4ee8358e36d138673e4b4d583f1d40fd77 - pristine_git_object: 06f4d3fc8638541caf742a6fd57b41d7c4a2e5f3 + last_write_checksum: sha1:f7c02c6b3325f39c82d53b968034133ae4218a72 + pristine_git_object: 26e2d6d73946010bbc51876f3ea25a0c3e28e094 + src/gr4vy/models/update_three_ds_scenarioop.py: + id: 2b3f2490972e + last_write_checksum: sha1:f9afb5666f35ff19af54960d943f9b152c6b9f6f + pristine_git_object: ace15ad51d9523b2d8ab4d992e57d4e1c7273e25 src/gr4vy/models/update_transactionop.py: id: 6ba5ccbeabde - last_write_checksum: sha1:c3867c100b0b386161730ddccb21bb569fcf210b - pristine_git_object: 68531ec5fbc1c19b66f77437340ec82fb009ab0f + last_write_checksum: sha1:3300df022e822d379475358fbcca9f56c1839501 + pristine_git_object: 9d192bbca42499c86c42166dc34881f48c0ab159 src/gr4vy/models/userstatus.py: id: 8c0aac608251 last_write_checksum: sha1:a53d2f3a554e3b379c12c1b3a9fa5a3f8d35156b @@ -3828,16 +3956,16 @@ trackedFiles: pristine_git_object: 03b61726712b521e4cc206a26f2883e7586ade7a src/gr4vy/models/verify_payment_service_credentialsop.py: id: 39b13158e1b0 - last_write_checksum: sha1:dd27066e17c941e2ac914d8add1411aa73779b44 - pristine_git_object: 862060201b8e7e9207e5fb48279f9f415389408f + last_write_checksum: sha1:f60d7310e373b8618ba30420c66d43b407d9cd6f + pristine_git_object: 9b9340fc9708dd0178561dca526eaefd27b6d48f src/gr4vy/models/verifycredentials.py: id: 95e74e6695d3 - last_write_checksum: sha1:acb9598b7a5bcd6f88a8720accce4b49017ae8ae - pristine_git_object: 88d015583a5c82f6e4928ec67d19fa25d33aacea + last_write_checksum: sha1:799b8f29bc150388a4cd1a93d4a02488f10317d8 + pristine_git_object: 9182d982dc7e288b81fac63faa831566c11007a2 src/gr4vy/models/void_transactionop.py: id: 3d94c56a17e7 - last_write_checksum: sha1:80b4e59311a892e4264c689f39a7d37d5a584cc2 - pristine_git_object: 9e4d8bf9eb38421694dd4427d469dcf4e763ab77 + last_write_checksum: sha1:3e1814b03eab3f02d25330e3f4685b5808f1246a + pristine_git_object: 4ab8c5556b07e10167f0fc2e02bae8e63abdf1a4 src/gr4vy/models/voidablefield.py: id: ff39fc25f809 last_write_checksum: sha1:0229d15ecc602de71faf9fc4ef242369ee67291a @@ -3852,20 +3980,20 @@ trackedFiles: pristine_git_object: d0cc282c416ecf3081de38dd0e1df2263ea52591 src/gr4vy/models/wpayeverdaypayoptions.py: id: 31cebaa4cecf - last_write_checksum: sha1:cd1eac19751bbfdf85b3696dccba26a0ea85f3a1 - pristine_git_object: b90030c1d0e4f1ccba0a26e77787ae255967faea + last_write_checksum: sha1:bb459a262b46a4d101a281a9c8f1c3d920c0d0ad + pristine_git_object: 4d341b8fdef8d8be6cc70e9c3609f1548c3f8d2d src/gr4vy/models/wpaypaytooptions.py: id: 69e801bf1e9b - last_write_checksum: sha1:080b07f959bef749ad4c6a02849261abdbd217d3 - pristine_git_object: 65eff23cee4543db03e4c766eaa18d8bf2f4f3ae + last_write_checksum: sha1:ca0030c8b1fd94a0fb63c1d2c465f788c9a8c3fd + pristine_git_object: 1978f26e8c4000adf842f31fea08eab1c119db26 src/gr4vy/models/wpaypaytoresourceoptions.py: id: 10fb279fa3df - last_write_checksum: sha1:2840daab322728d167a59c5d0a3d44d8b6d339c6 - pristine_git_object: 7d304e3031bf23b41609e00289d90ea875fae7d1 + last_write_checksum: sha1:e52dc9c0b1690b4ebe08ac89134633170a2b5f40 + pristine_git_object: a443cb544f2726102f204e99af21d2524468d575 src/gr4vy/models/wpaypaytosimulationoptions.py: id: 0beb9ad03264 - last_write_checksum: sha1:2eec6970e863d942c83f7956f9d1cfcae3b285bd - pristine_git_object: 680733ea0a8b1664cb00f572352b42826ed9461b + last_write_checksum: sha1:c017f727007db251383ea020a492cd71fa72bf8b + pristine_git_object: 3c2dbaf769c55ea4d8850a3aeb6adf35b6c1a290 src/gr4vy/network_tokens_cryptogram.py: id: 10c36dcaf885 last_write_checksum: sha1:bd1e73c7c27ced064440ac39c03c8b3423793708 @@ -3920,8 +4048,8 @@ trackedFiles: pristine_git_object: 423508d015b137cfff2c92804de1f7e7292dc4db src/gr4vy/sdk.py: id: 924d48ddd6b1 - last_write_checksum: sha1:3094e857be9252122c2d4ccc11704c8f096aef6e - pristine_git_object: d04ea2905e9f9edfc40bb49119a9aad6b2696645 + last_write_checksum: sha1:d15b739a17a74de17ca2e3e7e4e1c0d236b82812 + pristine_git_object: 0e7eb63fe04b435b036fe4b13ecc580fde59a3f6 src/gr4vy/sdkconfiguration.py: id: 12e6f5d93283 last_write_checksum: sha1:b3d04005a955111373b344e02ed4504bfbdd3106 @@ -3930,6 +4058,10 @@ trackedFiles: id: c10d3c9c5eec last_write_checksum: sha1:2c5ea10e7e7541795c2186f7186f160a3819d5f4 pristine_git_object: 5449feb9e2541c9537efc7337e7fab9530b09901 + src/gr4vy/three_ds_scenarios.py: + id: 3007c831a97f + last_write_checksum: sha1:f1178818394877202aac89e7296bb8c787de1f9a + pristine_git_object: 0fdc029c1b56125e39db86d75bc3dcc7ecffdeef src/gr4vy/transactions.py: id: 88da8fa0ed7f last_write_checksum: sha1:f90cf5054a01a4a6924756f09821259dd602082e @@ -3952,8 +4084,8 @@ trackedFiles: pristine_git_object: a9a640a1a7048736383f96c67c6290c86bf536ee src/gr4vy/utils/__init__.py: id: e52060886bd2 - last_write_checksum: sha1:c7c1ee47be7ac3774b042c8aee439143493ed3ce - pristine_git_object: f9c2edce8ecf2d2a4ab0ad36129ac70afd3d1f2f + last_write_checksum: sha1:ffaf69e6877a274b08066215f5a31a1b344f5402 + pristine_git_object: f4525b2057c3d54fb3b9eff6248fd172478ce94c src/gr4vy/utils/annotations.py: id: 4e6f3048ab03 last_write_checksum: sha1:a4824ad65f730303e4e1e3ec1febf87b4eb46dbc @@ -7484,17 +7616,141 @@ examples: application/json: {"type": "error", "code": "bad_gateway", "status": 502, "message": "Request could not be processed"} "504": application/json: {"type": "error", "code": "gateway_timeout", "status": 504, "message": "Request could not be processed"} + create_three_ds_scenario: + speakeasy-default-create-three-ds-scenario: + requestBody: + application/json: {"conditions": {}, "outcome": {"version": "2.2.0", "authentication": {"transaction_status": "Y"}}} + responses: + "201": + application/json: {"type": "three-d-secure-scenario", "id": "5a81b258-7f67-4017-bedb-9e9f4bfb6af2", "merchant_account_id": "", "created_at": "2013-07-16T19:23:00.000+00:00", "updated_at": "2013-07-16T19:23:00.000+00:00", "conditions": {}, "outcome": {"version": "2.2.0", "authentication": {"transaction_status": "Y"}}} + "400": + application/json: {"type": "error", "code": "bad_request", "status": 400, "message": "Request failed validation"} + "401": + application/json: {"type": "error", "code": "unauthorized", "status": 401, "message": "No valid API authentication found"} + "403": + application/json: {"type": "error", "code": "forbidden", "status": 403, "message": "Request failed validation"} + "404": + application/json: {"type": "error", "code": "not_found", "status": 404, "message": "The resource could not be found"} + "405": + application/json: {"type": "error", "code": "method_not_allowed", "status": 405, "message": "Method Not Allowed"} + "409": + application/json: {"type": "error", "code": "duplicate_record", "status": 409, "message": "Request failed validation"} + "422": + application/json: {} + "425": + application/json: {"type": "error", "code": "too_early", "status": 425, "message": "Request failed validation"} + "429": + application/json: {"type": "error", "code": "too_many_requests", "status": 429, "message": "Request failed validation"} + "500": + application/json: {"type": "error", "code": "server_error", "status": 500, "message": "Request could not be processed"} + "502": + application/json: {"type": "error", "code": "bad_gateway", "status": 502, "message": "Request could not be processed"} + "504": + application/json: {"type": "error", "code": "gateway_timeout", "status": 504, "message": "Request could not be processed"} + get_three_ds_scenario: + speakeasy-default-get-three-ds-scenario: + parameters: + query: + limit: 20 + responses: + "200": + application/json: {"items": [], "limit": 20} + "400": + application/json: {"type": "error", "code": "bad_request", "status": 400, "message": "Request failed validation"} + "401": + application/json: {"type": "error", "code": "unauthorized", "status": 401, "message": "No valid API authentication found"} + "403": + application/json: {"type": "error", "code": "forbidden", "status": 403, "message": "Request failed validation"} + "404": + application/json: {"type": "error", "code": "not_found", "status": 404, "message": "The resource could not be found"} + "405": + application/json: {"type": "error", "code": "method_not_allowed", "status": 405, "message": "Method Not Allowed"} + "409": + application/json: {"type": "error", "code": "duplicate_record", "status": 409, "message": "Request failed validation"} + "422": + application/json: {} + "425": + application/json: {"type": "error", "code": "too_early", "status": 425, "message": "Request failed validation"} + "429": + application/json: {"type": "error", "code": "too_many_requests", "status": 429, "message": "Request failed validation"} + "500": + application/json: {"type": "error", "code": "server_error", "status": 500, "message": "Request could not be processed"} + "502": + application/json: {"type": "error", "code": "bad_gateway", "status": 502, "message": "Request could not be processed"} + "504": + application/json: {"type": "error", "code": "gateway_timeout", "status": 504, "message": "Request could not be processed"} + update_three_ds_scenario: + speakeasy-default-update-three-ds-scenario: + parameters: + path: + three_ds_scenario_id: "7099948d-7286-47e4-aad8-b68f7eb44591" + requestBody: + application/json: {} + responses: + "200": + application/json: {"type": "three-d-secure-scenario", "id": "53b43dcf-85b0-4549-acf0-b756942ab15b", "merchant_account_id": "", "created_at": "2013-07-16T19:23:00.000+00:00", "updated_at": "2013-07-16T19:23:00.000+00:00", "conditions": {}, "outcome": {"version": "2.2.0", "authentication": {"transaction_status": "Y"}}} + "400": + application/json: {"type": "error", "code": "bad_request", "status": 400, "message": "Request failed validation"} + "401": + application/json: {"type": "error", "code": "unauthorized", "status": 401, "message": "No valid API authentication found"} + "403": + application/json: {"type": "error", "code": "forbidden", "status": 403, "message": "Request failed validation"} + "404": + application/json: {"type": "error", "code": "not_found", "status": 404, "message": "The resource could not be found"} + "405": + application/json: {"type": "error", "code": "method_not_allowed", "status": 405, "message": "Method Not Allowed"} + "409": + application/json: {"type": "error", "code": "duplicate_record", "status": 409, "message": "Request failed validation"} + "422": + application/json: {} + "425": + application/json: {"type": "error", "code": "too_early", "status": 425, "message": "Request failed validation"} + "429": + application/json: {"type": "error", "code": "too_many_requests", "status": 429, "message": "Request failed validation"} + "500": + application/json: {"type": "error", "code": "server_error", "status": 500, "message": "Request could not be processed"} + "502": + application/json: {"type": "error", "code": "bad_gateway", "status": 502, "message": "Request could not be processed"} + "504": + application/json: {"type": "error", "code": "gateway_timeout", "status": 504, "message": "Request could not be processed"} + delete_three_ds_scenario: + speakeasy-default-delete-three-ds-scenario: + parameters: + path: + three_ds_scenario_id: "7099948d-7286-47e4-aad8-b68f7eb44591" + responses: + "400": + application/json: {"type": "error", "code": "bad_request", "status": 400, "message": "Request failed validation"} + "401": + application/json: {"type": "error", "code": "unauthorized", "status": 401, "message": "No valid API authentication found"} + "403": + application/json: {"type": "error", "code": "forbidden", "status": 403, "message": "Request failed validation"} + "404": + application/json: {"type": "error", "code": "not_found", "status": 404, "message": "The resource could not be found"} + "405": + application/json: {"type": "error", "code": "method_not_allowed", "status": 405, "message": "Method Not Allowed"} + "409": + application/json: {"type": "error", "code": "duplicate_record", "status": 409, "message": "Request failed validation"} + "422": + application/json: {} + "425": + application/json: {"type": "error", "code": "too_early", "status": 425, "message": "Request failed validation"} + "429": + application/json: {"type": "error", "code": "too_many_requests", "status": 429, "message": "Request failed validation"} + "500": + application/json: {"type": "error", "code": "server_error", "status": 500, "message": "Request could not be processed"} + "502": + application/json: {"type": "error", "code": "bad_gateway", "status": 502, "message": "Request could not be processed"} + "504": + application/json: {"type": "error", "code": "gateway_timeout", "status": 504, "message": "Request could not be processed"} examplesVersion: 1.0.2 generatedTests: {} releaseNotes: | ## Python SDK Changes: - * `gr4vy.transactions.create()`: `response.iso_response_code` **Added** - * `gr4vy.transactions.get()`: `response.iso_response_code` **Added** - * `gr4vy.transactions.update()`: `response.iso_response_code` **Added** - * `gr4vy.transactions.capture()`: `response.[transaction_capture].transaction.iso_response_code` **Added** - * `gr4vy.transactions.void()`: `response.[transaction_void].transaction.iso_response_code` **Added** - * `gr4vy.transactions.cancel()`: `response.transaction.iso_response_code` **Added** - * `gr4vy.transactions.sync()`: `response.iso_response_code` **Added** + * `gr4vy.three-ds-scenarios.create()`: **Added** + * `gr4vy.three-ds-scenarios.list()`: **Added** + * `gr4vy.three-ds-scenarios.update()`: **Added** + * `gr4vy.three-ds-scenarios.delete()`: **Added** generatedFiles: - .gitattributes - .vscode/settings.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 74a03d63..636de233 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -13,6 +13,7 @@ generation: requestResponseComponentNamesFeb2024: true securityFeb2025: true sharedErrorComponentsApr2025: false + sharedNestedComponentsJan2026: false auth: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false @@ -26,7 +27,7 @@ generation: generateNewTests: false skipResponseBodyAssertions: false python: - version: 1.10.12 + version: 1.10.13 additionalDependencies: dev: freezegun: ^1.5.1 @@ -82,3 +83,4 @@ python: responseFormat: flat sseFlatResponse: false templateVersion: v2 + useAsyncHooks: false diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 912f3d42..b8f8bf55 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,21 +1,21 @@ -speakeasyVersion: 1.685.0 +speakeasyVersion: 1.688.0 sources: openapi: sourceNamespace: openapi - sourceRevisionDigest: sha256:ad0088a2330d839d970885a303182d8f28542ef1880997cba4e2d2b13226d3a1 - sourceBlobDigest: sha256:9ca5f418267b28baf1dc1cb570f15dad6cb1fd457ac5742c88d070a6575af72a + sourceRevisionDigest: sha256:86a73eb328c4eeac66dca0536900248c844a1ec2d8b983b212a09fdbfd2fd1e0 + sourceBlobDigest: sha256:cc690fee089559779bb495ac8786fe33d5dbfbfb372a5ccd32069658bcd3e601 tags: - latest - - speakeasy-sdk-regen-1768400828 + - speakeasy-sdk-regen-1768828395 - 1.0.0 targets: python: source: openapi sourceNamespace: openapi - sourceRevisionDigest: sha256:ad0088a2330d839d970885a303182d8f28542ef1880997cba4e2d2b13226d3a1 - sourceBlobDigest: sha256:9ca5f418267b28baf1dc1cb570f15dad6cb1fd457ac5742c88d070a6575af72a + sourceRevisionDigest: sha256:86a73eb328c4eeac66dca0536900248c844a1ec2d8b983b212a09fdbfd2fd1e0 + sourceBlobDigest: sha256:cc690fee089559779bb495ac8786fe33d5dbfbfb372a5ccd32069658bcd3e601 codeSamplesNamespace: openapi-python-code-samples - codeSamplesRevisionDigest: sha256:01ed97eb0e6a3b3fc345713b5947cf1850509523fa178938baec99f08df84400 + codeSamplesRevisionDigest: sha256:a336f8664b39975c721bd84ef2c9a08f543af2546036c23ba8f6a57d1393297d workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 3540f753..cdf7ee37 100644 --- a/README.md +++ b/README.md @@ -457,6 +457,13 @@ except ValueError as error: * [url](docs/sdks/executions/README.md#url) - Create URL for executed report * [get](docs/sdks/executions/README.md#get) - Get executed report +### [ThreeDsScenarios](docs/sdks/threedsscenarios/README.md) + +* [create](docs/sdks/threedsscenarios/README.md#create) - Create a 3DS scenario +* [list](docs/sdks/threedsscenarios/README.md#list) - List 3DS scenario +* [update](docs/sdks/threedsscenarios/README.md#update) - Update a 3DS scenario +* [delete](docs/sdks/threedsscenarios/README.md#delete) - Delete a 3DS scenario + ### [Transactions](docs/sdks/transactions/README.md) * [list](docs/sdks/transactions/README.md#list) - List transactions diff --git a/RELEASES.md b/RELEASES.md index 08599943..0df8c1fa 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1338,4 +1338,14 @@ Based on: ### Generated - [python v1.10.12] . ### Releases -- [PyPI v1.10.12] https://pypi.org/project/gr4vy/1.10.12 - . \ No newline at end of file +- [PyPI v1.10.12] https://pypi.org/project/gr4vy/1.10.12 - . + +## 2026-01-19 13:12:56 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.688.0 (2.796.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.10.13] . +### Releases +- [PyPI v1.10.13] https://pypi.org/project/gr4vy/1.10.13 - . \ No newline at end of file diff --git a/docs/models/createthreedsscenarioglobals.md b/docs/models/createthreedsscenarioglobals.md new file mode 100644 index 00000000..db36fc79 --- /dev/null +++ b/docs/models/createthreedsscenarioglobals.md @@ -0,0 +1,8 @@ +# CreateThreeDsScenarioGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | \ No newline at end of file diff --git a/docs/models/createthreedsscenariorequest.md b/docs/models/createthreedsscenariorequest.md new file mode 100644 index 00000000..58904d0e --- /dev/null +++ b/docs/models/createthreedsscenariorequest.md @@ -0,0 +1,9 @@ +# CreateThreeDsScenarioRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | +| `three_d_secure_scenario_create` | [models.ThreeDSecureScenarioCreate](../models/threedsecurescenariocreate.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/deletethreedsscenarioglobals.md b/docs/models/deletethreedsscenarioglobals.md new file mode 100644 index 00000000..37203b00 --- /dev/null +++ b/docs/models/deletethreedsscenarioglobals.md @@ -0,0 +1,8 @@ +# DeleteThreeDsScenarioGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | \ No newline at end of file diff --git a/docs/models/deletethreedsscenariorequest.md b/docs/models/deletethreedsscenariorequest.md new file mode 100644 index 00000000..e973927e --- /dev/null +++ b/docs/models/deletethreedsscenariorequest.md @@ -0,0 +1,9 @@ +# DeleteThreeDsScenarioRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `three_ds_scenario_id` | *str* | :heavy_check_mark: | The ID of the 3DS scenario | 7099948d-7286-47e4-aad8-b68f7eb44591 | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | \ No newline at end of file diff --git a/docs/models/getthreedsscenarioglobals.md b/docs/models/getthreedsscenarioglobals.md new file mode 100644 index 00000000..3799d1fa --- /dev/null +++ b/docs/models/getthreedsscenarioglobals.md @@ -0,0 +1,8 @@ +# GetThreeDsScenarioGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | \ No newline at end of file diff --git a/docs/models/getthreedsscenariorequest.md b/docs/models/getthreedsscenariorequest.md new file mode 100644 index 00000000..85d00d9e --- /dev/null +++ b/docs/models/getthreedsscenariorequest.md @@ -0,0 +1,10 @@ +# GetThreeDsScenarioRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | A pointer to the page of results to return. | ZXhhbXBsZTE | +| `limit` | *Optional[int]* | :heavy_minus_sign: | The maximum number of items that are at returned. | 20 | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | \ No newline at end of file diff --git a/docs/models/getthreedsscenarioresponse.md b/docs/models/getthreedsscenarioresponse.md new file mode 100644 index 00000000..6615634f --- /dev/null +++ b/docs/models/getthreedsscenarioresponse.md @@ -0,0 +1,8 @@ +# GetThreeDsScenarioResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `result` | [models.ThreeDSecureScenarios](../models/threedsecurescenarios.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/threedsecurescenario.md b/docs/models/threedsecurescenario.md new file mode 100644 index 00000000..0734e990 --- /dev/null +++ b/docs/models/threedsecurescenario.md @@ -0,0 +1,14 @@ +# ThreeDSecureScenario + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `type` | *Optional[Literal["three-d-secure-scenario"]]* | :heavy_minus_sign: | Always `three-d-secure-scenario`. | three-d-secure-scenario | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the 3DS scenario | | +| `merchant_account_id` | *str* | :heavy_check_mark: | ID of the associated merchant account | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time when this 3DS scenario was first created in our system. | 2013-07-16T19:23:00.000+00:00 | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time when this 3DS scenario was last updated in our system. | 2013-07-16T19:23:00.000+00:00 | +| `conditions` | [models.ThreeDSecureScenarioConditions](../models/threedsecurescenarioconditions.md) | :heavy_check_mark: | N/A | | +| `outcome` | [models.ThreeDSecureScenarioOutcome](../models/threedsecurescenariooutcome.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/threedsecurescenarioconditions.md b/docs/models/threedsecurescenarioconditions.md new file mode 100644 index 00000000..d085a332 --- /dev/null +++ b/docs/models/threedsecurescenarioconditions.md @@ -0,0 +1,13 @@ +# ThreeDSecureScenarioConditions + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `first_name` | *OptionalNullable[str]* | :heavy_minus_sign: | First name of the buyer to match. | +| `last_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Last name of the buyer to match. | +| `email_address` | *OptionalNullable[str]* | :heavy_minus_sign: | Email address of the buyer to match. | +| `amount` | *OptionalNullable[int]* | :heavy_minus_sign: | Amount of the transaction to match. | +| `external_identifier` | *OptionalNullable[str]* | :heavy_minus_sign: | External identifier to match. | +| `card_number` | *OptionalNullable[str]* | :heavy_minus_sign: | Card number to match. | \ No newline at end of file diff --git a/docs/models/threedsecurescenariocreate.md b/docs/models/threedsecurescenariocreate.md new file mode 100644 index 00000000..96bd6308 --- /dev/null +++ b/docs/models/threedsecurescenariocreate.md @@ -0,0 +1,9 @@ +# ThreeDSecureScenarioCreate + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `conditions` | [models.ThreeDSecureScenarioConditions](../models/threedsecurescenarioconditions.md) | :heavy_check_mark: | N/A | +| `outcome` | [models.ThreeDSecureScenarioOutcome](../models/threedsecurescenariooutcome.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/threedsecurescenariooutcome.md b/docs/models/threedsecurescenariooutcome.md new file mode 100644 index 00000000..dac8bd99 --- /dev/null +++ b/docs/models/threedsecurescenariooutcome.md @@ -0,0 +1,10 @@ +# ThreeDSecureScenarioOutcome + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `version` | *str* | :heavy_check_mark: | The version of 3DS which will be simulated. | 2.2.0 | +| `authentication` | [models.ThreeDSecureScenarioOutcomeAuthentication](../models/threedsecurescenariooutcomeauthentication.md) | :heavy_check_mark: | N/A | | +| `result` | [OptionalNullable[models.ThreeDSecureScenarioOutcomeResult]](../models/threedsecurescenariooutcomeresult.md) | :heavy_minus_sign: | 3DS result value. Required if authentication status is "C". | {
"transaction_status": "Y"
} | \ No newline at end of file diff --git a/docs/models/threedsecurescenariooutcomeauthentication.md b/docs/models/threedsecurescenariooutcomeauthentication.md new file mode 100644 index 00000000..e295b10a --- /dev/null +++ b/docs/models/threedsecurescenariooutcomeauthentication.md @@ -0,0 +1,8 @@ +# ThreeDSecureScenarioOutcomeAuthentication + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `transaction_status` | [models.ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus](../models/threedsecurescenariooutcomeauthenticationtransactionstatus.md) | :heavy_check_mark: | 3DS transaction status. | Y | \ No newline at end of file diff --git a/docs/models/threedsecurescenariooutcomeauthenticationtransactionstatus.md b/docs/models/threedsecurescenariooutcomeauthenticationtransactionstatus.md new file mode 100644 index 00000000..8edeecd2 --- /dev/null +++ b/docs/models/threedsecurescenariooutcomeauthenticationtransactionstatus.md @@ -0,0 +1,16 @@ +# ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus + +3DS transaction status. + + +## Values + +| Name | Value | +| --------- | --------- | +| `Y` | Y | +| `N` | N | +| `A` | A | +| `R` | R | +| `U` | U | +| `C` | C | +| `TIMEOUT` | timeout | \ No newline at end of file diff --git a/docs/models/threedsecurescenariooutcomeresult.md b/docs/models/threedsecurescenariooutcomeresult.md new file mode 100644 index 00000000..8034028f --- /dev/null +++ b/docs/models/threedsecurescenariooutcomeresult.md @@ -0,0 +1,8 @@ +# ThreeDSecureScenarioOutcomeResult + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `transaction_status` | [models.ThreeDSecureScenarioOutcomeResultTransactionStatus](../models/threedsecurescenariooutcomeresulttransactionstatus.md) | :heavy_check_mark: | 3DS result. | Y | \ No newline at end of file diff --git a/docs/models/threedsecurescenariooutcomeresulttransactionstatus.md b/docs/models/threedsecurescenariooutcomeresulttransactionstatus.md new file mode 100644 index 00000000..0b2d4e57 --- /dev/null +++ b/docs/models/threedsecurescenariooutcomeresulttransactionstatus.md @@ -0,0 +1,12 @@ +# ThreeDSecureScenarioOutcomeResultTransactionStatus + +3DS result. + + +## Values + +| Name | Value | +| --------- | --------- | +| `Y` | Y | +| `N` | N | +| `TIMEOUT` | timeout | \ No newline at end of file diff --git a/docs/models/threedsecurescenarios.md b/docs/models/threedsecurescenarios.md new file mode 100644 index 00000000..3141882c --- /dev/null +++ b/docs/models/threedsecurescenarios.md @@ -0,0 +1,11 @@ +# ThreeDSecureScenarios + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `items` | List[[models.ThreeDSecureScenario](../models/threedsecurescenario.md)] | :heavy_check_mark: | A list of items returned for this request. | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | The number of items for this page. | 20 | +| `next_cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | The cursor pointing at the next page of items. | ZXhhbXBsZTE | +| `previous_cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | The cursor pointing at the previous page of items. | Xkjss7asS | \ No newline at end of file diff --git a/docs/models/threedsecurescenarioupdate.md b/docs/models/threedsecurescenarioupdate.md new file mode 100644 index 00000000..da23f573 --- /dev/null +++ b/docs/models/threedsecurescenarioupdate.md @@ -0,0 +1,9 @@ +# ThreeDSecureScenarioUpdate + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `conditions` | [OptionalNullable[models.ThreeDSecureScenarioConditions]](../models/threedsecurescenarioconditions.md) | :heavy_minus_sign: | Conditions for the scenario. | +| `outcome` | [OptionalNullable[models.ThreeDSecureScenarioOutcome]](../models/threedsecurescenariooutcome.md) | :heavy_minus_sign: | Outcome for the scenario. | \ No newline at end of file diff --git a/docs/models/updatethreedsscenarioglobals.md b/docs/models/updatethreedsscenarioglobals.md new file mode 100644 index 00000000..a4497f69 --- /dev/null +++ b/docs/models/updatethreedsscenarioglobals.md @@ -0,0 +1,8 @@ +# UpdateThreeDsScenarioGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | \ No newline at end of file diff --git a/docs/models/updatethreedsscenariorequest.md b/docs/models/updatethreedsscenariorequest.md new file mode 100644 index 00000000..031fac6a --- /dev/null +++ b/docs/models/updatethreedsscenariorequest.md @@ -0,0 +1,10 @@ +# UpdateThreeDsScenarioRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `three_ds_scenario_id` | *str* | :heavy_check_mark: | The ID of the 3DS scenario | 7099948d-7286-47e4-aad8-b68f7eb44591 | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | +| `three_d_secure_scenario_update` | [models.ThreeDSecureScenarioUpdate](../models/threedsecurescenarioupdate.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/sdks/threedsscenarios/README.md b/docs/sdks/threedsscenarios/README.md new file mode 100644 index 00000000..1c164f36 --- /dev/null +++ b/docs/sdks/threedsscenarios/README.md @@ -0,0 +1,232 @@ +# ThreeDsScenarios + +## Overview + +### Available Operations + +* [create](#create) - Create a 3DS scenario +* [list](#list) - List 3DS scenario +* [update](#update) - Update a 3DS scenario +* [delete](#delete) - Delete a 3DS scenario + +## create + +Create a new 3DS scenario for a merchant account. Only available in sandbox environments. + +### Example Usage + + +```python +from gr4vy import Gr4vy +import os + + +with Gr4vy( + merchant_account_id="default", + bearer_auth=os.getenv("GR4VY_BEARER_AUTH", ""), +) as g_client: + + res = g_client.three_ds_scenarios.create(conditions={}, outcome={ + "version": "2.2.0", + "authentication": { + "transaction_status": "Y", + }, + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `conditions` | [models.ThreeDSecureScenarioConditions](../../models/threedsecurescenarioconditions.md) | :heavy_check_mark: | N/A | | +| `outcome` | [models.ThreeDSecureScenarioOutcome](../../models/threedsecurescenariooutcome.md) | :heavy_check_mark: | N/A | | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.ThreeDSecureScenario](../../models/threedsecurescenario.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| errors.Error400 | 400 | application/json | +| errors.Error401 | 401 | application/json | +| errors.Error403 | 403 | application/json | +| errors.Error404 | 404 | application/json | +| errors.Error405 | 405 | application/json | +| errors.Error409 | 409 | application/json | +| errors.HTTPValidationError | 422 | application/json | +| errors.Error425 | 425 | application/json | +| errors.Error429 | 429 | application/json | +| errors.Error500 | 500 | application/json | +| errors.Error502 | 502 | application/json | +| errors.Error504 | 504 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## list + +List all 3DS scenarios for a merchant account. Only available in sandbox environments. + +### Example Usage + + +```python +from gr4vy import Gr4vy +import os + + +with Gr4vy( + merchant_account_id="default", + bearer_auth=os.getenv("GR4VY_BEARER_AUTH", ""), +) as g_client: + + res = g_client.three_ds_scenarios.list(limit=20) + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | A pointer to the page of results to return. | ZXhhbXBsZTE | +| `limit` | *Optional[int]* | :heavy_minus_sign: | The maximum number of items that are at returned. | 20 | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.GetThreeDsScenarioResponse](../../models/getthreedsscenarioresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| errors.Error400 | 400 | application/json | +| errors.Error401 | 401 | application/json | +| errors.Error403 | 403 | application/json | +| errors.Error404 | 404 | application/json | +| errors.Error405 | 405 | application/json | +| errors.Error409 | 409 | application/json | +| errors.HTTPValidationError | 422 | application/json | +| errors.Error425 | 425 | application/json | +| errors.Error429 | 429 | application/json | +| errors.Error500 | 500 | application/json | +| errors.Error502 | 502 | application/json | +| errors.Error504 | 504 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## update + +Update a 3DS scenario. Only available in sandbox environments. + +### Example Usage + + +```python +from gr4vy import Gr4vy +import os + + +with Gr4vy( + merchant_account_id="default", + bearer_auth=os.getenv("GR4VY_BEARER_AUTH", ""), +) as g_client: + + res = g_client.three_ds_scenarios.update(three_ds_scenario_id="7099948d-7286-47e4-aad8-b68f7eb44591") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `three_ds_scenario_id` | *str* | :heavy_check_mark: | The ID of the 3DS scenario | 7099948d-7286-47e4-aad8-b68f7eb44591 | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | +| `conditions` | [OptionalNullable[models.ThreeDSecureScenarioConditions]](../../models/threedsecurescenarioconditions.md) | :heavy_minus_sign: | Conditions for the scenario. | | +| `outcome` | [OptionalNullable[models.ThreeDSecureScenarioOutcome]](../../models/threedsecurescenariooutcome.md) | :heavy_minus_sign: | Outcome for the scenario. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.ThreeDSecureScenario](../../models/threedsecurescenario.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| errors.Error400 | 400 | application/json | +| errors.Error401 | 401 | application/json | +| errors.Error403 | 403 | application/json | +| errors.Error404 | 404 | application/json | +| errors.Error405 | 405 | application/json | +| errors.Error409 | 409 | application/json | +| errors.HTTPValidationError | 422 | application/json | +| errors.Error425 | 425 | application/json | +| errors.Error429 | 429 | application/json | +| errors.Error500 | 500 | application/json | +| errors.Error502 | 502 | application/json | +| errors.Error504 | 504 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## delete + +Removes a 3DS scenario from our system. Only available in sandbox environments. + +### Example Usage + + +```python +from gr4vy import Gr4vy +import os + + +with Gr4vy( + merchant_account_id="default", + bearer_auth=os.getenv("GR4VY_BEARER_AUTH", ""), +) as g_client: + + g_client.three_ds_scenarios.delete(three_ds_scenario_id="7099948d-7286-47e4-aad8-b68f7eb44591") + + # Use the SDK ... + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `three_ds_scenario_id` | *str* | :heavy_check_mark: | The ID of the 3DS scenario | 7099948d-7286-47e4-aad8-b68f7eb44591 | +| `merchant_account_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the merchant account to use for this request. | default | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| errors.Error400 | 400 | application/json | +| errors.Error401 | 401 | application/json | +| errors.Error403 | 403 | application/json | +| errors.Error404 | 404 | application/json | +| errors.Error405 | 405 | application/json | +| errors.Error409 | 409 | application/json | +| errors.HTTPValidationError | 422 | application/json | +| errors.Error425 | 425 | application/json | +| errors.Error429 | 429 | application/json | +| errors.Error500 | 500 | application/json | +| errors.Error502 | 502 | application/json | +| errors.Error504 | 504 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index dd361d5c..56654531 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "gr4vy" -version = "1.10.12" +version = "1.10.13" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Gr4vy" },] readme = "README-PYPI.md" diff --git a/src/gr4vy/_version.py b/src/gr4vy/_version.py index e8a73eeb..17456b85 100644 --- a/src/gr4vy/_version.py +++ b/src/gr4vy/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "gr4vy" -__version__: str = "1.10.12" +__version__: str = "1.10.13" __openapi_doc_version__: str = "1.0.0" -__gen_version__: str = "2.794.1" -__user_agent__: str = "speakeasy-sdk/python 1.10.12 2.794.1 1.0.0 gr4vy" +__gen_version__: str = "2.796.4" +__user_agent__: str = "speakeasy-sdk/python 1.10.13 2.796.4 1.0.0 gr4vy" try: if __package__ is not None: diff --git a/src/gr4vy/basesdk.py b/src/gr4vy/basesdk.py index 40da7bd5..801b0d9f 100644 --- a/src/gr4vy/basesdk.py +++ b/src/gr4vy/basesdk.py @@ -3,7 +3,12 @@ from .sdkconfiguration import SDKConfiguration from gr4vy import errors, models, utils from gr4vy._hooks import AfterErrorContext, AfterSuccessContext, BeforeRequestContext -from gr4vy.utils import RetryConfig, SerializedRequestBody, get_body_content +from gr4vy.utils import ( + RetryConfig, + SerializedRequestBody, + get_body_content, + run_sync_in_thread, +) import httpx from typing import Callable, List, Mapping, Optional, Tuple from urllib.parse import parse_qs, urlparse @@ -307,7 +312,10 @@ async def do_request_async( async def do(): http_res = None try: - req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + req = await run_sync_in_thread( + hooks.before_request, BeforeRequestContext(hook_ctx), request + ) + logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -321,7 +329,10 @@ async def do(): http_res = await client.send(req, stream=stream) except Exception as e: - _, e = hooks.after_error(AfterErrorContext(hook_ctx), None, e) + _, e = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), None, e + ) + if e is not None: logger.debug("Request Exception", exc_info=True) raise e @@ -339,9 +350,10 @@ async def do(): ) if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None + result, err = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), http_res, None ) + if err is not None: logger.debug("Request Exception", exc_info=True) raise err @@ -361,6 +373,8 @@ async def do(): http_res = await do() if not utils.match_status_codes(error_status_codes, http_res.status_code): - http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) + http_res = await run_sync_in_thread( + hooks.after_success, AfterSuccessContext(hook_ctx), http_res + ) return http_res diff --git a/src/gr4vy/models/__init__.py b/src/gr4vy/models/__init__.py index 565fc9d4..9c07d100 100644 --- a/src/gr4vy/models/__init__.py +++ b/src/gr4vy/models/__init__.py @@ -263,6 +263,12 @@ CreateReportExecutionURLRequest, CreateReportExecutionURLRequestTypedDict, ) + from .create_three_ds_scenarioop import ( + CreateThreeDsScenarioGlobals, + CreateThreeDsScenarioGlobalsTypedDict, + CreateThreeDsScenarioRequest, + CreateThreeDsScenarioRequestTypedDict, + ) from .create_transaction_refundop import ( CreateTransactionRefundGlobals, CreateTransactionRefundGlobalsTypedDict, @@ -342,6 +348,12 @@ DeletePaymentServiceRequest, DeletePaymentServiceRequestTypedDict, ) + from .delete_three_ds_scenarioop import ( + DeleteThreeDsScenarioGlobals, + DeleteThreeDsScenarioGlobalsTypedDict, + DeleteThreeDsScenarioRequest, + DeleteThreeDsScenarioRequestTypedDict, + ) from .detailedsettlementreportspec import ( DetailedSettlementReportSpec, DetailedSettlementReportSpecTypedDict, @@ -507,6 +519,14 @@ GetReportRequest, GetReportRequestTypedDict, ) + from .get_three_ds_scenarioop import ( + GetThreeDsScenarioGlobals, + GetThreeDsScenarioGlobalsTypedDict, + GetThreeDsScenarioRequest, + GetThreeDsScenarioRequestTypedDict, + GetThreeDsScenarioResponse, + GetThreeDsScenarioResponseTypedDict, + ) from .get_transaction_refundop import ( GetTransactionRefundGlobals, GetTransactionRefundGlobalsTypedDict, @@ -1018,6 +1038,40 @@ from .threedsecuredatav2 import ThreeDSecureDataV2, ThreeDSecureDataV2TypedDict from .threedsecureerror import ThreeDSecureError, ThreeDSecureErrorTypedDict from .threedsecuremethod import ThreeDSecureMethod + from .threedsecurescenario import ( + ThreeDSecureScenario, + ThreeDSecureScenarioTypedDict, + ) + from .threedsecurescenarioconditions import ( + ThreeDSecureScenarioConditions, + ThreeDSecureScenarioConditionsTypedDict, + ) + from .threedsecurescenariocreate import ( + ThreeDSecureScenarioCreate, + ThreeDSecureScenarioCreateTypedDict, + ) + from .threedsecurescenariooutcome import ( + ThreeDSecureScenarioOutcome, + ThreeDSecureScenarioOutcomeTypedDict, + ) + from .threedsecurescenariooutcomeauthentication import ( + ThreeDSecureScenarioOutcomeAuthentication, + ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus, + ThreeDSecureScenarioOutcomeAuthenticationTypedDict, + ) + from .threedsecurescenariooutcomeresult import ( + ThreeDSecureScenarioOutcomeResult, + ThreeDSecureScenarioOutcomeResultTransactionStatus, + ThreeDSecureScenarioOutcomeResultTypedDict, + ) + from .threedsecurescenarios import ( + ThreeDSecureScenarios, + ThreeDSecureScenariosTypedDict, + ) + from .threedsecurescenarioupdate import ( + ThreeDSecureScenarioUpdate, + ThreeDSecureScenarioUpdateTypedDict, + ) from .threedsecurestatus import ThreeDSecureStatus from .threedsecurev2 import ThreeDSecureV2, ThreeDSecureV2TypedDict from .tokenpaymentmethodcreate import ( @@ -1141,6 +1195,12 @@ UpdateReportRequest, UpdateReportRequestTypedDict, ) + from .update_three_ds_scenarioop import ( + UpdateThreeDsScenarioGlobals, + UpdateThreeDsScenarioGlobalsTypedDict, + UpdateThreeDsScenarioRequest, + UpdateThreeDsScenarioRequestTypedDict, + ) from .update_transactionop import ( UpdateTransactionGlobals, UpdateTransactionGlobalsTypedDict, @@ -1388,6 +1448,10 @@ "CreateSession", "CreateSessionStatus", "CreateSessionTypedDict", + "CreateThreeDsScenarioGlobals", + "CreateThreeDsScenarioGlobalsTypedDict", + "CreateThreeDsScenarioRequest", + "CreateThreeDsScenarioRequestTypedDict", "CreateTransactionGlobals", "CreateTransactionGlobalsTypedDict", "CreateTransactionRefundGlobals", @@ -1445,6 +1509,10 @@ "DeletePaymentServiceGlobalsTypedDict", "DeletePaymentServiceRequest", "DeletePaymentServiceRequestTypedDict", + "DeleteThreeDsScenarioGlobals", + "DeleteThreeDsScenarioGlobalsTypedDict", + "DeleteThreeDsScenarioRequest", + "DeleteThreeDsScenarioRequestTypedDict", "DetailedSettlementReportSpec", "DetailedSettlementReportSpecTypedDict", "DigitalWallet", @@ -1560,6 +1628,12 @@ "GetReportGlobalsTypedDict", "GetReportRequest", "GetReportRequestTypedDict", + "GetThreeDsScenarioGlobals", + "GetThreeDsScenarioGlobalsTypedDict", + "GetThreeDsScenarioRequest", + "GetThreeDsScenarioRequestTypedDict", + "GetThreeDsScenarioResponse", + "GetThreeDsScenarioResponseTypedDict", "GetTransactionGlobals", "GetTransactionGlobalsTypedDict", "GetTransactionRefundGlobals", @@ -1985,6 +2059,24 @@ "ThreeDSecureError", "ThreeDSecureErrorTypedDict", "ThreeDSecureMethod", + "ThreeDSecureScenario", + "ThreeDSecureScenarioConditions", + "ThreeDSecureScenarioConditionsTypedDict", + "ThreeDSecureScenarioCreate", + "ThreeDSecureScenarioCreateTypedDict", + "ThreeDSecureScenarioOutcome", + "ThreeDSecureScenarioOutcomeAuthentication", + "ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus", + "ThreeDSecureScenarioOutcomeAuthenticationTypedDict", + "ThreeDSecureScenarioOutcomeResult", + "ThreeDSecureScenarioOutcomeResultTransactionStatus", + "ThreeDSecureScenarioOutcomeResultTypedDict", + "ThreeDSecureScenarioOutcomeTypedDict", + "ThreeDSecureScenarioTypedDict", + "ThreeDSecureScenarioUpdate", + "ThreeDSecureScenarioUpdateTypedDict", + "ThreeDSecureScenarios", + "ThreeDSecureScenariosTypedDict", "ThreeDSecureStatus", "ThreeDSecureTypedDict", "ThreeDSecureV2", @@ -2082,6 +2174,10 @@ "UpdateReportGlobalsTypedDict", "UpdateReportRequest", "UpdateReportRequestTypedDict", + "UpdateThreeDsScenarioGlobals", + "UpdateThreeDsScenarioGlobalsTypedDict", + "UpdateThreeDsScenarioRequest", + "UpdateThreeDsScenarioRequestTypedDict", "UpdateTransactionGlobals", "UpdateTransactionGlobalsTypedDict", "UpdateTransactionRequest", @@ -2314,6 +2410,10 @@ "CreateReportExecutionURLGlobalsTypedDict": ".create_report_execution_urlop", "CreateReportExecutionURLRequest": ".create_report_execution_urlop", "CreateReportExecutionURLRequestTypedDict": ".create_report_execution_urlop", + "CreateThreeDsScenarioGlobals": ".create_three_ds_scenarioop", + "CreateThreeDsScenarioGlobalsTypedDict": ".create_three_ds_scenarioop", + "CreateThreeDsScenarioRequest": ".create_three_ds_scenarioop", + "CreateThreeDsScenarioRequestTypedDict": ".create_three_ds_scenarioop", "CreateTransactionRefundGlobals": ".create_transaction_refundop", "CreateTransactionRefundGlobalsTypedDict": ".create_transaction_refundop", "CreateTransactionRefundRequest": ".create_transaction_refundop", @@ -2375,6 +2475,10 @@ "DeletePaymentServiceGlobalsTypedDict": ".delete_payment_serviceop", "DeletePaymentServiceRequest": ".delete_payment_serviceop", "DeletePaymentServiceRequestTypedDict": ".delete_payment_serviceop", + "DeleteThreeDsScenarioGlobals": ".delete_three_ds_scenarioop", + "DeleteThreeDsScenarioGlobalsTypedDict": ".delete_three_ds_scenarioop", + "DeleteThreeDsScenarioRequest": ".delete_three_ds_scenarioop", + "DeleteThreeDsScenarioRequestTypedDict": ".delete_three_ds_scenarioop", "DetailedSettlementReportSpec": ".detailedsettlementreportspec", "DetailedSettlementReportSpecTypedDict": ".detailedsettlementreportspec", "DigitalWallet": ".digitalwallet", @@ -2491,6 +2595,12 @@ "GetReportGlobalsTypedDict": ".get_reportop", "GetReportRequest": ".get_reportop", "GetReportRequestTypedDict": ".get_reportop", + "GetThreeDsScenarioGlobals": ".get_three_ds_scenarioop", + "GetThreeDsScenarioGlobalsTypedDict": ".get_three_ds_scenarioop", + "GetThreeDsScenarioRequest": ".get_three_ds_scenarioop", + "GetThreeDsScenarioRequestTypedDict": ".get_three_ds_scenarioop", + "GetThreeDsScenarioResponse": ".get_three_ds_scenarioop", + "GetThreeDsScenarioResponseTypedDict": ".get_three_ds_scenarioop", "GetTransactionRefundGlobals": ".get_transaction_refundop", "GetTransactionRefundGlobalsTypedDict": ".get_transaction_refundop", "GetTransactionRefundRequest": ".get_transaction_refundop", @@ -2907,6 +3017,24 @@ "ThreeDSecureError": ".threedsecureerror", "ThreeDSecureErrorTypedDict": ".threedsecureerror", "ThreeDSecureMethod": ".threedsecuremethod", + "ThreeDSecureScenario": ".threedsecurescenario", + "ThreeDSecureScenarioTypedDict": ".threedsecurescenario", + "ThreeDSecureScenarioConditions": ".threedsecurescenarioconditions", + "ThreeDSecureScenarioConditionsTypedDict": ".threedsecurescenarioconditions", + "ThreeDSecureScenarioCreate": ".threedsecurescenariocreate", + "ThreeDSecureScenarioCreateTypedDict": ".threedsecurescenariocreate", + "ThreeDSecureScenarioOutcome": ".threedsecurescenariooutcome", + "ThreeDSecureScenarioOutcomeTypedDict": ".threedsecurescenariooutcome", + "ThreeDSecureScenarioOutcomeAuthentication": ".threedsecurescenariooutcomeauthentication", + "ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus": ".threedsecurescenariooutcomeauthentication", + "ThreeDSecureScenarioOutcomeAuthenticationTypedDict": ".threedsecurescenariooutcomeauthentication", + "ThreeDSecureScenarioOutcomeResult": ".threedsecurescenariooutcomeresult", + "ThreeDSecureScenarioOutcomeResultTransactionStatus": ".threedsecurescenariooutcomeresult", + "ThreeDSecureScenarioOutcomeResultTypedDict": ".threedsecurescenariooutcomeresult", + "ThreeDSecureScenarios": ".threedsecurescenarios", + "ThreeDSecureScenariosTypedDict": ".threedsecurescenarios", + "ThreeDSecureScenarioUpdate": ".threedsecurescenarioupdate", + "ThreeDSecureScenarioUpdateTypedDict": ".threedsecurescenarioupdate", "ThreeDSecureStatus": ".threedsecurestatus", "ThreeDSecureV2": ".threedsecurev2", "ThreeDSecureV2TypedDict": ".threedsecurev2", @@ -3007,6 +3135,10 @@ "UpdateReportGlobalsTypedDict": ".update_reportop", "UpdateReportRequest": ".update_reportop", "UpdateReportRequestTypedDict": ".update_reportop", + "UpdateThreeDsScenarioGlobals": ".update_three_ds_scenarioop", + "UpdateThreeDsScenarioGlobalsTypedDict": ".update_three_ds_scenarioop", + "UpdateThreeDsScenarioRequest": ".update_three_ds_scenarioop", + "UpdateThreeDsScenarioRequestTypedDict": ".update_three_ds_scenarioop", "UpdateTransactionGlobals": ".update_transactionop", "UpdateTransactionGlobalsTypedDict": ".update_transactionop", "UpdateTransactionRequest": ".update_transactionop", diff --git a/src/gr4vy/models/accountsreceivablesreportspec.py b/src/gr4vy/models/accountsreceivablesreportspec.py index dd74c023..587c192e 100644 --- a/src/gr4vy/models/accountsreceivablesreportspec.py +++ b/src/gr4vy/models/accountsreceivablesreportspec.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Any, Dict, Literal, Optional from typing_extensions import Annotated, TypedDict @@ -28,3 +29,19 @@ class AccountsReceivablesReportSpec(BaseModel): pydantic.Field(alias="model"), ] = "accounts_receivables" r"""The report model type.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["model"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/accountupdaterinquirysummary.py b/src/gr4vy/models/accountupdaterinquirysummary.py index 8f18c6df..1fc49e08 100644 --- a/src/gr4vy/models/accountupdaterinquirysummary.py +++ b/src/gr4vy/models/accountupdaterinquirysummary.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -33,3 +34,19 @@ class AccountUpdaterInquirySummary(BaseModel): pydantic.Field(alias="type"), ] = "account-updater-inquiry" r"""Always `account-updater-inquiry`""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/accountupdaterjob.py b/src/gr4vy/models/accountupdaterjob.py index 2fcdb6c7..50f62a4f 100644 --- a/src/gr4vy/models/accountupdaterjob.py +++ b/src/gr4vy/models/accountupdaterjob.py @@ -6,9 +6,10 @@ AccountUpdaterInquirySummaryTypedDict, ) from datetime import datetime -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import List, Literal, Optional from typing_extensions import Annotated, TypedDict @@ -53,3 +54,19 @@ class AccountUpdaterJob(BaseModel): pydantic.Field(alias="type"), ] = "account-updater-job" r"""Always `account-updater-job`""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/accountupdateroptions.py b/src/gr4vy/models/accountupdateroptions.py index ddde2ce1..1dd28435 100644 --- a/src/gr4vy/models/accountupdateroptions.py +++ b/src/gr4vy/models/accountupdateroptions.py @@ -47,42 +47,41 @@ class AccountUpdaterOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "response_code", - "account_number", - "expiration_month", - "expiration_year", - "error_code", - ] - nullable_fields = [ - "response_code", - "account_number", - "expiration_month", - "expiration_year", - "error_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "response_code", + "account_number", + "expiration_month", + "expiration_year", + "error_code", + ] + ) + nullable_fields = set( + [ + "response_code", + "account_number", + "expiration_month", + "expiration_year", + "error_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/add_buyer_shipping_detailsop.py b/src/gr4vy/models/add_buyer_shipping_detailsop.py index 3910f642..e41022ab 100644 --- a/src/gr4vy/models/add_buyer_shipping_detailsop.py +++ b/src/gr4vy/models/add_buyer_shipping_detailsop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .shippingdetailscreate import ShippingDetailsCreate, ShippingDetailsCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class AddBuyerShippingDetailsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class AddBuyerShippingDetailsRequestTypedDict(TypedDict): buyer_id: str @@ -53,3 +70,19 @@ class AddBuyerShippingDetailsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/add_buyerop.py b/src/gr4vy/models/add_buyerop.py index 9e45a8e3..841cfcf5 100644 --- a/src/gr4vy/models/add_buyerop.py +++ b/src/gr4vy/models/add_buyerop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .buyercreate import BuyerCreate, BuyerCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class AddBuyerGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class AddBuyerRequestTypedDict(TypedDict): buyer_create: BuyerCreateTypedDict @@ -41,3 +58,19 @@ class AddBuyerRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/add_payment_linkop.py b/src/gr4vy/models/add_payment_linkop.py index 377aa6cd..13994120 100644 --- a/src/gr4vy/models/add_payment_linkop.py +++ b/src/gr4vy/models/add_payment_linkop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .paymentlinkcreate import PaymentLinkCreate, PaymentLinkCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class AddPaymentLinkGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class AddPaymentLinkRequestTypedDict(TypedDict): payment_link_create: PaymentLinkCreateTypedDict @@ -41,3 +58,19 @@ class AddPaymentLinkRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/add_reportop.py b/src/gr4vy/models/add_reportop.py index 370a8dc6..0a998c0b 100644 --- a/src/gr4vy/models/add_reportop.py +++ b/src/gr4vy/models/add_reportop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .reportcreate import ReportCreate, ReportCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class AddReportGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class AddReportRequestTypedDict(TypedDict): report_create: ReportCreateTypedDict @@ -41,3 +58,19 @@ class AddReportRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/address.py b/src/gr4vy/models/address.py index fbac96b5..f496f114 100644 --- a/src/gr4vy/models/address.py +++ b/src/gr4vy/models/address.py @@ -57,50 +57,49 @@ class Address(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "city", - "country", - "postal_code", - "state", - "state_code", - "house_number_or_name", - "line1", - "line2", - "organization", - ] - nullable_fields = [ - "city", - "country", - "postal_code", - "state", - "state_code", - "house_number_or_name", - "line1", - "line2", - "organization", - ] - null_default_fields = [] - + optional_fields = set( + [ + "city", + "country", + "postal_code", + "state", + "state_code", + "house_number_or_name", + "line1", + "line2", + "organization", + ] + ) + nullable_fields = set( + [ + "city", + "country", + "postal_code", + "state", + "state_code", + "house_number_or_name", + "line1", + "line2", + "organization", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/adyencardoptions.py b/src/gr4vy/models/adyencardoptions.py index e582e7e0..b0620d1d 100644 --- a/src/gr4vy/models/adyencardoptions.py +++ b/src/gr4vy/models/adyencardoptions.py @@ -55,44 +55,43 @@ class AdyenCardOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "autoRescue", - "maxDaysToRescue", - "additionalData", - "autoRescueScenario", - "window_origin", - "splits", - ] - nullable_fields = [ - "autoRescue", - "maxDaysToRescue", - "additionalData", - "autoRescueScenario", - "window_origin", - "splits", - ] - null_default_fields = [] - + optional_fields = set( + [ + "autoRescue", + "maxDaysToRescue", + "additionalData", + "autoRescueScenario", + "window_origin", + "splits", + ] + ) + nullable_fields = set( + [ + "autoRescue", + "maxDaysToRescue", + "additionalData", + "autoRescueScenario", + "window_origin", + "splits", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/adyenoptions.py b/src/gr4vy/models/adyenoptions.py index 7af17426..12831768 100644 --- a/src/gr4vy/models/adyenoptions.py +++ b/src/gr4vy/models/adyenoptions.py @@ -21,30 +21,25 @@ class AdyenOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["additionalData"] - nullable_fields = ["additionalData"] - null_default_fields = [] - + optional_fields = set(["additionalData"]) + nullable_fields = set(["additionalData"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/adyensepaoptions.py b/src/gr4vy/models/adyensepaoptions.py index 43d6aa3f..656a20e4 100644 --- a/src/gr4vy/models/adyensepaoptions.py +++ b/src/gr4vy/models/adyensepaoptions.py @@ -51,42 +51,41 @@ class AdyenSepaOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "autoRescue", - "maxDaysToRescue", - "additionalData", - "autoRescueSepaScenario", - "ownerName", - ] - nullable_fields = [ - "autoRescue", - "maxDaysToRescue", - "additionalData", - "autoRescueSepaScenario", - "ownerName", - ] - null_default_fields = [] - + optional_fields = set( + [ + "autoRescue", + "maxDaysToRescue", + "additionalData", + "autoRescueSepaScenario", + "ownerName", + ] + ) + nullable_fields = set( + [ + "autoRescue", + "maxDaysToRescue", + "additionalData", + "autoRescueSepaScenario", + "ownerName", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/adyensplitsoptions.py b/src/gr4vy/models/adyensplitsoptions.py index f4e00d17..6959b0cd 100644 --- a/src/gr4vy/models/adyensplitsoptions.py +++ b/src/gr4vy/models/adyensplitsoptions.py @@ -28,30 +28,25 @@ class AdyenSplitsOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["authorization", "capture", "refund"] - nullable_fields = ["authorization", "capture", "refund"] - null_default_fields = [] - + optional_fields = set(["authorization", "capture", "refund"]) + nullable_fields = set(["authorization", "capture", "refund"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/affirmitineraryoptions.py b/src/gr4vy/models/affirmitineraryoptions.py index a156c865..4e63b27f 100644 --- a/src/gr4vy/models/affirmitineraryoptions.py +++ b/src/gr4vy/models/affirmitineraryoptions.py @@ -47,46 +47,45 @@ class AffirmItineraryOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "sku", - "display_name", - "venue", - "location", - "date_start", - "management", - ] - nullable_fields = [ - "type", - "sku", - "display_name", - "venue", - "location", - "date_start", - "management", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "sku", + "display_name", + "venue", + "location", + "date_start", + "management", + ] + ) + nullable_fields = set( + [ + "type", + "sku", + "display_name", + "venue", + "location", + "date_start", + "management", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/affirmoptions.py b/src/gr4vy/models/affirmoptions.py index 594b1143..5df1eadb 100644 --- a/src/gr4vy/models/affirmoptions.py +++ b/src/gr4vy/models/affirmoptions.py @@ -27,30 +27,25 @@ class AffirmOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["discounts", "itinerary"] - nullable_fields = ["discounts", "itinerary"] - null_default_fields = [] - + optional_fields = set(["discounts", "itinerary"]) + nullable_fields = set(["discounts", "itinerary"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/airline.py b/src/gr4vy/models/airline.py index 13ffd29a..e984bd72 100644 --- a/src/gr4vy/models/airline.py +++ b/src/gr4vy/models/airline.py @@ -131,70 +131,69 @@ class Airline(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "booking_code", - "is_cardholder_traveling", - "issued_address", - "issued_at", - "issuing_carrier_code", - "issuing_carrier_name", - "issuing_iata_designator", - "issuing_icao_code", - "legs", - "passenger_name_record", - "passengers", - "reservation_system", - "restricted_ticket", - "ticket_delivery_method", - "ticket_number", - "travel_agency_code", - "travel_agency_invoice_number", - "travel_agency_name", - "travel_agency_plan_name", - ] - nullable_fields = [ - "booking_code", - "is_cardholder_traveling", - "issued_address", - "issued_at", - "issuing_carrier_code", - "issuing_carrier_name", - "issuing_iata_designator", - "issuing_icao_code", - "legs", - "passenger_name_record", - "passengers", - "reservation_system", - "restricted_ticket", - "ticket_delivery_method", - "ticket_number", - "travel_agency_code", - "travel_agency_invoice_number", - "travel_agency_name", - "travel_agency_plan_name", - ] - null_default_fields = [] - + optional_fields = set( + [ + "booking_code", + "is_cardholder_traveling", + "issued_address", + "issued_at", + "issuing_carrier_code", + "issuing_carrier_name", + "issuing_iata_designator", + "issuing_icao_code", + "legs", + "passenger_name_record", + "passengers", + "reservation_system", + "restricted_ticket", + "ticket_delivery_method", + "ticket_number", + "travel_agency_code", + "travel_agency_invoice_number", + "travel_agency_name", + "travel_agency_plan_name", + ] + ) + nullable_fields = set( + [ + "booking_code", + "is_cardholder_traveling", + "issued_address", + "issued_at", + "issuing_carrier_code", + "issuing_carrier_name", + "issuing_iata_designator", + "issuing_icao_code", + "legs", + "passenger_name_record", + "passengers", + "reservation_system", + "restricted_ticket", + "ticket_delivery_method", + "ticket_number", + "travel_agency_code", + "travel_agency_invoice_number", + "travel_agency_name", + "travel_agency_plan_name", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/airlineleg.py b/src/gr4vy/models/airlineleg.py index 68a3fd7c..847b2412 100644 --- a/src/gr4vy/models/airlineleg.py +++ b/src/gr4vy/models/airlineleg.py @@ -145,78 +145,77 @@ class AirlineLeg(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "arrival_airport", - "arrival_at", - "arrival_city", - "arrival_country", - "carrier_code", - "carrier_name", - "iata_designator", - "icao_code", - "coupon_number", - "departure_airport", - "departure_at", - "departure_city", - "departure_country", - "departure_tax_amount", - "fare_amount", - "fare_basis_code", - "fee_amount", - "flight_class", - "flight_number", - "route_type", - "seat_class", - "stop_over", - "tax_amount", - ] - nullable_fields = [ - "arrival_airport", - "arrival_at", - "arrival_city", - "arrival_country", - "carrier_code", - "carrier_name", - "iata_designator", - "icao_code", - "coupon_number", - "departure_airport", - "departure_at", - "departure_city", - "departure_country", - "departure_tax_amount", - "fare_amount", - "fare_basis_code", - "fee_amount", - "flight_class", - "flight_number", - "route_type", - "seat_class", - "stop_over", - "tax_amount", - ] - null_default_fields = [] - + optional_fields = set( + [ + "arrival_airport", + "arrival_at", + "arrival_city", + "arrival_country", + "carrier_code", + "carrier_name", + "iata_designator", + "icao_code", + "coupon_number", + "departure_airport", + "departure_at", + "departure_city", + "departure_country", + "departure_tax_amount", + "fare_amount", + "fare_basis_code", + "fee_amount", + "flight_class", + "flight_number", + "route_type", + "seat_class", + "stop_over", + "tax_amount", + ] + ) + nullable_fields = set( + [ + "arrival_airport", + "arrival_at", + "arrival_city", + "arrival_country", + "carrier_code", + "carrier_name", + "iata_designator", + "icao_code", + "coupon_number", + "departure_airport", + "departure_at", + "departure_city", + "departure_country", + "departure_tax_amount", + "fare_amount", + "fare_basis_code", + "fee_amount", + "flight_class", + "flight_number", + "route_type", + "seat_class", + "stop_over", + "tax_amount", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/airlinepassenger.py b/src/gr4vy/models/airlinepassenger.py index 3109539e..42e84fc2 100644 --- a/src/gr4vy/models/airlinepassenger.py +++ b/src/gr4vy/models/airlinepassenger.py @@ -85,54 +85,53 @@ class AirlinePassenger(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "age_group", - "date_of_birth", - "email_address", - "first_name", - "frequent_flyer_number", - "last_name", - "passport_number", - "phone_number", - "ticket_number", - "title", - "country_code", - ] - nullable_fields = [ - "age_group", - "date_of_birth", - "email_address", - "first_name", - "frequent_flyer_number", - "last_name", - "passport_number", - "phone_number", - "ticket_number", - "title", - "country_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "age_group", + "date_of_birth", + "email_address", + "first_name", + "frequent_flyer_number", + "last_name", + "passport_number", + "phone_number", + "ticket_number", + "title", + "country_code", + ] + ) + nullable_fields = set( + [ + "age_group", + "date_of_birth", + "email_address", + "first_name", + "frequent_flyer_number", + "last_name", + "passport_number", + "phone_number", + "ticket_number", + "title", + "country_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/applepaypaymentmethodcreate.py b/src/gr4vy/models/applepaypaymentmethodcreate.py index 1bad756e..1f560923 100644 --- a/src/gr4vy/models/applepaypaymentmethodcreate.py +++ b/src/gr4vy/models/applepaypaymentmethodcreate.py @@ -68,46 +68,45 @@ class ApplePayPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "cardholder_name", - "redirect_url", - "card_suffix", - "card_scheme", - "card_type", - ] - nullable_fields = [ - "buyer_external_identifier", - "buyer_id", - "cardholder_name", - "redirect_url", - "card_suffix", - "card_scheme", - "card_type", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "cardholder_name", + "redirect_url", + "card_suffix", + "card_scheme", + "card_type", + ] + ) + nullable_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "cardholder_name", + "redirect_url", + "card_suffix", + "card_scheme", + "card_type", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/auditlogentries.py b/src/gr4vy/models/auditlogentries.py index d42181e0..e15e8d1a 100644 --- a/src/gr4vy/models/auditlogentries.py +++ b/src/gr4vy/models/auditlogentries.py @@ -34,30 +34,25 @@ class AuditLogEntries(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/auditlogentry.py b/src/gr4vy/models/auditlogentry.py index 80b2d2d1..cc2fdc46 100644 --- a/src/gr4vy/models/auditlogentry.py +++ b/src/gr4vy/models/auditlogentry.py @@ -54,30 +54,25 @@ class AuditLogEntry(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "id", "merchant_account_id"] - nullable_fields = ["id", "merchant_account_id"] - null_default_fields = [] - + optional_fields = set(["type", "id", "merchant_account_id"]) + nullable_fields = set(["id", "merchant_account_id"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/auditlogentryuser.py b/src/gr4vy/models/auditlogentryuser.py index 3ede4a55..cdb21268 100644 --- a/src/gr4vy/models/auditlogentryuser.py +++ b/src/gr4vy/models/auditlogentryuser.py @@ -48,30 +48,25 @@ class AuditLogEntryUser(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "id", "email_address"] - nullable_fields = ["id", "email_address"] - null_default_fields = [] - + optional_fields = set(["type", "id", "email_address"]) + nullable_fields = set(["id", "email_address"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/billingdetails.py b/src/gr4vy/models/billingdetails.py index 19419307..95285e44 100644 --- a/src/gr4vy/models/billingdetails.py +++ b/src/gr4vy/models/billingdetails.py @@ -44,44 +44,43 @@ class BillingDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - "tax_id", - ] - nullable_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - "tax_id", - ] - null_default_fields = [] - + optional_fields = set( + [ + "first_name", + "last_name", + "email_address", + "phone_number", + "address", + "tax_id", + ] + ) + nullable_fields = set( + [ + "first_name", + "last_name", + "email_address", + "phone_number", + "address", + "tax_id", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/braintreedynamicdatafieldsoptions.py b/src/gr4vy/models/braintreedynamicdatafieldsoptions.py index 76d7097b..ca24a380 100644 --- a/src/gr4vy/models/braintreedynamicdatafieldsoptions.py +++ b/src/gr4vy/models/braintreedynamicdatafieldsoptions.py @@ -44,38 +44,37 @@ class BraintreeDynamicDataFieldsOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "three_ds_auth_status", - "purchase_order_number", - "vault_payment_method_criteria", - ] - nullable_fields = [ - "three_ds_auth_status", - "purchase_order_number", - "vault_payment_method_criteria", - ] - null_default_fields = [] - + optional_fields = set( + [ + "three_ds_auth_status", + "purchase_order_number", + "vault_payment_method_criteria", + ] + ) + nullable_fields = set( + [ + "three_ds_auth_status", + "purchase_order_number", + "vault_payment_method_criteria", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/braintreeoptions.py b/src/gr4vy/models/braintreeoptions.py index 6425f4fb..e35a986e 100644 --- a/src/gr4vy/models/braintreeoptions.py +++ b/src/gr4vy/models/braintreeoptions.py @@ -34,30 +34,29 @@ class BraintreeOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["discount_amount", "custom_fields", "dynamic_data_fields"] - nullable_fields = ["discount_amount", "custom_fields", "dynamic_data_fields"] - null_default_fields = [] - + optional_fields = set( + ["discount_amount", "custom_fields", "dynamic_data_fields"] + ) + nullable_fields = set( + ["discount_amount", "custom_fields", "dynamic_data_fields"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/browserinfo.py b/src/gr4vy/models/browserinfo.py index ed8f39a1..cf3a510f 100644 --- a/src/gr4vy/models/browserinfo.py +++ b/src/gr4vy/models/browserinfo.py @@ -70,30 +70,25 @@ class BrowserInfo(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["accept_header"] - nullable_fields = ["accept_header"] - null_default_fields = [] - + optional_fields = set(["accept_header"]) + nullable_fields = set(["accept_header"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/buyer.py b/src/gr4vy/models/buyer.py index 0bad7fa3..80e95ffd 100644 --- a/src/gr4vy/models/buyer.py +++ b/src/gr4vy/models/buyer.py @@ -66,43 +66,42 @@ class Buyer(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "id", - "display_name", - "external_identifier", - "billing_details", - "account_number", - ] - nullable_fields = [ - "id", - "display_name", - "external_identifier", - "billing_details", - "account_number", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "id", + "display_name", + "external_identifier", + "billing_details", + "account_number", + ] + ) + nullable_fields = set( + [ + "id", + "display_name", + "external_identifier", + "billing_details", + "account_number", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/buyercreate.py b/src/gr4vy/models/buyercreate.py index 105b5383..0fd638a8 100644 --- a/src/gr4vy/models/buyercreate.py +++ b/src/gr4vy/models/buyercreate.py @@ -37,40 +37,29 @@ class BuyerCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "display_name", - "external_identifier", - "billing_details", - "account_number", - ] - nullable_fields = [ - "display_name", - "external_identifier", - "billing_details", - "account_number", - ] - null_default_fields = [] - + optional_fields = set( + ["display_name", "external_identifier", "billing_details", "account_number"] + ) + nullable_fields = set( + ["display_name", "external_identifier", "billing_details", "account_number"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/buyers.py b/src/gr4vy/models/buyers.py index 53651e20..c7cef7d9 100644 --- a/src/gr4vy/models/buyers.py +++ b/src/gr4vy/models/buyers.py @@ -34,30 +34,25 @@ class Buyers(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/buyerupdate.py b/src/gr4vy/models/buyerupdate.py index 85bebc16..b508a6ee 100644 --- a/src/gr4vy/models/buyerupdate.py +++ b/src/gr4vy/models/buyerupdate.py @@ -37,40 +37,29 @@ class BuyerUpdate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "display_name", - "external_identifier", - "account_number", - "billing_details", - ] - nullable_fields = [ - "display_name", - "external_identifier", - "account_number", - "billing_details", - ] - null_default_fields = [] - + optional_fields = set( + ["display_name", "external_identifier", "account_number", "billing_details"] + ) + nullable_fields = set( + ["display_name", "external_identifier", "account_number", "billing_details"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/cancel_transactionop.py b/src/gr4vy/models/cancel_transactionop.py index 361be84f..ea472bbd 100644 --- a/src/gr4vy/models/cancel_transactionop.py +++ b/src/gr4vy/models/cancel_transactionop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class CancelTransactionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CancelTransactionRequestTypedDict(TypedDict): transaction_id: str @@ -41,3 +58,19 @@ class CancelTransactionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/capture_transactionop.py b/src/gr4vy/models/capture_transactionop.py index 4a067cd6..4ee824a8 100644 --- a/src/gr4vy/models/capture_transactionop.py +++ b/src/gr4vy/models/capture_transactionop.py @@ -33,6 +33,22 @@ class CaptureTransactionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CaptureTransactionRequestTypedDict(TypedDict): transaction_id: str @@ -70,31 +86,26 @@ class CaptureTransactionRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["prefer", "merchant_account_id"] - nullable_fields = ["prefer"] - null_default_fields = [] - + optional_fields = set(["prefer", "merchant_account_id"]) + nullable_fields = set(["prefer"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/cardpaymentmethodcreate.py b/src/gr4vy/models/cardpaymentmethodcreate.py index cbafd9da..7ffc2fdb 100644 --- a/src/gr4vy/models/cardpaymentmethodcreate.py +++ b/src/gr4vy/models/cardpaymentmethodcreate.py @@ -59,43 +59,42 @@ class CardPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "method", - "security_code", - ] - nullable_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "security_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "method", + "security_code", + ] + ) + nullable_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "security_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/cardschemedefinition.py b/src/gr4vy/models/cardschemedefinition.py index b29e9330..779a737c 100644 --- a/src/gr4vy/models/cardschemedefinition.py +++ b/src/gr4vy/models/cardschemedefinition.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -38,3 +39,19 @@ class CardSchemeDefinition(BaseModel): pydantic.Field(alias="type"), ] = "card-scheme-definition" r"""Always `card-scheme-definition`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/cardwithurlpaymentmethodcreate.py b/src/gr4vy/models/cardwithurlpaymentmethodcreate.py index a89b91af..fc0d6515 100644 --- a/src/gr4vy/models/cardwithurlpaymentmethodcreate.py +++ b/src/gr4vy/models/cardwithurlpaymentmethodcreate.py @@ -68,45 +68,44 @@ class CardWithURLPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "method", - "security_code", - "redirect_url", - ] - nullable_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "security_code", - "redirect_url", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "method", + "security_code", + "redirect_url", + ] + ) + nullable_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "security_code", + "redirect_url", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/cartitem.py b/src/gr4vy/models/cartitem.py index 0f301844..5752b7ac 100644 --- a/src/gr4vy/models/cartitem.py +++ b/src/gr4vy/models/cartitem.py @@ -109,64 +109,63 @@ class CartItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "discount_amount", - "tax_amount", - "external_identifier", - "sku", - "upc", - "product_url", - "image_url", - "categories", - "product_type", - "seller_country", - "tax_exempt", - "unit_of_measure", - "commodity_code", - "description", - "duty_amount", - "shipping_amount", - ] - nullable_fields = [ - "discount_amount", - "tax_amount", - "external_identifier", - "sku", - "upc", - "product_url", - "image_url", - "categories", - "product_type", - "seller_country", - "tax_exempt", - "unit_of_measure", - "commodity_code", - "description", - "duty_amount", - "shipping_amount", - ] - null_default_fields = [] - + optional_fields = set( + [ + "discount_amount", + "tax_amount", + "external_identifier", + "sku", + "upc", + "product_url", + "image_url", + "categories", + "product_type", + "seller_country", + "tax_exempt", + "unit_of_measure", + "commodity_code", + "description", + "duty_amount", + "shipping_amount", + ] + ) + nullable_fields = set( + [ + "discount_amount", + "tax_amount", + "external_identifier", + "sku", + "upc", + "product_url", + "image_url", + "categories", + "product_type", + "seller_country", + "tax_exempt", + "unit_of_measure", + "commodity_code", + "description", + "duty_amount", + "shipping_amount", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/chaseoptions.py b/src/gr4vy/models/chaseoptions.py index e984bf68..6733363a 100644 --- a/src/gr4vy/models/chaseoptions.py +++ b/src/gr4vy/models/chaseoptions.py @@ -17,30 +17,25 @@ class ChaseOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["comments"] - nullable_fields = ["comments"] - null_default_fields = [] - + optional_fields = set(["comments"]) + nullable_fields = set(["comments"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/checkoutsession.py b/src/gr4vy/models/checkoutsession.py index 56bb85fb..af66c829 100644 --- a/src/gr4vy/models/checkoutsession.py +++ b/src/gr4vy/models/checkoutsession.py @@ -85,49 +85,48 @@ class CheckoutSession(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cart_items", - "metadata", - "buyer", - "airline", - "amount", - "currency", - "payment_service_id", - "type", - "payment_method", - ] - nullable_fields = [ - "cart_items", - "metadata", - "buyer", - "airline", - "amount", - "currency", - "payment_service_id", - "payment_method", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cart_items", + "metadata", + "buyer", + "airline", + "amount", + "currency", + "payment_service_id", + "type", + "payment_method", + ] + ) + nullable_fields = set( + [ + "cart_items", + "metadata", + "buyer", + "airline", + "amount", + "currency", + "payment_service_id", + "payment_method", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/checkoutsessioncreate.py b/src/gr4vy/models/checkoutsessioncreate.py index 8fe42d76..93fa0834 100644 --- a/src/gr4vy/models/checkoutsessioncreate.py +++ b/src/gr4vy/models/checkoutsessioncreate.py @@ -56,47 +56,46 @@ class CheckoutSessionCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cart_items", - "metadata", - "buyer", - "airline", - "amount", - "currency", - "payment_service_id", - "expires_in", - ] - nullable_fields = [ - "cart_items", - "metadata", - "buyer", - "airline", - "amount", - "currency", - "payment_service_id", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cart_items", + "metadata", + "buyer", + "airline", + "amount", + "currency", + "payment_service_id", + "expires_in", + ] + ) + nullable_fields = set( + [ + "cart_items", + "metadata", + "buyer", + "airline", + "amount", + "currency", + "payment_service_id", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/checkoutsessionpaymentmethod.py b/src/gr4vy/models/checkoutsessionpaymentmethod.py index f707a202..9670ccde 100644 --- a/src/gr4vy/models/checkoutsessionpaymentmethod.py +++ b/src/gr4vy/models/checkoutsessionpaymentmethod.py @@ -65,38 +65,27 @@ class CheckoutSessionPaymentMethod(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "id", - "details", - "label", - "method", - "scheme", - "fingerprint", - ] - nullable_fields = ["id", "details", "label", "scheme", "fingerprint"] - null_default_fields = [] - + optional_fields = set( + ["type", "id", "details", "label", "method", "scheme", "fingerprint"] + ) + nullable_fields = set(["id", "details", "label", "scheme", "fingerprint"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/checkoutsessionpaymentmethodcreate.py b/src/gr4vy/models/checkoutsessionpaymentmethodcreate.py index 6700f29d..77119004 100644 --- a/src/gr4vy/models/checkoutsessionpaymentmethodcreate.py +++ b/src/gr4vy/models/checkoutsessionpaymentmethodcreate.py @@ -47,39 +47,29 @@ class CheckoutSessionPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "method", - "external_identifier", - "buyer_id", - "buyer_external_identifier", - ] - nullable_fields = [ - "external_identifier", - "buyer_id", - "buyer_external_identifier", - ] - null_default_fields = [] - + optional_fields = set( + ["method", "external_identifier", "buyer_id", "buyer_external_identifier"] + ) + nullable_fields = set( + ["external_identifier", "buyer_id", "buyer_external_identifier"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/checkoutsessionpaymentmethoddetails.py b/src/gr4vy/models/checkoutsessionpaymentmethoddetails.py index c173f066..f749baca 100644 --- a/src/gr4vy/models/checkoutsessionpaymentmethoddetails.py +++ b/src/gr4vy/models/checkoutsessionpaymentmethoddetails.py @@ -33,30 +33,25 @@ class CheckoutSessionPaymentMethodDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["bin", "card_country", "card_type", "card_issuer_name"] - nullable_fields = ["bin", "card_country", "card_type", "card_issuer_name"] - null_default_fields = [] - + optional_fields = set(["bin", "card_country", "card_type", "card_issuer_name"]) + nullable_fields = set(["bin", "card_country", "card_type", "card_issuer_name"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/checkoutsessionwithurlpaymentmethodcreate.py b/src/gr4vy/models/checkoutsessionwithurlpaymentmethodcreate.py index b2f54e95..2e7354b2 100644 --- a/src/gr4vy/models/checkoutsessionwithurlpaymentmethodcreate.py +++ b/src/gr4vy/models/checkoutsessionwithurlpaymentmethodcreate.py @@ -56,41 +56,40 @@ class CheckoutSessionWithURLPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "method", - "external_identifier", - "buyer_id", - "buyer_external_identifier", - "redirect_url", - ] - nullable_fields = [ - "external_identifier", - "buyer_id", - "buyer_external_identifier", - "redirect_url", - ] - null_default_fields = [] - + optional_fields = set( + [ + "method", + "external_identifier", + "buyer_id", + "buyer_external_identifier", + "redirect_url", + ] + ) + nullable_fields = set( + [ + "external_identifier", + "buyer_id", + "buyer_external_identifier", + "redirect_url", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/clicktopayfpanpaymentmethodcreate.py b/src/gr4vy/models/clicktopayfpanpaymentmethodcreate.py index 35535ba8..8fcd3af2 100644 --- a/src/gr4vy/models/clicktopayfpanpaymentmethodcreate.py +++ b/src/gr4vy/models/clicktopayfpanpaymentmethodcreate.py @@ -70,44 +70,43 @@ class ClickToPayFPANPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "redirect_url", - "security_code", - ] - nullable_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "redirect_url", - "security_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "redirect_url", + "security_code", + ] + ) + nullable_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "redirect_url", + "security_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/clicktopaypaymentmethodcreate.py b/src/gr4vy/models/clicktopaypaymentmethodcreate.py index f8706e8e..024ce656 100644 --- a/src/gr4vy/models/clicktopaypaymentmethodcreate.py +++ b/src/gr4vy/models/clicktopaypaymentmethodcreate.py @@ -71,40 +71,39 @@ class ClickToPayPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_id", - "buyer_external_identifier", - "external_identifier", - "redirect_url", - ] - nullable_fields = [ - "buyer_id", - "buyer_external_identifier", - "external_identifier", - "redirect_url", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_id", + "buyer_external_identifier", + "external_identifier", + "redirect_url", + ] + ) + nullable_fields = set( + [ + "buyer_id", + "buyer_external_identifier", + "external_identifier", + "redirect_url", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/configure_digital_walletop.py b/src/gr4vy/models/configure_digital_walletop.py index 5757ff5b..9738b9ac 100644 --- a/src/gr4vy/models/configure_digital_walletop.py +++ b/src/gr4vy/models/configure_digital_walletop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .digitalwalletcreate import DigitalWalletCreate, DigitalWalletCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class ConfigureDigitalWalletGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ConfigureDigitalWalletRequestTypedDict(TypedDict): digital_wallet_create: DigitalWalletCreateTypedDict @@ -41,3 +58,19 @@ class ConfigureDigitalWalletRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_account_updater_jobop.py b/src/gr4vy/models/create_account_updater_jobop.py index b02475c5..047ce71c 100644 --- a/src/gr4vy/models/create_account_updater_jobop.py +++ b/src/gr4vy/models/create_account_updater_jobop.py @@ -5,9 +5,10 @@ AccountUpdaterJobCreate, AccountUpdaterJobCreateTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,6 +26,22 @@ class CreateAccountUpdaterJobGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateAccountUpdaterJobRequestTypedDict(TypedDict): account_updater_job_create: AccountUpdaterJobCreateTypedDict @@ -44,3 +61,19 @@ class CreateAccountUpdaterJobRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_apple_pay_digital_wallet_sessionop.py b/src/gr4vy/models/create_apple_pay_digital_wallet_sessionop.py index d32c11c9..7a3480b1 100644 --- a/src/gr4vy/models/create_apple_pay_digital_wallet_sessionop.py +++ b/src/gr4vy/models/create_apple_pay_digital_wallet_sessionop.py @@ -5,9 +5,10 @@ ApplePaySessionRequest, ApplePaySessionRequestTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,6 +26,22 @@ class CreateApplePayDigitalWalletSessionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateApplePayDigitalWalletSessionRequestTypedDict(TypedDict): apple_pay_session_request: ApplePaySessionRequestTypedDict @@ -44,3 +61,19 @@ class CreateApplePayDigitalWalletSessionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_checkout_sessionop.py b/src/gr4vy/models/create_checkout_sessionop.py index c279ae57..650a269a 100644 --- a/src/gr4vy/models/create_checkout_sessionop.py +++ b/src/gr4vy/models/create_checkout_sessionop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .checkoutsessioncreate import CheckoutSessionCreate, CheckoutSessionCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class CreateCheckoutSessionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateCheckoutSessionRequestTypedDict(TypedDict): merchant_account_id: NotRequired[str] @@ -41,3 +58,19 @@ class CreateCheckoutSessionRequest(BaseModel): Optional[CheckoutSessionCreate], FieldMetadata(request=RequestMetadata(media_type="application/json")), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id", "CheckoutSessionCreate"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_full_transaction_refundop.py b/src/gr4vy/models/create_full_transaction_refundop.py index 34fdb085..97e150ae 100644 --- a/src/gr4vy/models/create_full_transaction_refundop.py +++ b/src/gr4vy/models/create_full_transaction_refundop.py @@ -31,6 +31,22 @@ class CreateFullTransactionRefundGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateFullTransactionRefundRequestTypedDict(TypedDict): transaction_id: str @@ -62,30 +78,25 @@ class CreateFullTransactionRefundRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["merchant_account_id", "TransactionRefundAllCreate"] - nullable_fields = ["TransactionRefundAllCreate"] - null_default_fields = [] - + optional_fields = set(["merchant_account_id", "TransactionRefundAllCreate"]) + nullable_fields = set(["TransactionRefundAllCreate"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/create_gift_cardop.py b/src/gr4vy/models/create_gift_cardop.py index 903c3dea..290eda9b 100644 --- a/src/gr4vy/models/create_gift_cardop.py +++ b/src/gr4vy/models/create_gift_cardop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .giftcardcreate import GiftCardCreate, GiftCardCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class CreateGiftCardGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateGiftCardRequestTypedDict(TypedDict): gift_card_create: GiftCardCreateTypedDict @@ -41,3 +58,19 @@ class CreateGiftCardRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_google_pay_digital_wallet_sessionop.py b/src/gr4vy/models/create_google_pay_digital_wallet_sessionop.py index 291d99bb..1d3fdbed 100644 --- a/src/gr4vy/models/create_google_pay_digital_wallet_sessionop.py +++ b/src/gr4vy/models/create_google_pay_digital_wallet_sessionop.py @@ -5,9 +5,10 @@ GooglePaySessionRequest, GooglePaySessionRequestTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,6 +26,22 @@ class CreateGooglePayDigitalWalletSessionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateGooglePayDigitalWalletSessionRequestTypedDict(TypedDict): google_pay_session_request: GooglePaySessionRequestTypedDict @@ -44,3 +61,19 @@ class CreateGooglePayDigitalWalletSessionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_payment_method_network_token_cryptogramop.py b/src/gr4vy/models/create_payment_method_network_token_cryptogramop.py index 71af9c2d..d04952ae 100644 --- a/src/gr4vy/models/create_payment_method_network_token_cryptogramop.py +++ b/src/gr4vy/models/create_payment_method_network_token_cryptogramop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .cryptogramcreate import CryptogramCreate, CryptogramCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class CreatePaymentMethodNetworkTokenCryptogramGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreatePaymentMethodNetworkTokenCryptogramRequestTypedDict(TypedDict): payment_method_id: str @@ -60,3 +77,19 @@ class CreatePaymentMethodNetworkTokenCryptogramRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_payment_method_network_tokenop.py b/src/gr4vy/models/create_payment_method_network_tokenop.py index 9fb863c4..0151313f 100644 --- a/src/gr4vy/models/create_payment_method_network_tokenop.py +++ b/src/gr4vy/models/create_payment_method_network_tokenop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .networktokencreate import NetworkTokenCreate, NetworkTokenCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class CreatePaymentMethodNetworkTokenGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreatePaymentMethodNetworkTokenRequestTypedDict(TypedDict): payment_method_id: str @@ -53,3 +70,19 @@ class CreatePaymentMethodNetworkTokenRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_payment_method_payment_service_tokenop.py b/src/gr4vy/models/create_payment_method_payment_service_tokenop.py index 2818c18e..54ec9990 100644 --- a/src/gr4vy/models/create_payment_method_payment_service_tokenop.py +++ b/src/gr4vy/models/create_payment_method_payment_service_tokenop.py @@ -5,7 +5,7 @@ PaymentServiceTokenCreate, PaymentServiceTokenCreateTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -13,6 +13,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,6 +31,22 @@ class CreatePaymentMethodPaymentServiceTokenGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreatePaymentMethodPaymentServiceTokenRequestTypedDict(TypedDict): payment_method_id: str @@ -56,3 +73,19 @@ class CreatePaymentMethodPaymentServiceTokenRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_payment_methodop.py b/src/gr4vy/models/create_payment_methodop.py index e84c162c..fe302245 100644 --- a/src/gr4vy/models/create_payment_methodop.py +++ b/src/gr4vy/models/create_payment_methodop.py @@ -17,9 +17,10 @@ RedirectPaymentMethodCreate, RedirectPaymentMethodCreateTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -37,6 +38,22 @@ class CreatePaymentMethodGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + BodyTypedDict = TypeAliasType( "BodyTypedDict", @@ -77,3 +94,19 @@ class CreatePaymentMethodRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_payment_service_sessionop.py b/src/gr4vy/models/create_payment_service_sessionop.py index 9f85851f..4c5daea8 100644 --- a/src/gr4vy/models/create_payment_service_sessionop.py +++ b/src/gr4vy/models/create_payment_service_sessionop.py @@ -1,7 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -9,6 +9,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Any, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -26,6 +27,22 @@ class CreatePaymentServiceSessionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreatePaymentServiceSessionRequestTypedDict(TypedDict): payment_service_id: str @@ -52,3 +69,19 @@ class CreatePaymentServiceSessionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_payment_serviceop.py b/src/gr4vy/models/create_payment_serviceop.py index 1b8709c0..f5b113cc 100644 --- a/src/gr4vy/models/create_payment_serviceop.py +++ b/src/gr4vy/models/create_payment_serviceop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .paymentserviceupdate import PaymentServiceUpdate, PaymentServiceUpdateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class CreatePaymentServiceGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreatePaymentServiceRequestTypedDict(TypedDict): payment_service_id: str @@ -53,3 +70,19 @@ class CreatePaymentServiceRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_payoutop.py b/src/gr4vy/models/create_payoutop.py index 3f2d3b41..35627971 100644 --- a/src/gr4vy/models/create_payoutop.py +++ b/src/gr4vy/models/create_payoutop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .payoutcreate import PayoutCreate, PayoutCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class CreatePayoutGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreatePayoutRequestTypedDict(TypedDict): payout_create: PayoutCreateTypedDict @@ -41,3 +58,19 @@ class CreatePayoutRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_report_execution_urlop.py b/src/gr4vy/models/create_report_execution_urlop.py index 2070cf1d..cc64fe8e 100644 --- a/src/gr4vy/models/create_report_execution_urlop.py +++ b/src/gr4vy/models/create_report_execution_urlop.py @@ -5,7 +5,7 @@ ReportExecutionURLGenerate, ReportExecutionURLGenerateTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -13,6 +13,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,6 +31,22 @@ class CreateReportExecutionURLGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateReportExecutionURLRequestTypedDict(TypedDict): report_id: str @@ -63,3 +80,19 @@ class CreateReportExecutionURLRequest(BaseModel): Optional[ReportExecutionURLGenerate], FieldMetadata(request=RequestMetadata(media_type="application/json")), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id", "ReportExecutionUrlGenerate"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_three_ds_scenarioop.py b/src/gr4vy/models/create_three_ds_scenarioop.py new file mode 100644 index 00000000..b7921628 --- /dev/null +++ b/src/gr4vy/models/create_three_ds_scenarioop.py @@ -0,0 +1,79 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenariocreate import ( + ThreeDSecureScenarioCreate, + ThreeDSecureScenarioCreateTypedDict, +) +from gr4vy.types import BaseModel, UNSET_SENTINEL +from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateThreeDsScenarioGlobalsTypedDict(TypedDict): + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class CreateThreeDsScenarioGlobals(BaseModel): + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class CreateThreeDsScenarioRequestTypedDict(TypedDict): + three_d_secure_scenario_create: ThreeDSecureScenarioCreateTypedDict + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class CreateThreeDsScenarioRequest(BaseModel): + three_d_secure_scenario_create: Annotated[ + ThreeDSecureScenarioCreate, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_transaction_refundop.py b/src/gr4vy/models/create_transaction_refundop.py index 4dbf989e..a6114cf2 100644 --- a/src/gr4vy/models/create_transaction_refundop.py +++ b/src/gr4vy/models/create_transaction_refundop.py @@ -5,7 +5,7 @@ TransactionRefundCreate, TransactionRefundCreateTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -13,6 +13,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,6 +31,22 @@ class CreateTransactionRefundGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateTransactionRefundRequestTypedDict(TypedDict): transaction_id: str @@ -56,3 +73,19 @@ class CreateTransactionRefundRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/create_transactionop.py b/src/gr4vy/models/create_transactionop.py index 2362b364..33dd14d8 100644 --- a/src/gr4vy/models/create_transactionop.py +++ b/src/gr4vy/models/create_transactionop.py @@ -23,6 +23,22 @@ class CreateTransactionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateTransactionRequestTypedDict(TypedDict): transaction_create: TransactionCreateTypedDict @@ -69,30 +85,27 @@ class CreateTransactionRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["merchant_account_id", "idempotency-key", "X-Forwarded-For"] - nullable_fields = ["idempotency-key"] - null_default_fields = [] - + optional_fields = set( + ["merchant_account_id", "idempotency-key", "X-Forwarded-For"] + ) + nullable_fields = set(["idempotency-key"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/createsession.py b/src/gr4vy/models/createsession.py index 5a560532..42d15920 100644 --- a/src/gr4vy/models/createsession.py +++ b/src/gr4vy/models/createsession.py @@ -50,30 +50,25 @@ class CreateSession(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "code", "status_code", "response_body"] - nullable_fields = ["code", "status_code", "response_body"] - null_default_fields = [] - + optional_fields = set(["type", "code", "status_code", "response_body"]) + nullable_fields = set(["code", "status_code", "response_body"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/cryptogram.py b/src/gr4vy/models/cryptogram.py index 4304de5e..a7a95a5a 100644 --- a/src/gr4vy/models/cryptogram.py +++ b/src/gr4vy/models/cryptogram.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -28,3 +29,19 @@ class Cryptogram(BaseModel): pydantic.Field(alias="type"), ] = "network-token-cryptogram" r"""Always `network-token-cryptogram`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/cybersourceantifraudoptions.py b/src/gr4vy/models/cybersourceantifraudoptions.py index 8a7b7798..db4e6051 100644 --- a/src/gr4vy/models/cybersourceantifraudoptions.py +++ b/src/gr4vy/models/cybersourceantifraudoptions.py @@ -28,38 +28,29 @@ class CybersourceAntiFraudOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "merchant_defined_data", - "meta_key_merchant_id", - "shipping_method", - ] - nullable_fields = [ - "merchant_defined_data", - "meta_key_merchant_id", - "shipping_method", - ] - null_default_fields = [] - + optional_fields = set( + ["merchant_defined_data", "meta_key_merchant_id", "shipping_method"] + ) + nullable_fields = set( + ["merchant_defined_data", "meta_key_merchant_id", "shipping_method"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/cybersourceoptions.py b/src/gr4vy/models/cybersourceoptions.py index 9fe3c72c..da737fe3 100644 --- a/src/gr4vy/models/cybersourceoptions.py +++ b/src/gr4vy/models/cybersourceoptions.py @@ -33,40 +33,39 @@ class CybersourceOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "meta_key_merchant_id", - "merchant_defined_information", - "ship_to_method", - "comments", - ] - nullable_fields = [ - "meta_key_merchant_id", - "merchant_defined_information", - "ship_to_method", - "comments", - ] - null_default_fields = [] - + optional_fields = set( + [ + "meta_key_merchant_id", + "merchant_defined_information", + "ship_to_method", + "comments", + ] + ) + nullable_fields = set( + [ + "meta_key_merchant_id", + "merchant_defined_information", + "ship_to_method", + "comments", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/delete_buyer_shipping_detailsop.py b/src/gr4vy/models/delete_buyer_shipping_detailsop.py index 1eac9740..fbab352d 100644 --- a/src/gr4vy/models/delete_buyer_shipping_detailsop.py +++ b/src/gr4vy/models/delete_buyer_shipping_detailsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeleteBuyerShippingDetailsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeleteBuyerShippingDetailsRequestTypedDict(TypedDict): buyer_id: str @@ -48,3 +65,19 @@ class DeleteBuyerShippingDetailsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_buyerop.py b/src/gr4vy/models/delete_buyerop.py index 7a09812f..ef9ea35f 100644 --- a/src/gr4vy/models/delete_buyerop.py +++ b/src/gr4vy/models/delete_buyerop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeleteBuyerGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeleteBuyerRequestTypedDict(TypedDict): buyer_id: str @@ -41,3 +58,19 @@ class DeleteBuyerRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_checkout_sessionop.py b/src/gr4vy/models/delete_checkout_sessionop.py index d8b3ba52..ce76d1d8 100644 --- a/src/gr4vy/models/delete_checkout_sessionop.py +++ b/src/gr4vy/models/delete_checkout_sessionop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeleteCheckoutSessionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeleteCheckoutSessionRequestTypedDict(TypedDict): session_id: str @@ -41,3 +58,19 @@ class DeleteCheckoutSessionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_digital_walletop.py b/src/gr4vy/models/delete_digital_walletop.py index 0828ef4e..11270b41 100644 --- a/src/gr4vy/models/delete_digital_walletop.py +++ b/src/gr4vy/models/delete_digital_walletop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeleteDigitalWalletGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeleteDigitalWalletRequestTypedDict(TypedDict): digital_wallet_id: str @@ -41,3 +58,19 @@ class DeleteDigitalWalletRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_gift_cardop.py b/src/gr4vy/models/delete_gift_cardop.py index 65640197..1aefd861 100644 --- a/src/gr4vy/models/delete_gift_cardop.py +++ b/src/gr4vy/models/delete_gift_cardop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeleteGiftCardGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeleteGiftCardRequestTypedDict(TypedDict): gift_card_id: str @@ -41,3 +58,19 @@ class DeleteGiftCardRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_payment_method_network_tokenop.py b/src/gr4vy/models/delete_payment_method_network_tokenop.py index d9b59853..78b273f2 100644 --- a/src/gr4vy/models/delete_payment_method_network_tokenop.py +++ b/src/gr4vy/models/delete_payment_method_network_tokenop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeletePaymentMethodNetworkTokenGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeletePaymentMethodNetworkTokenRequestTypedDict(TypedDict): payment_method_id: str @@ -48,3 +65,19 @@ class DeletePaymentMethodNetworkTokenRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_payment_method_payment_service_tokenop.py b/src/gr4vy/models/delete_payment_method_payment_service_tokenop.py index 7bdf5398..1736aefb 100644 --- a/src/gr4vy/models/delete_payment_method_payment_service_tokenop.py +++ b/src/gr4vy/models/delete_payment_method_payment_service_tokenop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeletePaymentMethodPaymentServiceTokenGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeletePaymentMethodPaymentServiceTokenRequestTypedDict(TypedDict): payment_method_id: str @@ -48,3 +65,19 @@ class DeletePaymentMethodPaymentServiceTokenRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_payment_methodop.py b/src/gr4vy/models/delete_payment_methodop.py index 4af47f26..f5adc84c 100644 --- a/src/gr4vy/models/delete_payment_methodop.py +++ b/src/gr4vy/models/delete_payment_methodop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeletePaymentMethodGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeletePaymentMethodRequestTypedDict(TypedDict): payment_method_id: str @@ -41,3 +58,19 @@ class DeletePaymentMethodRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_payment_serviceop.py b/src/gr4vy/models/delete_payment_serviceop.py index c84687ae..f68f7c96 100644 --- a/src/gr4vy/models/delete_payment_serviceop.py +++ b/src/gr4vy/models/delete_payment_serviceop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class DeletePaymentServiceGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeletePaymentServiceRequestTypedDict(TypedDict): payment_service_id: str @@ -41,3 +58,19 @@ class DeletePaymentServiceRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/delete_three_ds_scenarioop.py b/src/gr4vy/models/delete_three_ds_scenarioop.py new file mode 100644 index 00000000..fde12812 --- /dev/null +++ b/src/gr4vy/models/delete_three_ds_scenarioop.py @@ -0,0 +1,76 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from gr4vy.types import BaseModel, UNSET_SENTINEL +from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteThreeDsScenarioGlobalsTypedDict(TypedDict): + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class DeleteThreeDsScenarioGlobals(BaseModel): + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class DeleteThreeDsScenarioRequestTypedDict(TypedDict): + three_ds_scenario_id: str + r"""The ID of the 3DS scenario""" + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class DeleteThreeDsScenarioRequest(BaseModel): + three_ds_scenario_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the 3DS scenario""" + + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/detailedsettlementreportspec.py b/src/gr4vy/models/detailedsettlementreportspec.py index 684bfce4..a3c34308 100644 --- a/src/gr4vy/models/detailedsettlementreportspec.py +++ b/src/gr4vy/models/detailedsettlementreportspec.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Any, Dict, Literal, Optional from typing_extensions import Annotated, TypedDict @@ -28,3 +29,19 @@ class DetailedSettlementReportSpec(BaseModel): pydantic.Field(alias="model"), ] = "detailed_settlement" r"""The report model type.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["model"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/digitalwallet.py b/src/gr4vy/models/digitalwallet.py index 61a48530..4cde513a 100644 --- a/src/gr4vy/models/digitalwallet.py +++ b/src/gr4vy/models/digitalwallet.py @@ -97,44 +97,38 @@ class DigitalWallet(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "merchant_display_name", - "merchant_url", - "merchant_country_code", - "active_certificate_count", - "pending_certificate_count", - "expired_certificate_count", - "fields", - ] - nullable_fields = [ - "merchant_display_name", - "merchant_url", - "merchant_country_code", - "fields", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "merchant_display_name", + "merchant_url", + "merchant_country_code", + "active_certificate_count", + "pending_certificate_count", + "expired_certificate_count", + "fields", + ] + ) + nullable_fields = set( + ["merchant_display_name", "merchant_url", "merchant_country_code", "fields"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/digitalwalletcreate.py b/src/gr4vy/models/digitalwalletcreate.py index 51207559..25dff2ba 100644 --- a/src/gr4vy/models/digitalwalletcreate.py +++ b/src/gr4vy/models/digitalwalletcreate.py @@ -39,39 +39,34 @@ class DigitalWalletCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "merchant_display_name", - "merchant_url", - "merchant_country_code", - "domain_names", - ] - nullable_fields = [ - "merchant_display_name", - "merchant_url", - "merchant_country_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "merchant_display_name", + "merchant_url", + "merchant_country_code", + "domain_names", + ] + ) + nullable_fields = set( + ["merchant_display_name", "merchant_url", "merchant_country_code"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/digitalwalletupdate.py b/src/gr4vy/models/digitalwalletupdate.py index 72002b84..223eff0d 100644 --- a/src/gr4vy/models/digitalwalletupdate.py +++ b/src/gr4vy/models/digitalwalletupdate.py @@ -32,42 +32,41 @@ class DigitalWalletUpdate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "merchant_name", - "domain_names", - "merchant_display_name", - "merchant_url", - "merchant_country_code", - ] - nullable_fields = [ - "merchant_name", - "domain_names", - "merchant_display_name", - "merchant_url", - "merchant_country_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "merchant_name", + "domain_names", + "merchant_display_name", + "merchant_url", + "merchant_country_code", + ] + ) + nullable_fields = set( + [ + "merchant_name", + "domain_names", + "merchant_display_name", + "merchant_url", + "merchant_country_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/dlocaloptions.py b/src/gr4vy/models/dlocaloptions.py index d0d734c7..d1aa53ef 100644 --- a/src/gr4vy/models/dlocaloptions.py +++ b/src/gr4vy/models/dlocaloptions.py @@ -18,30 +18,25 @@ class DlocalOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["wallet"] - nullable_fields = ["wallet"] - null_default_fields = [] - + optional_fields = set(["wallet"]) + nullable_fields = set(["wallet"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/dlocalupioptions.py b/src/gr4vy/models/dlocalupioptions.py index 2dcdea91..39ec71d0 100644 --- a/src/gr4vy/models/dlocalupioptions.py +++ b/src/gr4vy/models/dlocalupioptions.py @@ -21,30 +21,25 @@ class DlocalUPIOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["wallet"] - nullable_fields = ["wallet"] - null_default_fields = [] - + optional_fields = set(["wallet"]) + nullable_fields = set(["wallet"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/dlocalupiwalletoptions.py b/src/gr4vy/models/dlocalupiwalletoptions.py index 4ba732c3..aafebba3 100644 --- a/src/gr4vy/models/dlocalupiwalletoptions.py +++ b/src/gr4vy/models/dlocalupiwalletoptions.py @@ -46,44 +46,29 @@ class DlocalUPIWalletOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "name", - "email", - "token", - "username", - "verify", - "recurring_info", - ] - nullable_fields = [ - "name", - "email", - "token", - "username", - "verify", - "recurring_info", - ] - null_default_fields = [] - + optional_fields = set( + ["name", "email", "token", "username", "verify", "recurring_info"] + ) + nullable_fields = set( + ["name", "email", "token", "username", "verify", "recurring_info"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/dlocalwalletoptions.py b/src/gr4vy/models/dlocalwalletoptions.py index 4d3d22f4..c7c16987 100644 --- a/src/gr4vy/models/dlocalwalletoptions.py +++ b/src/gr4vy/models/dlocalwalletoptions.py @@ -37,30 +37,25 @@ class DlocalWalletOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["name", "email", "token", "username", "verify"] - nullable_fields = ["name", "email", "token", "username", "verify"] - null_default_fields = [] - + optional_fields = set(["name", "email", "token", "username", "verify"]) + nullable_fields = set(["name", "email", "token", "username", "verify"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/expire_payment_linkop.py b/src/gr4vy/models/expire_payment_linkop.py index ed391463..17645f86 100644 --- a/src/gr4vy/models/expire_payment_linkop.py +++ b/src/gr4vy/models/expire_payment_linkop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ExpirePaymentLinkGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ExpirePaymentLinkRequestTypedDict(TypedDict): payment_link_id: str @@ -41,3 +58,19 @@ class ExpirePaymentLinkRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/fiservinstallmentoptions.py b/src/gr4vy/models/fiservinstallmentoptions.py index de005af2..bfbbff04 100644 --- a/src/gr4vy/models/fiservinstallmentoptions.py +++ b/src/gr4vy/models/fiservinstallmentoptions.py @@ -41,40 +41,39 @@ class FiservInstallmentOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "numberOfInstallments", - "installmentsInterest", - "installmentDelayMonths", - "merchantAdviceCodeSupported", - ] - nullable_fields = [ - "numberOfInstallments", - "installmentsInterest", - "installmentDelayMonths", - "merchantAdviceCodeSupported", - ] - null_default_fields = [] - + optional_fields = set( + [ + "numberOfInstallments", + "installmentsInterest", + "installmentDelayMonths", + "merchantAdviceCodeSupported", + ] + ) + nullable_fields = set( + [ + "numberOfInstallments", + "installmentsInterest", + "installmentDelayMonths", + "merchantAdviceCodeSupported", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/fiservoptions.py b/src/gr4vy/models/fiservoptions.py index fca7659b..b8f612c3 100644 --- a/src/gr4vy/models/fiservoptions.py +++ b/src/gr4vy/models/fiservoptions.py @@ -25,30 +25,25 @@ class FiservOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["installmentOptions"] - nullable_fields = ["installmentOptions"] - null_default_fields = [] - + optional_fields = set(["installmentOptions"]) + nullable_fields = set(["installmentOptions"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptions.py b/src/gr4vy/models/forterantifraudoptions.py index f514e33c..cde502ea 100644 --- a/src/gr4vy/models/forterantifraudoptions.py +++ b/src/gr4vy/models/forterantifraudoptions.py @@ -63,42 +63,41 @@ class ForterAntiFraudOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "delivery_type", - "delivery_method", - "is_guest_buyer", - "cart_items", - "total_discount", - ] - nullable_fields = [ - "delivery_type", - "delivery_method", - "is_guest_buyer", - "cart_items", - "total_discount", - ] - null_default_fields = [] - + optional_fields = set( + [ + "delivery_type", + "delivery_method", + "is_guest_buyer", + "cart_items", + "total_discount", + ] + ) + nullable_fields = set( + [ + "delivery_type", + "delivery_method", + "is_guest_buyer", + "cart_items", + "total_discount", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionscartitem.py b/src/gr4vy/models/forterantifraudoptionscartitem.py index be637a73..b48307b9 100644 --- a/src/gr4vy/models/forterantifraudoptionscartitem.py +++ b/src/gr4vy/models/forterantifraudoptionscartitem.py @@ -52,30 +52,25 @@ class ForterAntiFraudOptionsCartItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["basic_item_data", "delivery_details", "beneficiaries"] - nullable_fields = ["basic_item_data", "delivery_details", "beneficiaries"] - null_default_fields = [] - + optional_fields = set(["basic_item_data", "delivery_details", "beneficiaries"]) + nullable_fields = set(["basic_item_data", "delivery_details", "beneficiaries"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionscartitembasicitemdata.py b/src/gr4vy/models/forterantifraudoptionscartitembasicitemdata.py index 7495f0f8..8df92fd0 100644 --- a/src/gr4vy/models/forterantifraudoptionscartitembasicitemdata.py +++ b/src/gr4vy/models/forterantifraudoptionscartitembasicitemdata.py @@ -34,30 +34,25 @@ class ForterAntiFraudOptionsCartItemBasicItemData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type"] - nullable_fields = ["type"] - null_default_fields = [] - + optional_fields = set(["type"]) + nullable_fields = set(["type"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionscartitembeneficiary.py b/src/gr4vy/models/forterantifraudoptionscartitembeneficiary.py index 04556f90..57390660 100644 --- a/src/gr4vy/models/forterantifraudoptionscartitembeneficiary.py +++ b/src/gr4vy/models/forterantifraudoptionscartitembeneficiary.py @@ -57,30 +57,25 @@ class ForterAntiFraudOptionsCartItemBeneficiary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["address", "phone", "comments"] - nullable_fields = ["address", "phone", "comments"] - null_default_fields = [] - + optional_fields = set(["address", "phone", "comments"]) + nullable_fields = set(["address", "phone", "comments"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionscartitembeneficiaryaddress.py b/src/gr4vy/models/forterantifraudoptionscartitembeneficiaryaddress.py index 2fbfb1bf..5a65f8f1 100644 --- a/src/gr4vy/models/forterantifraudoptionscartitembeneficiaryaddress.py +++ b/src/gr4vy/models/forterantifraudoptionscartitembeneficiaryaddress.py @@ -47,30 +47,29 @@ class ForterAntiFraudOptionsCartItemBeneficiaryAddress(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["address1", "address2", "zip", "region", "company", "city"] - nullable_fields = ["address1", "address2", "zip", "region", "company", "city"] - null_default_fields = [] - + optional_fields = set( + ["address1", "address2", "zip", "region", "company", "city"] + ) + nullable_fields = set( + ["address1", "address2", "zip", "region", "company", "city"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionscartitembeneficiarycomments.py b/src/gr4vy/models/forterantifraudoptionscartitembeneficiarycomments.py index 4efbcc86..510edb9a 100644 --- a/src/gr4vy/models/forterantifraudoptionscartitembeneficiarycomments.py +++ b/src/gr4vy/models/forterantifraudoptionscartitembeneficiarycomments.py @@ -27,38 +27,29 @@ class ForterAntiFraudOptionsCartItemBeneficiaryComments(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "user_comments_to_merchant", - "message_to_beneficiary", - "merchant_comments", - ] - nullable_fields = [ - "user_comments_to_merchant", - "message_to_beneficiary", - "merchant_comments", - ] - null_default_fields = [] - + optional_fields = set( + ["user_comments_to_merchant", "message_to_beneficiary", "merchant_comments"] + ) + nullable_fields = set( + ["user_comments_to_merchant", "message_to_beneficiary", "merchant_comments"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionscartitembeneficiarypersonaldetails.py b/src/gr4vy/models/forterantifraudoptionscartitembeneficiarypersonaldetails.py index e2dccae2..40351f0f 100644 --- a/src/gr4vy/models/forterantifraudoptionscartitembeneficiarypersonaldetails.py +++ b/src/gr4vy/models/forterantifraudoptionscartitembeneficiarypersonaldetails.py @@ -27,30 +27,25 @@ class ForterAntiFraudOptionsCartItemBeneficiaryPersonalDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["first_name", "last_name", "email"] - nullable_fields = ["first_name", "last_name", "email"] - null_default_fields = [] - + optional_fields = set(["first_name", "last_name", "email"]) + nullable_fields = set(["first_name", "last_name", "email"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionscartitemdeliverydetails.py b/src/gr4vy/models/forterantifraudoptionscartitemdeliverydetails.py index 3344fdb5..652739da 100644 --- a/src/gr4vy/models/forterantifraudoptionscartitemdeliverydetails.py +++ b/src/gr4vy/models/forterantifraudoptionscartitemdeliverydetails.py @@ -44,30 +44,25 @@ class ForterAntiFraudOptionsCartItemDeliveryDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["delivery_type", "delivery_method"] - nullable_fields = ["delivery_type", "delivery_method"] - null_default_fields = [] - + optional_fields = set(["delivery_type", "delivery_method"]) + nullable_fields = set(["delivery_type", "delivery_method"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionsdiscount.py b/src/gr4vy/models/forterantifraudoptionsdiscount.py index 9f28a265..1a136cb6 100644 --- a/src/gr4vy/models/forterantifraudoptionsdiscount.py +++ b/src/gr4vy/models/forterantifraudoptionsdiscount.py @@ -40,30 +40,25 @@ class ForterAntiFraudOptionsDiscount(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["coupon_discount_amount", "coupon_discount_percent"] - nullable_fields = ["coupon_discount_amount", "coupon_discount_percent"] - null_default_fields = [] - + optional_fields = set(["coupon_discount_amount", "coupon_discount_percent"]) + nullable_fields = set(["coupon_discount_amount", "coupon_discount_percent"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/forterantifraudoptionsdiscountcoupondiscountamount.py b/src/gr4vy/models/forterantifraudoptionsdiscountcoupondiscountamount.py index e4b9e5c4..ca222805 100644 --- a/src/gr4vy/models/forterantifraudoptionsdiscountcoupondiscountamount.py +++ b/src/gr4vy/models/forterantifraudoptionsdiscountcoupondiscountamount.py @@ -27,30 +27,25 @@ class ForterAntiFraudOptionsDiscountCouponDiscountAmount(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["amount_usd", "amount_local_currency", "currency"] - nullable_fields = ["amount_usd", "amount_local_currency", "currency"] - null_default_fields = [] - + optional_fields = set(["amount_usd", "amount_local_currency", "currency"]) + nullable_fields = set(["amount_usd", "amount_local_currency", "currency"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/get_buyer_shipping_detailsop.py b/src/gr4vy/models/get_buyer_shipping_detailsop.py index d3943bb0..16f00d21 100644 --- a/src/gr4vy/models/get_buyer_shipping_detailsop.py +++ b/src/gr4vy/models/get_buyer_shipping_detailsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetBuyerShippingDetailsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetBuyerShippingDetailsRequestTypedDict(TypedDict): buyer_id: str @@ -48,3 +65,19 @@ class GetBuyerShippingDetailsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_buyerop.py b/src/gr4vy/models/get_buyerop.py index 61ee96d5..b884fe6c 100644 --- a/src/gr4vy/models/get_buyerop.py +++ b/src/gr4vy/models/get_buyerop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetBuyerGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetBuyerRequestTypedDict(TypedDict): buyer_id: str @@ -41,3 +58,19 @@ class GetBuyerRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_checkout_sessionop.py b/src/gr4vy/models/get_checkout_sessionop.py index 5f5e0ffb..6781dbfb 100644 --- a/src/gr4vy/models/get_checkout_sessionop.py +++ b/src/gr4vy/models/get_checkout_sessionop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetCheckoutSessionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetCheckoutSessionRequestTypedDict(TypedDict): session_id: str @@ -41,3 +58,19 @@ class GetCheckoutSessionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_digital_walletop.py b/src/gr4vy/models/get_digital_walletop.py index 8fa52f3e..11400ae5 100644 --- a/src/gr4vy/models/get_digital_walletop.py +++ b/src/gr4vy/models/get_digital_walletop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetDigitalWalletGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetDigitalWalletRequestTypedDict(TypedDict): digital_wallet_id: str @@ -41,3 +58,19 @@ class GetDigitalWalletRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_gift_cardop.py b/src/gr4vy/models/get_gift_cardop.py index b57d9f19..50c1b6e6 100644 --- a/src/gr4vy/models/get_gift_cardop.py +++ b/src/gr4vy/models/get_gift_cardop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetGiftCardGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetGiftCardRequestTypedDict(TypedDict): gift_card_id: str @@ -41,3 +58,19 @@ class GetGiftCardRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_payment_linkop.py b/src/gr4vy/models/get_payment_linkop.py index 2db6b9f7..5bf0aeb7 100644 --- a/src/gr4vy/models/get_payment_linkop.py +++ b/src/gr4vy/models/get_payment_linkop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetPaymentLinkGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetPaymentLinkRequestTypedDict(TypedDict): payment_link_id: str @@ -41,3 +58,19 @@ class GetPaymentLinkRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_payment_methodop.py b/src/gr4vy/models/get_payment_methodop.py index 9d51b4e0..60172449 100644 --- a/src/gr4vy/models/get_payment_methodop.py +++ b/src/gr4vy/models/get_payment_methodop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetPaymentMethodGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetPaymentMethodRequestTypedDict(TypedDict): payment_method_id: str @@ -41,3 +58,19 @@ class GetPaymentMethodRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_payment_serviceop.py b/src/gr4vy/models/get_payment_serviceop.py index 9ce7c47c..fbfed101 100644 --- a/src/gr4vy/models/get_payment_serviceop.py +++ b/src/gr4vy/models/get_payment_serviceop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetPaymentServiceGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetPaymentServiceRequestTypedDict(TypedDict): payment_service_id: str @@ -41,3 +58,19 @@ class GetPaymentServiceRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_payoutop.py b/src/gr4vy/models/get_payoutop.py index 86cfa72f..cca69490 100644 --- a/src/gr4vy/models/get_payoutop.py +++ b/src/gr4vy/models/get_payoutop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetPayoutGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetPayoutRequestTypedDict(TypedDict): payout_id: str @@ -39,3 +56,19 @@ class GetPayoutRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_refundop.py b/src/gr4vy/models/get_refundop.py index 3acb8df3..f62758a9 100644 --- a/src/gr4vy/models/get_refundop.py +++ b/src/gr4vy/models/get_refundop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetRefundGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetRefundRequestTypedDict(TypedDict): refund_id: str @@ -41,3 +58,19 @@ class GetRefundRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_report_executionop.py b/src/gr4vy/models/get_report_executionop.py index 0720763e..46f992f8 100644 --- a/src/gr4vy/models/get_report_executionop.py +++ b/src/gr4vy/models/get_report_executionop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetReportExecutionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetReportExecutionRequestTypedDict(TypedDict): report_execution_id: str @@ -41,3 +58,19 @@ class GetReportExecutionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_reportop.py b/src/gr4vy/models/get_reportop.py index e7a8d756..e41d02a6 100644 --- a/src/gr4vy/models/get_reportop.py +++ b/src/gr4vy/models/get_reportop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetReportGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetReportRequestTypedDict(TypedDict): report_id: str @@ -41,3 +58,19 @@ class GetReportRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_three_ds_scenarioop.py b/src/gr4vy/models/get_three_ds_scenarioop.py new file mode 100644 index 00000000..23d81b76 --- /dev/null +++ b/src/gr4vy/models/get_three_ds_scenarioop.py @@ -0,0 +1,105 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenarios import ThreeDSecureScenarios, ThreeDSecureScenariosTypedDict +from gr4vy.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from gr4vy.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Callable, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetThreeDsScenarioGlobalsTypedDict(TypedDict): + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class GetThreeDsScenarioGlobals(BaseModel): + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class GetThreeDsScenarioRequestTypedDict(TypedDict): + cursor: NotRequired[Nullable[str]] + r"""A pointer to the page of results to return.""" + limit: NotRequired[int] + r"""The maximum number of items that are at returned.""" + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class GetThreeDsScenarioRequest(BaseModel): + cursor: Annotated[ + OptionalNullable[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = UNSET + r"""A pointer to the page of results to return.""" + + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 20 + r"""The maximum number of items that are at returned.""" + + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cursor", "limit", "merchant_account_id"]) + nullable_fields = set(["cursor"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class GetThreeDsScenarioResponseTypedDict(TypedDict): + result: ThreeDSecureScenariosTypedDict + + +class GetThreeDsScenarioResponse(BaseModel): + next: Callable[[], Optional[GetThreeDsScenarioResponse]] + + result: ThreeDSecureScenarios diff --git a/src/gr4vy/models/get_transaction_refundop.py b/src/gr4vy/models/get_transaction_refundop.py index 8e4488cb..8f620699 100644 --- a/src/gr4vy/models/get_transaction_refundop.py +++ b/src/gr4vy/models/get_transaction_refundop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetTransactionRefundGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTransactionRefundRequestTypedDict(TypedDict): transaction_id: str @@ -48,3 +65,19 @@ class GetTransactionRefundRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_transaction_settlementop.py b/src/gr4vy/models/get_transaction_settlementop.py index a1853eb7..7b5a8f74 100644 --- a/src/gr4vy/models/get_transaction_settlementop.py +++ b/src/gr4vy/models/get_transaction_settlementop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetTransactionSettlementGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTransactionSettlementRequestTypedDict(TypedDict): transaction_id: str @@ -48,3 +65,19 @@ class GetTransactionSettlementRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/get_transactionop.py b/src/gr4vy/models/get_transactionop.py index 098afef0..8d724712 100644 --- a/src/gr4vy/models/get_transactionop.py +++ b/src/gr4vy/models/get_transactionop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class GetTransactionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTransactionRequestTypedDict(TypedDict): transaction_id: str @@ -41,3 +58,19 @@ class GetTransactionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/giftcard.py b/src/gr4vy/models/giftcard.py index 596c6c3d..4bc3eef3 100644 --- a/src/gr4vy/models/giftcard.py +++ b/src/gr4vy/models/giftcard.py @@ -77,30 +77,25 @@ class GiftCard(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "expiration_date", "buyer"] - nullable_fields = ["expiration_date", "buyer"] - null_default_fields = [] - + optional_fields = set(["type", "expiration_date", "buyer"]) + nullable_fields = set(["expiration_date", "buyer"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/giftcardcreate.py b/src/gr4vy/models/giftcardcreate.py index da626c58..2bf02486 100644 --- a/src/gr4vy/models/giftcardcreate.py +++ b/src/gr4vy/models/giftcardcreate.py @@ -32,30 +32,25 @@ class GiftCardCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["buyer_id", "buyer_external_identifier"] - nullable_fields = ["buyer_id", "buyer_external_identifier"] - null_default_fields = [] - + optional_fields = set(["buyer_id", "buyer_external_identifier"]) + nullable_fields = set(["buyer_id", "buyer_external_identifier"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/giftcardredemption.py b/src/gr4vy/models/giftcardredemption.py index 0921cc2a..e0630d33 100644 --- a/src/gr4vy/models/giftcardredemption.py +++ b/src/gr4vy/models/giftcardredemption.py @@ -71,41 +71,40 @@ class GiftCardRedemption(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "gift_card_service_redemption_id", - "error_code", - "raw_error_code", - "raw_error_message", - ] - nullable_fields = [ - "gift_card_service_redemption_id", - "error_code", - "raw_error_code", - "raw_error_message", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "gift_card_service_redemption_id", + "error_code", + "raw_error_code", + "raw_error_message", + ] + ) + nullable_fields = set( + [ + "gift_card_service_redemption_id", + "error_code", + "raw_error_code", + "raw_error_message", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/giftcards.py b/src/gr4vy/models/giftcards.py index 26ab8706..989fd70d 100644 --- a/src/gr4vy/models/giftcards.py +++ b/src/gr4vy/models/giftcards.py @@ -34,30 +34,25 @@ class GiftCards(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/giftcardservice.py b/src/gr4vy/models/giftcardservice.py index a89250b1..4f5c845b 100644 --- a/src/gr4vy/models/giftcardservice.py +++ b/src/gr4vy/models/giftcardservice.py @@ -2,9 +2,10 @@ from __future__ import annotations from .giftcardserviceprovider import GiftCardServiceProvider -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -37,3 +38,19 @@ class GiftCardService(BaseModel): pydantic.Field(alias="type"), ] = "gift-card-service" r"""Always `gift-card-service`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/giftcardsummary.py b/src/gr4vy/models/giftcardsummary.py index beb33429..0b183a5b 100644 --- a/src/gr4vy/models/giftcardsummary.py +++ b/src/gr4vy/models/giftcardsummary.py @@ -83,47 +83,46 @@ class GiftCardSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "id", - "currency", - "expiration_date", - "balance", - "balance_error_code", - "balance_raw_error_code", - "balance_raw_error_message", - ] - nullable_fields = [ - "id", - "currency", - "expiration_date", - "balance", - "balance_error_code", - "balance_raw_error_code", - "balance_raw_error_message", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "id", + "currency", + "expiration_date", + "balance", + "balance_error_code", + "balance_raw_error_code", + "balance_raw_error_message", + ] + ) + nullable_fields = set( + [ + "id", + "currency", + "expiration_date", + "balance", + "balance_error_code", + "balance_raw_error_code", + "balance_raw_error_message", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/givingblockoptions.py b/src/gr4vy/models/givingblockoptions.py index 7099c44c..02394e3f 100644 --- a/src/gr4vy/models/givingblockoptions.py +++ b/src/gr4vy/models/givingblockoptions.py @@ -20,30 +20,25 @@ class GivingBlockOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["defaultCryptocurrency"] - nullable_fields = ["defaultCryptocurrency"] - null_default_fields = [] - + optional_fields = set(["defaultCryptocurrency"]) + nullable_fields = set(["defaultCryptocurrency"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/googlepayassurancedetails.py b/src/gr4vy/models/googlepayassurancedetails.py index 8184e355..3f07edce 100644 --- a/src/gr4vy/models/googlepayassurancedetails.py +++ b/src/gr4vy/models/googlepayassurancedetails.py @@ -26,30 +26,25 @@ class GooglePayAssuranceDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["account_verified", "card_holder_authenticated"] - nullable_fields = ["account_verified", "card_holder_authenticated"] - null_default_fields = [] - + optional_fields = set(["account_verified", "card_holder_authenticated"]) + nullable_fields = set(["account_verified", "card_holder_authenticated"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/googlepayfpanpaymentmethodcreate.py b/src/gr4vy/models/googlepayfpanpaymentmethodcreate.py index 32080d81..091f3aeb 100644 --- a/src/gr4vy/models/googlepayfpanpaymentmethodcreate.py +++ b/src/gr4vy/models/googlepayfpanpaymentmethodcreate.py @@ -71,44 +71,43 @@ class GooglePayFPANPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "redirect_url", - "security_code", - ] - nullable_fields = [ - "buyer_external_identifier", - "buyer_id", - "external_identifier", - "card_type", - "redirect_url", - "security_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "redirect_url", + "security_code", + ] + ) + nullable_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "external_identifier", + "card_type", + "redirect_url", + "security_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/googlepaypaymentmethodcreate.py b/src/gr4vy/models/googlepaypaymentmethodcreate.py index c222ced4..fcea44a1 100644 --- a/src/gr4vy/models/googlepaypaymentmethodcreate.py +++ b/src/gr4vy/models/googlepaypaymentmethodcreate.py @@ -85,48 +85,47 @@ class GooglePayPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "cardholder_name", - "redirect_url", - "card_suffix", - "card_scheme", - "card_type", - "assurance_details", - ] - nullable_fields = [ - "buyer_external_identifier", - "buyer_id", - "cardholder_name", - "redirect_url", - "card_suffix", - "card_scheme", - "card_type", - "assurance_details", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "cardholder_name", + "redirect_url", + "card_suffix", + "card_scheme", + "card_type", + "assurance_details", + ] + ) + nullable_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "cardholder_name", + "redirect_url", + "card_suffix", + "card_scheme", + "card_type", + "assurance_details", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/guestbuyer.py b/src/gr4vy/models/guestbuyer.py index 83cce5ae..f7a141c9 100644 --- a/src/gr4vy/models/guestbuyer.py +++ b/src/gr4vy/models/guestbuyer.py @@ -39,42 +39,41 @@ class GuestBuyer(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "display_name", - "external_identifier", - "billing_details", - "account_number", - "shipping_details", - ] - nullable_fields = [ - "display_name", - "external_identifier", - "billing_details", - "account_number", - "shipping_details", - ] - null_default_fields = [] - + optional_fields = set( + [ + "display_name", + "external_identifier", + "billing_details", + "account_number", + "shipping_details", + ] + ) + nullable_fields = set( + [ + "display_name", + "external_identifier", + "billing_details", + "account_number", + "shipping_details", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/internal/globals.py b/src/gr4vy/models/internal/globals.py index 4740ca72..43bd76bd 100644 --- a/src/gr4vy/models/internal/globals.py +++ b/src/gr4vy/models/internal/globals.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,19 @@ class Globals(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/latitudeoptions.py b/src/gr4vy/models/latitudeoptions.py index 2c232fff..50417894 100644 --- a/src/gr4vy/models/latitudeoptions.py +++ b/src/gr4vy/models/latitudeoptions.py @@ -17,30 +17,25 @@ class LatitudeOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["promotion_reference"] - nullable_fields = ["promotion_reference"] - null_default_fields = [] - + optional_fields = set(["promotion_reference"]) + nullable_fields = set(["promotion_reference"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_all_report_executionsop.py b/src/gr4vy/models/list_all_report_executionsop.py index da7cd279..7ef488f5 100644 --- a/src/gr4vy/models/list_all_report_executionsop.py +++ b/src/gr4vy/models/list_all_report_executionsop.py @@ -25,6 +25,22 @@ class ListAllReportExecutionsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListAllReportExecutionsRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -97,47 +113,46 @@ class ListAllReportExecutionsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cursor", - "limit", - "report_name", - "created_at_lte", - "created_at_gte", - "status", - "creator_id", - "merchant_account_id", - ] - nullable_fields = [ - "cursor", - "report_name", - "created_at_lte", - "created_at_gte", - "status", - "creator_id", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cursor", + "limit", + "report_name", + "created_at_lte", + "created_at_gte", + "status", + "creator_id", + "merchant_account_id", + ] + ) + nullable_fields = set( + [ + "cursor", + "report_name", + "created_at_lte", + "created_at_gte", + "status", + "creator_id", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_audit_logsop.py b/src/gr4vy/models/list_audit_logsop.py index 14d1c9ac..e5a744ba 100644 --- a/src/gr4vy/models/list_audit_logsop.py +++ b/src/gr4vy/models/list_audit_logsop.py @@ -24,6 +24,22 @@ class ListAuditLogsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListAuditLogsRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -80,38 +96,35 @@ class ListAuditLogsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cursor", - "limit", - "action", - "user_id", - "resource_type", - "merchant_account_id", - ] - nullable_fields = ["cursor", "action", "user_id", "resource_type"] - null_default_fields = [] - + optional_fields = set( + [ + "cursor", + "limit", + "action", + "user_id", + "resource_type", + "merchant_account_id", + ] + ) + nullable_fields = set(["cursor", "action", "user_id", "resource_type"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_buyer_gift_cardsop.py b/src/gr4vy/models/list_buyer_gift_cardsop.py index 410c7e75..64fde3c4 100644 --- a/src/gr4vy/models/list_buyer_gift_cardsop.py +++ b/src/gr4vy/models/list_buyer_gift_cardsop.py @@ -22,6 +22,22 @@ class ListBuyerGiftCardsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListBuyerGiftCardsRequestTypedDict(TypedDict): buyer_external_identifier: NotRequired[Nullable[str]] @@ -50,34 +66,27 @@ class ListBuyerGiftCardsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "merchant_account_id", - ] - nullable_fields = ["buyer_external_identifier", "buyer_id"] - null_default_fields = [] - + optional_fields = set( + ["buyer_external_identifier", "buyer_id", "merchant_account_id"] + ) + nullable_fields = set(["buyer_external_identifier", "buyer_id"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_buyer_payment_methodsop.py b/src/gr4vy/models/list_buyer_payment_methodsop.py index fafde5a0..97e8b2b9 100644 --- a/src/gr4vy/models/list_buyer_payment_methodsop.py +++ b/src/gr4vy/models/list_buyer_payment_methodsop.py @@ -35,6 +35,22 @@ class ListBuyerPaymentMethodsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + OrderBy = Union[ Literal[ @@ -113,44 +129,37 @@ class ListBuyerPaymentMethodsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_id", - "buyer_external_identifier", - "sort_by", - "order_by", - "country", - "currency", - "merchant_account_id", - ] - nullable_fields = [ - "buyer_id", - "buyer_external_identifier", - "sort_by", - "country", - "currency", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_id", + "buyer_external_identifier", + "sort_by", + "order_by", + "country", + "currency", + "merchant_account_id", + ] + ) + nullable_fields = set( + ["buyer_id", "buyer_external_identifier", "sort_by", "country", "currency"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_buyer_shipping_detailsop.py b/src/gr4vy/models/list_buyer_shipping_detailsop.py index a453eeff..d8e96b1e 100644 --- a/src/gr4vy/models/list_buyer_shipping_detailsop.py +++ b/src/gr4vy/models/list_buyer_shipping_detailsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListBuyerShippingDetailsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListBuyerShippingDetailsRequestTypedDict(TypedDict): buyer_id: str @@ -41,3 +58,19 @@ class ListBuyerShippingDetailsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_buyersop.py b/src/gr4vy/models/list_buyersop.py index e36e17c4..a72fae5c 100644 --- a/src/gr4vy/models/list_buyersop.py +++ b/src/gr4vy/models/list_buyersop.py @@ -23,6 +23,22 @@ class ListBuyersGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListBuyersRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -71,37 +87,28 @@ class ListBuyersRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cursor", - "limit", - "search", - "external_identifier", - "merchant_account_id", - ] - nullable_fields = ["cursor", "search", "external_identifier"] - null_default_fields = [] - + optional_fields = set( + ["cursor", "limit", "search", "external_identifier", "merchant_account_id"] + ) + nullable_fields = set(["cursor", "search", "external_identifier"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_card_scheme_definitionsop.py b/src/gr4vy/models/list_card_scheme_definitionsop.py index 1e45efab..735c1d06 100644 --- a/src/gr4vy/models/list_card_scheme_definitionsop.py +++ b/src/gr4vy/models/list_card_scheme_definitionsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListCardSchemeDefinitionsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListCardSchemeDefinitionsRequestTypedDict(TypedDict): merchant_account_id: NotRequired[str] @@ -34,3 +51,19 @@ class ListCardSchemeDefinitionsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_digital_walletsop.py b/src/gr4vy/models/list_digital_walletsop.py index 487d8cd7..101dc05a 100644 --- a/src/gr4vy/models/list_digital_walletsop.py +++ b/src/gr4vy/models/list_digital_walletsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListDigitalWalletsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListDigitalWalletsRequestTypedDict(TypedDict): merchant_account_id: NotRequired[str] @@ -34,3 +51,19 @@ class ListDigitalWalletsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_gift_card_balancesop.py b/src/gr4vy/models/list_gift_card_balancesop.py index cfee5a70..189d9cf5 100644 --- a/src/gr4vy/models/list_gift_card_balancesop.py +++ b/src/gr4vy/models/list_gift_card_balancesop.py @@ -5,9 +5,10 @@ GiftCardBalanceRequest, GiftCardBalanceRequestTypedDict, ) -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,6 +26,22 @@ class ListGiftCardBalancesGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListGiftCardBalancesRequestTypedDict(TypedDict): gift_card_balance_request: GiftCardBalanceRequestTypedDict @@ -44,3 +61,19 @@ class ListGiftCardBalancesRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_gift_cardsop.py b/src/gr4vy/models/list_gift_cardsop.py index 430670be..6a9253d1 100644 --- a/src/gr4vy/models/list_gift_cardsop.py +++ b/src/gr4vy/models/list_gift_cardsop.py @@ -23,6 +23,22 @@ class ListGiftCardsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListGiftCardsRequestTypedDict(TypedDict): buyer_external_identifier: NotRequired[Nullable[str]] @@ -63,37 +79,34 @@ class ListGiftCardsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_external_identifier", - "buyer_id", - "cursor", - "limit", - "merchant_account_id", - ] - nullable_fields = ["buyer_external_identifier", "buyer_id", "cursor"] - null_default_fields = [] - + optional_fields = set( + [ + "buyer_external_identifier", + "buyer_id", + "cursor", + "limit", + "merchant_account_id", + ] + ) + nullable_fields = set(["buyer_external_identifier", "buyer_id", "cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_merchant_accountsop.py b/src/gr4vy/models/list_merchant_accountsop.py index 31fdcceb..64db8f95 100644 --- a/src/gr4vy/models/list_merchant_accountsop.py +++ b/src/gr4vy/models/list_merchant_accountsop.py @@ -39,31 +39,26 @@ class ListMerchantAccountsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cursor", "limit", "search"] - nullable_fields = ["cursor", "search"] - null_default_fields = [] - + optional_fields = set(["cursor", "limit", "search"]) + nullable_fields = set(["cursor", "search"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_payment_linksop.py b/src/gr4vy/models/list_payment_linksop.py index 70a7983a..51649d1c 100644 --- a/src/gr4vy/models/list_payment_linksop.py +++ b/src/gr4vy/models/list_payment_linksop.py @@ -23,6 +23,22 @@ class ListPaymentLinksGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListPaymentLinksRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -63,31 +79,28 @@ class ListPaymentLinksRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cursor", "limit", "buyer_search", "merchant_account_id"] - nullable_fields = ["cursor", "buyer_search"] - null_default_fields = [] - + optional_fields = set( + ["cursor", "limit", "buyer_search", "merchant_account_id"] + ) + nullable_fields = set(["cursor", "buyer_search"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_payment_method_network_tokensop.py b/src/gr4vy/models/list_payment_method_network_tokensop.py index f923e477..39efe07b 100644 --- a/src/gr4vy/models/list_payment_method_network_tokensop.py +++ b/src/gr4vy/models/list_payment_method_network_tokensop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListPaymentMethodNetworkTokensGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListPaymentMethodNetworkTokensRequestTypedDict(TypedDict): payment_method_id: str @@ -41,3 +58,19 @@ class ListPaymentMethodNetworkTokensRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_payment_method_payment_service_tokensop.py b/src/gr4vy/models/list_payment_method_payment_service_tokensop.py index 817d9d56..009eacc1 100644 --- a/src/gr4vy/models/list_payment_method_payment_service_tokensop.py +++ b/src/gr4vy/models/list_payment_method_payment_service_tokensop.py @@ -27,6 +27,22 @@ class ListPaymentMethodPaymentServiceTokensGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListPaymentMethodPaymentServiceTokensRequestTypedDict(TypedDict): payment_method_id: str @@ -58,30 +74,25 @@ class ListPaymentMethodPaymentServiceTokensRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["payment_service_id", "merchant_account_id"] - nullable_fields = ["payment_service_id"] - null_default_fields = [] - + optional_fields = set(["payment_service_id", "merchant_account_id"]) + nullable_fields = set(["payment_service_id"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_payment_methodsop.py b/src/gr4vy/models/list_payment_methodsop.py index 3c656b3f..256d012d 100644 --- a/src/gr4vy/models/list_payment_methodsop.py +++ b/src/gr4vy/models/list_payment_methodsop.py @@ -24,6 +24,22 @@ class ListPaymentMethodsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListPaymentMethodsRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -86,45 +102,44 @@ class ListPaymentMethodsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cursor", - "limit", - "buyer_id", - "buyer_external_identifier", - "status", - "external_identifier", - "merchant_account_id", - ] - nullable_fields = [ - "cursor", - "buyer_id", - "buyer_external_identifier", - "status", - "external_identifier", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cursor", + "limit", + "buyer_id", + "buyer_external_identifier", + "status", + "external_identifier", + "merchant_account_id", + ] + ) + nullable_fields = set( + [ + "cursor", + "buyer_id", + "buyer_external_identifier", + "status", + "external_identifier", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_payment_optionsop.py b/src/gr4vy/models/list_payment_optionsop.py index 0bc1b017..57132030 100644 --- a/src/gr4vy/models/list_payment_optionsop.py +++ b/src/gr4vy/models/list_payment_optionsop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .paymentoptionrequest import PaymentOptionRequest, PaymentOptionRequestTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class ListPaymentOptionsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListPaymentOptionsRequestTypedDict(TypedDict): payment_option_request: PaymentOptionRequestTypedDict @@ -41,3 +58,19 @@ class ListPaymentOptionsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_payment_service_definitionsop.py b/src/gr4vy/models/list_payment_service_definitionsop.py index 02b911cc..cd3f8ea4 100644 --- a/src/gr4vy/models/list_payment_service_definitionsop.py +++ b/src/gr4vy/models/list_payment_service_definitionsop.py @@ -34,31 +34,26 @@ class ListPaymentServiceDefinitionsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cursor", "limit"] - nullable_fields = ["cursor"] - null_default_fields = [] - + optional_fields = set(["cursor", "limit"]) + nullable_fields = set(["cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_payment_servicesop.py b/src/gr4vy/models/list_payment_servicesop.py index 76b8fb76..dc1a6b18 100644 --- a/src/gr4vy/models/list_payment_servicesop.py +++ b/src/gr4vy/models/list_payment_servicesop.py @@ -24,6 +24,22 @@ class ListPaymentServicesGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListPaymentServicesRequestTypedDict(TypedDict): method: NotRequired[Nullable[Method]] @@ -72,37 +88,28 @@ class ListPaymentServicesRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "method", - "cursor", - "limit", - "deleted", - "merchant_account_id", - ] - nullable_fields = ["method", "cursor", "deleted"] - null_default_fields = [] - + optional_fields = set( + ["method", "cursor", "limit", "deleted", "merchant_account_id"] + ) + nullable_fields = set(["method", "cursor", "deleted"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_payoutsop.py b/src/gr4vy/models/list_payoutsop.py index cf823401..3a2f7fe8 100644 --- a/src/gr4vy/models/list_payoutsop.py +++ b/src/gr4vy/models/list_payoutsop.py @@ -23,6 +23,22 @@ class ListPayoutsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListPayoutsRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -55,31 +71,26 @@ class ListPayoutsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cursor", "limit", "merchant_account_id"] - nullable_fields = ["cursor"] - null_default_fields = [] - + optional_fields = set(["cursor", "limit", "merchant_account_id"]) + nullable_fields = set(["cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_report_executionsop.py b/src/gr4vy/models/list_report_executionsop.py index 2b4b6d95..05effbe3 100644 --- a/src/gr4vy/models/list_report_executionsop.py +++ b/src/gr4vy/models/list_report_executionsop.py @@ -28,6 +28,22 @@ class ListReportExecutionsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListReportExecutionsRequestTypedDict(TypedDict): report_id: str @@ -67,31 +83,26 @@ class ListReportExecutionsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cursor", "limit", "merchant_account_id"] - nullable_fields = ["cursor"] - null_default_fields = [] - + optional_fields = set(["cursor", "limit", "merchant_account_id"]) + nullable_fields = set(["cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_reportsop.py b/src/gr4vy/models/list_reportsop.py index c9fce0f8..0c880c28 100644 --- a/src/gr4vy/models/list_reportsop.py +++ b/src/gr4vy/models/list_reportsop.py @@ -24,6 +24,22 @@ class ListReportsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListReportsRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -80,38 +96,35 @@ class ListReportsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cursor", - "limit", - "schedule", - "schedule_enabled", - "name", - "merchant_account_id", - ] - nullable_fields = ["cursor", "schedule", "schedule_enabled", "name"] - null_default_fields = [] - + optional_fields = set( + [ + "cursor", + "limit", + "schedule", + "schedule_enabled", + "name", + "merchant_account_id", + ] + ) + nullable_fields = set(["cursor", "schedule", "schedule_enabled", "name"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_transaction_actionsop.py b/src/gr4vy/models/list_transaction_actionsop.py index 631e9493..b13f257e 100644 --- a/src/gr4vy/models/list_transaction_actionsop.py +++ b/src/gr4vy/models/list_transaction_actionsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListTransactionActionsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTransactionActionsRequestTypedDict(TypedDict): transaction_id: str @@ -41,3 +58,19 @@ class ListTransactionActionsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_transaction_eventsop.py b/src/gr4vy/models/list_transaction_eventsop.py index 65d04a7f..293147d8 100644 --- a/src/gr4vy/models/list_transaction_eventsop.py +++ b/src/gr4vy/models/list_transaction_eventsop.py @@ -28,6 +28,22 @@ class ListTransactionEventsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTransactionEventsRequestTypedDict(TypedDict): transaction_id: str @@ -67,31 +83,26 @@ class ListTransactionEventsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cursor", "limit", "merchant_account_id"] - nullable_fields = ["cursor"] - null_default_fields = [] - + optional_fields = set(["cursor", "limit", "merchant_account_id"]) + nullable_fields = set(["cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/list_transaction_refundsop.py b/src/gr4vy/models/list_transaction_refundsop.py index 750bf360..bf60a90c 100644 --- a/src/gr4vy/models/list_transaction_refundsop.py +++ b/src/gr4vy/models/list_transaction_refundsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListTransactionRefundsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTransactionRefundsRequestTypedDict(TypedDict): transaction_id: str @@ -41,3 +58,19 @@ class ListTransactionRefundsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_transaction_settlementsop.py b/src/gr4vy/models/list_transaction_settlementsop.py index 34b717e6..7589be20 100644 --- a/src/gr4vy/models/list_transaction_settlementsop.py +++ b/src/gr4vy/models/list_transaction_settlementsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListTransactionSettlementsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTransactionSettlementsRequestTypedDict(TypedDict): transaction_id: str @@ -41,3 +58,19 @@ class ListTransactionSettlementsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/list_transactionsop.py b/src/gr4vy/models/list_transactionsop.py index 8591228f..5e24616d 100644 --- a/src/gr4vy/models/list_transactionsop.py +++ b/src/gr4vy/models/list_transactionsop.py @@ -27,6 +27,22 @@ class ListTransactionsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTransactionsRequestTypedDict(TypedDict): cursor: NotRequired[Nullable[str]] @@ -373,121 +389,120 @@ class ListTransactionsRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cursor", - "limit", - "created_at_lte", - "created_at_gte", - "updated_at_lte", - "updated_at_gte", - "search", - "buyer_external_identifier", - "buyer_id", - "buyer_email_address", - "ip_address", - "status", - "id", - "payment_service_transaction_id", - "external_identifier", - "metadata", - "amount_eq", - "amount_lte", - "amount_gte", - "currency", - "country", - "payment_service_id", - "payment_method_id", - "payment_method_label", - "payment_method_scheme", - "payment_method_country", - "payment_method_fingerprint", - "method", - "error_code", - "has_refunds", - "pending_review", - "checkout_session_id", - "reconciliation_id", - "has_gift_card_redemptions", - "gift_card_id", - "gift_card_last4", - "has_settlements", - "payment_method_bin", - "payment_source", - "is_subsequent_payment", - "merchant_initiated", - "used_3ds", - "disputed", - "buyer_search", - "merchant_account_id", - ] - nullable_fields = [ - "cursor", - "created_at_lte", - "created_at_gte", - "updated_at_lte", - "updated_at_gte", - "search", - "buyer_external_identifier", - "buyer_id", - "buyer_email_address", - "ip_address", - "status", - "id", - "payment_service_transaction_id", - "external_identifier", - "metadata", - "amount_eq", - "amount_lte", - "amount_gte", - "currency", - "country", - "payment_service_id", - "payment_method_id", - "payment_method_label", - "payment_method_scheme", - "payment_method_country", - "payment_method_fingerprint", - "method", - "error_code", - "has_refunds", - "pending_review", - "checkout_session_id", - "reconciliation_id", - "has_gift_card_redemptions", - "gift_card_id", - "gift_card_last4", - "has_settlements", - "payment_method_bin", - "payment_source", - "is_subsequent_payment", - "merchant_initiated", - "used_3ds", - "disputed", - "buyer_search", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cursor", + "limit", + "created_at_lte", + "created_at_gte", + "updated_at_lte", + "updated_at_gte", + "search", + "buyer_external_identifier", + "buyer_id", + "buyer_email_address", + "ip_address", + "status", + "id", + "payment_service_transaction_id", + "external_identifier", + "metadata", + "amount_eq", + "amount_lte", + "amount_gte", + "currency", + "country", + "payment_service_id", + "payment_method_id", + "payment_method_label", + "payment_method_scheme", + "payment_method_country", + "payment_method_fingerprint", + "method", + "error_code", + "has_refunds", + "pending_review", + "checkout_session_id", + "reconciliation_id", + "has_gift_card_redemptions", + "gift_card_id", + "gift_card_last4", + "has_settlements", + "payment_method_bin", + "payment_source", + "is_subsequent_payment", + "merchant_initiated", + "used_3ds", + "disputed", + "buyer_search", + "merchant_account_id", + ] + ) + nullable_fields = set( + [ + "cursor", + "created_at_lte", + "created_at_gte", + "updated_at_lte", + "updated_at_gte", + "search", + "buyer_external_identifier", + "buyer_id", + "buyer_email_address", + "ip_address", + "status", + "id", + "payment_service_transaction_id", + "external_identifier", + "metadata", + "amount_eq", + "amount_lte", + "amount_gte", + "currency", + "country", + "payment_service_id", + "payment_method_id", + "payment_method_label", + "payment_method_scheme", + "payment_method_country", + "payment_method_fingerprint", + "method", + "error_code", + "has_refunds", + "pending_review", + "checkout_session_id", + "reconciliation_id", + "has_gift_card_redemptions", + "gift_card_id", + "gift_card_last4", + "has_settlements", + "payment_method_bin", + "payment_source", + "is_subsequent_payment", + "merchant_initiated", + "used_3ds", + "disputed", + "buyer_search", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/mattildatapioptions.py b/src/gr4vy/models/mattildatapioptions.py index e1aa0886..d47c2de1 100644 --- a/src/gr4vy/models/mattildatapioptions.py +++ b/src/gr4vy/models/mattildatapioptions.py @@ -17,30 +17,25 @@ class MattildaTapiOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["payment_method_expires_at"] - nullable_fields = ["payment_method_expires_at"] - null_default_fields = [] - + optional_fields = set(["payment_method_expires_at"]) + nullable_fields = set(["payment_method_expires_at"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/merchantaccount.py b/src/gr4vy/models/merchantaccount.py index b041adfc..1d4be7c5 100644 --- a/src/gr4vy/models/merchantaccount.py +++ b/src/gr4vy/models/merchantaccount.py @@ -134,64 +134,63 @@ class MerchantAccount(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "loon_client_key", - "loon_secret_key", - "loon_accepted_schemes", - "account_updater_request_encryption_key", - "account_updater_request_encryption_key_id", - "account_updater_response_decryption_key", - "account_updater_response_decryption_key_id", - "over_capture_amount", - "over_capture_percentage", - "visa_network_tokens_requestor_id", - "visa_network_tokens_app_id", - "amex_network_tokens_requestor_id", - "amex_network_tokens_app_id", - "mastercard_network_tokens_requestor_id", - "mastercard_network_tokens_app_id", - "async_network_tokens_enabled", - ] - nullable_fields = [ - "loon_client_key", - "loon_secret_key", - "loon_accepted_schemes", - "account_updater_request_encryption_key", - "account_updater_request_encryption_key_id", - "account_updater_response_decryption_key", - "account_updater_response_decryption_key_id", - "over_capture_amount", - "over_capture_percentage", - "visa_network_tokens_requestor_id", - "visa_network_tokens_app_id", - "amex_network_tokens_requestor_id", - "amex_network_tokens_app_id", - "mastercard_network_tokens_requestor_id", - "mastercard_network_tokens_app_id", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "loon_client_key", + "loon_secret_key", + "loon_accepted_schemes", + "account_updater_request_encryption_key", + "account_updater_request_encryption_key_id", + "account_updater_response_decryption_key", + "account_updater_response_decryption_key_id", + "over_capture_amount", + "over_capture_percentage", + "visa_network_tokens_requestor_id", + "visa_network_tokens_app_id", + "amex_network_tokens_requestor_id", + "amex_network_tokens_app_id", + "mastercard_network_tokens_requestor_id", + "mastercard_network_tokens_app_id", + "async_network_tokens_enabled", + ] + ) + nullable_fields = set( + [ + "loon_client_key", + "loon_secret_key", + "loon_accepted_schemes", + "account_updater_request_encryption_key", + "account_updater_request_encryption_key_id", + "account_updater_response_decryption_key", + "account_updater_response_decryption_key_id", + "over_capture_amount", + "over_capture_percentage", + "visa_network_tokens_requestor_id", + "visa_network_tokens_app_id", + "amex_network_tokens_requestor_id", + "amex_network_tokens_app_id", + "mastercard_network_tokens_requestor_id", + "mastercard_network_tokens_app_id", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/merchantaccountcreate.py b/src/gr4vy/models/merchantaccountcreate.py index 411ed50e..a3d79d93 100644 --- a/src/gr4vy/models/merchantaccountcreate.py +++ b/src/gr4vy/models/merchantaccountcreate.py @@ -109,64 +109,63 @@ class MerchantAccountCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "account_updater_enabled", - "account_updater_request_encryption_key", - "account_updater_request_encryption_key_id", - "account_updater_response_decryption_key", - "account_updater_response_decryption_key_id", - "over_capture_amount", - "over_capture_percentage", - "loon_client_key", - "loon_secret_key", - "loon_accepted_schemes", - "visa_network_tokens_requestor_id", - "visa_network_tokens_app_id", - "amex_network_tokens_requestor_id", - "amex_network_tokens_app_id", - "mastercard_network_tokens_requestor_id", - "mastercard_network_tokens_app_id", - "async_network_tokens_enabled", - ] - nullable_fields = [ - "account_updater_request_encryption_key", - "account_updater_request_encryption_key_id", - "account_updater_response_decryption_key", - "account_updater_response_decryption_key_id", - "over_capture_amount", - "over_capture_percentage", - "loon_client_key", - "loon_secret_key", - "loon_accepted_schemes", - "visa_network_tokens_requestor_id", - "visa_network_tokens_app_id", - "amex_network_tokens_requestor_id", - "amex_network_tokens_app_id", - "mastercard_network_tokens_requestor_id", - "mastercard_network_tokens_app_id", - ] - null_default_fields = [] - + optional_fields = set( + [ + "account_updater_enabled", + "account_updater_request_encryption_key", + "account_updater_request_encryption_key_id", + "account_updater_response_decryption_key", + "account_updater_response_decryption_key_id", + "over_capture_amount", + "over_capture_percentage", + "loon_client_key", + "loon_secret_key", + "loon_accepted_schemes", + "visa_network_tokens_requestor_id", + "visa_network_tokens_app_id", + "amex_network_tokens_requestor_id", + "amex_network_tokens_app_id", + "mastercard_network_tokens_requestor_id", + "mastercard_network_tokens_app_id", + "async_network_tokens_enabled", + ] + ) + nullable_fields = set( + [ + "account_updater_request_encryption_key", + "account_updater_request_encryption_key_id", + "account_updater_response_decryption_key", + "account_updater_response_decryption_key_id", + "over_capture_amount", + "over_capture_percentage", + "loon_client_key", + "loon_secret_key", + "loon_accepted_schemes", + "visa_network_tokens_requestor_id", + "visa_network_tokens_app_id", + "amex_network_tokens_requestor_id", + "amex_network_tokens_app_id", + "mastercard_network_tokens_requestor_id", + "mastercard_network_tokens_app_id", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/merchantaccounts.py b/src/gr4vy/models/merchantaccounts.py index 01b296e0..acc21aaa 100644 --- a/src/gr4vy/models/merchantaccounts.py +++ b/src/gr4vy/models/merchantaccounts.py @@ -34,30 +34,25 @@ class MerchantAccounts(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/merchantaccountupdate.py b/src/gr4vy/models/merchantaccountupdate.py index fbff0772..0e1f4ba8 100644 --- a/src/gr4vy/models/merchantaccountupdate.py +++ b/src/gr4vy/models/merchantaccountupdate.py @@ -104,66 +104,65 @@ class MerchantAccountUpdate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "account_updater_enabled", - "account_updater_request_encryption_key", - "account_updater_request_encryption_key_id", - "account_updater_response_decryption_key", - "account_updater_response_decryption_key_id", - "over_capture_amount", - "over_capture_percentage", - "loon_client_key", - "loon_secret_key", - "loon_accepted_schemes", - "visa_network_tokens_requestor_id", - "visa_network_tokens_app_id", - "amex_network_tokens_requestor_id", - "amex_network_tokens_app_id", - "mastercard_network_tokens_requestor_id", - "mastercard_network_tokens_app_id", - "async_network_tokens_enabled", - "display_name", - ] - nullable_fields = [ - "account_updater_request_encryption_key", - "account_updater_request_encryption_key_id", - "account_updater_response_decryption_key", - "account_updater_response_decryption_key_id", - "over_capture_amount", - "over_capture_percentage", - "loon_client_key", - "loon_secret_key", - "loon_accepted_schemes", - "visa_network_tokens_requestor_id", - "visa_network_tokens_app_id", - "amex_network_tokens_requestor_id", - "amex_network_tokens_app_id", - "mastercard_network_tokens_requestor_id", - "mastercard_network_tokens_app_id", - "display_name", - ] - null_default_fields = [] - + optional_fields = set( + [ + "account_updater_enabled", + "account_updater_request_encryption_key", + "account_updater_request_encryption_key_id", + "account_updater_response_decryption_key", + "account_updater_response_decryption_key_id", + "over_capture_amount", + "over_capture_percentage", + "loon_client_key", + "loon_secret_key", + "loon_accepted_schemes", + "visa_network_tokens_requestor_id", + "visa_network_tokens_app_id", + "amex_network_tokens_requestor_id", + "amex_network_tokens_app_id", + "mastercard_network_tokens_requestor_id", + "mastercard_network_tokens_app_id", + "async_network_tokens_enabled", + "display_name", + ] + ) + nullable_fields = set( + [ + "account_updater_request_encryption_key", + "account_updater_request_encryption_key_id", + "account_updater_response_decryption_key", + "account_updater_response_decryption_key_id", + "over_capture_amount", + "over_capture_percentage", + "loon_client_key", + "loon_secret_key", + "loon_accepted_schemes", + "visa_network_tokens_requestor_id", + "visa_network_tokens_app_id", + "amex_network_tokens_requestor_id", + "amex_network_tokens_app_id", + "mastercard_network_tokens_requestor_id", + "mastercard_network_tokens_app_id", + "display_name", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/mockcardmerchantadvicecodeoptions.py b/src/gr4vy/models/mockcardmerchantadvicecodeoptions.py index fe8647bf..7df75ec7 100644 --- a/src/gr4vy/models/mockcardmerchantadvicecodeoptions.py +++ b/src/gr4vy/models/mockcardmerchantadvicecodeoptions.py @@ -22,30 +22,25 @@ class MockCardMerchantAdviceCodeOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["result"] - nullable_fields = ["result", "account_number"] - null_default_fields = [] - + optional_fields = set(["result"]) + nullable_fields = set(["result", "account_number"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/mockcardoptions.py b/src/gr4vy/models/mockcardoptions.py index 76f2f41b..c7e3e725 100644 --- a/src/gr4vy/models/mockcardoptions.py +++ b/src/gr4vy/models/mockcardoptions.py @@ -28,30 +28,25 @@ class MockCardOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["merchant_advice_code", "skip_retry"] - nullable_fields = ["merchant_advice_code", "skip_retry"] - null_default_fields = [] - + optional_fields = set(["merchant_advice_code", "skip_retry"]) + nullable_fields = set(["merchant_advice_code", "skip_retry"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/networktoken.py b/src/gr4vy/models/networktoken.py index 08de8ef1..ea24c5ff 100644 --- a/src/gr4vy/models/networktoken.py +++ b/src/gr4vy/models/networktoken.py @@ -3,9 +3,10 @@ from __future__ import annotations from .networktokenstatus import NetworkTokenStatus from datetime import datetime -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -58,3 +59,19 @@ class NetworkToken(BaseModel): pydantic.Field(alias="type"), ] = "network-token" r"""Always `network-token`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/networktokencreate.py b/src/gr4vy/models/networktokencreate.py index d310b793..9f804c47 100644 --- a/src/gr4vy/models/networktokencreate.py +++ b/src/gr4vy/models/networktokencreate.py @@ -27,30 +27,25 @@ class NetworkTokenCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["security_code"] - nullable_fields = ["security_code"] - null_default_fields = [] - + optional_fields = set(["security_code"]) + nullable_fields = set(["security_code"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/networktokenpaymentmethodcreate.py b/src/gr4vy/models/networktokenpaymentmethodcreate.py index 80d1f7f9..d263f62a 100644 --- a/src/gr4vy/models/networktokenpaymentmethodcreate.py +++ b/src/gr4vy/models/networktokenpaymentmethodcreate.py @@ -88,46 +88,45 @@ class NetworkTokenPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cryptogram", - "redirect_url", - "card_source", - "card_scheme", - "card_suffix", - "cardholder_name", - "eci", - ] - nullable_fields = [ - "cryptogram", - "redirect_url", - "card_source", - "card_scheme", - "card_suffix", - "cardholder_name", - "eci", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cryptogram", + "redirect_url", + "card_source", + "card_scheme", + "card_suffix", + "cardholder_name", + "eci", + ] + ) + nullable_fields = set( + [ + "cryptogram", + "redirect_url", + "card_source", + "card_scheme", + "card_suffix", + "cardholder_name", + "eci", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/nuveiairlinedataoptions.py b/src/gr4vy/models/nuveiairlinedataoptions.py index d80f679c..36725791 100644 --- a/src/gr4vy/models/nuveiairlinedataoptions.py +++ b/src/gr4vy/models/nuveiairlinedataoptions.py @@ -27,30 +27,25 @@ class NuveiAirlineDataOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["seatClass", "isCardholderTraveling"] - nullable_fields = ["seatClass", "isCardholderTraveling"] - null_default_fields = [] - + optional_fields = set(["seatClass", "isCardholderTraveling"]) + nullable_fields = set(["seatClass", "isCardholderTraveling"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/nuveiidealoptions.py b/src/gr4vy/models/nuveiidealoptions.py index 7ef69edf..087924b0 100644 --- a/src/gr4vy/models/nuveiidealoptions.py +++ b/src/gr4vy/models/nuveiidealoptions.py @@ -20,30 +20,25 @@ class NuveiIDealOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["customData"] - nullable_fields = ["customData"] - null_default_fields = [] - + optional_fields = set(["customData"]) + nullable_fields = set(["customData"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/nuveioptions.py b/src/gr4vy/models/nuveioptions.py index 3946547b..21fe5992 100644 --- a/src/gr4vy/models/nuveioptions.py +++ b/src/gr4vy/models/nuveioptions.py @@ -31,30 +31,25 @@ class NuveiOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["customData", "airlineData"] - nullable_fields = ["customData", "airlineData"] - null_default_fields = [] - + optional_fields = set(["customData", "airlineData"]) + nullable_fields = set(["customData", "airlineData"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/nuveipseoptions.py b/src/gr4vy/models/nuveipseoptions.py index bd126d97..2b7d0e17 100644 --- a/src/gr4vy/models/nuveipseoptions.py +++ b/src/gr4vy/models/nuveipseoptions.py @@ -41,30 +41,25 @@ class NuveiPSEOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["userType", "userFisNumber", "fiscalNumber", "bankCode"] - nullable_fields = ["userType", "userFisNumber", "fiscalNumber", "bankCode"] - null_default_fields = [] - + optional_fields = set(["userType", "userFisNumber", "fiscalNumber", "bankCode"]) + nullable_fields = set(["userType", "userFisNumber", "fiscalNumber", "bankCode"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/oxxooptions.py b/src/gr4vy/models/oxxooptions.py index 9646893c..bb955a01 100644 --- a/src/gr4vy/models/oxxooptions.py +++ b/src/gr4vy/models/oxxooptions.py @@ -22,30 +22,25 @@ class OxxoOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["payment_method_expires_at", "approval_url"] - nullable_fields = ["payment_method_expires_at", "approval_url"] - null_default_fields = [] - + optional_fields = set(["payment_method_expires_at", "approval_url"]) + nullable_fields = set(["payment_method_expires_at", "approval_url"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentlink.py b/src/gr4vy/models/paymentlink.py index 51d0e1cb..093add8d 100644 --- a/src/gr4vy/models/paymentlink.py +++ b/src/gr4vy/models/paymentlink.py @@ -181,71 +181,70 @@ class PaymentLink(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "expires_at", - "external_identifier", - "statement_descriptor", - "locale", - "merchant_name", - "merchant_url", - "merchant_banner_url", - "merchant_color", - "merchant_message", - "merchant_terms_and_conditions_url", - "merchant_favicon_url", - "return_url", - "metadata", - "buyer", - "shipping_details", - "connection_options", - "store", - "buyer_id", - "installment_count", - ] - nullable_fields = [ - "expires_at", - "external_identifier", - "statement_descriptor", - "locale", - "merchant_name", - "merchant_url", - "merchant_banner_url", - "merchant_color", - "merchant_message", - "merchant_terms_and_conditions_url", - "merchant_favicon_url", - "return_url", - "cart_items", - "metadata", - "buyer", - "shipping_details", - "connection_options", - "buyer_id", - "installment_count", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "expires_at", + "external_identifier", + "statement_descriptor", + "locale", + "merchant_name", + "merchant_url", + "merchant_banner_url", + "merchant_color", + "merchant_message", + "merchant_terms_and_conditions_url", + "merchant_favicon_url", + "return_url", + "metadata", + "buyer", + "shipping_details", + "connection_options", + "store", + "buyer_id", + "installment_count", + ] + ) + nullable_fields = set( + [ + "expires_at", + "external_identifier", + "statement_descriptor", + "locale", + "merchant_name", + "merchant_url", + "merchant_banner_url", + "merchant_color", + "merchant_message", + "merchant_terms_and_conditions_url", + "merchant_favicon_url", + "return_url", + "cart_items", + "metadata", + "buyer", + "shipping_details", + "connection_options", + "buyer_id", + "installment_count", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentlinkcreate.py b/src/gr4vy/models/paymentlinkcreate.py index 34536479..ee5bd6ee 100644 --- a/src/gr4vy/models/paymentlinkcreate.py +++ b/src/gr4vy/models/paymentlinkcreate.py @@ -141,71 +141,70 @@ class PaymentLinkCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer", - "expires_at", - "connection_options", - "external_identifier", - "statement_descriptor", - "locale", - "merchant_name", - "merchant_url", - "merchant_banner_url", - "merchant_color", - "merchant_message", - "merchant_terms_and_conditions_url", - "merchant_favicon_url", - "intent", - "return_url", - "cart_items", - "metadata", - "payment_source", - "store", - "buyer_id", - "installment_count", - ] - nullable_fields = [ - "buyer", - "expires_at", - "connection_options", - "external_identifier", - "statement_descriptor", - "locale", - "merchant_name", - "merchant_url", - "merchant_banner_url", - "merchant_color", - "merchant_message", - "merchant_terms_and_conditions_url", - "merchant_favicon_url", - "return_url", - "cart_items", - "metadata", - "buyer_id", - "installment_count", - ] - null_default_fields = [] - + optional_fields = set( + [ + "buyer", + "expires_at", + "connection_options", + "external_identifier", + "statement_descriptor", + "locale", + "merchant_name", + "merchant_url", + "merchant_banner_url", + "merchant_color", + "merchant_message", + "merchant_terms_and_conditions_url", + "merchant_favicon_url", + "intent", + "return_url", + "cart_items", + "metadata", + "payment_source", + "store", + "buyer_id", + "installment_count", + ] + ) + nullable_fields = set( + [ + "buyer", + "expires_at", + "connection_options", + "external_identifier", + "statement_descriptor", + "locale", + "merchant_name", + "merchant_url", + "merchant_banner_url", + "merchant_color", + "merchant_message", + "merchant_terms_and_conditions_url", + "merchant_favicon_url", + "return_url", + "cart_items", + "metadata", + "buyer_id", + "installment_count", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentlinks.py b/src/gr4vy/models/paymentlinks.py index c8842c0f..918a3d1c 100644 --- a/src/gr4vy/models/paymentlinks.py +++ b/src/gr4vy/models/paymentlinks.py @@ -34,30 +34,25 @@ class PaymentLinks(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentmethod.py b/src/gr4vy/models/paymentmethod.py index d8b97781..f954fe24 100644 --- a/src/gr4vy/models/paymentmethod.py +++ b/src/gr4vy/models/paymentmethod.py @@ -163,63 +163,62 @@ class PaymentMethod(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "approval_url", - "country", - "currency", - "details", - "expiration_date", - "fingerprint", - "label", - "last_replaced_at", - "mode", - "scheme", - "additional_schemes", - "cit_last_used_at", - "last_used_at", - "buyer", - "external_identifier", - ] - nullable_fields = [ - "approval_url", - "country", - "currency", - "details", - "expiration_date", - "fingerprint", - "label", - "last_replaced_at", - "mode", - "scheme", - "additional_schemes", - "cit_last_used_at", - "last_used_at", - "buyer", - "external_identifier", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "approval_url", + "country", + "currency", + "details", + "expiration_date", + "fingerprint", + "label", + "last_replaced_at", + "mode", + "scheme", + "additional_schemes", + "cit_last_used_at", + "last_used_at", + "buyer", + "external_identifier", + ] + ) + nullable_fields = set( + [ + "approval_url", + "country", + "currency", + "details", + "expiration_date", + "fingerprint", + "label", + "last_replaced_at", + "mode", + "scheme", + "additional_schemes", + "cit_last_used_at", + "last_used_at", + "buyer", + "external_identifier", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentmethodcard.py b/src/gr4vy/models/paymentmethodcard.py index 1d82cd4d..1351e3d7 100644 --- a/src/gr4vy/models/paymentmethodcard.py +++ b/src/gr4vy/models/paymentmethodcard.py @@ -45,30 +45,25 @@ class PaymentMethodCard(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["method", "card_scheme", "external_identifier"] - nullable_fields = ["card_scheme", "external_identifier"] - null_default_fields = [] - + optional_fields = set(["method", "card_scheme", "external_identifier"]) + nullable_fields = set(["card_scheme", "external_identifier"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentmethoddetailscard.py b/src/gr4vy/models/paymentmethoddetailscard.py index a46e4fec..7d60e8da 100644 --- a/src/gr4vy/models/paymentmethoddetailscard.py +++ b/src/gr4vy/models/paymentmethoddetailscard.py @@ -22,30 +22,25 @@ class PaymentMethodDetailsCard(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["bin", "card_type", "card_issuer_name"] - nullable_fields = ["bin", "card_type", "card_issuer_name"] - null_default_fields = [] - + optional_fields = set(["bin", "card_type", "card_issuer_name"]) + nullable_fields = set(["bin", "card_type", "card_issuer_name"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentmethods.py b/src/gr4vy/models/paymentmethods.py index 7db5feb0..7f1d7963 100644 --- a/src/gr4vy/models/paymentmethods.py +++ b/src/gr4vy/models/paymentmethods.py @@ -34,30 +34,25 @@ class PaymentMethods(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentmethodstoredcard.py b/src/gr4vy/models/paymentmethodstoredcard.py index e0ba55c4..9969c3fb 100644 --- a/src/gr4vy/models/paymentmethodstoredcard.py +++ b/src/gr4vy/models/paymentmethodstoredcard.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -25,3 +26,19 @@ class PaymentMethodStoredCard(BaseModel): pydantic.Field(alias="method"), ] = "id" r"""Set to `id` to use a stored card.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["method"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/paymentmethodsummary.py b/src/gr4vy/models/paymentmethodsummary.py index 465b9560..4bc9cc63 100644 --- a/src/gr4vy/models/paymentmethodsummary.py +++ b/src/gr4vy/models/paymentmethodsummary.py @@ -138,59 +138,58 @@ class PaymentMethodSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "approval_url", - "country", - "currency", - "details", - "expiration_date", - "fingerprint", - "label", - "last_replaced_at", - "mode", - "scheme", - "additional_schemes", - "cit_last_used_at", - "last_used_at", - ] - nullable_fields = [ - "approval_url", - "country", - "currency", - "details", - "expiration_date", - "fingerprint", - "label", - "last_replaced_at", - "mode", - "scheme", - "additional_schemes", - "cit_last_used_at", - "last_used_at", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "approval_url", + "country", + "currency", + "details", + "expiration_date", + "fingerprint", + "label", + "last_replaced_at", + "mode", + "scheme", + "additional_schemes", + "cit_last_used_at", + "last_used_at", + ] + ) + nullable_fields = set( + [ + "approval_url", + "country", + "currency", + "details", + "expiration_date", + "fingerprint", + "label", + "last_replaced_at", + "mode", + "scheme", + "additional_schemes", + "cit_last_used_at", + "last_used_at", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentoption.py b/src/gr4vy/models/paymentoption.py index 34fe11fb..c594cc23 100644 --- a/src/gr4vy/models/paymentoption.py +++ b/src/gr4vy/models/paymentoption.py @@ -74,30 +74,25 @@ class PaymentOption(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "icon_url", "label", "context"] - nullable_fields = ["icon_url", "label", "context"] - null_default_fields = [] - + optional_fields = set(["type", "icon_url", "label", "context"]) + nullable_fields = set(["icon_url", "label", "context"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentoptioncontext.py b/src/gr4vy/models/paymentoptioncontext.py index 775e3dae..95a9b028 100644 --- a/src/gr4vy/models/paymentoptioncontext.py +++ b/src/gr4vy/models/paymentoptioncontext.py @@ -45,30 +45,25 @@ class PaymentOptionContext(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["approval_ui", "required_fields"] - nullable_fields = ["approval_ui", "required_fields"] - null_default_fields = [] - + optional_fields = set(["approval_ui", "required_fields"]) + nullable_fields = set(["approval_ui", "required_fields"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentoptioncontextapprovalui.py b/src/gr4vy/models/paymentoptioncontextapprovalui.py index a042dc85..86111f74 100644 --- a/src/gr4vy/models/paymentoptioncontextapprovalui.py +++ b/src/gr4vy/models/paymentoptioncontextapprovalui.py @@ -18,30 +18,25 @@ class PaymentOptionContextApprovalUI(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["height", "width"] - nullable_fields = ["height", "width"] - null_default_fields = [] - + optional_fields = set(["height", "width"]) + nullable_fields = set(["height", "width"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentoptionrequest.py b/src/gr4vy/models/paymentoptionrequest.py index 0a7bedab..54ec1a66 100644 --- a/src/gr4vy/models/paymentoptionrequest.py +++ b/src/gr4vy/models/paymentoptionrequest.py @@ -44,37 +44,29 @@ class PaymentOptionRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "metadata", - "country", - "currency", - "amount", - "locale", - "cart_items", - ] - nullable_fields = ["metadata", "country", "currency", "amount", "cart_items"] - null_default_fields = [] - + optional_fields = set( + ["metadata", "country", "currency", "amount", "locale", "cart_items"] + ) + nullable_fields = set( + ["metadata", "country", "currency", "amount", "cart_items"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentservice.py b/src/gr4vy/models/paymentservice.py index 6a59e149..de8b5e32 100644 --- a/src/gr4vy/models/paymentservice.py +++ b/src/gr4vy/models/paymentservice.py @@ -143,47 +143,46 @@ class PaymentService(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "id", - "active", - "status", - "three_d_secure_enabled", - "merchant_profile", - "webhook_url", - "fields", - "reporting_fields", - "is_deleted", - ] - nullable_fields = [ - "three_d_secure_enabled", - "merchant_profile", - "webhook_url", - "fields", - "reporting_fields", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "id", + "active", + "status", + "three_d_secure_enabled", + "merchant_profile", + "webhook_url", + "fields", + "reporting_fields", + "is_deleted", + ] + ) + nullable_fields = set( + [ + "three_d_secure_enabled", + "merchant_profile", + "webhook_url", + "fields", + "reporting_fields", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentservicecreate.py b/src/gr4vy/models/paymentservicecreate.py index f8079f22..aa229e10 100644 --- a/src/gr4vy/models/paymentservicecreate.py +++ b/src/gr4vy/models/paymentservicecreate.py @@ -93,48 +93,47 @@ class PaymentServiceCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "reporting_fields", - "position", - "active", - "three_d_secure_enabled", - "merchant_profile", - "payment_method_tokenization_enabled", - "network_tokens_enabled", - "open_loop", - "settlement_reporting_enabled", - ] - nullable_fields = [ - "reporting_fields", - "position", - "active", - "merchant_profile", - "payment_method_tokenization_enabled", - "network_tokens_enabled", - "open_loop", - ] - null_default_fields = [] - + optional_fields = set( + [ + "reporting_fields", + "position", + "active", + "three_d_secure_enabled", + "merchant_profile", + "payment_method_tokenization_enabled", + "network_tokens_enabled", + "open_loop", + "settlement_reporting_enabled", + ] + ) + nullable_fields = set( + [ + "reporting_fields", + "position", + "active", + "merchant_profile", + "payment_method_tokenization_enabled", + "network_tokens_enabled", + "open_loop", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentservicedefinition.py b/src/gr4vy/models/paymentservicedefinition.py index 18b809c8..9df45aaf 100644 --- a/src/gr4vy/models/paymentservicedefinition.py +++ b/src/gr4vy/models/paymentservicedefinition.py @@ -98,30 +98,25 @@ class PaymentServiceDefinition(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "icon_url"] - nullable_fields = ["icon_url", "supported_integration_clients"] - null_default_fields = [] - + optional_fields = set(["type", "icon_url"]) + nullable_fields = set(["icon_url", "supported_integration_clients"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentservicedefinitions.py b/src/gr4vy/models/paymentservicedefinitions.py index 568be298..6e8c5b92 100644 --- a/src/gr4vy/models/paymentservicedefinitions.py +++ b/src/gr4vy/models/paymentservicedefinitions.py @@ -37,30 +37,25 @@ class PaymentServiceDefinitions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentservices.py b/src/gr4vy/models/paymentservices.py index 9c8ced19..e63cccf5 100644 --- a/src/gr4vy/models/paymentservices.py +++ b/src/gr4vy/models/paymentservices.py @@ -34,30 +34,25 @@ class PaymentServices(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentservicetoken.py b/src/gr4vy/models/paymentservicetoken.py index 5ec4f534..77a4fc55 100644 --- a/src/gr4vy/models/paymentservicetoken.py +++ b/src/gr4vy/models/paymentservicetoken.py @@ -67,30 +67,25 @@ class PaymentServiceToken(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "approval_url", "token"] - nullable_fields = ["approval_url", "token"] - null_default_fields = [] - + optional_fields = set(["type", "approval_url", "token"]) + nullable_fields = set(["approval_url", "token"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentservicetokencreate.py b/src/gr4vy/models/paymentservicetokencreate.py index 0258ecbb..b2b4f9c9 100644 --- a/src/gr4vy/models/paymentservicetokencreate.py +++ b/src/gr4vy/models/paymentservicetokencreate.py @@ -27,30 +27,25 @@ class PaymentServiceTokenCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["security_code"] - nullable_fields = ["security_code"] - null_default_fields = [] - + optional_fields = set(["security_code"]) + nullable_fields = set(["security_code"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paymentserviceupdate.py b/src/gr4vy/models/paymentserviceupdate.py index fcfcb592..bc0899a7 100644 --- a/src/gr4vy/models/paymentserviceupdate.py +++ b/src/gr4vy/models/paymentserviceupdate.py @@ -88,57 +88,56 @@ class PaymentServiceUpdate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "display_name", - "fields", - "reporting_fields", - "position", - "accepted_currencies", - "accepted_countries", - "active", - "three_d_secure_enabled", - "merchant_profile", - "payment_method_tokenization_enabled", - "network_tokens_enabled", - "open_loop", - "settlement_reporting_enabled", - ] - nullable_fields = [ - "display_name", - "fields", - "reporting_fields", - "position", - "accepted_currencies", - "accepted_countries", - "active", - "three_d_secure_enabled", - "merchant_profile", - "payment_method_tokenization_enabled", - "network_tokens_enabled", - "open_loop", - ] - null_default_fields = [] - + optional_fields = set( + [ + "display_name", + "fields", + "reporting_fields", + "position", + "accepted_currencies", + "accepted_countries", + "active", + "three_d_secure_enabled", + "merchant_profile", + "payment_method_tokenization_enabled", + "network_tokens_enabled", + "open_loop", + "settlement_reporting_enabled", + ] + ) + nullable_fields = set( + [ + "display_name", + "fields", + "reporting_fields", + "position", + "accepted_currencies", + "accepted_countries", + "active", + "three_d_secure_enabled", + "merchant_profile", + "payment_method_tokenization_enabled", + "network_tokens_enabled", + "open_loop", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/payoutconnectionoptions.py b/src/gr4vy/models/payoutconnectionoptions.py index bb6a43bc..50e5bee9 100644 --- a/src/gr4vy/models/payoutconnectionoptions.py +++ b/src/gr4vy/models/payoutconnectionoptions.py @@ -21,30 +21,25 @@ class PayoutConnectionOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["checkout-card"] - nullable_fields = ["checkout-card"] - null_default_fields = [] - + optional_fields = set(["checkout-card"]) + nullable_fields = set(["checkout-card"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/payoutcreate.py b/src/gr4vy/models/payoutcreate.py index c1b3147d..ce61a472 100644 --- a/src/gr4vy/models/payoutcreate.py +++ b/src/gr4vy/models/payoutcreate.py @@ -103,46 +103,45 @@ class PayoutCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "category", - "external_identifier", - "buyer_id", - "buyer", - "buyer_external_identifier", - "merchant", - "connection_options", - ] - nullable_fields = [ - "category", - "external_identifier", - "buyer_id", - "buyer", - "buyer_external_identifier", - "merchant", - "connection_options", - ] - null_default_fields = [] - + optional_fields = set( + [ + "category", + "external_identifier", + "buyer_id", + "buyer", + "buyer_external_identifier", + "merchant", + "connection_options", + ] + ) + nullable_fields = set( + [ + "category", + "external_identifier", + "buyer_id", + "buyer", + "buyer_external_identifier", + "merchant", + "connection_options", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/payoutmerchant.py b/src/gr4vy/models/payoutmerchant.py index 328337b3..23c8c310 100644 --- a/src/gr4vy/models/payoutmerchant.py +++ b/src/gr4vy/models/payoutmerchant.py @@ -48,30 +48,25 @@ class PayoutMerchant(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["address"] - nullable_fields = ["address"] - null_default_fields = [] - + optional_fields = set(["address"]) + nullable_fields = set(["address"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/payoutmerchantsummary.py b/src/gr4vy/models/payoutmerchantsummary.py index 60afb763..5273c66f 100644 --- a/src/gr4vy/models/payoutmerchantsummary.py +++ b/src/gr4vy/models/payoutmerchantsummary.py @@ -72,30 +72,25 @@ class PayoutMerchantSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "statement_descriptor", "address"] - nullable_fields = ["statement_descriptor", "address"] - null_default_fields = [] - + optional_fields = set(["type", "statement_descriptor", "address"]) + nullable_fields = set(["statement_descriptor", "address"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/payoutpaymentservice.py b/src/gr4vy/models/payoutpaymentservice.py index 6c769018..5e606ea2 100644 --- a/src/gr4vy/models/payoutpaymentservice.py +++ b/src/gr4vy/models/payoutpaymentservice.py @@ -50,30 +50,25 @@ class PayoutPaymentService(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "id", "method", "display_name"] - nullable_fields = ["id", "display_name"] - null_default_fields = [] - + optional_fields = set(["type", "id", "method", "display_name"]) + nullable_fields = set(["id", "display_name"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/payoutsummaries.py b/src/gr4vy/models/payoutsummaries.py index 44c00746..0484d8f5 100644 --- a/src/gr4vy/models/payoutsummaries.py +++ b/src/gr4vy/models/payoutsummaries.py @@ -34,30 +34,25 @@ class PayoutSummaries(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/payoutsummary.py b/src/gr4vy/models/payoutsummary.py index dd768cdf..517ad4bf 100644 --- a/src/gr4vy/models/payoutsummary.py +++ b/src/gr4vy/models/payoutsummary.py @@ -110,47 +110,46 @@ class PayoutSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "id", - "buyer", - "category", - "external_identifier", - "merchant", - "merchant_account_id", - "payment_service_payout_id", - ] - nullable_fields = [ - "id", - "buyer", - "category", - "external_identifier", - "merchant", - "merchant_account_id", - "payment_service_payout_id", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "id", + "buyer", + "category", + "external_identifier", + "merchant", + "merchant_account_id", + "payment_service_payout_id", + ] + ) + nullable_fields = set( + [ + "id", + "buyer", + "category", + "external_identifier", + "merchant", + "merchant_account_id", + "payment_service_payout_id", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paypaloptions.py b/src/gr4vy/models/paypaloptions.py index ab689378..541f6cf0 100644 --- a/src/gr4vy/models/paypaloptions.py +++ b/src/gr4vy/models/paypaloptions.py @@ -24,30 +24,25 @@ class PaypalOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["additional_data", "shipping"] - nullable_fields = ["additional_data", "shipping"] - null_default_fields = [] - + optional_fields = set(["additional_data", "shipping"]) + nullable_fields = set(["additional_data", "shipping"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paypalshippingoptions.py b/src/gr4vy/models/paypalshippingoptions.py index df4c691e..8cb96728 100644 --- a/src/gr4vy/models/paypalshippingoptions.py +++ b/src/gr4vy/models/paypalshippingoptions.py @@ -22,30 +22,25 @@ class PaypalShippingOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["options"] - nullable_fields = ["options"] - null_default_fields = [] - + optional_fields = set(["options"]) + nullable_fields = set(["options"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/paypalshippingoptionsitem.py b/src/gr4vy/models/paypalshippingoptionsitem.py index 9326cbcc..e76e47b5 100644 --- a/src/gr4vy/models/paypalshippingoptionsitem.py +++ b/src/gr4vy/models/paypalshippingoptionsitem.py @@ -60,30 +60,25 @@ class PaypalShippingOptionsItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "amount"] - nullable_fields = ["type", "amount"] - null_default_fields = [] - + optional_fields = set(["type", "amount"]) + nullable_fields = set(["type", "amount"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/plaidpaymentmethodcreate.py b/src/gr4vy/models/plaidpaymentmethodcreate.py index b89b3505..d7c32a4c 100644 --- a/src/gr4vy/models/plaidpaymentmethodcreate.py +++ b/src/gr4vy/models/plaidpaymentmethodcreate.py @@ -64,43 +64,42 @@ class PlaidPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "method", - "account_id", - "payment_service_id", - "buyer_id", - "buyer_external_identifier", - "external_identifier", - ] - nullable_fields = [ - "account_id", - "payment_service_id", - "buyer_id", - "buyer_external_identifier", - "external_identifier", - ] - null_default_fields = [] - + optional_fields = set( + [ + "method", + "account_id", + "payment_service_id", + "buyer_id", + "buyer_external_identifier", + "external_identifier", + ] + ) + nullable_fields = set( + [ + "account_id", + "payment_service_id", + "buyer_id", + "buyer_external_identifier", + "external_identifier", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/powertranzoptions.py b/src/gr4vy/models/powertranzoptions.py index f8fd538b..8d0e898e 100644 --- a/src/gr4vy/models/powertranzoptions.py +++ b/src/gr4vy/models/powertranzoptions.py @@ -20,30 +20,25 @@ class PowertranzOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["skipThreeDSecure"] - nullable_fields = ["skipThreeDSecure"] - null_default_fields = [] - + optional_fields = set(["skipThreeDSecure"]) + nullable_fields = set(["skipThreeDSecure"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/recipient.py b/src/gr4vy/models/recipient.py index 279fca7f..8bafcd5c 100644 --- a/src/gr4vy/models/recipient.py +++ b/src/gr4vy/models/recipient.py @@ -43,30 +43,25 @@ class Recipient(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["address", "account_number", "date_of_birth"] - nullable_fields = ["address", "account_number", "date_of_birth"] - null_default_fields = [] - + optional_fields = set(["address", "account_number", "date_of_birth"]) + nullable_fields = set(["address", "account_number", "date_of_birth"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/redirectpaymentmethodcreate.py b/src/gr4vy/models/redirectpaymentmethodcreate.py index f20ae2ae..b6c294e9 100644 --- a/src/gr4vy/models/redirectpaymentmethodcreate.py +++ b/src/gr4vy/models/redirectpaymentmethodcreate.py @@ -165,38 +165,29 @@ class RedirectPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "buyer_id", - "buyer_external_identifier", - "external_identifier", - ] - nullable_fields = [ - "buyer_id", - "buyer_external_identifier", - "external_identifier", - ] - null_default_fields = [] - + optional_fields = set( + ["buyer_id", "buyer_external_identifier", "external_identifier"] + ) + nullable_fields = set( + ["buyer_id", "buyer_external_identifier", "external_identifier"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/refund.py b/src/gr4vy/models/refund.py index 176b9b6b..9721749b 100644 --- a/src/gr4vy/models/refund.py +++ b/src/gr4vy/models/refund.py @@ -121,51 +121,50 @@ class Refund(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "payment_service_refund_id", - "reason", - "target_id", - "external_identifier", - "transaction_external_identifier", - "creator", - "error_code", - "raw_response_code", - "raw_response_description", - ] - nullable_fields = [ - "payment_service_refund_id", - "reason", - "target_id", - "external_identifier", - "transaction_external_identifier", - "creator", - "error_code", - "raw_response_code", - "raw_response_description", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "payment_service_refund_id", + "reason", + "target_id", + "external_identifier", + "transaction_external_identifier", + "creator", + "error_code", + "raw_response_code", + "raw_response_description", + ] + ) + nullable_fields = set( + [ + "payment_service_refund_id", + "reason", + "target_id", + "external_identifier", + "transaction_external_identifier", + "creator", + "error_code", + "raw_response_code", + "raw_response_description", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/refunds.py b/src/gr4vy/models/refunds.py index 9ab4b994..1f3243ea 100644 --- a/src/gr4vy/models/refunds.py +++ b/src/gr4vy/models/refunds.py @@ -34,30 +34,25 @@ class Refunds(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/register_digital_wallet_domainop.py b/src/gr4vy/models/register_digital_wallet_domainop.py index d856bd0a..52d9f191 100644 --- a/src/gr4vy/models/register_digital_wallet_domainop.py +++ b/src/gr4vy/models/register_digital_wallet_domainop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .digitalwalletdomain import DigitalWalletDomain, DigitalWalletDomainTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class RegisterDigitalWalletDomainGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class RegisterDigitalWalletDomainRequestTypedDict(TypedDict): digital_wallet_id: str @@ -53,3 +70,19 @@ class RegisterDigitalWalletDomainRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/report.py b/src/gr4vy/models/report.py index 2aa9a55e..61e8009f 100644 --- a/src/gr4vy/models/report.py +++ b/src/gr4vy/models/report.py @@ -105,45 +105,44 @@ class Report(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "creator_id", - "creator_display_name", - "creator_type", - "next_execution_at", - "description", - "latest_execution", - ] - nullable_fields = [ - "creator_id", - "creator_display_name", - "creator_type", - "next_execution_at", - "description", - "latest_execution", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "creator_id", + "creator_display_name", + "creator_type", + "next_execution_at", + "description", + "latest_execution", + ] + ) + nullable_fields = set( + [ + "creator_id", + "creator_display_name", + "creator_type", + "next_execution_at", + "description", + "latest_execution", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/reportcreate.py b/src/gr4vy/models/reportcreate.py index 8a3ef701..bd0b5a35 100644 --- a/src/gr4vy/models/reportcreate.py +++ b/src/gr4vy/models/reportcreate.py @@ -83,30 +83,25 @@ class ReportCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["description", "schedule_timezone"] - nullable_fields = ["description"] - null_default_fields = [] - + optional_fields = set(["description", "schedule_timezone"]) + nullable_fields = set(["description"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/reportexecution.py b/src/gr4vy/models/reportexecution.py index cf71c419..d38dcdb2 100644 --- a/src/gr4vy/models/reportexecution.py +++ b/src/gr4vy/models/reportexecution.py @@ -8,9 +8,10 @@ from .reportexecutionstatus import ReportExecutionStatus from .reportsummary import ReportSummary, ReportSummaryTypedDict from datetime import datetime -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -54,3 +55,19 @@ class ReportExecution(BaseModel): pydantic.Field(alias="type"), ] = "report-execution" r"""Always `report-execution`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/reportexecutions.py b/src/gr4vy/models/reportexecutions.py index 73c460f0..93c5c0c2 100644 --- a/src/gr4vy/models/reportexecutions.py +++ b/src/gr4vy/models/reportexecutions.py @@ -34,30 +34,25 @@ class ReportExecutions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/reportexecutionsummary.py b/src/gr4vy/models/reportexecutionsummary.py index 544aed7f..a6db0d35 100644 --- a/src/gr4vy/models/reportexecutionsummary.py +++ b/src/gr4vy/models/reportexecutionsummary.py @@ -7,9 +7,10 @@ ) from .reportexecutionstatus import ReportExecutionStatus from datetime import datetime -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -50,3 +51,19 @@ class ReportExecutionSummary(BaseModel): pydantic.Field(alias="type"), ] = "report-execution" r"""Always `report-execution`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/reportexecutionurlgenerate.py b/src/gr4vy/models/reportexecutionurlgenerate.py index f01b0d3f..810ebbfd 100644 --- a/src/gr4vy/models/reportexecutionurlgenerate.py +++ b/src/gr4vy/models/reportexecutionurlgenerate.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -14,3 +15,19 @@ class ReportExecutionURLGenerateTypedDict(TypedDict): class ReportExecutionURLGenerate(BaseModel): expires_in: Optional[int] = 5 r"""The URL expiration time, in minutes.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["expires_in"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/reports.py b/src/gr4vy/models/reports.py index 8dae31fc..ca3f2c63 100644 --- a/src/gr4vy/models/reports.py +++ b/src/gr4vy/models/reports.py @@ -34,30 +34,25 @@ class Reports(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/reportsummary.py b/src/gr4vy/models/reportsummary.py index 191b585d..c4217877 100644 --- a/src/gr4vy/models/reportsummary.py +++ b/src/gr4vy/models/reportsummary.py @@ -57,30 +57,27 @@ class ReportSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "creator_id", "creator_display_name", "creator_type"] - nullable_fields = ["creator_id", "creator_display_name", "creator_type"] - null_default_fields = [] - + optional_fields = set( + ["type", "creator_id", "creator_display_name", "creator_type"] + ) + nullable_fields = set(["creator_id", "creator_display_name", "creator_type"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/reportupdate.py b/src/gr4vy/models/reportupdate.py index be16b085..fa7414f0 100644 --- a/src/gr4vy/models/reportupdate.py +++ b/src/gr4vy/models/reportupdate.py @@ -27,30 +27,25 @@ class ReportUpdate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["name", "description", "schedule_enabled"] - nullable_fields = ["name", "description", "schedule_enabled"] - null_default_fields = [] - + optional_fields = set(["name", "description", "schedule_enabled"]) + nullable_fields = set(["name", "description", "schedule_enabled"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/requiredcheckoutfields.py b/src/gr4vy/models/requiredcheckoutfields.py index 2f91365b..baa758b2 100644 --- a/src/gr4vy/models/requiredcheckoutfields.py +++ b/src/gr4vy/models/requiredcheckoutfields.py @@ -27,30 +27,25 @@ class RequiredCheckoutFields(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["conditions"] - nullable_fields = ["conditions"] - null_default_fields = [] - + optional_fields = set(["conditions"]) + nullable_fields = set(["conditions"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/resume_payment_method_network_tokenop.py b/src/gr4vy/models/resume_payment_method_network_tokenop.py index 1aacd81b..3749a366 100644 --- a/src/gr4vy/models/resume_payment_method_network_tokenop.py +++ b/src/gr4vy/models/resume_payment_method_network_tokenop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ResumePaymentMethodNetworkTokenGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ResumePaymentMethodNetworkTokenRequestTypedDict(TypedDict): payment_method_id: str @@ -48,3 +65,19 @@ class ResumePaymentMethodNetworkTokenRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/security.py b/src/gr4vy/models/security.py index 6cf4069d..345dd29f 100644 --- a/src/gr4vy/models/security.py +++ b/src/gr4vy/models/security.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, SecurityMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,19 @@ class Security(BaseModel): ) ), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["bearerAuth"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/settlement.py b/src/gr4vy/models/settlement.py index 7e96eec8..8ad5a6de 100644 --- a/src/gr4vy/models/settlement.py +++ b/src/gr4vy/models/settlement.py @@ -112,36 +112,27 @@ class Settlement(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "exchange_rate", - "interchange", - "markup", - "scheme_fee", - "type", - ] - nullable_fields = ["exchange_rate", "interchange", "markup", "scheme_fee"] - null_default_fields = [] - + optional_fields = set( + ["exchange_rate", "interchange", "markup", "scheme_fee", "type"] + ) + nullable_fields = set(["exchange_rate", "interchange", "markup", "scheme_fee"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/shippingdetails.py b/src/gr4vy/models/shippingdetails.py index 19d34bf3..fb54af33 100644 --- a/src/gr4vy/models/shippingdetails.py +++ b/src/gr4vy/models/shippingdetails.py @@ -63,47 +63,46 @@ class ShippingDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - "id", - "buyer_id", - "type", - ] - nullable_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - "id", - "buyer_id", - ] - null_default_fields = [] - + optional_fields = set( + [ + "first_name", + "last_name", + "email_address", + "phone_number", + "address", + "id", + "buyer_id", + "type", + ] + ) + nullable_fields = set( + [ + "first_name", + "last_name", + "email_address", + "phone_number", + "address", + "id", + "buyer_id", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/shippingdetailscreate.py b/src/gr4vy/models/shippingdetailscreate.py index 71e6369c..f9a9afd7 100644 --- a/src/gr4vy/models/shippingdetailscreate.py +++ b/src/gr4vy/models/shippingdetailscreate.py @@ -38,42 +38,29 @@ class ShippingDetailsCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - ] - nullable_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - ] - null_default_fields = [] - + optional_fields = set( + ["first_name", "last_name", "email_address", "phone_number", "address"] + ) + nullable_fields = set( + ["first_name", "last_name", "email_address", "phone_number", "address"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/shippingdetailsupdate.py b/src/gr4vy/models/shippingdetailsupdate.py index 8bb6e943..be28d104 100644 --- a/src/gr4vy/models/shippingdetailsupdate.py +++ b/src/gr4vy/models/shippingdetailsupdate.py @@ -38,42 +38,29 @@ class ShippingDetailsUpdate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - ] - nullable_fields = [ - "first_name", - "last_name", - "email_address", - "phone_number", - "address", - ] - null_default_fields = [] - + optional_fields = set( + ["first_name", "last_name", "email_address", "phone_number", "address"] + ) + nullable_fields = set( + ["first_name", "last_name", "email_address", "phone_number", "address"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/statementdescriptor.py b/src/gr4vy/models/statementdescriptor.py index c3208648..fd7e43bd 100644 --- a/src/gr4vy/models/statementdescriptor.py +++ b/src/gr4vy/models/statementdescriptor.py @@ -51,46 +51,45 @@ class StatementDescriptor(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "name", - "description", - "city", - "country", - "phone_number", - "url", - "postal_code", - ] - nullable_fields = [ - "name", - "description", - "city", - "country", - "phone_number", - "url", - "postal_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "name", + "description", + "city", + "country", + "phone_number", + "url", + "postal_code", + ] + ) + nullable_fields = set( + [ + "name", + "description", + "city", + "country", + "phone_number", + "url", + "postal_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/stripeconnectoptions.py b/src/gr4vy/models/stripeconnectoptions.py index e06eda11..f89ae21a 100644 --- a/src/gr4vy/models/stripeconnectoptions.py +++ b/src/gr4vy/models/stripeconnectoptions.py @@ -37,42 +37,41 @@ class StripeConnectOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "stripe_account", - "application_fee_amount", - "on_behalf_of", - "transfer_data_destination", - "transfer_group", - ] - nullable_fields = [ - "stripe_account", - "application_fee_amount", - "on_behalf_of", - "transfer_data_destination", - "transfer_group", - ] - null_default_fields = [] - + optional_fields = set( + [ + "stripe_account", + "application_fee_amount", + "on_behalf_of", + "transfer_data_destination", + "transfer_group", + ] + ) + nullable_fields = set( + [ + "stripe_account", + "application_fee_amount", + "on_behalf_of", + "transfer_data_destination", + "transfer_group", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/stripeoptions.py b/src/gr4vy/models/stripeoptions.py index 5a67defa..1e5fae34 100644 --- a/src/gr4vy/models/stripeoptions.py +++ b/src/gr4vy/models/stripeoptions.py @@ -23,30 +23,25 @@ class StripeOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["error_on_requires_action", "stripe_connect"] - nullable_fields = ["error_on_requires_action", "stripe_connect"] - null_default_fields = [] - + optional_fields = set(["error_on_requires_action", "stripe_connect"]) + nullable_fields = set(["error_on_requires_action", "stripe_connect"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/suspend_payment_method_network_tokenop.py b/src/gr4vy/models/suspend_payment_method_network_tokenop.py index bdf8b9dd..018224d8 100644 --- a/src/gr4vy/models/suspend_payment_method_network_tokenop.py +++ b/src/gr4vy/models/suspend_payment_method_network_tokenop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class SuspendPaymentMethodNetworkTokenGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class SuspendPaymentMethodNetworkTokenRequestTypedDict(TypedDict): payment_method_id: str @@ -48,3 +65,19 @@ class SuspendPaymentMethodNetworkTokenRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/sync_transactionop.py b/src/gr4vy/models/sync_transactionop.py index 1b7dca34..7a792535 100644 --- a/src/gr4vy/models/sync_transactionop.py +++ b/src/gr4vy/models/sync_transactionop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class SyncTransactionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class SyncTransactionRequestTypedDict(TypedDict): transaction_id: str @@ -39,3 +56,19 @@ class SyncTransactionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/threedsecure.py b/src/gr4vy/models/threedsecure.py index 604ed414..daae14e0 100644 --- a/src/gr4vy/models/threedsecure.py +++ b/src/gr4vy/models/threedsecure.py @@ -17,30 +17,25 @@ class ThreeDSecure(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["amount"] - nullable_fields = ["amount"] - null_default_fields = [] - + optional_fields = set(["amount"]) + nullable_fields = set(["amount"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/threedsecuredatav1.py b/src/gr4vy/models/threedsecuredatav1.py index 718d733f..792722e5 100644 --- a/src/gr4vy/models/threedsecuredatav1.py +++ b/src/gr4vy/models/threedsecuredatav1.py @@ -53,30 +53,25 @@ class ThreeDSecureDataV1(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["scheme"] - nullable_fields = ["scheme"] - null_default_fields = [] - + optional_fields = set(["scheme"]) + nullable_fields = set(["scheme"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/threedsecuredatav2.py b/src/gr4vy/models/threedsecuredatav2.py index 7299f63c..fb8ef301 100644 --- a/src/gr4vy/models/threedsecuredatav2.py +++ b/src/gr4vy/models/threedsecuredatav2.py @@ -48,30 +48,25 @@ class ThreeDSecureDataV2(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["scheme", "authentication_response"] - nullable_fields = ["scheme", "authentication_response"] - null_default_fields = [] - + optional_fields = set(["scheme", "authentication_response"]) + nullable_fields = set(["scheme", "authentication_response"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/threedsecureerror.py b/src/gr4vy/models/threedsecureerror.py index 58d2e757..d2980c01 100644 --- a/src/gr4vy/models/threedsecureerror.py +++ b/src/gr4vy/models/threedsecureerror.py @@ -32,30 +32,25 @@ class ThreeDSecureError(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["code", "description", "detail", "component"] - nullable_fields = ["code", "description", "detail", "component"] - null_default_fields = [] - + optional_fields = set(["code", "description", "detail", "component"]) + nullable_fields = set(["code", "description", "detail", "component"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/threedsecurescenario.py b/src/gr4vy/models/threedsecurescenario.py new file mode 100644 index 00000000..4588a4a3 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenario.py @@ -0,0 +1,77 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenarioconditions import ( + ThreeDSecureScenarioConditions, + ThreeDSecureScenarioConditionsTypedDict, +) +from .threedsecurescenariooutcome import ( + ThreeDSecureScenarioOutcome, + ThreeDSecureScenarioOutcomeTypedDict, +) +from datetime import datetime +from gr4vy.types import BaseModel, UNSET_SENTINEL +from gr4vy.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, TypedDict + + +class ThreeDSecureScenarioTypedDict(TypedDict): + id: str + r"""Unique identifier for the 3DS scenario""" + merchant_account_id: str + r"""ID of the associated merchant account""" + created_at: datetime + r"""The date and time when this 3DS scenario was first created in our system.""" + updated_at: datetime + r"""The date and time when this 3DS scenario was last updated in our system.""" + conditions: ThreeDSecureScenarioConditionsTypedDict + outcome: ThreeDSecureScenarioOutcomeTypedDict + type: Literal["three-d-secure-scenario"] + r"""Always `three-d-secure-scenario`.""" + + +class ThreeDSecureScenario(BaseModel): + id: str + r"""Unique identifier for the 3DS scenario""" + + merchant_account_id: str + r"""ID of the associated merchant account""" + + created_at: datetime + r"""The date and time when this 3DS scenario was first created in our system.""" + + updated_at: datetime + r"""The date and time when this 3DS scenario was last updated in our system.""" + + conditions: ThreeDSecureScenarioConditions + + outcome: ThreeDSecureScenarioOutcome + + TYPE: Annotated[ + Annotated[ + Optional[Literal["three-d-secure-scenario"]], + AfterValidator(validate_const("three-d-secure-scenario")), + ], + pydantic.Field(alias="type"), + ] = "three-d-secure-scenario" + r"""Always `three-d-secure-scenario`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/threedsecurescenarioconditions.py b/src/gr4vy/models/threedsecurescenarioconditions.py new file mode 100644 index 00000000..67416bc3 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenarioconditions.py @@ -0,0 +1,84 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from gr4vy.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing_extensions import NotRequired, TypedDict + + +class ThreeDSecureScenarioConditionsTypedDict(TypedDict): + first_name: NotRequired[Nullable[str]] + r"""First name of the buyer to match.""" + last_name: NotRequired[Nullable[str]] + r"""Last name of the buyer to match.""" + email_address: NotRequired[Nullable[str]] + r"""Email address of the buyer to match.""" + amount: NotRequired[Nullable[int]] + r"""Amount of the transaction to match.""" + external_identifier: NotRequired[Nullable[str]] + r"""External identifier to match.""" + card_number: NotRequired[Nullable[str]] + r"""Card number to match.""" + + +class ThreeDSecureScenarioConditions(BaseModel): + first_name: OptionalNullable[str] = UNSET + r"""First name of the buyer to match.""" + + last_name: OptionalNullable[str] = UNSET + r"""Last name of the buyer to match.""" + + email_address: OptionalNullable[str] = UNSET + r"""Email address of the buyer to match.""" + + amount: OptionalNullable[int] = UNSET + r"""Amount of the transaction to match.""" + + external_identifier: OptionalNullable[str] = UNSET + r"""External identifier to match.""" + + card_number: OptionalNullable[str] = UNSET + r"""Card number to match.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "first_name", + "last_name", + "email_address", + "amount", + "external_identifier", + "card_number", + ] + ) + nullable_fields = set( + [ + "first_name", + "last_name", + "email_address", + "amount", + "external_identifier", + "card_number", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/gr4vy/models/threedsecurescenariocreate.py b/src/gr4vy/models/threedsecurescenariocreate.py new file mode 100644 index 00000000..cbbfbec8 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenariocreate.py @@ -0,0 +1,24 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenarioconditions import ( + ThreeDSecureScenarioConditions, + ThreeDSecureScenarioConditionsTypedDict, +) +from .threedsecurescenariooutcome import ( + ThreeDSecureScenarioOutcome, + ThreeDSecureScenarioOutcomeTypedDict, +) +from gr4vy.types import BaseModel +from typing_extensions import TypedDict + + +class ThreeDSecureScenarioCreateTypedDict(TypedDict): + conditions: ThreeDSecureScenarioConditionsTypedDict + outcome: ThreeDSecureScenarioOutcomeTypedDict + + +class ThreeDSecureScenarioCreate(BaseModel): + conditions: ThreeDSecureScenarioConditions + + outcome: ThreeDSecureScenarioOutcome diff --git a/src/gr4vy/models/threedsecurescenariooutcome.py b/src/gr4vy/models/threedsecurescenariooutcome.py new file mode 100644 index 00000000..89c47c41 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenariooutcome.py @@ -0,0 +1,57 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenariooutcomeauthentication import ( + ThreeDSecureScenarioOutcomeAuthentication, + ThreeDSecureScenarioOutcomeAuthenticationTypedDict, +) +from .threedsecurescenariooutcomeresult import ( + ThreeDSecureScenarioOutcomeResult, + ThreeDSecureScenarioOutcomeResultTypedDict, +) +from gr4vy.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing_extensions import NotRequired, TypedDict + + +class ThreeDSecureScenarioOutcomeTypedDict(TypedDict): + version: str + r"""The version of 3DS which will be simulated.""" + authentication: ThreeDSecureScenarioOutcomeAuthenticationTypedDict + result: NotRequired[Nullable[ThreeDSecureScenarioOutcomeResultTypedDict]] + r"""3DS result value. Required if authentication status is \"C\".""" + + +class ThreeDSecureScenarioOutcome(BaseModel): + version: str + r"""The version of 3DS which will be simulated.""" + + authentication: ThreeDSecureScenarioOutcomeAuthentication + + result: OptionalNullable[ThreeDSecureScenarioOutcomeResult] = UNSET + r"""3DS result value. Required if authentication status is \"C\".""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["result"]) + nullable_fields = set(["result"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/gr4vy/models/threedsecurescenariooutcomeauthentication.py b/src/gr4vy/models/threedsecurescenariooutcomeauthentication.py new file mode 100644 index 00000000..b1cd48c8 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenariooutcomeauthentication.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from gr4vy.types import BaseModel, UnrecognizedStr +from typing import Literal, Union +from typing_extensions import TypedDict + + +ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus = Union[ + Literal[ + "Y", + "N", + "A", + "R", + "U", + "C", + "timeout", + ], + UnrecognizedStr, +] +r"""3DS transaction status.""" + + +class ThreeDSecureScenarioOutcomeAuthenticationTypedDict(TypedDict): + transaction_status: ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus + r"""3DS transaction status.""" + + +class ThreeDSecureScenarioOutcomeAuthentication(BaseModel): + transaction_status: ThreeDSecureScenarioOutcomeAuthenticationTransactionStatus + r"""3DS transaction status.""" diff --git a/src/gr4vy/models/threedsecurescenariooutcomeresult.py b/src/gr4vy/models/threedsecurescenariooutcomeresult.py new file mode 100644 index 00000000..d9a78856 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenariooutcomeresult.py @@ -0,0 +1,27 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from gr4vy.types import BaseModel, UnrecognizedStr +from typing import Literal, Union +from typing_extensions import TypedDict + + +ThreeDSecureScenarioOutcomeResultTransactionStatus = Union[ + Literal[ + "Y", + "N", + "timeout", + ], + UnrecognizedStr, +] +r"""3DS result.""" + + +class ThreeDSecureScenarioOutcomeResultTypedDict(TypedDict): + transaction_status: ThreeDSecureScenarioOutcomeResultTransactionStatus + r"""3DS result.""" + + +class ThreeDSecureScenarioOutcomeResult(BaseModel): + transaction_status: ThreeDSecureScenarioOutcomeResultTransactionStatus + r"""3DS result.""" diff --git a/src/gr4vy/models/threedsecurescenarios.py b/src/gr4vy/models/threedsecurescenarios.py new file mode 100644 index 00000000..66cc9488 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenarios.py @@ -0,0 +1,58 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenario import ThreeDSecureScenario, ThreeDSecureScenarioTypedDict +from gr4vy.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class ThreeDSecureScenariosTypedDict(TypedDict): + items: List[ThreeDSecureScenarioTypedDict] + r"""A list of items returned for this request.""" + limit: NotRequired[int] + r"""The number of items for this page.""" + next_cursor: NotRequired[Nullable[str]] + r"""The cursor pointing at the next page of items.""" + previous_cursor: NotRequired[Nullable[str]] + r"""The cursor pointing at the previous page of items.""" + + +class ThreeDSecureScenarios(BaseModel): + items: List[ThreeDSecureScenario] + r"""A list of items returned for this request.""" + + limit: Optional[int] = 20 + r"""The number of items for this page.""" + + next_cursor: OptionalNullable[str] = UNSET + r"""The cursor pointing at the next page of items.""" + + previous_cursor: OptionalNullable[str] = UNSET + r"""The cursor pointing at the previous page of items.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/gr4vy/models/threedsecurescenarioupdate.py b/src/gr4vy/models/threedsecurescenarioupdate.py new file mode 100644 index 00000000..2d3badf2 --- /dev/null +++ b/src/gr4vy/models/threedsecurescenarioupdate.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenarioconditions import ( + ThreeDSecureScenarioConditions, + ThreeDSecureScenarioConditionsTypedDict, +) +from .threedsecurescenariooutcome import ( + ThreeDSecureScenarioOutcome, + ThreeDSecureScenarioOutcomeTypedDict, +) +from gr4vy.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing_extensions import NotRequired, TypedDict + + +class ThreeDSecureScenarioUpdateTypedDict(TypedDict): + conditions: NotRequired[Nullable[ThreeDSecureScenarioConditionsTypedDict]] + r"""Conditions for the scenario.""" + outcome: NotRequired[Nullable[ThreeDSecureScenarioOutcomeTypedDict]] + r"""Outcome for the scenario.""" + + +class ThreeDSecureScenarioUpdate(BaseModel): + conditions: OptionalNullable[ThreeDSecureScenarioConditions] = UNSET + r"""Conditions for the scenario.""" + + outcome: OptionalNullable[ThreeDSecureScenarioOutcome] = UNSET + r"""Outcome for the scenario.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["conditions", "outcome"]) + nullable_fields = set(["conditions", "outcome"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/gr4vy/models/threedsecurev2.py b/src/gr4vy/models/threedsecurev2.py index 2049a8f2..3aa1371e 100644 --- a/src/gr4vy/models/threedsecurev2.py +++ b/src/gr4vy/models/threedsecurev2.py @@ -36,46 +36,45 @@ class ThreeDSecureV2(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "authentication_response", - "directory_response", - "directory_transaction_id", - "transaction_reason", - "cavv", - "eci", - "cardholder_info", - ] - nullable_fields = [ - "authentication_response", - "directory_response", - "directory_transaction_id", - "transaction_reason", - "cavv", - "eci", - "cardholder_info", - ] - null_default_fields = [] - + optional_fields = set( + [ + "authentication_response", + "directory_response", + "directory_transaction_id", + "transaction_reason", + "cavv", + "eci", + "cardholder_info", + ] + ) + nullable_fields = set( + [ + "authentication_response", + "directory_response", + "directory_transaction_id", + "transaction_reason", + "cavv", + "eci", + "cardholder_info", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/tokenpaymentmethodcreate.py b/src/gr4vy/models/tokenpaymentmethodcreate.py index 618275d4..fcae68e7 100644 --- a/src/gr4vy/models/tokenpaymentmethodcreate.py +++ b/src/gr4vy/models/tokenpaymentmethodcreate.py @@ -43,30 +43,25 @@ class TokenPaymentMethodCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["method", "security_code", "redirect_url"] - nullable_fields = ["security_code", "redirect_url"] - null_default_fields = [] - + optional_fields = set(["method", "security_code", "redirect_url"]) + nullable_fields = set(["security_code", "redirect_url"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transaction.py b/src/gr4vy/models/transaction.py index 6ac1db42..d861d18d 100644 --- a/src/gr4vy/models/transaction.py +++ b/src/gr4vy/models/transaction.py @@ -395,123 +395,122 @@ class Transaction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "settled_currency", - "country", - "external_identifier", - "payment_method", - "method", - "instrument_type", - "error_code", - "payment_service", - "pending_review", - "buyer", - "raw_response_code", - "raw_response_description", - "shipping_details", - "checkout_session_id", - "gift_card_service", - "airline", - "auth_response_code", - "avs_response_code", - "cvv_response_code", - "anti_fraud_decision", - "cart_items", - "statement_descriptor", - "scheme_transaction_id", - "three_d_secure", - "payment_service_transaction_id", - "additional_identifiers", - "metadata", - "authorized_at", - "captured_at", - "voided_at", - "canceled_at", - "approval_expires_at", - "buyer_approval_timedout_at", - "recipient", - "merchant_advice_code", - "installment_count", - "session_token", - "tax_amount", - "merchant_tax_id", - "purchase_order_number", - "customer_reference_number", - "amount_includes_tax", - "supplier_order_number", - "duty_amount", - "shipping_amount", - "iso_response_code", - ] - nullable_fields = [ - "settled_currency", - "country", - "external_identifier", - "payment_method", - "method", - "instrument_type", - "error_code", - "payment_service", - "buyer", - "raw_response_code", - "raw_response_description", - "shipping_details", - "checkout_session_id", - "gift_card_service", - "airline", - "auth_response_code", - "avs_response_code", - "cvv_response_code", - "anti_fraud_decision", - "cart_items", - "statement_descriptor", - "scheme_transaction_id", - "three_d_secure", - "payment_service_transaction_id", - "metadata", - "authorized_at", - "captured_at", - "voided_at", - "canceled_at", - "approval_expires_at", - "buyer_approval_timedout_at", - "recipient", - "merchant_advice_code", - "installment_count", - "session_token", - "tax_amount", - "merchant_tax_id", - "purchase_order_number", - "customer_reference_number", - "amount_includes_tax", - "supplier_order_number", - "duty_amount", - "shipping_amount", - "iso_response_code", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "settled_currency", + "country", + "external_identifier", + "payment_method", + "method", + "instrument_type", + "error_code", + "payment_service", + "pending_review", + "buyer", + "raw_response_code", + "raw_response_description", + "shipping_details", + "checkout_session_id", + "gift_card_service", + "airline", + "auth_response_code", + "avs_response_code", + "cvv_response_code", + "anti_fraud_decision", + "cart_items", + "statement_descriptor", + "scheme_transaction_id", + "three_d_secure", + "payment_service_transaction_id", + "additional_identifiers", + "metadata", + "authorized_at", + "captured_at", + "voided_at", + "canceled_at", + "approval_expires_at", + "buyer_approval_timedout_at", + "recipient", + "merchant_advice_code", + "installment_count", + "session_token", + "tax_amount", + "merchant_tax_id", + "purchase_order_number", + "customer_reference_number", + "amount_includes_tax", + "supplier_order_number", + "duty_amount", + "shipping_amount", + "iso_response_code", + ] + ) + nullable_fields = set( + [ + "settled_currency", + "country", + "external_identifier", + "payment_method", + "method", + "instrument_type", + "error_code", + "payment_service", + "buyer", + "raw_response_code", + "raw_response_description", + "shipping_details", + "checkout_session_id", + "gift_card_service", + "airline", + "auth_response_code", + "avs_response_code", + "cvv_response_code", + "anti_fraud_decision", + "cart_items", + "statement_descriptor", + "scheme_transaction_id", + "three_d_secure", + "payment_service_transaction_id", + "metadata", + "authorized_at", + "captured_at", + "voided_at", + "canceled_at", + "approval_expires_at", + "buyer_approval_timedout_at", + "recipient", + "merchant_advice_code", + "installment_count", + "session_token", + "tax_amount", + "merchant_tax_id", + "purchase_order_number", + "customer_reference_number", + "amount_includes_tax", + "supplier_order_number", + "duty_amount", + "shipping_amount", + "iso_response_code", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionaction.py b/src/gr4vy/models/transactionaction.py index d2e95abb..e167335d 100644 --- a/src/gr4vy/models/transactionaction.py +++ b/src/gr4vy/models/transactionaction.py @@ -4,9 +4,10 @@ from .flow import Flow from .flowaction import FlowAction from datetime import datetime -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Any, Dict, Literal, Optional from typing_extensions import Annotated, TypedDict @@ -46,3 +47,19 @@ class TransactionAction(BaseModel): pydantic.Field(alias="type"), ] = "action" r"""Always `action`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/transactionbuyer.py b/src/gr4vy/models/transactionbuyer.py index 8e269ab5..f5c59482 100644 --- a/src/gr4vy/models/transactionbuyer.py +++ b/src/gr4vy/models/transactionbuyer.py @@ -50,43 +50,42 @@ class TransactionBuyer(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "id", - "display_name", - "external_identifier", - "billing_details", - "account_number", - ] - nullable_fields = [ - "id", - "display_name", - "external_identifier", - "billing_details", - "account_number", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "id", + "display_name", + "external_identifier", + "billing_details", + "account_number", + ] + ) + nullable_fields = set( + [ + "id", + "display_name", + "external_identifier", + "billing_details", + "account_number", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactioncancel.py b/src/gr4vy/models/transactioncancel.py index ea545e0e..729fb099 100644 --- a/src/gr4vy/models/transactioncancel.py +++ b/src/gr4vy/models/transactioncancel.py @@ -52,30 +52,25 @@ class TransactionCancel(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type"] - nullable_fields = ["code", "raw_response_code", "raw_response_description"] - null_default_fields = [] - + optional_fields = set(["type"]) + nullable_fields = set(["code", "raw_response_code", "raw_response_description"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactioncapture.py b/src/gr4vy/models/transactioncapture.py index 8d2b9be3..a55cffc6 100644 --- a/src/gr4vy/models/transactioncapture.py +++ b/src/gr4vy/models/transactioncapture.py @@ -52,30 +52,25 @@ class TransactionCapture(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type"] - nullable_fields = ["code", "raw_response_code", "raw_response_description"] - null_default_fields = [] - + optional_fields = set(["type"]) + nullable_fields = set(["code", "raw_response_code", "raw_response_description"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactioncapturecreate.py b/src/gr4vy/models/transactioncapturecreate.py index b3dcd84a..d131f692 100644 --- a/src/gr4vy/models/transactioncapturecreate.py +++ b/src/gr4vy/models/transactioncapturecreate.py @@ -27,30 +27,25 @@ class TransactionCaptureCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["amount", "airline"] - nullable_fields = ["amount", "airline"] - null_default_fields = [] - + optional_fields = set(["amount", "airline"]) + nullable_fields = set(["amount", "airline"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionconnectionoptions.py b/src/gr4vy/models/transactionconnectionoptions.py index b5989e31..8cd30814 100644 --- a/src/gr4vy/models/transactionconnectionoptions.py +++ b/src/gr4vy/models/transactionconnectionoptions.py @@ -347,116 +347,115 @@ class TransactionConnectionOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "account-updater", - "adyen-afterpay", - "adyen-alipay", - "adyen-card", - "adyen-cashapp", - "adyen-giropay", - "adyen-ideal", - "adyen-sepa", - "adyen-sofort", - "adyen-vipps", - "affirm-affirm", - "braintree-card", - "chaseorbital-card", - "cybersource-anti-fraud", - "cybersource-card", - "cybersource-ideal", - "cybersource-kcp", - "dlocal-nequi", - "dlocal-upi", - "fiserv-card", - "forter-anti-fraud", - "gem-gem", - "gem-gemds", - "givingblock-givingblock", - "latitude-latitude", - "latitude-latitudeds", - "mattilda-tapi", - "mattilda-tapifintechs", - "monato-spei", - "mock-card", - "nuvei-card", - "nuvei-ideal", - "nuvei-pse", - "oxxo-oxxo", - "paypal-paypal", - "paypal-paypalpaylater", - "powertranz-card", - "stripe-card", - "travelhub-card", - "trustly-trustly", - "wpay-everydaypay", - "wpay-payto", - ] - nullable_fields = [ - "account-updater", - "adyen-afterpay", - "adyen-alipay", - "adyen-card", - "adyen-cashapp", - "adyen-giropay", - "adyen-ideal", - "adyen-sepa", - "adyen-sofort", - "adyen-vipps", - "affirm-affirm", - "braintree-card", - "chaseorbital-card", - "cybersource-anti-fraud", - "cybersource-card", - "cybersource-ideal", - "cybersource-kcp", - "dlocal-nequi", - "dlocal-upi", - "fiserv-card", - "forter-anti-fraud", - "gem-gem", - "gem-gemds", - "givingblock-givingblock", - "latitude-latitude", - "latitude-latitudeds", - "mattilda-tapi", - "mattilda-tapifintechs", - "monato-spei", - "mock-card", - "nuvei-card", - "nuvei-ideal", - "nuvei-pse", - "oxxo-oxxo", - "paypal-paypal", - "paypal-paypalpaylater", - "powertranz-card", - "stripe-card", - "travelhub-card", - "trustly-trustly", - "wpay-everydaypay", - "wpay-payto", - ] - null_default_fields = [] - + optional_fields = set( + [ + "account-updater", + "adyen-afterpay", + "adyen-alipay", + "adyen-card", + "adyen-cashapp", + "adyen-giropay", + "adyen-ideal", + "adyen-sepa", + "adyen-sofort", + "adyen-vipps", + "affirm-affirm", + "braintree-card", + "chaseorbital-card", + "cybersource-anti-fraud", + "cybersource-card", + "cybersource-ideal", + "cybersource-kcp", + "dlocal-nequi", + "dlocal-upi", + "fiserv-card", + "forter-anti-fraud", + "gem-gem", + "gem-gemds", + "givingblock-givingblock", + "latitude-latitude", + "latitude-latitudeds", + "mattilda-tapi", + "mattilda-tapifintechs", + "monato-spei", + "mock-card", + "nuvei-card", + "nuvei-ideal", + "nuvei-pse", + "oxxo-oxxo", + "paypal-paypal", + "paypal-paypalpaylater", + "powertranz-card", + "stripe-card", + "travelhub-card", + "trustly-trustly", + "wpay-everydaypay", + "wpay-payto", + ] + ) + nullable_fields = set( + [ + "account-updater", + "adyen-afterpay", + "adyen-alipay", + "adyen-card", + "adyen-cashapp", + "adyen-giropay", + "adyen-ideal", + "adyen-sepa", + "adyen-sofort", + "adyen-vipps", + "affirm-affirm", + "braintree-card", + "chaseorbital-card", + "cybersource-anti-fraud", + "cybersource-card", + "cybersource-ideal", + "cybersource-kcp", + "dlocal-nequi", + "dlocal-upi", + "fiserv-card", + "forter-anti-fraud", + "gem-gem", + "gem-gemds", + "givingblock-givingblock", + "latitude-latitude", + "latitude-latitudeds", + "mattilda-tapi", + "mattilda-tapifintechs", + "monato-spei", + "mock-card", + "nuvei-card", + "nuvei-ideal", + "nuvei-pse", + "oxxo-oxxo", + "paypal-paypal", + "paypal-paypalpaylater", + "powertranz-card", + "stripe-card", + "travelhub-card", + "trustly-trustly", + "wpay-everydaypay", + "wpay-payto", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactioncreate.py b/src/gr4vy/models/transactioncreate.py index ccbc0e22..8469f748 100644 --- a/src/gr4vy/models/transactioncreate.py +++ b/src/gr4vy/models/transactioncreate.py @@ -383,100 +383,99 @@ class TransactionCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "country", - "payment_method", - "buyer", - "buyer_id", - "buyer_external_identifier", - "gift_cards", - "external_identifier", - "intent", - "store", - "three_d_secure_data", - "three_d_secure", - "metadata", - "is_subsequent_payment", - "merchant_initiated", - "payment_source", - "airline", - "cart_items", - "statement_descriptor", - "previous_scheme_transaction_id", - "browser_info", - "shipping_details_id", - "connection_options", - "async_capture", - "anti_fraud_fingerprint", - "payment_service_id", - "account_funding_transaction", - "allow_partial_authorization", - "recipient", - "installment_count", - "tax_amount", - "merchant_tax_id", - "purchase_order_number", - "customer_reference_number", - "amount_includes_tax", - "supplier_order_number", - "duty_amount", - "shipping_amount", - "integration_client", - ] - nullable_fields = [ - "country", - "payment_method", - "buyer", - "buyer_id", - "buyer_external_identifier", - "gift_cards", - "external_identifier", - "three_d_secure_data", - "three_d_secure", - "metadata", - "airline", - "cart_items", - "statement_descriptor", - "previous_scheme_transaction_id", - "browser_info", - "shipping_details_id", - "connection_options", - "anti_fraud_fingerprint", - "payment_service_id", - "recipient", - "installment_count", - "tax_amount", - "merchant_tax_id", - "purchase_order_number", - "customer_reference_number", - "amount_includes_tax", - "supplier_order_number", - "duty_amount", - "shipping_amount", - "integration_client", - ] - null_default_fields = [] - + optional_fields = set( + [ + "country", + "payment_method", + "buyer", + "buyer_id", + "buyer_external_identifier", + "gift_cards", + "external_identifier", + "intent", + "store", + "three_d_secure_data", + "three_d_secure", + "metadata", + "is_subsequent_payment", + "merchant_initiated", + "payment_source", + "airline", + "cart_items", + "statement_descriptor", + "previous_scheme_transaction_id", + "browser_info", + "shipping_details_id", + "connection_options", + "async_capture", + "anti_fraud_fingerprint", + "payment_service_id", + "account_funding_transaction", + "allow_partial_authorization", + "recipient", + "installment_count", + "tax_amount", + "merchant_tax_id", + "purchase_order_number", + "customer_reference_number", + "amount_includes_tax", + "supplier_order_number", + "duty_amount", + "shipping_amount", + "integration_client", + ] + ) + nullable_fields = set( + [ + "country", + "payment_method", + "buyer", + "buyer_id", + "buyer_external_identifier", + "gift_cards", + "external_identifier", + "three_d_secure_data", + "three_d_secure", + "metadata", + "airline", + "cart_items", + "statement_descriptor", + "previous_scheme_transaction_id", + "browser_info", + "shipping_details_id", + "connection_options", + "anti_fraud_fingerprint", + "payment_service_id", + "recipient", + "installment_count", + "tax_amount", + "merchant_tax_id", + "purchase_order_number", + "customer_reference_number", + "amount_includes_tax", + "supplier_order_number", + "duty_amount", + "shipping_amount", + "integration_client", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionevent.py b/src/gr4vy/models/transactionevent.py index 64c910f0..c353ee68 100644 --- a/src/gr4vy/models/transactionevent.py +++ b/src/gr4vy/models/transactionevent.py @@ -2,9 +2,10 @@ from __future__ import annotations from datetime import datetime -from gr4vy.types import BaseModel, UnrecognizedStr +from gr4vy.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Any, Dict, Literal, Optional, Union from typing_extensions import Annotated, TypedDict @@ -102,3 +103,19 @@ class TransactionEvent(BaseModel): pydantic.Field(alias="type"), ] = "transaction-event" r"""Always `transaction-event`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/transactionevents.py b/src/gr4vy/models/transactionevents.py index 3cf782c8..c82e13db 100644 --- a/src/gr4vy/models/transactionevents.py +++ b/src/gr4vy/models/transactionevents.py @@ -34,30 +34,25 @@ class TransactionEvents(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactiongiftcard.py b/src/gr4vy/models/transactiongiftcard.py index c28e674b..90d1d71a 100644 --- a/src/gr4vy/models/transactiongiftcard.py +++ b/src/gr4vy/models/transactiongiftcard.py @@ -46,30 +46,25 @@ class TransactionGiftCard(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type", "id"] - nullable_fields = ["id"] - null_default_fields = [] - + optional_fields = set(["type", "id"]) + nullable_fields = set(["id"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionpaymentmethod.py b/src/gr4vy/models/transactionpaymentmethod.py index 3343c436..b58fcba7 100644 --- a/src/gr4vy/models/transactionpaymentmethod.py +++ b/src/gr4vy/models/transactionpaymentmethod.py @@ -109,61 +109,60 @@ class TransactionPaymentMethod(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "approval_url", - "country", - "currency", - "details", - "expiration_date", - "fingerprint", - "label", - "last_replaced_at", - "mode", - "scheme", - "id", - "approval_target", - "external_identifier", - "payment_account_reference", - ] - nullable_fields = [ - "approval_url", - "country", - "currency", - "details", - "expiration_date", - "fingerprint", - "label", - "last_replaced_at", - "mode", - "scheme", - "id", - "approval_target", - "external_identifier", - "payment_account_reference", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "approval_url", + "country", + "currency", + "details", + "expiration_date", + "fingerprint", + "label", + "last_replaced_at", + "mode", + "scheme", + "id", + "approval_target", + "external_identifier", + "payment_account_reference", + ] + ) + nullable_fields = set( + [ + "approval_url", + "country", + "currency", + "details", + "expiration_date", + "fingerprint", + "label", + "last_replaced_at", + "mode", + "scheme", + "id", + "approval_target", + "external_identifier", + "payment_account_reference", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionpaymentservice.py b/src/gr4vy/models/transactionpaymentservice.py index 4327f037..02798ec2 100644 --- a/src/gr4vy/models/transactionpaymentservice.py +++ b/src/gr4vy/models/transactionpaymentservice.py @@ -2,9 +2,10 @@ from __future__ import annotations from .method import Method -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Literal, Optional from typing_extensions import Annotated, TypedDict @@ -42,3 +43,19 @@ class TransactionPaymentService(BaseModel): pydantic.Field(alias="type"), ] = "payment-service" r"""Always `payment-service`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/transactionrefundallcreate.py b/src/gr4vy/models/transactionrefundallcreate.py index b36ef762..bbbef301 100644 --- a/src/gr4vy/models/transactionrefundallcreate.py +++ b/src/gr4vy/models/transactionrefundallcreate.py @@ -22,30 +22,25 @@ class TransactionRefundAllCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["reason", "external_identifier"] - nullable_fields = ["reason", "external_identifier"] - null_default_fields = [] - + optional_fields = set(["reason", "external_identifier"]) + nullable_fields = set(["reason", "external_identifier"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionrefundcreate.py b/src/gr4vy/models/transactionrefundcreate.py index 4618f898..b23cc239 100644 --- a/src/gr4vy/models/transactionrefundcreate.py +++ b/src/gr4vy/models/transactionrefundcreate.py @@ -37,36 +37,27 @@ class TransactionRefundCreate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "amount", - "target_type", - "target_id", - "reason", - "external_identifier", - ] - nullable_fields = ["amount", "target_id", "reason", "external_identifier"] - null_default_fields = [] - + optional_fields = set( + ["amount", "target_type", "target_id", "reason", "external_identifier"] + ) + nullable_fields = set(["amount", "target_id", "reason", "external_identifier"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionretriesreportspec.py b/src/gr4vy/models/transactionretriesreportspec.py index f5e6b106..379a50bc 100644 --- a/src/gr4vy/models/transactionretriesreportspec.py +++ b/src/gr4vy/models/transactionretriesreportspec.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Any, Dict, Literal, Optional from typing_extensions import Annotated, TypedDict @@ -28,3 +29,19 @@ class TransactionRetriesReportSpec(BaseModel): pydantic.Field(alias="model"), ] = "transaction_retries" r"""The report model type.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["model"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/transactionsreportspec.py b/src/gr4vy/models/transactionsreportspec.py index d52c0a3f..1a65e21e 100644 --- a/src/gr4vy/models/transactionsreportspec.py +++ b/src/gr4vy/models/transactionsreportspec.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import validate_const import pydantic +from pydantic import model_serializer from pydantic.functional_validators import AfterValidator from typing import Any, Dict, Literal, Optional from typing_extensions import Annotated, TypedDict @@ -28,3 +29,19 @@ class TransactionsReportSpec(BaseModel): pydantic.Field(alias="model"), ] = "transactions" r"""The report model type.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["model"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/transactionsummaries.py b/src/gr4vy/models/transactionsummaries.py index 68169134..122143d3 100644 --- a/src/gr4vy/models/transactionsummaries.py +++ b/src/gr4vy/models/transactionsummaries.py @@ -34,30 +34,25 @@ class TransactionSummaries(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["limit", "next_cursor", "previous_cursor"] - nullable_fields = ["next_cursor", "previous_cursor"] - null_default_fields = [] - + optional_fields = set(["limit", "next_cursor", "previous_cursor"]) + nullable_fields = set(["next_cursor", "previous_cursor"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionsummary.py b/src/gr4vy/models/transactionsummary.py index 63538acf..164137f7 100644 --- a/src/gr4vy/models/transactionsummary.py +++ b/src/gr4vy/models/transactionsummary.py @@ -199,62 +199,61 @@ class TransactionSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "type", - "settled_currency", - "country", - "external_identifier", - "payment_method", - "method", - "instrument_type", - "error_code", - "payment_service", - "pending_review", - "buyer", - "raw_response_code", - "raw_response_description", - "shipping_details", - "checkout_session_id", - "gift_card_service", - ] - nullable_fields = [ - "settled_currency", - "country", - "external_identifier", - "payment_method", - "method", - "instrument_type", - "error_code", - "payment_service", - "buyer", - "raw_response_code", - "raw_response_description", - "shipping_details", - "checkout_session_id", - "gift_card_service", - ] - null_default_fields = [] - + optional_fields = set( + [ + "type", + "settled_currency", + "country", + "external_identifier", + "payment_method", + "method", + "instrument_type", + "error_code", + "payment_service", + "pending_review", + "buyer", + "raw_response_code", + "raw_response_description", + "shipping_details", + "checkout_session_id", + "gift_card_service", + ] + ) + nullable_fields = set( + [ + "settled_currency", + "country", + "external_identifier", + "payment_method", + "method", + "instrument_type", + "error_code", + "payment_service", + "buyer", + "raw_response_code", + "raw_response_description", + "shipping_details", + "checkout_session_id", + "gift_card_service", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionthreedsecuresummary.py b/src/gr4vy/models/transactionthreedsecuresummary.py index ae8f4f2c..cd7c2637 100644 --- a/src/gr4vy/models/transactionthreedsecuresummary.py +++ b/src/gr4vy/models/transactionthreedsecuresummary.py @@ -58,44 +58,29 @@ class TransactionThreeDSecureSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "version", - "status", - "method", - "response_data", - "error_data", - "amount", - ] - nullable_fields = [ - "version", - "status", - "method", - "response_data", - "error_data", - "amount", - ] - null_default_fields = [] - + optional_fields = set( + ["version", "status", "method", "response_data", "error_data", "amount"] + ) + nullable_fields = set( + ["version", "status", "method", "response_data", "error_data", "amount"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionupdate.py b/src/gr4vy/models/transactionupdate.py index 21029446..d1c69c9a 100644 --- a/src/gr4vy/models/transactionupdate.py +++ b/src/gr4vy/models/transactionupdate.py @@ -32,30 +32,25 @@ class TransactionUpdate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["external_identifier", "metadata", "connection_options"] - nullable_fields = ["external_identifier", "metadata", "connection_options"] - null_default_fields = [] - + optional_fields = set(["external_identifier", "metadata", "connection_options"]) + nullable_fields = set(["external_identifier", "metadata", "connection_options"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/transactionvoid.py b/src/gr4vy/models/transactionvoid.py index 0f9223b6..3d3cd065 100644 --- a/src/gr4vy/models/transactionvoid.py +++ b/src/gr4vy/models/transactionvoid.py @@ -52,30 +52,25 @@ class TransactionVoid(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type"] - nullable_fields = ["code", "raw_response_code", "raw_response_description"] - null_default_fields = [] - + optional_fields = set(["type"]) + nullable_fields = set(["code", "raw_response_code", "raw_response_description"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/travelhubcustomdata.py b/src/gr4vy/models/travelhubcustomdata.py index ffde63a9..f0b55326 100644 --- a/src/gr4vy/models/travelhubcustomdata.py +++ b/src/gr4vy/models/travelhubcustomdata.py @@ -27,30 +27,25 @@ class TravelHubCustomData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type"] - nullable_fields = ["type"] - null_default_fields = [] - + optional_fields = set(["type"]) + nullable_fields = set(["type"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/travelhuboptions.py b/src/gr4vy/models/travelhuboptions.py index acf625ec..82b81c6c 100644 --- a/src/gr4vy/models/travelhuboptions.py +++ b/src/gr4vy/models/travelhuboptions.py @@ -29,30 +29,25 @@ class TravelhubOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["customData", "companyName"] - nullable_fields = ["customData", "companyName"] - null_default_fields = [] - + optional_fields = set(["customData", "companyName"]) + nullable_fields = set(["customData", "companyName"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/trustlyoptions.py b/src/gr4vy/models/trustlyoptions.py index 554f24fe..f67231a4 100644 --- a/src/gr4vy/models/trustlyoptions.py +++ b/src/gr4vy/models/trustlyoptions.py @@ -20,30 +20,25 @@ class TrustlyOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["refreshSplitToken"] - nullable_fields = ["refreshSplitToken"] - null_default_fields = [] - + optional_fields = set(["refreshSplitToken"]) + nullable_fields = set(["refreshSplitToken"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/unregister_digital_wallet_domainop.py b/src/gr4vy/models/unregister_digital_wallet_domainop.py index eb58abbb..b1534f20 100644 --- a/src/gr4vy/models/unregister_digital_wallet_domainop.py +++ b/src/gr4vy/models/unregister_digital_wallet_domainop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .digitalwalletdomain import DigitalWalletDomain, DigitalWalletDomainTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class UnregisterDigitalWalletDomainGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UnregisterDigitalWalletDomainRequestTypedDict(TypedDict): digital_wallet_id: str @@ -51,3 +68,19 @@ class UnregisterDigitalWalletDomainRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_buyer_shipping_detailsop.py b/src/gr4vy/models/update_buyer_shipping_detailsop.py index e597c98a..9f1b3eb3 100644 --- a/src/gr4vy/models/update_buyer_shipping_detailsop.py +++ b/src/gr4vy/models/update_buyer_shipping_detailsop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .shippingdetailsupdate import ShippingDetailsUpdate, ShippingDetailsUpdateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class UpdateBuyerShippingDetailsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdateBuyerShippingDetailsRequestTypedDict(TypedDict): buyer_id: str @@ -60,3 +77,19 @@ class UpdateBuyerShippingDetailsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_buyerop.py b/src/gr4vy/models/update_buyerop.py index 4d519709..f9e5befe 100644 --- a/src/gr4vy/models/update_buyerop.py +++ b/src/gr4vy/models/update_buyerop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .buyerupdate import BuyerUpdate, BuyerUpdateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class UpdateBuyerGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdateBuyerRequestTypedDict(TypedDict): buyer_id: str @@ -53,3 +70,19 @@ class UpdateBuyerRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_checkout_sessionop.py b/src/gr4vy/models/update_checkout_sessionop.py index 83c00be9..b843f2d6 100644 --- a/src/gr4vy/models/update_checkout_sessionop.py +++ b/src/gr4vy/models/update_checkout_sessionop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .checkoutsessioncreate import CheckoutSessionCreate, CheckoutSessionCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class UpdateCheckoutSessionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdateCheckoutSessionRequestTypedDict(TypedDict): session_id: str @@ -53,3 +70,19 @@ class UpdateCheckoutSessionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_digital_walletop.py b/src/gr4vy/models/update_digital_walletop.py index 9384030e..dfa31467 100644 --- a/src/gr4vy/models/update_digital_walletop.py +++ b/src/gr4vy/models/update_digital_walletop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .digitalwalletupdate import DigitalWalletUpdate, DigitalWalletUpdateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class UpdateDigitalWalletGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdateDigitalWalletRequestTypedDict(TypedDict): digital_wallet_id: str @@ -53,3 +70,19 @@ class UpdateDigitalWalletRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_payment_serviceop.py b/src/gr4vy/models/update_payment_serviceop.py index 3050a48c..68c04283 100644 --- a/src/gr4vy/models/update_payment_serviceop.py +++ b/src/gr4vy/models/update_payment_serviceop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .paymentservicecreate import PaymentServiceCreate, PaymentServiceCreateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class UpdatePaymentServiceGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdatePaymentServiceRequestTypedDict(TypedDict): payment_service_create: PaymentServiceCreateTypedDict @@ -41,3 +58,19 @@ class UpdatePaymentServiceRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_reportop.py b/src/gr4vy/models/update_reportop.py index 06f4d3fc..26e2d6d7 100644 --- a/src/gr4vy/models/update_reportop.py +++ b/src/gr4vy/models/update_reportop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .reportupdate import ReportUpdate, ReportUpdateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class UpdateReportGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdateReportRequestTypedDict(TypedDict): report_id: str @@ -53,3 +70,19 @@ class UpdateReportRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_three_ds_scenarioop.py b/src/gr4vy/models/update_three_ds_scenarioop.py new file mode 100644 index 00000000..ace15ad5 --- /dev/null +++ b/src/gr4vy/models/update_three_ds_scenarioop.py @@ -0,0 +1,91 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .threedsecurescenarioupdate import ( + ThreeDSecureScenarioUpdate, + ThreeDSecureScenarioUpdateTypedDict, +) +from gr4vy.types import BaseModel, UNSET_SENTINEL +from gr4vy.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + RequestMetadata, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateThreeDsScenarioGlobalsTypedDict(TypedDict): + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class UpdateThreeDsScenarioGlobals(BaseModel): + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class UpdateThreeDsScenarioRequestTypedDict(TypedDict): + three_ds_scenario_id: str + r"""The ID of the 3DS scenario""" + three_d_secure_scenario_update: ThreeDSecureScenarioUpdateTypedDict + merchant_account_id: NotRequired[str] + r"""The ID of the merchant account to use for this request.""" + + +class UpdateThreeDsScenarioRequest(BaseModel): + three_ds_scenario_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the 3DS scenario""" + + three_d_secure_scenario_update: Annotated[ + ThreeDSecureScenarioUpdate, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + merchant_account_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-gr4vy-merchant-account-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/update_transactionop.py b/src/gr4vy/models/update_transactionop.py index 68531ec5..9d192bbc 100644 --- a/src/gr4vy/models/update_transactionop.py +++ b/src/gr4vy/models/update_transactionop.py @@ -2,7 +2,7 @@ from __future__ import annotations from .transactionupdate import TransactionUpdate, TransactionUpdateTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import ( FieldMetadata, HeaderMetadata, @@ -10,6 +10,7 @@ RequestMetadata, ) import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,6 +28,22 @@ class UpdateTransactionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdateTransactionRequestTypedDict(TypedDict): transaction_id: str @@ -53,3 +70,19 @@ class UpdateTransactionRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/verify_payment_service_credentialsop.py b/src/gr4vy/models/verify_payment_service_credentialsop.py index 86206020..9b9340fc 100644 --- a/src/gr4vy/models/verify_payment_service_credentialsop.py +++ b/src/gr4vy/models/verify_payment_service_credentialsop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .verifycredentials import VerifyCredentials, VerifyCredentialsTypedDict -from gr4vy.types import BaseModel +from gr4vy.types import BaseModel, UNSET_SENTINEL from gr4vy.utils import FieldMetadata, HeaderMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,22 @@ class VerifyPaymentServiceCredentialsGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class VerifyPaymentServiceCredentialsRequestTypedDict(TypedDict): verify_credentials: VerifyCredentialsTypedDict @@ -41,3 +58,19 @@ class VerifyPaymentServiceCredentialsRequest(BaseModel): FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None r"""The ID of the merchant account to use for this request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/gr4vy/models/verifycredentials.py b/src/gr4vy/models/verifycredentials.py index 88d01558..9182d982 100644 --- a/src/gr4vy/models/verifycredentials.py +++ b/src/gr4vy/models/verifycredentials.py @@ -29,30 +29,25 @@ class VerifyCredentials(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["payment_service_id"] - nullable_fields = ["payment_service_id"] - null_default_fields = [] - + optional_fields = set(["payment_service_id"]) + nullable_fields = set(["payment_service_id"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/void_transactionop.py b/src/gr4vy/models/void_transactionop.py index 9e4d8bf9..4ab8c555 100644 --- a/src/gr4vy/models/void_transactionop.py +++ b/src/gr4vy/models/void_transactionop.py @@ -24,6 +24,22 @@ class VoidTransactionGlobals(BaseModel): ] = None r"""The ID of the merchant account to use for this request.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["merchant_account_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class VoidTransactionRequestTypedDict(TypedDict): transaction_id: str @@ -55,31 +71,26 @@ class VoidTransactionRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["prefer", "merchant_account_id"] - nullable_fields = ["prefer"] - null_default_fields = [] - + optional_fields = set(["prefer", "merchant_account_id"]) + nullable_fields = set(["prefer"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/wpayeverdaypayoptions.py b/src/gr4vy/models/wpayeverdaypayoptions.py index b90030c1..4d341b8f 100644 --- a/src/gr4vy/models/wpayeverdaypayoptions.py +++ b/src/gr4vy/models/wpayeverdaypayoptions.py @@ -47,42 +47,41 @@ class WpayEverdaypayOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "merchant_defined_data", - "customerId", - "rewardsAccessToken", - "deviceId", - "postPaymentRedirect", - ] - nullable_fields = [ - "merchant_defined_data", - "customerId", - "rewardsAccessToken", - "deviceId", - "postPaymentRedirect", - ] - null_default_fields = [] - + optional_fields = set( + [ + "merchant_defined_data", + "customerId", + "rewardsAccessToken", + "deviceId", + "postPaymentRedirect", + ] + ) + nullable_fields = set( + [ + "merchant_defined_data", + "customerId", + "rewardsAccessToken", + "deviceId", + "postPaymentRedirect", + ] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/wpaypaytooptions.py b/src/gr4vy/models/wpaypaytooptions.py index 65eff23c..1978f26e 100644 --- a/src/gr4vy/models/wpaypaytooptions.py +++ b/src/gr4vy/models/wpaypaytooptions.py @@ -31,30 +31,25 @@ class WpayPaytoOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["instrument", "payment", "refund"] - nullable_fields = ["instrument", "payment", "refund"] - null_default_fields = [] - + optional_fields = set(["instrument", "payment", "refund"]) + nullable_fields = set(["instrument", "payment", "refund"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/wpaypaytoresourceoptions.py b/src/gr4vy/models/wpaypaytoresourceoptions.py index 7d304e30..a443cb54 100644 --- a/src/gr4vy/models/wpaypaytoresourceoptions.py +++ b/src/gr4vy/models/wpaypaytoresourceoptions.py @@ -21,30 +21,25 @@ class WpayPaytoResourceOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["simulation"] - nullable_fields = ["simulation"] - null_default_fields = [] - + optional_fields = set(["simulation"]) + nullable_fields = set(["simulation"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/models/wpaypaytosimulationoptions.py b/src/gr4vy/models/wpaypaytosimulationoptions.py index 680733ea..3c2dbaf7 100644 --- a/src/gr4vy/models/wpaypaytosimulationoptions.py +++ b/src/gr4vy/models/wpaypaytosimulationoptions.py @@ -22,30 +22,25 @@ class WpayPaytoSimulationOptions(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["simulate", "delay"] - nullable_fields = ["simulate", "delay"] - null_default_fields = [] - + optional_fields = set(["simulate", "delay"]) + nullable_fields = set(["simulate", "delay"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/src/gr4vy/sdk.py b/src/gr4vy/sdk.py index d04ea290..0e7eb63f 100644 --- a/src/gr4vy/sdk.py +++ b/src/gr4vy/sdk.py @@ -33,6 +33,7 @@ from gr4vy.refunds_sdk import RefundsSDK from gr4vy.report_executions_sdk import ReportExecutionsSDK from gr4vy.reports_sdk import ReportsSDK + from gr4vy.three_ds_scenarios import ThreeDsScenarios from gr4vy.transactions import Transactions @@ -55,6 +56,7 @@ class Gr4vy(BaseSDK): report_executions: "ReportExecutionsSDK" checkout_sessions: "CheckoutSessions" merchant_accounts: "MerchantAccountsSDK" + three_ds_scenarios: "ThreeDsScenarios" payouts: "Payouts" payment_links: "PaymentLinksSDK" _sub_sdk_map = { @@ -80,6 +82,7 @@ class Gr4vy(BaseSDK): "report_executions": ("gr4vy.report_executions_sdk", "ReportExecutionsSDK"), "checkout_sessions": ("gr4vy.checkout_sessions", "CheckoutSessions"), "merchant_accounts": ("gr4vy.merchant_accounts_sdk", "MerchantAccountsSDK"), + "three_ds_scenarios": ("gr4vy.three_ds_scenarios", "ThreeDsScenarios"), "payouts": ("gr4vy.payouts", "Payouts"), "payment_links": ("gr4vy.payment_links_sdk", "PaymentLinksSDK"), } diff --git a/src/gr4vy/three_ds_scenarios.py b/src/gr4vy/three_ds_scenarios.py new file mode 100644 index 00000000..0fdc029c --- /dev/null +++ b/src/gr4vy/three_ds_scenarios.py @@ -0,0 +1,1322 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from gr4vy import errors, models, utils +from gr4vy._hooks import HookContext +from gr4vy.types import OptionalNullable, UNSET +from gr4vy.utils import get_security_from_env +from gr4vy.utils.unmarshal_json_response import unmarshal_json_response +from jsonpath import JSONPath +from typing import Any, Dict, List, Mapping, Optional, Union + + +class ThreeDsScenarios(BaseSDK): + def create( + self, + *, + conditions: Union[ + models.ThreeDSecureScenarioConditions, + models.ThreeDSecureScenarioConditionsTypedDict, + ], + outcome: Union[ + models.ThreeDSecureScenarioOutcome, + models.ThreeDSecureScenarioOutcomeTypedDict, + ], + merchant_account_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ThreeDSecureScenario: + r"""Create a 3DS scenario + + Create a new 3DS scenario for a merchant account. Only available in sandbox environments. + + :param conditions: + :param outcome: + :param merchant_account_id: The ID of the merchant account to use for this request. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CreateThreeDsScenarioRequest( + merchant_account_id=merchant_account_id, + three_d_secure_scenario_create=models.ThreeDSecureScenarioCreate( + conditions=utils.get_pydantic_model( + conditions, models.ThreeDSecureScenarioConditions + ), + outcome=utils.get_pydantic_model( + outcome, models.ThreeDSecureScenarioOutcome + ), + ), + ) + + req = self._build_request( + method="POST", + path="/three-ds-scenarios", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.CreateThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.three_d_secure_scenario_create, + False, + False, + "json", + models.ThreeDSecureScenarioCreate, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="create_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "201", "application/json"): + return unmarshal_json_response(models.ThreeDSecureScenario, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def create_async( + self, + *, + conditions: Union[ + models.ThreeDSecureScenarioConditions, + models.ThreeDSecureScenarioConditionsTypedDict, + ], + outcome: Union[ + models.ThreeDSecureScenarioOutcome, + models.ThreeDSecureScenarioOutcomeTypedDict, + ], + merchant_account_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ThreeDSecureScenario: + r"""Create a 3DS scenario + + Create a new 3DS scenario for a merchant account. Only available in sandbox environments. + + :param conditions: + :param outcome: + :param merchant_account_id: The ID of the merchant account to use for this request. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CreateThreeDsScenarioRequest( + merchant_account_id=merchant_account_id, + three_d_secure_scenario_create=models.ThreeDSecureScenarioCreate( + conditions=utils.get_pydantic_model( + conditions, models.ThreeDSecureScenarioConditions + ), + outcome=utils.get_pydantic_model( + outcome, models.ThreeDSecureScenarioOutcome + ), + ), + ) + + req = self._build_request_async( + method="POST", + path="/three-ds-scenarios", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.CreateThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.three_d_secure_scenario_create, + False, + False, + "json", + models.ThreeDSecureScenarioCreate, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="create_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "201", "application/json"): + return unmarshal_json_response(models.ThreeDSecureScenario, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def list( + self, + *, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + merchant_account_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.GetThreeDsScenarioResponse]: + r"""List 3DS scenario + + List all 3DS scenarios for a merchant account. Only available in sandbox environments. + + :param cursor: A pointer to the page of results to return. + :param limit: The maximum number of items that are at returned. + :param merchant_account_id: The ID of the merchant account to use for this request. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.GetThreeDsScenarioRequest( + cursor=cursor, + limit=limit, + merchant_account_id=merchant_account_id, + ) + + req = self._build_request( + method="GET", + path="/three-ds-scenarios", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.GetThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(200, 200, 1, 1000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["5XX"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="get_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + def next_func() -> Optional[models.GetThreeDsScenarioResponse]: + body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) + next_cursor = JSONPath("$.next_cursor").parse(body) + + if len(next_cursor) == 0: + return None + + next_cursor = next_cursor[0] + if next_cursor is None or str(next_cursor).strip() == "": + return None + + return self.list( + cursor=next_cursor, + limit=limit, + merchant_account_id=merchant_account_id, + retries=retries, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.GetThreeDsScenarioResponse( + result=unmarshal_json_response(models.ThreeDSecureScenarios, http_res), + next=next_func, + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def list_async( + self, + *, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + merchant_account_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.GetThreeDsScenarioResponse]: + r"""List 3DS scenario + + List all 3DS scenarios for a merchant account. Only available in sandbox environments. + + :param cursor: A pointer to the page of results to return. + :param limit: The maximum number of items that are at returned. + :param merchant_account_id: The ID of the merchant account to use for this request. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.GetThreeDsScenarioRequest( + cursor=cursor, + limit=limit, + merchant_account_id=merchant_account_id, + ) + + req = self._build_request_async( + method="GET", + path="/three-ds-scenarios", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.GetThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(200, 200, 1, 1000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["5XX"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="get_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + def next_func() -> Optional[models.GetThreeDsScenarioResponse]: + body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) + next_cursor = JSONPath("$.next_cursor").parse(body) + + if len(next_cursor) == 0: + return None + + next_cursor = next_cursor[0] + if next_cursor is None or str(next_cursor).strip() == "": + return None + + return self.list( + cursor=next_cursor, + limit=limit, + merchant_account_id=merchant_account_id, + retries=retries, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.GetThreeDsScenarioResponse( + result=unmarshal_json_response(models.ThreeDSecureScenarios, http_res), + next=next_func, + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def update( + self, + *, + three_ds_scenario_id: str, + merchant_account_id: Optional[str] = None, + conditions: OptionalNullable[ + Union[ + models.ThreeDSecureScenarioConditions, + models.ThreeDSecureScenarioConditionsTypedDict, + ] + ] = UNSET, + outcome: OptionalNullable[ + Union[ + models.ThreeDSecureScenarioOutcome, + models.ThreeDSecureScenarioOutcomeTypedDict, + ] + ] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ThreeDSecureScenario: + r"""Update a 3DS scenario + + Update a 3DS scenario. Only available in sandbox environments. + + :param three_ds_scenario_id: The ID of the 3DS scenario + :param merchant_account_id: The ID of the merchant account to use for this request. + :param conditions: Conditions for the scenario. + :param outcome: Outcome for the scenario. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.UpdateThreeDsScenarioRequest( + three_ds_scenario_id=three_ds_scenario_id, + merchant_account_id=merchant_account_id, + three_d_secure_scenario_update=models.ThreeDSecureScenarioUpdate( + conditions=utils.get_pydantic_model( + conditions, OptionalNullable[models.ThreeDSecureScenarioConditions] + ), + outcome=utils.get_pydantic_model( + outcome, OptionalNullable[models.ThreeDSecureScenarioOutcome] + ), + ), + ) + + req = self._build_request( + method="PUT", + path="/three-ds-scenarios/{three_ds_scenario_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.UpdateThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.three_d_secure_scenario_update, + False, + False, + "json", + models.ThreeDSecureScenarioUpdate, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="update_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ThreeDSecureScenario, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def update_async( + self, + *, + three_ds_scenario_id: str, + merchant_account_id: Optional[str] = None, + conditions: OptionalNullable[ + Union[ + models.ThreeDSecureScenarioConditions, + models.ThreeDSecureScenarioConditionsTypedDict, + ] + ] = UNSET, + outcome: OptionalNullable[ + Union[ + models.ThreeDSecureScenarioOutcome, + models.ThreeDSecureScenarioOutcomeTypedDict, + ] + ] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ThreeDSecureScenario: + r"""Update a 3DS scenario + + Update a 3DS scenario. Only available in sandbox environments. + + :param three_ds_scenario_id: The ID of the 3DS scenario + :param merchant_account_id: The ID of the merchant account to use for this request. + :param conditions: Conditions for the scenario. + :param outcome: Outcome for the scenario. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.UpdateThreeDsScenarioRequest( + three_ds_scenario_id=three_ds_scenario_id, + merchant_account_id=merchant_account_id, + three_d_secure_scenario_update=models.ThreeDSecureScenarioUpdate( + conditions=utils.get_pydantic_model( + conditions, OptionalNullable[models.ThreeDSecureScenarioConditions] + ), + outcome=utils.get_pydantic_model( + outcome, OptionalNullable[models.ThreeDSecureScenarioOutcome] + ), + ), + ) + + req = self._build_request_async( + method="PUT", + path="/three-ds-scenarios/{three_ds_scenario_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.UpdateThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.three_d_secure_scenario_update, + False, + False, + "json", + models.ThreeDSecureScenarioUpdate, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="update_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ThreeDSecureScenario, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def delete( + self, + *, + three_ds_scenario_id: str, + merchant_account_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete a 3DS scenario + + Removes a 3DS scenario from our system. Only available in sandbox environments. + + :param three_ds_scenario_id: The ID of the 3DS scenario + :param merchant_account_id: The ID of the merchant account to use for this request. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.DeleteThreeDsScenarioRequest( + three_ds_scenario_id=three_ds_scenario_id, + merchant_account_id=merchant_account_id, + ) + + req = self._build_request( + method="DELETE", + path="/three-ds-scenarios/{three_ds_scenario_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.DeleteThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="delete_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def delete_async( + self, + *, + three_ds_scenario_id: str, + merchant_account_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete a 3DS scenario + + Removes a 3DS scenario from our system. Only available in sandbox environments. + + :param three_ds_scenario_id: The ID of the 3DS scenario + :param merchant_account_id: The ID of the merchant account to use for this request. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.DeleteThreeDsScenarioRequest( + three_ds_scenario_id=three_ds_scenario_id, + merchant_account_id=merchant_account_id, + ) + + req = self._build_request_async( + method="DELETE", + path="/three-ds-scenarios/{three_ds_scenario_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.DeleteThreeDsScenarioGlobals( + merchant_account_id=self.sdk_configuration.globals.merchant_account_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="delete_three_ds_scenario", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=[ + "400", + "401", + "403", + "404", + "405", + "409", + "422", + "425", + "429", + "4XX", + "500", + "502", + "504", + "5XX", + ], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response(errors.Error400Data, http_res) + raise errors.Error400(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response(errors.Error401Data, http_res) + raise errors.Error401(response_data, http_res) + if utils.match_response(http_res, "403", "application/json"): + response_data = unmarshal_json_response(errors.Error403Data, http_res) + raise errors.Error403(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.Error404Data, http_res) + raise errors.Error404(response_data, http_res) + if utils.match_response(http_res, "405", "application/json"): + response_data = unmarshal_json_response(errors.Error405Data, http_res) + raise errors.Error405(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.Error409Data, http_res) + raise errors.Error409(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.HTTPValidationErrorData, http_res + ) + raise errors.HTTPValidationError(response_data, http_res) + if utils.match_response(http_res, "425", "application/json"): + response_data = unmarshal_json_response(errors.Error425Data, http_res) + raise errors.Error425(response_data, http_res) + if utils.match_response(http_res, "429", "application/json"): + response_data = unmarshal_json_response(errors.Error429Data, http_res) + raise errors.Error429(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response(errors.Error500Data, http_res) + raise errors.Error500(response_data, http_res) + if utils.match_response(http_res, "502", "application/json"): + response_data = unmarshal_json_response(errors.Error502Data, http_res) + raise errors.Error502(response_data, http_res) + if utils.match_response(http_res, "504", "application/json"): + response_data = unmarshal_json_response(errors.Error504Data, http_res) + raise errors.Error504(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) diff --git a/src/gr4vy/utils/__init__.py b/src/gr4vy/utils/__init__.py index f9c2edce..f4525b20 100644 --- a/src/gr4vy/utils/__init__.py +++ b/src/gr4vy/utils/__init__.py @@ -1,10 +1,22 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Callable, TypeVar from importlib import import_module +import asyncio import builtins import sys +_T = TypeVar("_T") + + +async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: + """Run a synchronous function in a thread pool to avoid blocking the event loop.""" + if sys.version_info >= (3, 9): + return await asyncio.to_thread(func, *args) + loop = asyncio.get_event_loop() + return await loop.run_in_executor(None, func, *args) + + if TYPE_CHECKING: from .annotations import get_discriminator from .datetimes import parse_datetime From a6812c1ff8201dc3240f1d4e88e310e81bee77d2 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 13:15:21 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow