diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f7727accd..1097ec40c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,6 +95,13 @@ jobs: - name: Typecheck with pyright run: make pyright + # Pip won't install newer versions of pyright on python 3.6 (odd, because pyright is a node module) + # so we skip running pyright, and do double duty on python 3.7 using the --pythonversion flag. + if: matrix.python-version != '3.6' + + - name: Typecheck with pyright + run: make pyright PYRIGHT_ARGS="--pythonversion 3.6" + if: matrix.python-version == '3.7' - name: Test with pytest run: make ci-test diff --git a/Makefile b/Makefile index 99e37f5b2..f3dc9d1df 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,8 @@ pyright: venv # we don't need to pass config-settings anyway because "editable_mode=compat" just # means to perform as these old versions of pip already do. pip install -e . --config-settings editable_mode=compat || pip install -e . - @${VENV_NAME}/bin/pyright + @${VENV_NAME}/bin/pyright --version + @${VENV_NAME}/bin/pyright $(PYRIGHT_ARGS) fmt: venv @${VENV_NAME}/bin/tox -e fmt diff --git a/flake8_stripe/flake8_stripe.py b/flake8_stripe/flake8_stripe.py index 0276bbec3..094fb5415 100644 --- a/flake8_stripe/flake8_stripe.py +++ b/flake8_stripe/flake8_stripe.py @@ -28,7 +28,9 @@ class TypingImportsChecker: "TYPE_CHECKING", "Type", "TypedDict", + "NotRequired", "Self", + "Unpack", ] allowed_typing_imports = [ @@ -40,9 +42,10 @@ class TypingImportsChecker: "cast", "overload", "Dict", + "Tuple", "List", "Generic", - "Tuple", + "Mapping", ] def __init__(self, tree: ast.AST): diff --git a/stripe/api_resources/abstract/api_resource.py b/stripe/api_resources/abstract/api_resource.py index f9dc2dd46..62d420d74 100644 --- a/stripe/api_resources/abstract/api_resource.py +++ b/stripe/api_resources/abstract/api_resource.py @@ -3,7 +3,16 @@ from stripe import api_requestor, error, util from stripe.stripe_object import StripeObject from urllib.parse import quote_plus -from typing import Any, ClassVar, Dict, Generic, Optional, TypeVar, cast +from typing import ( + Any, + ClassVar, + Dict, + Generic, + Optional, + TypeVar, + cast, + Mapping, +) T = TypeVar("T", bound=StripeObject) @@ -89,7 +98,7 @@ def _request_and_refresh( stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, headers: Optional[Dict[str, str]] = None, - params: Optional[Dict[str, Any]] = None, + params: Optional[Mapping[str, Any]] = None, ): obj = StripeObject._request( self, diff --git a/stripe/api_resources/account.py b/stripe/api_resources/account.py index ad5b42697..44503fbcf 100644 --- a/stripe/api_resources/account.py +++ b/stripe/api_resources/account.py @@ -9,13 +9,18 @@ nested_resource_class_methods, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Any, Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.person import Person @@ -42,6 +47,923 @@ class Account( """ OBJECT_NAME = "account" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + account_token: NotRequired["str|None"] + business_profile: NotRequired[ + "Account.CreateParamsBusinessProfile|None" + ] + business_type: NotRequired[ + "Literal['company', 'government_entity', 'individual', 'non_profit']|None" + ] + capabilities: NotRequired["Account.CreateParamsCapabilities|None"] + company: NotRequired["Account.CreateParamsCompany|None"] + country: NotRequired["str|None"] + default_currency: NotRequired["str|None"] + documents: NotRequired["Account.CreateParamsDocuments|None"] + email: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + external_account: NotRequired["str|None"] + individual: NotRequired["Account.CreateParamsIndividual|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + settings: NotRequired["Account.CreateParamsSettings|None"] + tos_acceptance: NotRequired[ + "Account.CreateParamsTosAcceptance|None" + ] + type: NotRequired["Literal['custom', 'express', 'standard']|None"] + + class CreateParamsTosAcceptance(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + service_agreement: NotRequired["str|None"] + user_agent: NotRequired["str|None"] + + class CreateParamsSettings(TypedDict): + branding: NotRequired["Account.CreateParamsSettingsBranding|None"] + card_issuing: NotRequired[ + "Account.CreateParamsSettingsCardIssuing|None" + ] + card_payments: NotRequired[ + "Account.CreateParamsSettingsCardPayments|None" + ] + payments: NotRequired["Account.CreateParamsSettingsPayments|None"] + payouts: NotRequired["Account.CreateParamsSettingsPayouts|None"] + treasury: NotRequired["Account.CreateParamsSettingsTreasury|None"] + + class CreateParamsSettingsTreasury(TypedDict): + tos_acceptance: NotRequired[ + "Account.CreateParamsSettingsTreasuryTosAcceptance|None" + ] + + class CreateParamsSettingsTreasuryTosAcceptance(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["Literal['']|str|None"] + + class CreateParamsSettingsPayouts(TypedDict): + debit_negative_balances: NotRequired["bool|None"] + schedule: NotRequired[ + "Account.CreateParamsSettingsPayoutsSchedule|None" + ] + statement_descriptor: NotRequired["str|None"] + + class CreateParamsSettingsPayoutsSchedule(TypedDict): + delay_days: NotRequired["Literal['minimum']|int|None"] + interval: NotRequired[ + "Literal['daily', 'manual', 'monthly', 'weekly']|None" + ] + monthly_anchor: NotRequired["int|None"] + weekly_anchor: NotRequired[ + "Literal['friday', 'monday', 'saturday', 'sunday', 'thursday', 'tuesday', 'wednesday']|None" + ] + + class CreateParamsSettingsPayments(TypedDict): + statement_descriptor: NotRequired["str|None"] + statement_descriptor_kana: NotRequired["str|None"] + statement_descriptor_kanji: NotRequired["str|None"] + + class CreateParamsSettingsCardPayments(TypedDict): + decline_on: NotRequired[ + "Account.CreateParamsSettingsCardPaymentsDeclineOn|None" + ] + statement_descriptor_prefix: NotRequired["str|None"] + statement_descriptor_prefix_kana: NotRequired[ + "Literal['']|str|None" + ] + statement_descriptor_prefix_kanji: NotRequired[ + "Literal['']|str|None" + ] + + class CreateParamsSettingsCardPaymentsDeclineOn(TypedDict): + avs_failure: NotRequired["bool|None"] + cvc_failure: NotRequired["bool|None"] + + class CreateParamsSettingsCardIssuing(TypedDict): + tos_acceptance: NotRequired[ + "Account.CreateParamsSettingsCardIssuingTosAcceptance|None" + ] + + class CreateParamsSettingsCardIssuingTosAcceptance(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["Literal['']|str|None"] + + class CreateParamsSettingsBranding(TypedDict): + icon: NotRequired["str|None"] + logo: NotRequired["str|None"] + primary_color: NotRequired["str|None"] + secondary_color: NotRequired["str|None"] + + class CreateParamsIndividual(TypedDict): + address: NotRequired["Account.CreateParamsIndividualAddress|None"] + address_kana: NotRequired[ + "Account.CreateParamsIndividualAddressKana|None" + ] + address_kanji: NotRequired[ + "Account.CreateParamsIndividualAddressKanji|None" + ] + dob: NotRequired[ + "Literal['']|Account.CreateParamsIndividualDob|None" + ] + email: NotRequired["str|None"] + first_name: NotRequired["str|None"] + first_name_kana: NotRequired["str|None"] + first_name_kanji: NotRequired["str|None"] + full_name_aliases: NotRequired["Literal['']|List[str]|None"] + gender: NotRequired["str|None"] + id_number: NotRequired["str|None"] + id_number_secondary: NotRequired["str|None"] + last_name: NotRequired["str|None"] + last_name_kana: NotRequired["str|None"] + last_name_kanji: NotRequired["str|None"] + maiden_name: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + phone: NotRequired["str|None"] + political_exposure: NotRequired["Literal['existing', 'none']|None"] + registered_address: NotRequired[ + "Account.CreateParamsIndividualRegisteredAddress|None" + ] + ssn_last_4: NotRequired["str|None"] + verification: NotRequired[ + "Account.CreateParamsIndividualVerification|None" + ] + + class CreateParamsIndividualVerification(TypedDict): + additional_document: NotRequired[ + "Account.CreateParamsIndividualVerificationAdditionalDocument|None" + ] + document: NotRequired[ + "Account.CreateParamsIndividualVerificationDocument|None" + ] + + class CreateParamsIndividualVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsIndividualVerificationAdditionalDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsIndividualRegisteredAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsIndividualDob(TypedDict): + day: int + month: int + year: int + + class CreateParamsIndividualAddressKanji(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsIndividualAddressKana(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsIndividualAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsDocuments(TypedDict): + bank_account_ownership_verification: NotRequired[ + "Account.CreateParamsDocumentsBankAccountOwnershipVerification|None" + ] + company_license: NotRequired[ + "Account.CreateParamsDocumentsCompanyLicense|None" + ] + company_memorandum_of_association: NotRequired[ + "Account.CreateParamsDocumentsCompanyMemorandumOfAssociation|None" + ] + company_ministerial_decree: NotRequired[ + "Account.CreateParamsDocumentsCompanyMinisterialDecree|None" + ] + company_registration_verification: NotRequired[ + "Account.CreateParamsDocumentsCompanyRegistrationVerification|None" + ] + company_tax_id_verification: NotRequired[ + "Account.CreateParamsDocumentsCompanyTaxIdVerification|None" + ] + proof_of_registration: NotRequired[ + "Account.CreateParamsDocumentsProofOfRegistration|None" + ] + + class CreateParamsDocumentsProofOfRegistration(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsDocumentsCompanyTaxIdVerification(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsDocumentsCompanyRegistrationVerification(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsDocumentsCompanyMinisterialDecree(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsDocumentsCompanyMemorandumOfAssociation(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsDocumentsCompanyLicense(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsDocumentsBankAccountOwnershipVerification(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsCompany(TypedDict): + address: NotRequired["Account.CreateParamsCompanyAddress|None"] + address_kana: NotRequired[ + "Account.CreateParamsCompanyAddressKana|None" + ] + address_kanji: NotRequired[ + "Account.CreateParamsCompanyAddressKanji|None" + ] + directors_provided: NotRequired["bool|None"] + executives_provided: NotRequired["bool|None"] + export_license_id: NotRequired["str|None"] + export_purpose_code: NotRequired["str|None"] + name: NotRequired["str|None"] + name_kana: NotRequired["str|None"] + name_kanji: NotRequired["str|None"] + owners_provided: NotRequired["bool|None"] + ownership_declaration: NotRequired[ + "Account.CreateParamsCompanyOwnershipDeclaration|None" + ] + phone: NotRequired["str|None"] + registration_number: NotRequired["str|None"] + structure: NotRequired[ + "Literal['']|Literal['free_zone_establishment', 'free_zone_llc', 'government_instrumentality', 'governmental_unit', 'incorporated_non_profit', 'incorporated_partnership', 'limited_liability_partnership', 'llc', 'multi_member_llc', 'private_company', 'private_corporation', 'private_partnership', 'public_company', 'public_corporation', 'public_partnership', 'single_member_llc', 'sole_establishment', 'sole_proprietorship', 'tax_exempt_government_instrumentality', 'unincorporated_association', 'unincorporated_non_profit', 'unincorporated_partnership']|None" + ] + tax_id: NotRequired["str|None"] + tax_id_registrar: NotRequired["str|None"] + vat_id: NotRequired["str|None"] + verification: NotRequired[ + "Account.CreateParamsCompanyVerification|None" + ] + + class CreateParamsCompanyVerification(TypedDict): + document: NotRequired[ + "Account.CreateParamsCompanyVerificationDocument|None" + ] + + class CreateParamsCompanyVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsCompanyOwnershipDeclaration(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["str|None"] + + class CreateParamsCompanyAddressKanji(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsCompanyAddressKana(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsCompanyAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsCapabilities(TypedDict): + acss_debit_payments: NotRequired[ + "Account.CreateParamsCapabilitiesAcssDebitPayments|None" + ] + affirm_payments: NotRequired[ + "Account.CreateParamsCapabilitiesAffirmPayments|None" + ] + afterpay_clearpay_payments: NotRequired[ + "Account.CreateParamsCapabilitiesAfterpayClearpayPayments|None" + ] + au_becs_debit_payments: NotRequired[ + "Account.CreateParamsCapabilitiesAuBecsDebitPayments|None" + ] + bacs_debit_payments: NotRequired[ + "Account.CreateParamsCapabilitiesBacsDebitPayments|None" + ] + bancontact_payments: NotRequired[ + "Account.CreateParamsCapabilitiesBancontactPayments|None" + ] + bank_transfer_payments: NotRequired[ + "Account.CreateParamsCapabilitiesBankTransferPayments|None" + ] + blik_payments: NotRequired[ + "Account.CreateParamsCapabilitiesBlikPayments|None" + ] + boleto_payments: NotRequired[ + "Account.CreateParamsCapabilitiesBoletoPayments|None" + ] + card_issuing: NotRequired[ + "Account.CreateParamsCapabilitiesCardIssuing|None" + ] + card_payments: NotRequired[ + "Account.CreateParamsCapabilitiesCardPayments|None" + ] + cartes_bancaires_payments: NotRequired[ + "Account.CreateParamsCapabilitiesCartesBancairesPayments|None" + ] + cashapp_payments: NotRequired[ + "Account.CreateParamsCapabilitiesCashappPayments|None" + ] + eps_payments: NotRequired[ + "Account.CreateParamsCapabilitiesEpsPayments|None" + ] + fpx_payments: NotRequired[ + "Account.CreateParamsCapabilitiesFpxPayments|None" + ] + giropay_payments: NotRequired[ + "Account.CreateParamsCapabilitiesGiropayPayments|None" + ] + grabpay_payments: NotRequired[ + "Account.CreateParamsCapabilitiesGrabpayPayments|None" + ] + ideal_payments: NotRequired[ + "Account.CreateParamsCapabilitiesIdealPayments|None" + ] + india_international_payments: NotRequired[ + "Account.CreateParamsCapabilitiesIndiaInternationalPayments|None" + ] + jcb_payments: NotRequired[ + "Account.CreateParamsCapabilitiesJcbPayments|None" + ] + klarna_payments: NotRequired[ + "Account.CreateParamsCapabilitiesKlarnaPayments|None" + ] + konbini_payments: NotRequired[ + "Account.CreateParamsCapabilitiesKonbiniPayments|None" + ] + legacy_payments: NotRequired[ + "Account.CreateParamsCapabilitiesLegacyPayments|None" + ] + link_payments: NotRequired[ + "Account.CreateParamsCapabilitiesLinkPayments|None" + ] + oxxo_payments: NotRequired[ + "Account.CreateParamsCapabilitiesOxxoPayments|None" + ] + p24_payments: NotRequired[ + "Account.CreateParamsCapabilitiesP24Payments|None" + ] + paynow_payments: NotRequired[ + "Account.CreateParamsCapabilitiesPaynowPayments|None" + ] + promptpay_payments: NotRequired[ + "Account.CreateParamsCapabilitiesPromptpayPayments|None" + ] + sepa_debit_payments: NotRequired[ + "Account.CreateParamsCapabilitiesSepaDebitPayments|None" + ] + sofort_payments: NotRequired[ + "Account.CreateParamsCapabilitiesSofortPayments|None" + ] + tax_reporting_us_1099_k: NotRequired[ + "Account.CreateParamsCapabilitiesTaxReportingUs1099K|None" + ] + tax_reporting_us_1099_misc: NotRequired[ + "Account.CreateParamsCapabilitiesTaxReportingUs1099Misc|None" + ] + transfers: NotRequired[ + "Account.CreateParamsCapabilitiesTransfers|None" + ] + treasury: NotRequired[ + "Account.CreateParamsCapabilitiesTreasury|None" + ] + us_bank_account_ach_payments: NotRequired[ + "Account.CreateParamsCapabilitiesUsBankAccountAchPayments|None" + ] + zip_payments: NotRequired[ + "Account.CreateParamsCapabilitiesZipPayments|None" + ] + + class CreateParamsCapabilitiesZipPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesUsBankAccountAchPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesTreasury(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesTransfers(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesTaxReportingUs1099Misc(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesTaxReportingUs1099K(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesSofortPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesSepaDebitPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesPromptpayPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesPaynowPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesP24Payments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesOxxoPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesLinkPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesLegacyPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesKonbiniPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesKlarnaPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesJcbPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesIndiaInternationalPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesIdealPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesGrabpayPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesGiropayPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesFpxPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesEpsPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesCashappPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesCartesBancairesPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesCardPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesCardIssuing(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesBoletoPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesBlikPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesBankTransferPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesBancontactPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesBacsDebitPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesAuBecsDebitPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesAfterpayClearpayPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesAffirmPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsCapabilitiesAcssDebitPayments(TypedDict): + requested: NotRequired["bool|None"] + + class CreateParamsBusinessProfile(TypedDict): + mcc: NotRequired["str|None"] + monthly_estimated_revenue: NotRequired[ + "Account.CreateParamsBusinessProfileMonthlyEstimatedRevenue|None" + ] + name: NotRequired["str|None"] + product_description: NotRequired["str|None"] + support_address: NotRequired[ + "Account.CreateParamsBusinessProfileSupportAddress|None" + ] + support_email: NotRequired["str|None"] + support_phone: NotRequired["str|None"] + support_url: NotRequired["Literal['']|str|None"] + url: NotRequired["str|None"] + + class CreateParamsBusinessProfileSupportAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsBusinessProfileMonthlyEstimatedRevenue(TypedDict): + amount: int + currency: str + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + created: NotRequired["Account.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class PersonsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + relationship: NotRequired["Account.PersonsParamsRelationship|None"] + starting_after: NotRequired["str|None"] + + class PersonsParamsRelationship(TypedDict): + director: NotRequired["bool|None"] + executive: NotRequired["bool|None"] + owner: NotRequired["bool|None"] + representative: NotRequired["bool|None"] + + class RejectParams(RequestOptions): + expand: NotRequired["List[str]|None"] + reason: str + + class RetrieveCapabilityParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifyCapabilityParams(RequestOptions): + expand: NotRequired["List[str]|None"] + requested: NotRequired["bool|None"] + + class ListCapabilitiesParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateExternalAccountParams(RequestOptions): + default_for_currency: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + external_account: str + metadata: NotRequired["Dict[str, str]|None"] + + class RetrieveExternalAccountParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifyExternalAccountParams(RequestOptions): + account_holder_name: NotRequired["str|None"] + account_holder_type: NotRequired[ + "Literal['']|Literal['company', 'individual']|None" + ] + account_type: NotRequired[ + "Literal['checking', 'futsu', 'savings', 'toza']|None" + ] + address_city: NotRequired["str|None"] + address_country: NotRequired["str|None"] + address_line1: NotRequired["str|None"] + address_line2: NotRequired["str|None"] + address_state: NotRequired["str|None"] + address_zip: NotRequired["str|None"] + default_for_currency: NotRequired["bool|None"] + documents: NotRequired[ + "Account.ModifyExternalAccountParamsDocuments|None" + ] + exp_month: NotRequired["str|None"] + exp_year: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + name: NotRequired["str|None"] + + class ModifyExternalAccountParamsDocuments(TypedDict): + bank_account_ownership_verification: NotRequired[ + "Account.ModifyExternalAccountParamsDocumentsBankAccountOwnershipVerification|None" + ] + + class ModifyExternalAccountParamsDocumentsBankAccountOwnershipVerification( + TypedDict, + ): + files: NotRequired["List[str]|None"] + + class DeleteExternalAccountParams(RequestOptions): + pass + + class ListExternalAccountsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + object: NotRequired["Literal['bank_account', 'card']|None"] + starting_after: NotRequired["str|None"] + + class CreateLoginLinkParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreatePersonParams(RequestOptions): + address: NotRequired["Account.CreatePersonParamsAddress|None"] + address_kana: NotRequired[ + "Account.CreatePersonParamsAddressKana|None" + ] + address_kanji: NotRequired[ + "Account.CreatePersonParamsAddressKanji|None" + ] + dob: NotRequired["Literal['']|Account.CreatePersonParamsDob|None"] + documents: NotRequired["Account.CreatePersonParamsDocuments|None"] + email: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + first_name: NotRequired["str|None"] + first_name_kana: NotRequired["str|None"] + first_name_kanji: NotRequired["str|None"] + full_name_aliases: NotRequired["Literal['']|List[str]|None"] + gender: NotRequired["str|None"] + id_number: NotRequired["str|None"] + id_number_secondary: NotRequired["str|None"] + last_name: NotRequired["str|None"] + last_name_kana: NotRequired["str|None"] + last_name_kanji: NotRequired["str|None"] + maiden_name: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + nationality: NotRequired["str|None"] + person_token: NotRequired["str|None"] + phone: NotRequired["str|None"] + political_exposure: NotRequired["str|None"] + registered_address: NotRequired[ + "Account.CreatePersonParamsRegisteredAddress|None" + ] + relationship: NotRequired[ + "Account.CreatePersonParamsRelationship|None" + ] + ssn_last_4: NotRequired["str|None"] + verification: NotRequired[ + "Account.CreatePersonParamsVerification|None" + ] + + class CreatePersonParamsVerification(TypedDict): + additional_document: NotRequired[ + "Account.CreatePersonParamsVerificationAdditionalDocument|None" + ] + document: NotRequired[ + "Account.CreatePersonParamsVerificationDocument|None" + ] + + class CreatePersonParamsVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreatePersonParamsVerificationAdditionalDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreatePersonParamsRelationship(TypedDict): + director: NotRequired["bool|None"] + executive: NotRequired["bool|None"] + owner: NotRequired["bool|None"] + percent_ownership: NotRequired["Literal['']|float|None"] + representative: NotRequired["bool|None"] + title: NotRequired["str|None"] + + class CreatePersonParamsRegisteredAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreatePersonParamsDocuments(TypedDict): + company_authorization: NotRequired[ + "Account.CreatePersonParamsDocumentsCompanyAuthorization|None" + ] + passport: NotRequired[ + "Account.CreatePersonParamsDocumentsPassport|None" + ] + visa: NotRequired["Account.CreatePersonParamsDocumentsVisa|None"] + + class CreatePersonParamsDocumentsVisa(TypedDict): + files: NotRequired["List[str]|None"] + + class CreatePersonParamsDocumentsPassport(TypedDict): + files: NotRequired["List[str]|None"] + + class CreatePersonParamsDocumentsCompanyAuthorization(TypedDict): + files: NotRequired["List[str]|None"] + + class CreatePersonParamsDob(TypedDict): + day: int + month: int + year: int + + class CreatePersonParamsAddressKanji(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreatePersonParamsAddressKana(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreatePersonParamsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class RetrievePersonParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifyPersonParams(RequestOptions): + address: NotRequired["Account.ModifyPersonParamsAddress|None"] + address_kana: NotRequired[ + "Account.ModifyPersonParamsAddressKana|None" + ] + address_kanji: NotRequired[ + "Account.ModifyPersonParamsAddressKanji|None" + ] + dob: NotRequired["Literal['']|Account.ModifyPersonParamsDob|None"] + documents: NotRequired["Account.ModifyPersonParamsDocuments|None"] + email: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + first_name: NotRequired["str|None"] + first_name_kana: NotRequired["str|None"] + first_name_kanji: NotRequired["str|None"] + full_name_aliases: NotRequired["Literal['']|List[str]|None"] + gender: NotRequired["str|None"] + id_number: NotRequired["str|None"] + id_number_secondary: NotRequired["str|None"] + last_name: NotRequired["str|None"] + last_name_kana: NotRequired["str|None"] + last_name_kanji: NotRequired["str|None"] + maiden_name: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + nationality: NotRequired["str|None"] + person_token: NotRequired["str|None"] + phone: NotRequired["str|None"] + political_exposure: NotRequired["str|None"] + registered_address: NotRequired[ + "Account.ModifyPersonParamsRegisteredAddress|None" + ] + relationship: NotRequired[ + "Account.ModifyPersonParamsRelationship|None" + ] + ssn_last_4: NotRequired["str|None"] + verification: NotRequired[ + "Account.ModifyPersonParamsVerification|None" + ] + + class ModifyPersonParamsVerification(TypedDict): + additional_document: NotRequired[ + "Account.ModifyPersonParamsVerificationAdditionalDocument|None" + ] + document: NotRequired[ + "Account.ModifyPersonParamsVerificationDocument|None" + ] + + class ModifyPersonParamsVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class ModifyPersonParamsVerificationAdditionalDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class ModifyPersonParamsRelationship(TypedDict): + director: NotRequired["bool|None"] + executive: NotRequired["bool|None"] + owner: NotRequired["bool|None"] + percent_ownership: NotRequired["Literal['']|float|None"] + representative: NotRequired["bool|None"] + title: NotRequired["str|None"] + + class ModifyPersonParamsRegisteredAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyPersonParamsDocuments(TypedDict): + company_authorization: NotRequired[ + "Account.ModifyPersonParamsDocumentsCompanyAuthorization|None" + ] + passport: NotRequired[ + "Account.ModifyPersonParamsDocumentsPassport|None" + ] + visa: NotRequired["Account.ModifyPersonParamsDocumentsVisa|None"] + + class ModifyPersonParamsDocumentsVisa(TypedDict): + files: NotRequired["List[str]|None"] + + class ModifyPersonParamsDocumentsPassport(TypedDict): + files: NotRequired["List[str]|None"] + + class ModifyPersonParamsDocumentsCompanyAuthorization(TypedDict): + files: NotRequired["List[str]|None"] + + class ModifyPersonParamsDob(TypedDict): + day: int + month: int + year: int + + class ModifyPersonParamsAddressKanji(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class ModifyPersonParamsAddressKana(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class ModifyPersonParamsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class DeletePersonParams(RequestOptions): + pass + + class ListPersonsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + relationship: NotRequired[ + "Account.ListPersonsParamsRelationship|None" + ] + starting_after: NotRequired["str|None"] + + class ListPersonsParamsRelationship(TypedDict): + director: NotRequired["bool|None"] + executive: NotRequired["bool|None"] + owner: NotRequired["bool|None"] + representative: NotRequired["bool|None"] + business_profile: Optional[StripeObject] business_type: Optional[ Literal["company", "government_entity", "individual", "non_profit"] @@ -75,7 +997,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.CreateParams"] ) -> "Account": return cast( "Account", @@ -91,7 +1013,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Account": + def _cls_delete( + cls, sid: str, **params: Unpack["Account.DeleteParams"] + ) -> "Account": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Account", @@ -99,7 +1023,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Account": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Account": + def delete(self, **params: Unpack["Account.DeleteParams"]) -> "Account": return self._request_and_refresh( "delete", self.instance_url(), @@ -112,7 +1036,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ListParams"] ) -> ListObject["Account"]: result = cls._static_request( "get", @@ -138,7 +1062,7 @@ def _cls_persons( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.PersonsParams"] ): return cls._static_request( "get", @@ -152,7 +1076,11 @@ def _cls_persons( ) @util.class_method_variant("_cls_persons") - def persons(self, idempotency_key: Optional[str] = None, **params: Any): + def persons( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Account.PersonsParams"] + ): return self._request( "get", "/v1/accounts/{account}/persons".format( @@ -169,7 +1097,7 @@ def _cls_reject( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.RejectParams"] ): return cls._static_request( "post", @@ -183,7 +1111,11 @@ def _cls_reject( ) @util.class_method_variant("_cls_reject") - def reject(self, idempotency_key: Optional[str] = None, **params: Any): + def reject( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Account.RejectParams"] + ): return self._request( "post", "/v1/accounts/{account}/reject".format( @@ -244,7 +1176,7 @@ def retrieve_capability( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.RetrieveCapabilityParams"] ): return cls._static_request( "get", @@ -266,7 +1198,7 @@ def modify_capability( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ModifyCapabilityParams"] ): return cls._static_request( "post", @@ -287,7 +1219,7 @@ def list_capabilities( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ListCapabilitiesParams"] ): return cls._static_request( "get", @@ -307,7 +1239,7 @@ def create_external_account( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.CreateExternalAccountParams"] ): return cls._static_request( "post", @@ -328,7 +1260,7 @@ def retrieve_external_account( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.RetrieveExternalAccountParams"] ): return cls._static_request( "get", @@ -349,7 +1281,7 @@ def modify_external_account( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ModifyExternalAccountParams"] ): return cls._static_request( "post", @@ -370,7 +1302,7 @@ def delete_external_account( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.DeleteExternalAccountParams"] ): return cls._static_request( "delete", @@ -390,7 +1322,7 @@ def list_external_accounts( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ListExternalAccountsParams"] ): return cls._static_request( "get", @@ -410,7 +1342,7 @@ def create_login_link( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.CreateLoginLinkParams"] ): return cls._static_request( "post", @@ -430,7 +1362,7 @@ def create_person( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.CreatePersonParams"] ): return cls._static_request( "post", @@ -451,7 +1383,7 @@ def retrieve_person( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.RetrievePersonParams"] ): return cls._static_request( "get", @@ -473,7 +1405,7 @@ def modify_person( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ModifyPersonParams"] ): return cls._static_request( "post", @@ -495,7 +1427,7 @@ def delete_person( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.DeletePersonParams"] ): return cls._static_request( "delete", @@ -516,7 +1448,7 @@ def list_persons( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ListPersonsParams"] ): return cls._static_request( "get", diff --git a/stripe/api_resources/account_link.py b/stripe/api_resources/account_link.py index c1e987bbf..16858cac0 100644 --- a/stripe/api_resources/account_link.py +++ b/stripe/api_resources/account_link.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- # File generated from our OpenAPI spec from stripe.api_resources.abstract import CreateableAPIResource -from typing import Any, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING class AccountLink(CreateableAPIResource["AccountLink"]): @@ -14,6 +15,18 @@ class AccountLink(CreateableAPIResource["AccountLink"]): """ OBJECT_NAME = "account_link" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + account: str + collect: NotRequired[ + "Literal['currently_due', 'eventually_due']|None" + ] + expand: NotRequired["List[str]|None"] + refresh_url: NotRequired["str|None"] + return_url: NotRequired["str|None"] + type: Literal["account_onboarding", "account_update"] + created: int expires_at: int object: Literal["account_link"] @@ -26,7 +39,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["AccountLink.CreateParams"] ) -> "AccountLink": return cast( "AccountLink", diff --git a/stripe/api_resources/account_session.py b/stripe/api_resources/account_session.py index c15f10c14..83d7b4b05 100644 --- a/stripe/api_resources/account_session.py +++ b/stripe/api_resources/account_session.py @@ -1,9 +1,16 @@ # -*- coding: utf-8 -*- # File generated from our OpenAPI spec from stripe.api_resources.abstract import CreateableAPIResource +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) class AccountSession(CreateableAPIResource["AccountSession"]): @@ -18,6 +25,21 @@ class AccountSession(CreateableAPIResource["AccountSession"]): """ OBJECT_NAME = "account_session" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + account: str + components: "AccountSession.CreateParamsComponents" + expand: NotRequired["List[str]|None"] + + class CreateParamsComponents(TypedDict): + account_onboarding: NotRequired[ + "AccountSession.CreateParamsComponentsAccountOnboarding|None" + ] + + class CreateParamsComponentsAccountOnboarding(TypedDict): + enabled: bool + account: str client_secret: str components: StripeObject @@ -32,7 +54,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["AccountSession.CreateParams"] ) -> "AccountSession": return cast( "AccountSession", diff --git a/stripe/api_resources/apple_pay_domain.py b/stripe/api_resources/apple_pay_domain.py index de3ccd34c..3ca4199dc 100644 --- a/stripe/api_resources/apple_pay_domain.py +++ b/stripe/api_resources/apple_pay_domain.py @@ -7,8 +7,9 @@ ListableAPIResource, ) from stripe.api_resources.list_object import ListObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING from urllib.parse import quote_plus @@ -18,6 +19,25 @@ class ApplePayDomain( ListableAPIResource["ApplePayDomain"], ): OBJECT_NAME = "apple_pay_domain" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + domain_name: str + expand: NotRequired["List[str]|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + domain_name: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int domain_name: str id: str @@ -32,7 +52,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplePayDomain.CreateParams"] ) -> "ApplePayDomain": return cast( "ApplePayDomain", @@ -48,7 +68,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "ApplePayDomain": + def _cls_delete( + cls, sid: str, **params: Unpack["ApplePayDomain.DeleteParams"] + ) -> "ApplePayDomain": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "ApplePayDomain", @@ -56,7 +78,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "ApplePayDomain": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "ApplePayDomain": + def delete( + self, **params: Unpack["ApplePayDomain.DeleteParams"] + ) -> "ApplePayDomain": return self._request_and_refresh( "delete", self.instance_url(), @@ -69,7 +93,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplePayDomain.ListParams"] ) -> ListObject["ApplePayDomain"]: result = cls._static_request( "get", @@ -90,9 +114,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ApplePayDomain.RetrieveParams"] ) -> "ApplePayDomain": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/application_fee.py b/stripe/api_resources/application_fee.py index 0b828c1d2..fcb56160e 100644 --- a/stripe/api_resources/application_fee.py +++ b/stripe/api_resources/application_fee.py @@ -7,10 +7,15 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.account import Account @@ -25,6 +30,48 @@ @nested_resource_class_methods("refund") class ApplicationFee(ListableAPIResource["ApplicationFee"]): OBJECT_NAME = "application_fee" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + charge: NotRequired["str|None"] + created: NotRequired["ApplicationFee.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RefundParams(RequestOptions): + amount: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateRefundParams(RequestOptions): + amount: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + + class RetrieveRefundParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifyRefundParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ListRefundsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + account: ExpandableField["Account"] amount: int amount_refunded: int @@ -46,7 +93,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplicationFee.ListParams"] ) -> ListObject["ApplicationFee"]: result = cls._static_request( "get", @@ -72,7 +119,7 @@ def _cls_refund( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplicationFee.RefundParams"] ): return cls._static_request( "post", @@ -86,7 +133,11 @@ def _cls_refund( ) @util.class_method_variant("_cls_refund") - def refund(self, idempotency_key: Optional[str] = None, **params: Any): + def refund( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["ApplicationFee.RefundParams"] + ): return self._request( "post", "/v1/application_fees/{id}/refunds".format( @@ -98,9 +149,9 @@ def refund(self, idempotency_key: Optional[str] = None, **params: Any): @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ApplicationFee.RetrieveParams"] ) -> "ApplicationFee": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -111,7 +162,7 @@ def create_refund( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplicationFee.CreateRefundParams"] ): return cls._static_request( "post", @@ -132,7 +183,7 @@ def retrieve_refund( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplicationFee.RetrieveRefundParams"] ): return cls._static_request( "get", @@ -153,7 +204,7 @@ def modify_refund( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplicationFee.ModifyRefundParams"] ): return cls._static_request( "post", @@ -173,7 +224,7 @@ def list_refunds( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ApplicationFee.ListRefundsParams"] ): return cls._static_request( "get", diff --git a/stripe/api_resources/application_fee_refund.py b/stripe/api_resources/application_fee_refund.py index be5e505d3..d3017227e 100644 --- a/stripe/api_resources/application_fee_refund.py +++ b/stripe/api_resources/application_fee_refund.py @@ -4,11 +4,9 @@ from stripe.api_resources.application_fee import ApplicationFee from stripe.api_resources.expandable_field import ExpandableField from typing import Dict, Optional -from typing_extensions import Literal +from typing_extensions import Literal, TYPE_CHECKING from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction diff --git a/stripe/api_resources/apps/secret.py b/stripe/api_resources/apps/secret.py index 431b2da8b..754a86271 100644 --- a/stripe/api_resources/apps/secret.py +++ b/stripe/api_resources/apps/secret.py @@ -5,9 +5,16 @@ ListableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) class Secret(CreateableAPIResource["Secret"], ListableAPIResource["Secret"]): @@ -24,6 +31,48 @@ class Secret(CreateableAPIResource["Secret"], ListableAPIResource["Secret"]): """ OBJECT_NAME = "apps.secret" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["int|None"] + name: str + payload: str + scope: "Secret.CreateParamsScope" + + class CreateParamsScope(TypedDict): + type: Literal["account", "user"] + user: NotRequired["str|None"] + + class DeleteWhereParams(RequestOptions): + expand: NotRequired["List[str]|None"] + name: str + scope: "Secret.DeleteWhereParamsScope" + + class DeleteWhereParamsScope(TypedDict): + type: Literal["account", "user"] + user: NotRequired["str|None"] + + class FindParams(RequestOptions): + expand: NotRequired["List[str]|None"] + name: str + scope: "Secret.FindParamsScope" + + class FindParamsScope(TypedDict): + type: Literal["account", "user"] + user: NotRequired["str|None"] + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + scope: "Secret.ListParamsScope" + starting_after: NotRequired["str|None"] + + class ListParamsScope(TypedDict): + type: Literal["account", "user"] + user: NotRequired["str|None"] + created: int deleted: Optional[bool] expires_at: Optional[int] @@ -41,7 +90,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Secret.CreateParams"] ) -> "Secret": return cast( "Secret", @@ -62,7 +111,7 @@ def delete_where( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Secret.DeleteWhereParams"] ): return cls._static_request( "post", @@ -79,7 +128,7 @@ def find( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Secret.FindParams"] ): return cls._static_request( "get", @@ -96,7 +145,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Secret.ListParams"] ) -> ListObject["Secret"]: result = cls._static_request( "get", diff --git a/stripe/api_resources/balance.py b/stripe/api_resources/balance.py index 0293e1f05..524360e7c 100644 --- a/stripe/api_resources/balance.py +++ b/stripe/api_resources/balance.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- # File generated from our OpenAPI spec from stripe.api_resources.abstract import SingletonAPIResource +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, List, Optional -from typing_extensions import Literal +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING class Balance(SingletonAPIResource["Balance"]): @@ -22,6 +23,11 @@ class Balance(SingletonAPIResource["Balance"]): """ OBJECT_NAME = "balance" + if TYPE_CHECKING: + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + available: List[StripeObject] connect_reserved: Optional[List[StripeObject]] instant_available: Optional[List[StripeObject]] @@ -31,7 +37,7 @@ class Balance(SingletonAPIResource["Balance"]): pending: List[StripeObject] @classmethod - def retrieve(cls, **params: Any) -> "Balance": + def retrieve(cls, **params: Unpack["Balance.RetrieveParams"]) -> "Balance": instance = cls(None, **params) instance.refresh() return instance diff --git a/stripe/api_resources/balance_transaction.py b/stripe/api_resources/balance_transaction.py index e74303fa7..09514ebea 100644 --- a/stripe/api_resources/balance_transaction.py +++ b/stripe/api_resources/balance_transaction.py @@ -3,9 +3,16 @@ from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject from typing import Any, List, Optional -from typing_extensions import Literal +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) class BalanceTransaction(ListableAPIResource["BalanceTransaction"]): @@ -17,6 +24,30 @@ class BalanceTransaction(ListableAPIResource["BalanceTransaction"]): """ OBJECT_NAME = "balance_transaction" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + created: NotRequired[ + "BalanceTransaction.ListParamsCreated|int|None" + ] + currency: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + payout: NotRequired["str|None"] + source: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + type: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int available_on: int created: int @@ -79,7 +110,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["BalanceTransaction.ListParams"] ) -> ListObject["BalanceTransaction"]: result = cls._static_request( "get", @@ -100,8 +131,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["BalanceTransaction.RetrieveParams"] ) -> "BalanceTransaction": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/bank_account.py b/stripe/api_resources/bank_account.py index 5b750fd99..4a5e30f50 100644 --- a/stripe/api_resources/bank_account.py +++ b/stripe/api_resources/bank_account.py @@ -9,9 +9,10 @@ from stripe.api_resources.account import Account from stripe.api_resources.customer import Customer from stripe.api_resources.expandable_field import ExpandableField +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing_extensions import Literal, Unpack, TYPE_CHECKING from urllib.parse import quote_plus @@ -31,6 +32,11 @@ class BankAccount( """ OBJECT_NAME = "bank_account" + if TYPE_CHECKING: + + class DeleteParams(RequestOptions): + pass + account: Optional[ExpandableField["Account"]] account_holder_name: Optional[str] account_holder_type: Optional[str] @@ -53,7 +59,9 @@ class BankAccount( deleted: Optional[Literal[True]] @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> Any: + def _cls_delete( + cls, sid: str, **params: Unpack["BankAccount.DeleteParams"] + ) -> Any: url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( Any, @@ -61,7 +69,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> Any: ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> Any: + def delete(self, **params: Unpack["BankAccount.DeleteParams"]) -> Any: return self._request_and_refresh( "delete", self.instance_url(), diff --git a/stripe/api_resources/billing_portal/configuration.py b/stripe/api_resources/billing_portal/configuration.py index 8daf3e369..1bbacfbfa 100644 --- a/stripe/api_resources/billing_portal/configuration.py +++ b/stripe/api_resources/billing_portal/configuration.py @@ -7,13 +7,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, Union, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.application import Application @@ -28,6 +33,208 @@ class Configuration( """ OBJECT_NAME = "billing_portal.configuration" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + business_profile: "Configuration.CreateParamsBusinessProfile" + default_return_url: NotRequired["Literal['']|str|None"] + expand: NotRequired["List[str]|None"] + features: "Configuration.CreateParamsFeatures" + login_page: NotRequired["Configuration.CreateParamsLoginPage|None"] + metadata: NotRequired["Dict[str, str]|None"] + + class CreateParamsLoginPage(TypedDict): + enabled: bool + + class CreateParamsFeatures(TypedDict): + customer_update: NotRequired[ + "Configuration.CreateParamsFeaturesCustomerUpdate|None" + ] + invoice_history: NotRequired[ + "Configuration.CreateParamsFeaturesInvoiceHistory|None" + ] + payment_method_update: NotRequired[ + "Configuration.CreateParamsFeaturesPaymentMethodUpdate|None" + ] + subscription_cancel: NotRequired[ + "Configuration.CreateParamsFeaturesSubscriptionCancel|None" + ] + subscription_pause: NotRequired[ + "Configuration.CreateParamsFeaturesSubscriptionPause|None" + ] + subscription_update: NotRequired[ + "Configuration.CreateParamsFeaturesSubscriptionUpdate|None" + ] + + class CreateParamsFeaturesSubscriptionUpdate(TypedDict): + default_allowed_updates: Union[ + Literal[""], + List[Literal["price", "promotion_code", "quantity"]], + ] + enabled: bool + products: Union[ + Literal[""], + List[ + "Configuration.CreateParamsFeaturesSubscriptionUpdateProduct" + ], + ] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + + class CreateParamsFeaturesSubscriptionUpdateProduct(TypedDict): + prices: List[str] + product: str + + class CreateParamsFeaturesSubscriptionPause(TypedDict): + enabled: NotRequired["bool|None"] + + class CreateParamsFeaturesSubscriptionCancel(TypedDict): + cancellation_reason: NotRequired[ + "Configuration.CreateParamsFeaturesSubscriptionCancelCancellationReason|None" + ] + enabled: bool + mode: NotRequired["Literal['at_period_end', 'immediately']|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + + class CreateParamsFeaturesSubscriptionCancelCancellationReason( + TypedDict, + ): + enabled: bool + options: Union[ + Literal[""], + List[ + Literal[ + "customer_service", + "low_quality", + "missing_features", + "other", + "switched_service", + "too_complex", + "too_expensive", + "unused", + ] + ], + ] + + class CreateParamsFeaturesPaymentMethodUpdate(TypedDict): + enabled: bool + + class CreateParamsFeaturesInvoiceHistory(TypedDict): + enabled: bool + + class CreateParamsFeaturesCustomerUpdate(TypedDict): + allowed_updates: NotRequired[ + "Literal['']|List[Literal['address', 'email', 'name', 'phone', 'shipping', 'tax_id']]|None" + ] + enabled: bool + + class CreateParamsBusinessProfile(TypedDict): + headline: NotRequired["Literal['']|str|None"] + privacy_policy_url: NotRequired["str|None"] + terms_of_service_url: NotRequired["str|None"] + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + is_default: NotRequired["bool|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + business_profile: NotRequired[ + "Configuration.ModifyParamsBusinessProfile|None" + ] + default_return_url: NotRequired["Literal['']|str|None"] + expand: NotRequired["List[str]|None"] + features: NotRequired["Configuration.ModifyParamsFeatures|None"] + login_page: NotRequired["Configuration.ModifyParamsLoginPage|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ModifyParamsLoginPage(TypedDict): + enabled: bool + + class ModifyParamsFeatures(TypedDict): + customer_update: NotRequired[ + "Configuration.ModifyParamsFeaturesCustomerUpdate|None" + ] + invoice_history: NotRequired[ + "Configuration.ModifyParamsFeaturesInvoiceHistory|None" + ] + payment_method_update: NotRequired[ + "Configuration.ModifyParamsFeaturesPaymentMethodUpdate|None" + ] + subscription_cancel: NotRequired[ + "Configuration.ModifyParamsFeaturesSubscriptionCancel|None" + ] + subscription_pause: NotRequired[ + "Configuration.ModifyParamsFeaturesSubscriptionPause|None" + ] + subscription_update: NotRequired[ + "Configuration.ModifyParamsFeaturesSubscriptionUpdate|None" + ] + + class ModifyParamsFeaturesSubscriptionUpdate(TypedDict): + default_allowed_updates: NotRequired[ + "Literal['']|List[Literal['price', 'promotion_code', 'quantity']]|None" + ] + enabled: NotRequired["bool|None"] + products: NotRequired[ + "Literal['']|List[Configuration.ModifyParamsFeaturesSubscriptionUpdateProduct]|None" + ] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + + class ModifyParamsFeaturesSubscriptionUpdateProduct(TypedDict): + prices: List[str] + product: str + + class ModifyParamsFeaturesSubscriptionPause(TypedDict): + enabled: NotRequired["bool|None"] + + class ModifyParamsFeaturesSubscriptionCancel(TypedDict): + cancellation_reason: NotRequired[ + "Configuration.ModifyParamsFeaturesSubscriptionCancelCancellationReason|None" + ] + enabled: NotRequired["bool|None"] + mode: NotRequired["Literal['at_period_end', 'immediately']|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + + class ModifyParamsFeaturesSubscriptionCancelCancellationReason( + TypedDict, + ): + enabled: bool + options: NotRequired[ + "Literal['']|List[Literal['customer_service', 'low_quality', 'missing_features', 'other', 'switched_service', 'too_complex', 'too_expensive', 'unused']]|None" + ] + + class ModifyParamsFeaturesPaymentMethodUpdate(TypedDict): + enabled: bool + + class ModifyParamsFeaturesInvoiceHistory(TypedDict): + enabled: bool + + class ModifyParamsFeaturesCustomerUpdate(TypedDict): + allowed_updates: NotRequired[ + "Literal['']|List[Literal['address', 'email', 'name', 'phone', 'shipping', 'tax_id']]|None" + ] + enabled: NotRequired["bool|None"] + + class ModifyParamsBusinessProfile(TypedDict): + headline: NotRequired["Literal['']|str|None"] + privacy_policy_url: NotRequired["Literal['']|str|None"] + terms_of_service_url: NotRequired["Literal['']|str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + active: bool application: Optional[ExpandableField["Application"]] business_profile: StripeObject @@ -49,7 +256,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Configuration.CreateParams"] ) -> "Configuration": return cast( "Configuration", @@ -70,7 +277,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Configuration.ListParams"] ) -> ListObject["Configuration"]: result = cls._static_request( "get", @@ -90,7 +297,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Configuration": + def modify( + cls, id, **params: Unpack["Configuration.ModifyParams"] + ) -> "Configuration": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Configuration", @@ -99,8 +308,8 @@ def modify(cls, id, **params: Any) -> "Configuration": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Configuration.RetrieveParams"] ) -> "Configuration": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/billing_portal/session.py b/stripe/api_resources/billing_portal/session.py index 114f68c84..bf9170fab 100644 --- a/stripe/api_resources/billing_portal/session.py +++ b/stripe/api_resources/billing_portal/session.py @@ -2,11 +2,16 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.expandable_field import ExpandableField +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.billing_portal.configuration import Configuration @@ -31,6 +36,90 @@ class Session(CreateableAPIResource["Session"]): """ OBJECT_NAME = "billing_portal.session" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + configuration: NotRequired["str|None"] + customer: str + expand: NotRequired["List[str]|None"] + flow_data: NotRequired["Session.CreateParamsFlowData|None"] + locale: NotRequired[ + "Literal['auto', 'bg', 'cs', 'da', 'de', 'el', 'en', 'en-AU', 'en-CA', 'en-GB', 'en-IE', 'en-IN', 'en-NZ', 'en-SG', 'es', 'es-419', 'et', 'fi', 'fil', 'fr', 'fr-CA', 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'ms', 'mt', 'nb', 'nl', 'pl', 'pt', 'pt-BR', 'ro', 'ru', 'sk', 'sl', 'sv', 'th', 'tr', 'vi', 'zh', 'zh-HK', 'zh-TW']|None" + ] + on_behalf_of: NotRequired["str|None"] + return_url: NotRequired["str|None"] + + class CreateParamsFlowData(TypedDict): + after_completion: NotRequired[ + "Session.CreateParamsFlowDataAfterCompletion|None" + ] + subscription_cancel: NotRequired[ + "Session.CreateParamsFlowDataSubscriptionCancel|None" + ] + subscription_update: NotRequired[ + "Session.CreateParamsFlowDataSubscriptionUpdate|None" + ] + subscription_update_confirm: NotRequired[ + "Session.CreateParamsFlowDataSubscriptionUpdateConfirm|None" + ] + type: Literal[ + "payment_method_update", + "subscription_cancel", + "subscription_update", + "subscription_update_confirm", + ] + + class CreateParamsFlowDataSubscriptionUpdateConfirm(TypedDict): + discounts: NotRequired[ + "List[Session.CreateParamsFlowDataSubscriptionUpdateConfirmDiscount]|None" + ] + items: List[ + "Session.CreateParamsFlowDataSubscriptionUpdateConfirmItem" + ] + subscription: str + + class CreateParamsFlowDataSubscriptionUpdateConfirmItem(TypedDict): + id: str + price: NotRequired["str|None"] + quantity: NotRequired["int|None"] + + class CreateParamsFlowDataSubscriptionUpdateConfirmDiscount(TypedDict): + coupon: NotRequired["str|None"] + promotion_code: NotRequired["str|None"] + + class CreateParamsFlowDataSubscriptionUpdate(TypedDict): + subscription: str + + class CreateParamsFlowDataSubscriptionCancel(TypedDict): + retention: NotRequired[ + "Session.CreateParamsFlowDataSubscriptionCancelRetention|None" + ] + subscription: str + + class CreateParamsFlowDataSubscriptionCancelRetention(TypedDict): + coupon_offer: "Session.CreateParamsFlowDataSubscriptionCancelRetentionCouponOffer" + type: Literal["coupon_offer"] + + class CreateParamsFlowDataSubscriptionCancelRetentionCouponOffer( + TypedDict, + ): + coupon: str + + class CreateParamsFlowDataAfterCompletion(TypedDict): + hosted_confirmation: NotRequired[ + "Session.CreateParamsFlowDataAfterCompletionHostedConfirmation|None" + ] + redirect: NotRequired[ + "Session.CreateParamsFlowDataAfterCompletionRedirect|None" + ] + type: Literal["hosted_confirmation", "portal_homepage", "redirect"] + + class CreateParamsFlowDataAfterCompletionRedirect(TypedDict): + return_url: str + + class CreateParamsFlowDataAfterCompletionHostedConfirmation(TypedDict): + custom_message: NotRequired["str|None"] + configuration: ExpandableField["Configuration"] created: int customer: str @@ -100,7 +189,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Session.CreateParams"] ) -> "Session": return cast( "Session", diff --git a/stripe/api_resources/card.py b/stripe/api_resources/card.py index 8b2037fe0..924add63d 100644 --- a/stripe/api_resources/card.py +++ b/stripe/api_resources/card.py @@ -8,8 +8,9 @@ from stripe.api_resources.account import Account from stripe.api_resources.customer import Customer from stripe.api_resources.expandable_field import ExpandableField +from stripe.request_options import RequestOptions from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing_extensions import Literal, Unpack, TYPE_CHECKING from urllib.parse import quote_plus @@ -23,6 +24,11 @@ class Card(DeletableAPIResource["Card"], UpdateableAPIResource["Card"]): """ OBJECT_NAME = "card" + if TYPE_CHECKING: + + class DeleteParams(RequestOptions): + pass + account: Optional[ExpandableField["Account"]] address_city: Optional[str] address_country: Optional[str] @@ -57,7 +63,9 @@ class Card(DeletableAPIResource["Card"], UpdateableAPIResource["Card"]): deleted: Optional[Literal[True]] @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> Any: + def _cls_delete( + cls, sid: str, **params: Unpack["Card.DeleteParams"] + ) -> Any: url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( Any, @@ -65,7 +73,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> Any: ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> Any: + def delete(self, **params: Unpack["Card.DeleteParams"]) -> Any: return self._request_and_refresh( "delete", self.instance_url(), diff --git a/stripe/api_resources/charge.py b/stripe/api_resources/charge.py index 19ce92228..4c532eaca 100644 --- a/stripe/api_resources/charge.py +++ b/stripe/api_resources/charge.py @@ -10,13 +10,18 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject from stripe.api_resources.search_result_object import SearchResultObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Any, Dict, List, Optional, Union, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.application import Application @@ -44,6 +49,122 @@ class Charge( """ OBJECT_NAME = "charge" + if TYPE_CHECKING: + + class CaptureParams(RequestOptions): + amount: NotRequired["int|None"] + application_fee: NotRequired["int|None"] + application_fee_amount: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + receipt_email: NotRequired["str|None"] + statement_descriptor: NotRequired["str|None"] + statement_descriptor_suffix: NotRequired["str|None"] + transfer_data: NotRequired["Charge.CaptureParamsTransferData|None"] + transfer_group: NotRequired["str|None"] + + class CaptureParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + + class CreateParams(RequestOptions): + amount: NotRequired["int|None"] + application_fee: NotRequired["int|None"] + application_fee_amount: NotRequired["int|None"] + capture: NotRequired["bool|None"] + currency: NotRequired["str|None"] + customer: NotRequired["str|None"] + description: NotRequired["str|None"] + destination: NotRequired["Charge.CreateParamsDestination|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + radar_options: NotRequired["Charge.CreateParamsRadarOptions|None"] + receipt_email: NotRequired["str|None"] + shipping: NotRequired["Charge.CreateParamsShipping|None"] + source: NotRequired["str|None"] + statement_descriptor: NotRequired["str|None"] + statement_descriptor_suffix: NotRequired["str|None"] + transfer_data: NotRequired["Charge.CreateParamsTransferData|None"] + transfer_group: NotRequired["str|None"] + + class CreateParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + destination: str + + class CreateParamsShipping(TypedDict): + address: "Charge.CreateParamsShippingAddress" + carrier: NotRequired["str|None"] + name: str + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class CreateParamsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class CreateParamsDestination(TypedDict): + account: str + amount: NotRequired["int|None"] + + class ListParams(RequestOptions): + created: NotRequired["Charge.ListParamsCreated|int|None"] + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + payment_intent: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + transfer_group: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + customer: NotRequired["str|None"] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + fraud_details: NotRequired["Charge.ModifyParamsFraudDetails|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + receipt_email: NotRequired["str|None"] + shipping: NotRequired["Charge.ModifyParamsShipping|None"] + transfer_group: NotRequired["str|None"] + + class ModifyParamsShipping(TypedDict): + address: "Charge.ModifyParamsShippingAddress" + carrier: NotRequired["str|None"] + name: str + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class ModifyParamsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsFraudDetails(TypedDict): + user_report: Union[Literal[""], Literal["fraudulent", "safe"]] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SearchParams(RequestOptions): + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + page: NotRequired["str|None"] + query: str + amount: int amount_captured: int amount_refunded: int @@ -102,7 +223,7 @@ def _cls_capture( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Charge.CaptureParams"] ): return cls._static_request( "post", @@ -116,7 +237,11 @@ def _cls_capture( ) @util.class_method_variant("_cls_capture") - def capture(self, idempotency_key: Optional[str] = None, **params: Any): + def capture( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Charge.CaptureParams"] + ): return self._request( "post", "/v1/charges/{charge}/capture".format( @@ -133,7 +258,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Charge.CreateParams"] ) -> "Charge": return cast( "Charge", @@ -154,7 +279,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Charge.ListParams"] ) -> ListObject["Charge"]: result = cls._static_request( "get", @@ -174,7 +299,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Charge": + def modify(cls, id, **params: Unpack["Charge.ModifyParams"]) -> "Charge": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Charge", @@ -183,18 +308,22 @@ def modify(cls, id, **params: Any) -> "Charge": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Charge.RetrieveParams"] ) -> "Charge": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @classmethod - def search(cls, *args, **kwargs) -> SearchResultObject["Charge"]: + def search( + cls, *args, **kwargs: Unpack["Charge.SearchParams"] + ) -> SearchResultObject["Charge"]: return cls._search(search_url="/v1/charges/search", *args, **kwargs) @classmethod - def search_auto_paging_iter(cls, *args, **kwargs): + def search_auto_paging_iter( + cls, *args, **kwargs: Unpack["Charge.SearchParams"] + ): return cls.search(*args, **kwargs).auto_paging_iter() def mark_as_fraudulent(self, idempotency_key=None): diff --git a/stripe/api_resources/checkout/session.py b/stripe/api_resources/checkout/session.py index d0348d2b9..aba9df2da 100644 --- a/stripe/api_resources/checkout/session.py +++ b/stripe/api_resources/checkout/session.py @@ -7,11 +7,16 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.customer import Customer @@ -44,6 +49,919 @@ class Session( """ OBJECT_NAME = "checkout.session" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + after_expiration: NotRequired[ + "Session.CreateParamsAfterExpiration|None" + ] + allow_promotion_codes: NotRequired["bool|None"] + automatic_tax: NotRequired["Session.CreateParamsAutomaticTax|None"] + billing_address_collection: NotRequired[ + "Literal['auto', 'required']|None" + ] + cancel_url: NotRequired["str|None"] + client_reference_id: NotRequired["str|None"] + consent_collection: NotRequired[ + "Session.CreateParamsConsentCollection|None" + ] + currency: NotRequired["str|None"] + custom_fields: NotRequired[ + "List[Session.CreateParamsCustomField]|None" + ] + custom_text: NotRequired["Session.CreateParamsCustomText|None"] + customer: NotRequired["str|None"] + customer_creation: NotRequired[ + "Literal['always', 'if_required']|None" + ] + customer_email: NotRequired["str|None"] + customer_update: NotRequired[ + "Session.CreateParamsCustomerUpdate|None" + ] + discounts: NotRequired["List[Session.CreateParamsDiscount]|None"] + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["int|None"] + invoice_creation: NotRequired[ + "Session.CreateParamsInvoiceCreation|None" + ] + line_items: NotRequired["List[Session.CreateParamsLineItem]|None"] + locale: NotRequired[ + "Literal['auto', 'bg', 'cs', 'da', 'de', 'el', 'en', 'en-GB', 'es', 'es-419', 'et', 'fi', 'fil', 'fr', 'fr-CA', 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'ms', 'mt', 'nb', 'nl', 'pl', 'pt', 'pt-BR', 'ro', 'ru', 'sk', 'sl', 'sv', 'th', 'tr', 'vi', 'zh', 'zh-HK', 'zh-TW']|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + mode: NotRequired[ + "Literal['payment', 'setup', 'subscription']|None" + ] + payment_intent_data: NotRequired[ + "Session.CreateParamsPaymentIntentData|None" + ] + payment_method_collection: NotRequired[ + "Literal['always', 'if_required']|None" + ] + payment_method_configuration: NotRequired["str|None"] + payment_method_options: NotRequired[ + "Session.CreateParamsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired[ + "List[Literal['acss_debit', 'affirm', 'afterpay_clearpay', 'alipay', 'au_becs_debit', 'bacs_debit', 'bancontact', 'blik', 'boleto', 'card', 'cashapp', 'customer_balance', 'eps', 'fpx', 'giropay', 'grabpay', 'ideal', 'klarna', 'konbini', 'link', 'oxxo', 'p24', 'paynow', 'paypal', 'pix', 'promptpay', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay', 'zip']]|None" + ] + phone_number_collection: NotRequired[ + "Session.CreateParamsPhoneNumberCollection|None" + ] + redirect_on_completion: NotRequired[ + "Literal['always', 'if_required', 'never']|None" + ] + return_url: NotRequired["str|None"] + setup_intent_data: NotRequired[ + "Session.CreateParamsSetupIntentData|None" + ] + shipping_address_collection: NotRequired[ + "Session.CreateParamsShippingAddressCollection|None" + ] + shipping_options: NotRequired[ + "List[Session.CreateParamsShippingOption]|None" + ] + submit_type: NotRequired[ + "Literal['auto', 'book', 'donate', 'pay']|None" + ] + subscription_data: NotRequired[ + "Session.CreateParamsSubscriptionData|None" + ] + success_url: NotRequired["str|None"] + tax_id_collection: NotRequired[ + "Session.CreateParamsTaxIdCollection|None" + ] + ui_mode: NotRequired["Literal['embedded', 'hosted']|None"] + + class CreateParamsTaxIdCollection(TypedDict): + enabled: bool + + class CreateParamsSubscriptionData(TypedDict): + application_fee_percent: NotRequired["float|None"] + billing_cycle_anchor: NotRequired["int|None"] + default_tax_rates: NotRequired["List[str]|None"] + description: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + proration_behavior: NotRequired[ + "Literal['create_prorations', 'none']|None" + ] + transfer_data: NotRequired[ + "Session.CreateParamsSubscriptionDataTransferData|None" + ] + trial_end: NotRequired["int|None"] + trial_period_days: NotRequired["int|None"] + trial_settings: NotRequired[ + "Session.CreateParamsSubscriptionDataTrialSettings|None" + ] + + class CreateParamsSubscriptionDataTrialSettings(TypedDict): + end_behavior: "Session.CreateParamsSubscriptionDataTrialSettingsEndBehavior" + + class CreateParamsSubscriptionDataTrialSettingsEndBehavior(TypedDict): + missing_payment_method: Literal[ + "cancel", "create_invoice", "pause" + ] + + class CreateParamsSubscriptionDataTransferData(TypedDict): + amount_percent: NotRequired["float|None"] + destination: str + + class CreateParamsShippingOption(TypedDict): + shipping_rate: NotRequired["str|None"] + shipping_rate_data: NotRequired[ + "Session.CreateParamsShippingOptionShippingRateData|None" + ] + + class CreateParamsShippingOptionShippingRateData(TypedDict): + delivery_estimate: NotRequired[ + "Session.CreateParamsShippingOptionShippingRateDataDeliveryEstimate|None" + ] + display_name: str + fixed_amount: NotRequired[ + "Session.CreateParamsShippingOptionShippingRateDataFixedAmount|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["str|None"] + type: NotRequired["Literal['fixed_amount']|None"] + + class CreateParamsShippingOptionShippingRateDataFixedAmount(TypedDict): + amount: int + currency: str + currency_options: NotRequired[ + "Dict[str, Session.CreateParamsShippingOptionShippingRateDataFixedAmountCurrencyOptions]|None" + ] + + class CreateParamsShippingOptionShippingRateDataFixedAmountCurrencyOptions( + TypedDict, + ): + amount: int + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + + class CreateParamsShippingOptionShippingRateDataDeliveryEstimate( + TypedDict, + ): + maximum: NotRequired[ + "Session.CreateParamsShippingOptionShippingRateDataDeliveryEstimateMaximum|None" + ] + minimum: NotRequired[ + "Session.CreateParamsShippingOptionShippingRateDataDeliveryEstimateMinimum|None" + ] + + class CreateParamsShippingOptionShippingRateDataDeliveryEstimateMinimum( + TypedDict, + ): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class CreateParamsShippingOptionShippingRateDataDeliveryEstimateMaximum( + TypedDict, + ): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class CreateParamsShippingAddressCollection(TypedDict): + allowed_countries: List[ + Literal[ + "AC", + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CV", + "CW", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MK", + "ML", + "MM", + "MN", + "MO", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SZ", + "TA", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + "ZZ", + ] + ] + + class CreateParamsSetupIntentData(TypedDict): + description: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + + class CreateParamsPhoneNumberCollection(TypedDict): + enabled: bool + + class CreateParamsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsAcssDebit|None" + ] + affirm: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsAfterpayClearpay|None" + ] + alipay: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsAlipay|None" + ] + au_becs_debit: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsBacsDebit|None" + ] + bancontact: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsBancontact|None" + ] + boleto: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsBoleto|None" + ] + card: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsCard|None" + ] + cashapp: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsCashapp|None" + ] + customer_balance: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsCustomerBalance|None" + ] + eps: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsEps|None" + ] + fpx: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsFpx|None" + ] + giropay: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsGiropay|None" + ] + grabpay: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsGrabpay|None" + ] + ideal: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsIdeal|None" + ] + klarna: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsKlarna|None" + ] + konbini: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsKonbini|None" + ] + link: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsLink|None" + ] + oxxo: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsOxxo|None" + ] + p24: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsP24|None" + ] + paynow: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsPaynow|None" + ] + paypal: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsPaypal|None" + ] + pix: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsPix|None" + ] + sepa_debit: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsSepaDebit|None" + ] + sofort: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsSofort|None" + ] + us_bank_account: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsWechatPay|None" + ] + + class CreateParamsPaymentMethodOptionsWechatPay(TypedDict): + app_id: NotRequired["str|None"] + client: Literal["android", "ios", "web"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsUsBankAccount(TypedDict): + financial_connections: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + setup_future_usage: NotRequired[ + "Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant']|None" + ] + + class CreateParamsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + + class CreateParamsPaymentMethodOptionsSofort(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsSepaDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsPix(TypedDict): + expires_after_seconds: NotRequired["int|None"] + + class CreateParamsPaymentMethodOptionsPaypal(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired[ + "Literal['cs-CZ', 'da-DK', 'de-AT', 'de-DE', 'de-LU', 'el-GR', 'en-GB', 'en-US', 'es-ES', 'fi-FI', 'fr-BE', 'fr-FR', 'fr-LU', 'hu-HU', 'it-IT', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-PT', 'sk-SK', 'sv-SE']|None" + ] + reference: NotRequired["str|None"] + risk_correlation_id: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsPaynow(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsP24(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + tos_shown_and_accepted: NotRequired["bool|None"] + + class CreateParamsPaymentMethodOptionsOxxo(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsLink(TypedDict): + setup_future_usage: NotRequired[ + "Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsKonbini(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsKlarna(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsIdeal(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsGrabpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsGiropay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsFpx(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsEps(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsCustomerBalance(TypedDict): + bank_transfer: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["Literal['bank_transfer']|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + requested_address_types: NotRequired[ + "List[Literal['aba', 'iban', 'sepa', 'sort_code', 'spei', 'swift', 'zengin']]|None" + ] + type: Literal[ + "eu_bank_transfer", + "gb_bank_transfer", + "jp_bank_transfer", + "mx_bank_transfer", + "us_bank_transfer", + ] + + class CreateParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class CreateParamsPaymentMethodOptionsCashapp(TypedDict): + setup_future_usage: NotRequired[ + "Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsCard(TypedDict): + installments: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsCardInstallments|None" + ] + setup_future_usage: NotRequired[ + "Literal['off_session', 'on_session']|None" + ] + statement_descriptor_suffix_kana: NotRequired["str|None"] + statement_descriptor_suffix_kanji: NotRequired["str|None"] + + class CreateParamsPaymentMethodOptionsCardInstallments(TypedDict): + enabled: NotRequired["bool|None"] + + class CreateParamsPaymentMethodOptionsBoleto(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired[ + "Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsBancontact(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsBacsDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsAuBecsDebit(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsAlipay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsAfterpayClearpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsAffirm(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsAcssDebit(TypedDict): + currency: NotRequired["Literal['cad', 'usd']|None"] + mandate_options: NotRequired[ + "Session.CreateParamsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + setup_future_usage: NotRequired[ + "Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + custom_mandate_url: NotRequired["Literal['']|str|None"] + default_for: NotRequired[ + "List[Literal['invoice', 'subscription']]|None" + ] + interval_description: NotRequired["str|None"] + payment_schedule: NotRequired[ + "Literal['combined', 'interval', 'sporadic']|None" + ] + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class CreateParamsPaymentIntentData(TypedDict): + application_fee_amount: NotRequired["int|None"] + capture_method: NotRequired[ + "Literal['automatic', 'automatic_async', 'manual']|None" + ] + description: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + receipt_email: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['off_session', 'on_session']|None" + ] + shipping: NotRequired[ + "Session.CreateParamsPaymentIntentDataShipping|None" + ] + statement_descriptor: NotRequired["str|None"] + statement_descriptor_suffix: NotRequired["str|None"] + transfer_data: NotRequired[ + "Session.CreateParamsPaymentIntentDataTransferData|None" + ] + transfer_group: NotRequired["str|None"] + + class CreateParamsPaymentIntentDataTransferData(TypedDict): + amount: NotRequired["int|None"] + destination: str + + class CreateParamsPaymentIntentDataShipping(TypedDict): + address: "Session.CreateParamsPaymentIntentDataShippingAddress" + carrier: NotRequired["str|None"] + name: str + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class CreateParamsPaymentIntentDataShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: str + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsLineItem(TypedDict): + adjustable_quantity: NotRequired[ + "Session.CreateParamsLineItemAdjustableQuantity|None" + ] + dynamic_tax_rates: NotRequired["List[str]|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "Session.CreateParamsLineItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["List[str]|None"] + + class CreateParamsLineItemPriceData(TypedDict): + currency: str + product: NotRequired["str|None"] + product_data: NotRequired[ + "Session.CreateParamsLineItemPriceDataProductData|None" + ] + recurring: NotRequired[ + "Session.CreateParamsLineItemPriceDataRecurring|None" + ] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsLineItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class CreateParamsLineItemPriceDataProductData(TypedDict): + description: NotRequired["str|None"] + images: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + name: str + tax_code: NotRequired["str|None"] + + class CreateParamsLineItemAdjustableQuantity(TypedDict): + enabled: bool + maximum: NotRequired["int|None"] + minimum: NotRequired["int|None"] + + class CreateParamsInvoiceCreation(TypedDict): + enabled: bool + invoice_data: NotRequired[ + "Session.CreateParamsInvoiceCreationInvoiceData|None" + ] + + class CreateParamsInvoiceCreationInvoiceData(TypedDict): + account_tax_ids: NotRequired["Literal['']|List[str]|None"] + custom_fields: NotRequired[ + "Literal['']|List[Session.CreateParamsInvoiceCreationInvoiceDataCustomField]|None" + ] + description: NotRequired["str|None"] + footer: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + rendering_options: NotRequired[ + "Literal['']|Session.CreateParamsInvoiceCreationInvoiceDataRenderingOptions|None" + ] + + class CreateParamsInvoiceCreationInvoiceDataRenderingOptions( + TypedDict + ): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + + class CreateParamsInvoiceCreationInvoiceDataCustomField(TypedDict): + name: str + value: str + + class CreateParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + promotion_code: NotRequired["str|None"] + + class CreateParamsCustomerUpdate(TypedDict): + address: NotRequired["Literal['auto', 'never']|None"] + name: NotRequired["Literal['auto', 'never']|None"] + shipping: NotRequired["Literal['auto', 'never']|None"] + + class CreateParamsCustomText(TypedDict): + shipping_address: NotRequired[ + "Literal['']|Session.CreateParamsCustomTextShippingAddress|None" + ] + submit: NotRequired[ + "Literal['']|Session.CreateParamsCustomTextSubmit|None" + ] + terms_of_service_acceptance: NotRequired[ + "Literal['']|Session.CreateParamsCustomTextTermsOfServiceAcceptance|None" + ] + + class CreateParamsCustomTextTermsOfServiceAcceptance(TypedDict): + message: str + + class CreateParamsCustomTextSubmit(TypedDict): + message: str + + class CreateParamsCustomTextShippingAddress(TypedDict): + message: str + + class CreateParamsCustomField(TypedDict): + dropdown: NotRequired[ + "Session.CreateParamsCustomFieldDropdown|None" + ] + key: str + label: "Session.CreateParamsCustomFieldLabel" + numeric: NotRequired["Session.CreateParamsCustomFieldNumeric|None"] + optional: NotRequired["bool|None"] + text: NotRequired["Session.CreateParamsCustomFieldText|None"] + type: Literal["dropdown", "numeric", "text"] + + class CreateParamsCustomFieldText(TypedDict): + maximum_length: NotRequired["int|None"] + minimum_length: NotRequired["int|None"] + + class CreateParamsCustomFieldNumeric(TypedDict): + maximum_length: NotRequired["int|None"] + minimum_length: NotRequired["int|None"] + + class CreateParamsCustomFieldLabel(TypedDict): + custom: str + type: Literal["custom"] + + class CreateParamsCustomFieldDropdown(TypedDict): + options: List["Session.CreateParamsCustomFieldDropdownOption"] + + class CreateParamsCustomFieldDropdownOption(TypedDict): + label: str + value: str + + class CreateParamsConsentCollection(TypedDict): + promotions: NotRequired["Literal['auto', 'none']|None"] + terms_of_service: NotRequired["Literal['none', 'required']|None"] + + class CreateParamsAutomaticTax(TypedDict): + enabled: bool + + class CreateParamsAfterExpiration(TypedDict): + recovery: NotRequired[ + "Session.CreateParamsAfterExpirationRecovery|None" + ] + + class CreateParamsAfterExpirationRecovery(TypedDict): + allow_promotion_codes: NotRequired["bool|None"] + enabled: bool + + class ExpireParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListParams(RequestOptions): + customer: NotRequired["str|None"] + customer_details: NotRequired[ + "Session.ListParamsCustomerDetails|None" + ] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + payment_intent: NotRequired["str|None"] + payment_link: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + subscription: NotRequired["str|None"] + + class ListParamsCustomerDetails(TypedDict): + email: str + + class ListLineItemsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + after_expiration: Optional[StripeObject] allow_promotion_codes: Optional[bool] amount_subtotal: Optional[int] @@ -150,7 +1068,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Session.CreateParams"] ) -> "Session": return cast( "Session", @@ -172,7 +1090,7 @@ def _cls_expire( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Session.ExpireParams"] ): return cls._static_request( "post", @@ -186,7 +1104,11 @@ def _cls_expire( ) @util.class_method_variant("_cls_expire") - def expire(self, idempotency_key: Optional[str] = None, **params: Any): + def expire( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Session.ExpireParams"] + ): return self._request( "post", "/v1/checkout/sessions/{session}/expire".format( @@ -202,7 +1124,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Session.ListParams"] ) -> ListObject["Session"]: result = cls._static_request( "get", @@ -228,7 +1150,7 @@ def _cls_list_line_items( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Session.ListLineItemsParams"] ): return cls._static_request( "get", @@ -243,7 +1165,9 @@ def _cls_list_line_items( @util.class_method_variant("_cls_list_line_items") def list_line_items( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Session.ListLineItemsParams"] ): return self._request( "get", @@ -256,8 +1180,8 @@ def list_line_items( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Session.RetrieveParams"] ) -> "Session": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/connect_collection_transfer.py b/stripe/api_resources/connect_collection_transfer.py index d67909bc4..5528208a8 100644 --- a/stripe/api_resources/connect_collection_transfer.py +++ b/stripe/api_resources/connect_collection_transfer.py @@ -2,9 +2,7 @@ # File generated from our OpenAPI spec from stripe.api_resources.expandable_field import ExpandableField from stripe.stripe_object import StripeObject -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing_extensions import Literal, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.account import Account diff --git a/stripe/api_resources/country_spec.py b/stripe/api_resources/country_spec.py index cfd3d03f0..5537ab87d 100644 --- a/stripe/api_resources/country_spec.py +++ b/stripe/api_resources/country_spec.py @@ -2,9 +2,10 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional -from typing_extensions import Literal +from typing import Dict, List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING class CountrySpec(ListableAPIResource["CountrySpec"]): @@ -18,6 +19,17 @@ class CountrySpec(ListableAPIResource["CountrySpec"]): """ OBJECT_NAME = "country_spec" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + default_currency: str id: str object: Literal["country_spec"] @@ -33,7 +45,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CountrySpec.ListParams"] ) -> ListObject["CountrySpec"]: result = cls._static_request( "get", @@ -54,8 +66,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["CountrySpec.RetrieveParams"] ) -> "CountrySpec": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/coupon.py b/stripe/api_resources/coupon.py index 9e9c83412..046f974bf 100644 --- a/stripe/api_resources/coupon.py +++ b/stripe/api_resources/coupon.py @@ -8,9 +8,16 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -27,6 +34,63 @@ class Coupon( """ OBJECT_NAME = "coupon" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + amount_off: NotRequired["int|None"] + applies_to: NotRequired["Coupon.CreateParamsAppliesTo|None"] + currency: NotRequired["str|None"] + currency_options: NotRequired[ + "Dict[str, Coupon.CreateParamsCurrencyOptions]|None" + ] + duration: NotRequired[ + "Literal['forever', 'once', 'repeating']|None" + ] + duration_in_months: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + id: NotRequired["str|None"] + max_redemptions: NotRequired["int|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + name: NotRequired["str|None"] + percent_off: NotRequired["float|None"] + redeem_by: NotRequired["int|None"] + + class CreateParamsCurrencyOptions(TypedDict): + amount_off: int + + class CreateParamsAppliesTo(TypedDict): + products: NotRequired["List[str]|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + created: NotRequired["Coupon.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + currency_options: NotRequired[ + "Dict[str, Coupon.ModifyParamsCurrencyOptions]|None" + ] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + name: NotRequired["str|None"] + + class ModifyParamsCurrencyOptions(TypedDict): + amount_off: int + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount_off: Optional[int] applies_to: Optional[StripeObject] created: int @@ -53,7 +117,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Coupon.CreateParams"] ) -> "Coupon": return cast( "Coupon", @@ -69,7 +133,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Coupon": + def _cls_delete( + cls, sid: str, **params: Unpack["Coupon.DeleteParams"] + ) -> "Coupon": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Coupon", @@ -77,7 +143,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Coupon": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Coupon": + def delete(self, **params: Unpack["Coupon.DeleteParams"]) -> "Coupon": return self._request_and_refresh( "delete", self.instance_url(), @@ -90,7 +156,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Coupon.ListParams"] ) -> ListObject["Coupon"]: result = cls._static_request( "get", @@ -110,7 +176,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Coupon": + def modify(cls, id, **params: Unpack["Coupon.ModifyParams"]) -> "Coupon": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Coupon", @@ -119,8 +185,8 @@ def modify(cls, id, **params: Any) -> "Coupon": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Coupon.RetrieveParams"] ) -> "Coupon": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/credit_note.py b/stripe/api_resources/credit_note.py index 8bae8d452..17ba8a9d6 100644 --- a/stripe/api_resources/credit_note.py +++ b/stripe/api_resources/credit_note.py @@ -9,13 +9,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.credit_note_line_item import CreditNoteLineItem from stripe.api_resources.customer import Customer @@ -39,6 +44,132 @@ class CreditNote( """ OBJECT_NAME = "credit_note" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + amount: NotRequired["int|None"] + credit_amount: NotRequired["int|None"] + effective_at: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + invoice: str + lines: NotRequired["List[CreditNote.CreateParamsLine]|None"] + memo: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + out_of_band_amount: NotRequired["int|None"] + reason: NotRequired[ + "Literal['duplicate', 'fraudulent', 'order_change', 'product_unsatisfactory']|None" + ] + refund: NotRequired["str|None"] + refund_amount: NotRequired["int|None"] + shipping_cost: NotRequired[ + "CreditNote.CreateParamsShippingCost|None" + ] + + class CreateParamsShippingCost(TypedDict): + shipping_rate: NotRequired["str|None"] + + class CreateParamsLine(TypedDict): + amount: NotRequired["int|None"] + description: NotRequired["str|None"] + invoice_line_item: NotRequired["str|None"] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + type: Literal["custom_line_item", "invoice_line_item"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ListParams(RequestOptions): + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + invoice: NotRequired["str|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + memo: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + + class PreviewParams(RequestOptions): + amount: NotRequired["int|None"] + credit_amount: NotRequired["int|None"] + effective_at: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + invoice: str + lines: NotRequired["List[CreditNote.PreviewParamsLine]|None"] + memo: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + out_of_band_amount: NotRequired["int|None"] + reason: NotRequired[ + "Literal['duplicate', 'fraudulent', 'order_change', 'product_unsatisfactory']|None" + ] + refund: NotRequired["str|None"] + refund_amount: NotRequired["int|None"] + shipping_cost: NotRequired[ + "CreditNote.PreviewParamsShippingCost|None" + ] + + class PreviewParamsShippingCost(TypedDict): + shipping_rate: NotRequired["str|None"] + + class PreviewParamsLine(TypedDict): + amount: NotRequired["int|None"] + description: NotRequired["str|None"] + invoice_line_item: NotRequired["str|None"] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + type: Literal["custom_line_item", "invoice_line_item"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class PreviewLinesParams(RequestOptions): + amount: NotRequired["int|None"] + credit_amount: NotRequired["int|None"] + effective_at: NotRequired["int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + invoice: str + limit: NotRequired["int|None"] + lines: NotRequired["List[CreditNote.PreviewLinesParamsLine]|None"] + memo: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + out_of_band_amount: NotRequired["int|None"] + reason: NotRequired[ + "Literal['duplicate', 'fraudulent', 'order_change', 'product_unsatisfactory']|None" + ] + refund: NotRequired["str|None"] + refund_amount: NotRequired["int|None"] + shipping_cost: NotRequired[ + "CreditNote.PreviewLinesParamsShippingCost|None" + ] + starting_after: NotRequired["str|None"] + + class PreviewLinesParamsShippingCost(TypedDict): + shipping_rate: NotRequired["str|None"] + + class PreviewLinesParamsLine(TypedDict): + amount: NotRequired["int|None"] + description: NotRequired["str|None"] + invoice_line_item: NotRequired["str|None"] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + type: Literal["custom_line_item", "invoice_line_item"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class VoidCreditNoteParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListLinesParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + amount: int amount_shipping: int created: int @@ -83,7 +214,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditNote.CreateParams"] ) -> "CreditNote": return cast( "CreditNote", @@ -104,7 +235,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditNote.ListParams"] ) -> ListObject["CreditNote"]: result = cls._static_request( "get", @@ -124,7 +255,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "CreditNote": + def modify( + cls, id, **params: Unpack["CreditNote.ModifyParams"] + ) -> "CreditNote": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "CreditNote", @@ -137,7 +270,7 @@ def preview( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditNote.PreviewParams"] ): return cls._static_request( "get", @@ -154,7 +287,7 @@ def preview_lines( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditNote.PreviewLinesParams"] ): return cls._static_request( "get", @@ -167,9 +300,9 @@ def preview_lines( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["CreditNote.RetrieveParams"] ) -> "CreditNote": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -180,7 +313,7 @@ def _cls_void_credit_note( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditNote.VoidCreditNoteParams"] ): return cls._static_request( "post", @@ -193,7 +326,9 @@ def _cls_void_credit_note( @util.class_method_variant("_cls_void_credit_note") def void_credit_note( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["CreditNote.VoidCreditNoteParams"] ): return self._request( "post", @@ -211,7 +346,7 @@ def list_lines( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditNote.ListLinesParams"] ): return cls._static_request( "get", diff --git a/stripe/api_resources/credit_note_line_item.py b/stripe/api_resources/credit_note_line_item.py index f7d1abca6..c7a1ab6ed 100644 --- a/stripe/api_resources/credit_note_line_item.py +++ b/stripe/api_resources/credit_note_line_item.py @@ -2,11 +2,10 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, List, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.tax_rate import TaxRate @@ -18,6 +17,14 @@ class CreditNoteLineItem(ListableAPIResource["CreditNoteLineItem"]): """ OBJECT_NAME = "credit_note_line_item" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + amount: int amount_excluding_tax: Optional[int] description: Optional[str] @@ -41,7 +48,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditNoteLineItem.ListParams"] ) -> ListObject["CreditNoteLineItem"]: result = cls._static_request( "get", diff --git a/stripe/api_resources/customer.py b/stripe/api_resources/customer.py index da4e9e1b2..a0ef570d6 100644 --- a/stripe/api_resources/customer.py +++ b/stripe/api_resources/customer.py @@ -13,13 +13,19 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject from stripe.api_resources.search_result_object import SearchResultObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal, Type +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.cash_balance import CashBalance from stripe.api_resources.discount import Discount @@ -46,6 +52,506 @@ class Customer( """ OBJECT_NAME = "customer" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + address: NotRequired[ + "Literal['']|Customer.CreateParamsAddress|None" + ] + balance: NotRequired["int|None"] + cash_balance: NotRequired["Customer.CreateParamsCashBalance|None"] + coupon: NotRequired["str|None"] + description: NotRequired["str|None"] + email: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + invoice_prefix: NotRequired["str|None"] + invoice_settings: NotRequired[ + "Customer.CreateParamsInvoiceSettings|None" + ] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + name: NotRequired["str|None"] + next_invoice_sequence: NotRequired["int|None"] + payment_method: NotRequired["str|None"] + phone: NotRequired["str|None"] + preferred_locales: NotRequired["List[str]|None"] + promotion_code: NotRequired["str|None"] + shipping: NotRequired[ + "Literal['']|Customer.CreateParamsShipping|None" + ] + source: NotRequired["str|None"] + tax: NotRequired["Customer.CreateParamsTax|None"] + tax_exempt: NotRequired[ + "Literal['']|Literal['exempt', 'none', 'reverse']|None" + ] + tax_id_data: NotRequired[ + "List[Customer.CreateParamsTaxIdDatum]|None" + ] + test_clock: NotRequired["str|None"] + validate: NotRequired["bool|None"] + + class CreateParamsTaxIdDatum(TypedDict): + type: Literal[ + "ad_nrt", + "ae_trn", + "ar_cuit", + "au_abn", + "au_arn", + "bg_uic", + "bo_tin", + "br_cnpj", + "br_cpf", + "ca_bn", + "ca_gst_hst", + "ca_pst_bc", + "ca_pst_mb", + "ca_pst_sk", + "ca_qst", + "ch_vat", + "cl_tin", + "cn_tin", + "co_nit", + "cr_tin", + "do_rcn", + "ec_ruc", + "eg_tin", + "es_cif", + "eu_oss_vat", + "eu_vat", + "gb_vat", + "ge_vat", + "hk_br", + "hu_tin", + "id_npwp", + "il_vat", + "in_gst", + "is_vat", + "jp_cn", + "jp_rn", + "jp_trn", + "ke_pin", + "kr_brn", + "li_uid", + "mx_rfc", + "my_frp", + "my_itn", + "my_sst", + "no_vat", + "nz_gst", + "pe_ruc", + "ph_tin", + "ro_tin", + "rs_pib", + "ru_inn", + "ru_kpp", + "sa_vat", + "sg_gst", + "sg_uen", + "si_tin", + "sv_nit", + "th_vat", + "tr_tin", + "tw_vat", + "ua_vat", + "us_ein", + "uy_ruc", + "ve_rif", + "vn_tin", + "za_vat", + ] + value: str + + class CreateParamsTax(TypedDict): + ip_address: NotRequired["Literal['']|str|None"] + + class CreateParamsShipping(TypedDict): + address: "Customer.CreateParamsShippingAddress" + name: str + phone: NotRequired["str|None"] + + class CreateParamsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsInvoiceSettings(TypedDict): + custom_fields: NotRequired[ + "Literal['']|List[Customer.CreateParamsInvoiceSettingsCustomField]|None" + ] + default_payment_method: NotRequired["str|None"] + footer: NotRequired["str|None"] + rendering_options: NotRequired[ + "Literal['']|Customer.CreateParamsInvoiceSettingsRenderingOptions|None" + ] + + class CreateParamsInvoiceSettingsRenderingOptions(TypedDict): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + + class CreateParamsInvoiceSettingsCustomField(TypedDict): + name: str + value: str + + class CreateParamsCashBalance(TypedDict): + settings: NotRequired[ + "Customer.CreateParamsCashBalanceSettings|None" + ] + + class CreateParamsCashBalanceSettings(TypedDict): + reconciliation_mode: NotRequired[ + "Literal['automatic', 'manual', 'merchant_default']|None" + ] + + class CreateParamsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateFundingInstructionsParams(RequestOptions): + bank_transfer: "Customer.CreateFundingInstructionsParamsBankTransfer" + currency: str + expand: NotRequired["List[str]|None"] + funding_type: Literal["bank_transfer"] + + class CreateFundingInstructionsParamsBankTransfer(TypedDict): + eu_bank_transfer: NotRequired[ + "Customer.CreateFundingInstructionsParamsBankTransferEuBankTransfer|None" + ] + requested_address_types: NotRequired[ + "List[Literal['iban', 'sort_code', 'spei', 'zengin']]|None" + ] + type: Literal[ + "eu_bank_transfer", + "gb_bank_transfer", + "jp_bank_transfer", + "mx_bank_transfer", + "us_bank_transfer", + ] + + class CreateFundingInstructionsParamsBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class DeleteParams(RequestOptions): + pass + + class DeleteDiscountParams(RequestOptions): + pass + + class ListParams(RequestOptions): + created: NotRequired["Customer.ListParamsCreated|int|None"] + email: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + test_clock: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListPaymentMethodsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + type: NotRequired[ + "Literal['acss_debit', 'affirm', 'afterpay_clearpay', 'alipay', 'au_becs_debit', 'bacs_debit', 'bancontact', 'blik', 'boleto', 'card', 'cashapp', 'customer_balance', 'eps', 'fpx', 'giropay', 'grabpay', 'ideal', 'klarna', 'konbini', 'link', 'oxxo', 'p24', 'paynow', 'paypal', 'pix', 'promptpay', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay', 'zip']|None" + ] + + class ModifyParams(RequestOptions): + address: NotRequired[ + "Literal['']|Customer.ModifyParamsAddress|None" + ] + balance: NotRequired["int|None"] + cash_balance: NotRequired["Customer.ModifyParamsCashBalance|None"] + coupon: NotRequired["str|None"] + default_source: NotRequired["str|None"] + description: NotRequired["str|None"] + email: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + invoice_prefix: NotRequired["str|None"] + invoice_settings: NotRequired[ + "Customer.ModifyParamsInvoiceSettings|None" + ] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + name: NotRequired["str|None"] + next_invoice_sequence: NotRequired["int|None"] + phone: NotRequired["str|None"] + preferred_locales: NotRequired["List[str]|None"] + promotion_code: NotRequired["str|None"] + shipping: NotRequired[ + "Literal['']|Customer.ModifyParamsShipping|None" + ] + source: NotRequired["str|None"] + tax: NotRequired["Customer.ModifyParamsTax|None"] + tax_exempt: NotRequired[ + "Literal['']|Literal['exempt', 'none', 'reverse']|None" + ] + validate: NotRequired["bool|None"] + + class ModifyParamsTax(TypedDict): + ip_address: NotRequired["Literal['']|str|None"] + + class ModifyParamsShipping(TypedDict): + address: "Customer.ModifyParamsShippingAddress" + name: str + phone: NotRequired["str|None"] + + class ModifyParamsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsInvoiceSettings(TypedDict): + custom_fields: NotRequired[ + "Literal['']|List[Customer.ModifyParamsInvoiceSettingsCustomField]|None" + ] + default_payment_method: NotRequired["str|None"] + footer: NotRequired["str|None"] + rendering_options: NotRequired[ + "Literal['']|Customer.ModifyParamsInvoiceSettingsRenderingOptions|None" + ] + + class ModifyParamsInvoiceSettingsRenderingOptions(TypedDict): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + + class ModifyParamsInvoiceSettingsCustomField(TypedDict): + name: str + value: str + + class ModifyParamsCashBalance(TypedDict): + settings: NotRequired[ + "Customer.ModifyParamsCashBalanceSettings|None" + ] + + class ModifyParamsCashBalanceSettings(TypedDict): + reconciliation_mode: NotRequired[ + "Literal['automatic', 'manual', 'merchant_default']|None" + ] + + class ModifyParamsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class RetrievePaymentMethodParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SearchParams(RequestOptions): + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + page: NotRequired["str|None"] + query: str + + class ModifyCashBalanceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + settings: NotRequired[ + "Customer.ModifyCashBalanceParamsSettings|None" + ] + + class ModifyCashBalanceParamsSettings(TypedDict): + reconciliation_mode: NotRequired[ + "Literal['automatic', 'manual', 'merchant_default']|None" + ] + + class RetrieveCashBalanceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class FundCashBalanceParams(RequestOptions): + amount: int + currency: str + expand: NotRequired["List[str]|None"] + reference: NotRequired["str|None"] + + class CreateBalanceTransactionParams(RequestOptions): + amount: int + currency: str + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveBalanceTransactionParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifyBalanceTransactionParams(RequestOptions): + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ListBalanceTransactionsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveCashBalanceTransactionParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListCashBalanceTransactionsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class CreateSourceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + source: str + validate: NotRequired["bool|None"] + + class RetrieveSourceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifySourceParams(RequestOptions): + account_holder_name: NotRequired["str|None"] + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + address_city: NotRequired["str|None"] + address_country: NotRequired["str|None"] + address_line1: NotRequired["str|None"] + address_line2: NotRequired["str|None"] + address_state: NotRequired["str|None"] + address_zip: NotRequired["str|None"] + exp_month: NotRequired["str|None"] + exp_year: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + name: NotRequired["str|None"] + owner: NotRequired["Customer.ModifySourceParamsOwner|None"] + + class ModifySourceParamsOwner(TypedDict): + address: NotRequired[ + "Customer.ModifySourceParamsOwnerAddress|None" + ] + email: NotRequired["str|None"] + name: NotRequired["str|None"] + phone: NotRequired["str|None"] + + class ModifySourceParamsOwnerAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class DeleteSourceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListSourcesParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + object: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + + class CreateTaxIdParams(RequestOptions): + expand: NotRequired["List[str]|None"] + type: Literal[ + "ad_nrt", + "ae_trn", + "ar_cuit", + "au_abn", + "au_arn", + "bg_uic", + "bo_tin", + "br_cnpj", + "br_cpf", + "ca_bn", + "ca_gst_hst", + "ca_pst_bc", + "ca_pst_mb", + "ca_pst_sk", + "ca_qst", + "ch_vat", + "cl_tin", + "cn_tin", + "co_nit", + "cr_tin", + "do_rcn", + "ec_ruc", + "eg_tin", + "es_cif", + "eu_oss_vat", + "eu_vat", + "gb_vat", + "ge_vat", + "hk_br", + "hu_tin", + "id_npwp", + "il_vat", + "in_gst", + "is_vat", + "jp_cn", + "jp_rn", + "jp_trn", + "ke_pin", + "kr_brn", + "li_uid", + "mx_rfc", + "my_frp", + "my_itn", + "my_sst", + "no_vat", + "nz_gst", + "pe_ruc", + "ph_tin", + "ro_tin", + "rs_pib", + "ru_inn", + "ru_kpp", + "sa_vat", + "sg_gst", + "sg_uen", + "si_tin", + "sv_nit", + "th_vat", + "tr_tin", + "tw_vat", + "ua_vat", + "us_ein", + "uy_ruc", + "ve_rif", + "vn_tin", + "za_vat", + ] + value: str + + class RetrieveTaxIdParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class DeleteTaxIdParams(RequestOptions): + pass + + class ListTaxIdsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + address: Optional[StripeObject] balance: Optional[int] cash_balance: Optional["CashBalance"] @@ -83,7 +589,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.CreateParams"] ) -> "Customer": return cast( "Customer", @@ -105,7 +611,7 @@ def _cls_create_funding_instructions( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.CreateFundingInstructionsParams"] ): return cls._static_request( "post", @@ -120,7 +626,9 @@ def _cls_create_funding_instructions( @util.class_method_variant("_cls_create_funding_instructions") def create_funding_instructions( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Customer.CreateFundingInstructionsParams"] ): return self._request( "post", @@ -132,7 +640,9 @@ def create_funding_instructions( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Customer": + def _cls_delete( + cls, sid: str, **params: Unpack["Customer.DeleteParams"] + ) -> "Customer": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Customer", @@ -140,7 +650,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Customer": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Customer": + def delete(self, **params: Unpack["Customer.DeleteParams"]) -> "Customer": return self._request_and_refresh( "delete", self.instance_url(), @@ -154,7 +664,7 @@ def _cls_delete_discount( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.DeleteDiscountParams"] ): return cls._static_request( "delete", @@ -169,7 +679,9 @@ def _cls_delete_discount( @util.class_method_variant("_cls_delete_discount") def delete_discount( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Customer.DeleteDiscountParams"] ): return self._request( "delete", @@ -186,7 +698,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ListParams"] ) -> ListObject["Customer"]: result = cls._static_request( "get", @@ -212,7 +724,7 @@ def _cls_list_payment_methods( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ListPaymentMethodsParams"] ): return cls._static_request( "get", @@ -227,7 +739,9 @@ def _cls_list_payment_methods( @util.class_method_variant("_cls_list_payment_methods") def list_payment_methods( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Customer.ListPaymentMethodsParams"] ): return self._request( "get", @@ -239,7 +753,9 @@ def list_payment_methods( ) @classmethod - def modify(cls, id, **params: Any) -> "Customer": + def modify( + cls, id, **params: Unpack["Customer.ModifyParams"] + ) -> "Customer": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Customer", @@ -248,9 +764,9 @@ def modify(cls, id, **params: Any) -> "Customer": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Customer.RetrieveParams"] ) -> "Customer": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -262,7 +778,7 @@ def _cls_retrieve_payment_method( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.RetrievePaymentMethodParams"] ): return cls._static_request( "get", @@ -281,7 +797,7 @@ def retrieve_payment_method( self, payment_method: str, idempotency_key: Optional[str] = None, - **params: Any + **params: Unpack["Customer.RetrievePaymentMethodParams"] ): return self._request( "get", @@ -294,11 +810,15 @@ def retrieve_payment_method( ) @classmethod - def search(cls, *args, **kwargs) -> SearchResultObject["Customer"]: + def search( + cls, *args, **kwargs: Unpack["Customer.SearchParams"] + ) -> SearchResultObject["Customer"]: return cls._search(search_url="/v1/customers/search", *args, **kwargs) @classmethod - def search_auto_paging_iter(cls, *args, **kwargs): + def search_auto_paging_iter( + cls, *args, **kwargs: Unpack["Customer.SearchParams"] + ): return cls.search(*args, **kwargs).auto_paging_iter() @classmethod @@ -308,7 +828,7 @@ def create_balance_transaction( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.CreateBalanceTransactionParams"] ): return cls._static_request( "post", @@ -329,7 +849,7 @@ def retrieve_balance_transaction( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.RetrieveBalanceTransactionParams"] ): return cls._static_request( "get", @@ -351,7 +871,7 @@ def modify_balance_transaction( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ModifyBalanceTransactionParams"] ): return cls._static_request( "post", @@ -372,7 +892,7 @@ def list_balance_transactions( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ListBalanceTransactionsParams"] ): return cls._static_request( "get", @@ -393,7 +913,7 @@ def retrieve_cash_balance_transaction( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.RetrieveCashBalanceTransactionParams"] ): return cls._static_request( "get", @@ -414,7 +934,7 @@ def list_cash_balance_transactions( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ListCashBalanceTransactionsParams"] ): return cls._static_request( "get", @@ -434,7 +954,7 @@ def create_source( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.CreateSourceParams"] ): return cls._static_request( "post", @@ -455,7 +975,7 @@ def retrieve_source( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.RetrieveSourceParams"] ): return cls._static_request( "get", @@ -476,7 +996,7 @@ def modify_source( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ModifySourceParams"] ): return cls._static_request( "post", @@ -497,7 +1017,7 @@ def delete_source( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.DeleteSourceParams"] ): return cls._static_request( "delete", @@ -517,7 +1037,7 @@ def list_sources( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ListSourcesParams"] ): return cls._static_request( "get", @@ -537,7 +1057,7 @@ def create_tax_id( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.CreateTaxIdParams"] ): return cls._static_request( "post", @@ -558,7 +1078,7 @@ def retrieve_tax_id( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.RetrieveTaxIdParams"] ): return cls._static_request( "get", @@ -579,7 +1099,7 @@ def delete_tax_id( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.DeleteTaxIdParams"] ): return cls._static_request( "delete", @@ -599,7 +1119,7 @@ def list_tax_ids( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ListTaxIdsParams"] ): return cls._static_request( "get", @@ -619,7 +1139,7 @@ def modify_cash_balance( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.ModifyCashBalanceParams"] ): return cls._static_request( "post", @@ -639,7 +1159,7 @@ def retrieve_cash_balance( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.RetrieveCashBalanceParams"] ): return cls._static_request( "get", @@ -662,7 +1182,7 @@ def _cls_fund_cash_balance( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Customer.FundCashBalanceParams"] ): return cls._static_request( "post", @@ -677,7 +1197,9 @@ def _cls_fund_cash_balance( @util.class_method_variant("_cls_fund_cash_balance") def fund_cash_balance( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Customer.FundCashBalanceParams"] ): return self.resource._request( "post", diff --git a/stripe/api_resources/customer_balance_transaction.py b/stripe/api_resources/customer_balance_transaction.py index 15a424110..512e9d347 100644 --- a/stripe/api_resources/customer_balance_transaction.py +++ b/stripe/api_resources/customer_balance_transaction.py @@ -4,11 +4,9 @@ from stripe.api_resources.customer import Customer from stripe.api_resources.expandable_field import ExpandableField from typing import Dict, Optional -from typing_extensions import Literal +from typing_extensions import Literal, TYPE_CHECKING from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.credit_note import CreditNote from stripe.api_resources.invoice import Invoice diff --git a/stripe/api_resources/customer_cash_balance_transaction.py b/stripe/api_resources/customer_cash_balance_transaction.py index 4b1ca71fb..b3dbc57a7 100644 --- a/stripe/api_resources/customer_cash_balance_transaction.py +++ b/stripe/api_resources/customer_cash_balance_transaction.py @@ -3,11 +3,10 @@ from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.customer import Customer @@ -24,6 +23,17 @@ class CustomerCashBalanceTransaction( """ OBJECT_NAME = "customer_cash_balance_transaction" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + adjusted_for_overdraft: Optional[StripeObject] applied_to_payment: Optional[StripeObject] created: int @@ -54,7 +64,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CustomerCashBalanceTransaction.ListParams"] ) -> ListObject["CustomerCashBalanceTransaction"]: result = cls._static_request( "get", @@ -75,8 +85,10 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, + id: str, + **params: Unpack["CustomerCashBalanceTransaction.RetrieveParams"] ) -> "CustomerCashBalanceTransaction": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/discount.py b/stripe/api_resources/discount.py index 3dc694091..1fad11ca3 100644 --- a/stripe/api_resources/discount.py +++ b/stripe/api_resources/discount.py @@ -3,9 +3,7 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.stripe_object import StripeObject from typing import Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing_extensions import Literal, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.coupon import Coupon diff --git a/stripe/api_resources/dispute.py b/stripe/api_resources/dispute.py index 3cee58616..fdc3ed075 100644 --- a/stripe/api_resources/dispute.py +++ b/stripe/api_resources/dispute.py @@ -7,13 +7,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction from stripe.api_resources.charge import Charge @@ -32,6 +37,64 @@ class Dispute( """ OBJECT_NAME = "dispute" + if TYPE_CHECKING: + + class CloseParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListParams(RequestOptions): + charge: NotRequired["str|None"] + created: NotRequired["Dispute.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + payment_intent: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + evidence: NotRequired["Dispute.ModifyParamsEvidence|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + submit: NotRequired["bool|None"] + + class ModifyParamsEvidence(TypedDict): + access_activity_log: NotRequired["str|None"] + billing_address: NotRequired["str|None"] + cancellation_policy: NotRequired["str|None"] + cancellation_policy_disclosure: NotRequired["str|None"] + cancellation_rebuttal: NotRequired["str|None"] + customer_communication: NotRequired["str|None"] + customer_email_address: NotRequired["str|None"] + customer_name: NotRequired["str|None"] + customer_purchase_ip: NotRequired["str|None"] + customer_signature: NotRequired["str|None"] + duplicate_charge_documentation: NotRequired["str|None"] + duplicate_charge_explanation: NotRequired["str|None"] + duplicate_charge_id: NotRequired["str|None"] + product_description: NotRequired["str|None"] + receipt: NotRequired["str|None"] + refund_policy: NotRequired["str|None"] + refund_policy_disclosure: NotRequired["str|None"] + refund_refusal_explanation: NotRequired["str|None"] + service_date: NotRequired["str|None"] + service_documentation: NotRequired["str|None"] + shipping_address: NotRequired["str|None"] + shipping_carrier: NotRequired["str|None"] + shipping_date: NotRequired["str|None"] + shipping_documentation: NotRequired["str|None"] + shipping_tracking_number: NotRequired["str|None"] + uncategorized_file: NotRequired["str|None"] + uncategorized_text: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int balance_transactions: List["BalanceTransaction"] charge: ExpandableField["Charge"] @@ -65,7 +128,7 @@ def _cls_close( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Dispute.CloseParams"] ): return cls._static_request( "post", @@ -79,7 +142,11 @@ def _cls_close( ) @util.class_method_variant("_cls_close") - def close(self, idempotency_key: Optional[str] = None, **params: Any): + def close( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Dispute.CloseParams"] + ): return self._request( "post", "/v1/disputes/{dispute}/close".format( @@ -95,7 +162,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Dispute.ListParams"] ) -> ListObject["Dispute"]: result = cls._static_request( "get", @@ -115,7 +182,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Dispute": + def modify(cls, id, **params: Unpack["Dispute.ModifyParams"]) -> "Dispute": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Dispute", @@ -124,8 +191,8 @@ def modify(cls, id, **params: Any) -> "Dispute": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Dispute.RetrieveParams"] ) -> "Dispute": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/ephemeral_key.py b/stripe/api_resources/ephemeral_key.py index ad25c2a60..61553d9a1 100644 --- a/stripe/api_resources/ephemeral_key.py +++ b/stripe/api_resources/ephemeral_key.py @@ -2,13 +2,19 @@ # File generated from our OpenAPI spec from stripe import api_requestor, util from stripe.api_resources.abstract import DeletableAPIResource -from typing import Any, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING from urllib.parse import quote_plus class EphemeralKey(DeletableAPIResource["EphemeralKey"]): OBJECT_NAME = "ephemeral_key" + if TYPE_CHECKING: + + class DeleteParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int expires: int id: str @@ -17,7 +23,9 @@ class EphemeralKey(DeletableAPIResource["EphemeralKey"]): secret: Optional[str] @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "EphemeralKey": + def _cls_delete( + cls, sid: str, **params: Unpack["EphemeralKey.DeleteParams"] + ) -> "EphemeralKey": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "EphemeralKey", @@ -25,7 +33,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "EphemeralKey": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "EphemeralKey": + def delete( + self, **params: Unpack["EphemeralKey.DeleteParams"] + ) -> "EphemeralKey": return self._request_and_refresh( "delete", self.instance_url(), diff --git a/stripe/api_resources/event.py b/stripe/api_resources/event.py index 4008e2dda..1f5f18567 100644 --- a/stripe/api_resources/event.py +++ b/stripe/api_resources/event.py @@ -2,9 +2,16 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) class Event(ListableAPIResource["Event"]): @@ -42,6 +49,27 @@ class Event(ListableAPIResource["Event"]): """ OBJECT_NAME = "event" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + created: NotRequired["Event.ListParamsCreated|int|None"] + delivery_success: NotRequired["bool|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + type: NotRequired["str|None"] + types: NotRequired["List[str]|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + account: Optional[str] api_version: Optional[str] created: int @@ -283,7 +311,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Event.ListParams"] ) -> ListObject["Event"]: result = cls._static_request( "get", @@ -304,8 +332,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Event.RetrieveParams"] ) -> "Event": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/exchange_rate.py b/stripe/api_resources/exchange_rate.py index 890574e1a..f7960b25a 100644 --- a/stripe/api_resources/exchange_rate.py +++ b/stripe/api_resources/exchange_rate.py @@ -2,8 +2,9 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, Optional -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING class ExchangeRate(ListableAPIResource["ExchangeRate"]): @@ -22,6 +23,17 @@ class ExchangeRate(ListableAPIResource["ExchangeRate"]): """ OBJECT_NAME = "exchange_rate" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + id: str object: Literal["exchange_rate"] rates: Dict[str, float] @@ -32,7 +44,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ExchangeRate.ListParams"] ) -> ListObject["ExchangeRate"]: result = cls._static_request( "get", @@ -53,8 +65,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ExchangeRate.RetrieveParams"] ) -> "ExchangeRate": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/file.py b/stripe/api_resources/file.py index 80b194b0a..f1401819a 100644 --- a/stripe/api_resources/file.py +++ b/stripe/api_resources/file.py @@ -4,10 +4,15 @@ from stripe import api_requestor, util from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from stripe.request_options import RequestOptions +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.file_link import FileLink @@ -25,6 +30,27 @@ class File(ListableAPIResource["File"]): """ OBJECT_NAME = "file" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + created: NotRequired["File.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + purpose: NotRequired[ + "Literal['account_requirement', 'additional_verification', 'business_icon', 'business_logo', 'customer_signature', 'dispute_evidence', 'document_provider_identity_document', 'finance_report_run', 'identity_document', 'identity_document_downloadable', 'pci_document', 'selfie', 'sigma_scheduled_query', 'tax_document_user_upload', 'terminal_reader_splashscreen']|None" + ] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int expires_at: Optional[int] filename: Optional[str] @@ -59,7 +85,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["File.ListParams"] ) -> ListObject["File"]: result = cls._static_request( "get", @@ -80,9 +106,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["File.RetrieveParams"] ) -> "File": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/file_link.py b/stripe/api_resources/file_link.py index e2cfe9a5c..83c96c2db 100644 --- a/stripe/api_resources/file_link.py +++ b/stripe/api_resources/file_link.py @@ -7,12 +7,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.file import File @@ -29,6 +34,37 @@ class FileLink( """ OBJECT_NAME = "file_link" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["int|None"] + file: str + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ListParams(RequestOptions): + created: NotRequired["FileLink.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + expired: NotRequired["bool|None"] + file: NotRequired["str|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["Literal['']|Literal['now']|int|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int expired: bool expires_at: Optional[int] @@ -46,7 +82,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["FileLink.CreateParams"] ) -> "FileLink": return cast( "FileLink", @@ -67,7 +103,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["FileLink.ListParams"] ) -> ListObject["FileLink"]: result = cls._static_request( "get", @@ -87,7 +123,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "FileLink": + def modify( + cls, id, **params: Unpack["FileLink.ModifyParams"] + ) -> "FileLink": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "FileLink", @@ -96,8 +134,8 @@ def modify(cls, id, **params: Any) -> "FileLink": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["FileLink.RetrieveParams"] ) -> "FileLink": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/financial_connections/account.py b/stripe/api_resources/financial_connections/account.py index b647891b6..08bdcd731 100644 --- a/stripe/api_resources/financial_connections/account.py +++ b/stripe/api_resources/financial_connections/account.py @@ -4,11 +4,16 @@ from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, List, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.financial_connections.account_ownership import ( @@ -22,6 +27,37 @@ class Account(ListableAPIResource["Account"]): """ OBJECT_NAME = "financial_connections.account" + if TYPE_CHECKING: + + class DisconnectParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListParams(RequestOptions): + account_holder: NotRequired["Account.ListParamsAccountHolder|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + session: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + + class ListParamsAccountHolder(TypedDict): + account: NotRequired["str|None"] + customer: NotRequired["str|None"] + + class ListOwnersParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + ownership: str + starting_after: NotRequired["str|None"] + + class RefreshAccountParams(RequestOptions): + expand: NotRequired["List[str]|None"] + features: List[Literal["balance", "ownership"]] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + account_holder: Optional[StripeObject] balance: Optional[StripeObject] balance_refresh: Optional[StripeObject] @@ -58,7 +94,7 @@ def _cls_disconnect( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.DisconnectParams"] ): return cls._static_request( "post", @@ -72,7 +108,11 @@ def _cls_disconnect( ) @util.class_method_variant("_cls_disconnect") - def disconnect(self, idempotency_key: Optional[str] = None, **params: Any): + def disconnect( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Account.DisconnectParams"] + ): return self._request( "post", "/v1/financial_connections/accounts/{account}/disconnect".format( @@ -88,7 +128,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ListParams"] ) -> ListObject["Account"]: result = cls._static_request( "get", @@ -114,7 +154,7 @@ def _cls_list_owners( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.ListOwnersParams"] ): return cls._static_request( "get", @@ -129,7 +169,9 @@ def _cls_list_owners( @util.class_method_variant("_cls_list_owners") def list_owners( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Account.ListOwnersParams"] ): return self._request( "get", @@ -147,7 +189,7 @@ def _cls_refresh_account( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Account.RefreshAccountParams"] ): return cls._static_request( "post", @@ -162,7 +204,9 @@ def _cls_refresh_account( @util.class_method_variant("_cls_refresh_account") def refresh_account( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Account.RefreshAccountParams"] ): return self._request( "post", @@ -175,8 +219,8 @@ def refresh_account( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Account.RetrieveParams"] ) -> "Account": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/financial_connections/account_ownership.py b/stripe/api_resources/financial_connections/account_ownership.py index 25fbac324..1200a8af1 100644 --- a/stripe/api_resources/financial_connections/account_ownership.py +++ b/stripe/api_resources/financial_connections/account_ownership.py @@ -2,9 +2,7 @@ # File generated from our OpenAPI spec from stripe.api_resources.list_object import ListObject from stripe.stripe_object import StripeObject -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing_extensions import Literal, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.financial_connections.account_owner import ( diff --git a/stripe/api_resources/financial_connections/session.py b/stripe/api_resources/financial_connections/session.py index 793b74a78..0815291f2 100644 --- a/stripe/api_resources/financial_connections/session.py +++ b/stripe/api_resources/financial_connections/session.py @@ -2,11 +2,16 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, List, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.financial_connections.account import Account @@ -18,6 +23,33 @@ class Session(CreateableAPIResource["Session"]): """ OBJECT_NAME = "financial_connections.session" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + account_holder: "Session.CreateParamsAccountHolder" + expand: NotRequired["List[str]|None"] + filters: NotRequired["Session.CreateParamsFilters|None"] + permissions: List[ + Literal[ + "balances", "ownership", "payment_method", "transactions" + ] + ] + prefetch: NotRequired[ + "List[Literal['balances', 'ownership']]|None" + ] + return_url: NotRequired["str|None"] + + class CreateParamsFilters(TypedDict): + countries: List[str] + + class CreateParamsAccountHolder(TypedDict): + account: NotRequired["str|None"] + customer: NotRequired["str|None"] + type: Literal["account", "customer"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + account_holder: Optional[StripeObject] accounts: ListObject["Account"] client_secret: str @@ -38,7 +70,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Session.CreateParams"] ) -> "Session": return cast( "Session", @@ -55,8 +87,8 @@ def create( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Session.RetrieveParams"] ) -> "Session": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/identity/verification_report.py b/stripe/api_resources/identity/verification_report.py index c913fedb3..e6e114b11 100644 --- a/stripe/api_resources/identity/verification_report.py +++ b/stripe/api_resources/identity/verification_report.py @@ -2,9 +2,16 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) class VerificationReport(ListableAPIResource["VerificationReport"]): @@ -23,6 +30,28 @@ class VerificationReport(ListableAPIResource["VerificationReport"]): """ OBJECT_NAME = "identity.verification_report" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + created: NotRequired[ + "VerificationReport.ListParamsCreated|int|None" + ] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + type: NotRequired["Literal['document', 'id_number']|None"] + verification_session: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int document: Optional[StripeObject] id: str @@ -40,7 +69,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["VerificationReport.ListParams"] ) -> ListObject["VerificationReport"]: result = cls._static_request( "get", @@ -61,8 +90,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["VerificationReport.RetrieveParams"] ) -> "VerificationReport": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/identity/verification_session.py b/stripe/api_resources/identity/verification_session.py index 9f5e09aba..c1c59c0b5 100644 --- a/stripe/api_resources/identity/verification_session.py +++ b/stripe/api_resources/identity/verification_session.py @@ -8,13 +8,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.identity.verification_report import ( VerificationReport, @@ -41,6 +46,78 @@ class VerificationSession( """ OBJECT_NAME = "identity.verification_session" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + options: NotRequired[ + "VerificationSession.CreateParamsOptions|None" + ] + return_url: NotRequired["str|None"] + type: Literal["document", "id_number"] + + class CreateParamsOptions(TypedDict): + document: NotRequired[ + "Literal['']|VerificationSession.CreateParamsOptionsDocument|None" + ] + + class CreateParamsOptionsDocument(TypedDict): + allowed_types: NotRequired[ + "List[Literal['driving_license', 'id_card', 'passport']]|None" + ] + require_id_number: NotRequired["bool|None"] + require_live_capture: NotRequired["bool|None"] + require_matching_selfie: NotRequired["bool|None"] + + class ListParams(RequestOptions): + created: NotRequired[ + "VerificationSession.ListParamsCreated|int|None" + ] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['canceled', 'processing', 'requires_input', 'verified']|None" + ] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + options: NotRequired[ + "VerificationSession.ModifyParamsOptions|None" + ] + type: NotRequired["Literal['document', 'id_number']|None"] + + class ModifyParamsOptions(TypedDict): + document: NotRequired[ + "Literal['']|VerificationSession.ModifyParamsOptionsDocument|None" + ] + + class ModifyParamsOptionsDocument(TypedDict): + allowed_types: NotRequired[ + "List[Literal['driving_license', 'id_card', 'passport']]|None" + ] + require_id_number: NotRequired["bool|None"] + require_live_capture: NotRequired["bool|None"] + require_matching_selfie: NotRequired["bool|None"] + + class RedactParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + client_secret: Optional[str] created: int id: str @@ -63,7 +140,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["VerificationSession.CancelParams"] ): return cls._static_request( "post", @@ -77,7 +154,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["VerificationSession.CancelParams"] + ): return self._request( "post", "/v1/identity/verification_sessions/{session}/cancel".format( @@ -94,7 +175,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["VerificationSession.CreateParams"] ) -> "VerificationSession": return cast( "VerificationSession", @@ -115,7 +196,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["VerificationSession.ListParams"] ) -> ListObject["VerificationSession"]: result = cls._static_request( "get", @@ -135,7 +216,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "VerificationSession": + def modify( + cls, id, **params: Unpack["VerificationSession.ModifyParams"] + ) -> "VerificationSession": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "VerificationSession", @@ -149,7 +232,7 @@ def _cls_redact( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["VerificationSession.RedactParams"] ): return cls._static_request( "post", @@ -163,7 +246,11 @@ def _cls_redact( ) @util.class_method_variant("_cls_redact") - def redact(self, idempotency_key: Optional[str] = None, **params: Any): + def redact( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["VerificationSession.RedactParams"] + ): return self._request( "post", "/v1/identity/verification_sessions/{session}/redact".format( @@ -175,8 +262,8 @@ def redact(self, idempotency_key: Optional[str] = None, **params: Any): @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["VerificationSession.RetrieveParams"] ) -> "VerificationSession": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/invoice.py b/stripe/api_resources/invoice.py index 44e0e319b..d50d989e4 100644 --- a/stripe/api_resources/invoice.py +++ b/stripe/api_resources/invoice.py @@ -11,13 +11,18 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject from stripe.api_resources.search_result_object import SearchResultObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.application import Application @@ -77,6 +82,1072 @@ class Invoice( """ OBJECT_NAME = "invoice" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + account_tax_ids: NotRequired["Literal['']|List[str]|None"] + application_fee_amount: NotRequired["int|None"] + auto_advance: NotRequired["bool|None"] + automatic_tax: NotRequired["Invoice.CreateParamsAutomaticTax|None"] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + currency: NotRequired["str|None"] + custom_fields: NotRequired[ + "Literal['']|List[Invoice.CreateParamsCustomField]|None" + ] + customer: NotRequired["str|None"] + days_until_due: NotRequired["int|None"] + default_payment_method: NotRequired["str|None"] + default_source: NotRequired["str|None"] + default_tax_rates: NotRequired["List[str]|None"] + description: NotRequired["str|None"] + discounts: NotRequired[ + "Literal['']|List[Invoice.CreateParamsDiscount]|None" + ] + due_date: NotRequired["int|None"] + effective_at: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + footer: NotRequired["str|None"] + from_invoice: NotRequired["Invoice.CreateParamsFromInvoice|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + payment_settings: NotRequired[ + "Invoice.CreateParamsPaymentSettings|None" + ] + pending_invoice_items_behavior: NotRequired[ + "Literal['exclude', 'include', 'include_and_require']|None" + ] + rendering: NotRequired["Invoice.CreateParamsRendering|None"] + rendering_options: NotRequired[ + "Literal['']|Invoice.CreateParamsRenderingOptions|None" + ] + shipping_cost: NotRequired["Invoice.CreateParamsShippingCost|None"] + shipping_details: NotRequired[ + "Invoice.CreateParamsShippingDetails|None" + ] + statement_descriptor: NotRequired["str|None"] + subscription: NotRequired["str|None"] + transfer_data: NotRequired["Invoice.CreateParamsTransferData|None"] + + class CreateParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + destination: str + + class CreateParamsShippingDetails(TypedDict): + address: "Invoice.CreateParamsShippingDetailsAddress" + name: str + phone: NotRequired["Literal['']|str|None"] + + class CreateParamsShippingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsShippingCost(TypedDict): + shipping_rate: NotRequired["str|None"] + shipping_rate_data: NotRequired[ + "Invoice.CreateParamsShippingCostShippingRateData|None" + ] + + class CreateParamsShippingCostShippingRateData(TypedDict): + delivery_estimate: NotRequired[ + "Invoice.CreateParamsShippingCostShippingRateDataDeliveryEstimate|None" + ] + display_name: str + fixed_amount: NotRequired[ + "Invoice.CreateParamsShippingCostShippingRateDataFixedAmount|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["str|None"] + type: NotRequired["Literal['fixed_amount']|None"] + + class CreateParamsShippingCostShippingRateDataFixedAmount(TypedDict): + amount: int + currency: str + currency_options: NotRequired[ + "Dict[str, Invoice.CreateParamsShippingCostShippingRateDataFixedAmountCurrencyOptions]|None" + ] + + class CreateParamsShippingCostShippingRateDataFixedAmountCurrencyOptions( + TypedDict, + ): + amount: int + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + + class CreateParamsShippingCostShippingRateDataDeliveryEstimate( + TypedDict, + ): + maximum: NotRequired[ + "Invoice.CreateParamsShippingCostShippingRateDataDeliveryEstimateMaximum|None" + ] + minimum: NotRequired[ + "Invoice.CreateParamsShippingCostShippingRateDataDeliveryEstimateMinimum|None" + ] + + class CreateParamsShippingCostShippingRateDataDeliveryEstimateMinimum( + TypedDict, + ): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class CreateParamsShippingCostShippingRateDataDeliveryEstimateMaximum( + TypedDict, + ): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class CreateParamsRenderingOptions(TypedDict): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + + class CreateParamsRendering(TypedDict): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + pdf: NotRequired["Invoice.CreateParamsRenderingPdf|None"] + + class CreateParamsRenderingPdf(TypedDict): + page_size: NotRequired["Literal['a4', 'auto', 'letter']|None"] + + class CreateParamsPaymentSettings(TypedDict): + default_mandate: NotRequired["Literal['']|str|None"] + payment_method_options: NotRequired[ + "Invoice.CreateParamsPaymentSettingsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired[ + "Literal['']|List[Literal['ach_credit_transfer', 'ach_debit', 'acss_debit', 'au_becs_debit', 'bacs_debit', 'bancontact', 'boleto', 'card', 'cashapp', 'customer_balance', 'fpx', 'giropay', 'grabpay', 'ideal', 'konbini', 'link', 'paynow', 'paypal', 'promptpay', 'sepa_credit_transfer', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay']]|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Literal['']|Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebit|None" + ] + bancontact: NotRequired[ + "Literal['']|Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsBancontact|None" + ] + card: NotRequired[ + "Literal['']|Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsCard|None" + ] + customer_balance: NotRequired[ + "Literal['']|Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalance|None" + ] + konbini: NotRequired[ + "Literal['']|Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsKonbini|None" + ] + us_bank_account: NotRequired[ + "Literal['']|Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccount|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccount( + TypedDict, + ): + financial_connections: NotRequired[ + "Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsKonbini( + TypedDict + ): + pass + + class CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalance( + TypedDict, + ): + bank_transfer: NotRequired[ + "Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["str|None"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + type: NotRequired["str|None"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class CreateParamsPaymentSettingsPaymentMethodOptionsCard(TypedDict): + installments: NotRequired[ + "Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsCardInstallments|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsCardInstallments( + TypedDict, + ): + enabled: NotRequired["bool|None"] + plan: NotRequired[ + "Literal['']|Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsCardInstallmentsPlan|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsCardInstallmentsPlan( + TypedDict, + ): + count: int + interval: Literal["month"] + type: Literal["fixed_count"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsBancontact( + TypedDict, + ): + preferred_language: NotRequired[ + "Literal['de', 'en', 'fr', 'nl']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebit( + TypedDict, + ): + mandate_options: NotRequired[ + "Invoice.CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class CreateParamsFromInvoice(TypedDict): + action: Literal["revision"] + invoice: str + + class CreateParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class CreateParamsCustomField(TypedDict): + name: str + value: str + + class CreateParamsAutomaticTax(TypedDict): + enabled: bool + + class DeleteParams(RequestOptions): + pass + + class FinalizeInvoiceParams(RequestOptions): + auto_advance: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + + class ListParams(RequestOptions): + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + created: NotRequired["Invoice.ListParamsCreated|int|None"] + customer: NotRequired["str|None"] + due_date: NotRequired["Invoice.ListParamsDueDate|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['draft', 'open', 'paid', 'uncollectible', 'void']|None" + ] + subscription: NotRequired["str|None"] + + class ListParamsDueDate(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class MarkUncollectibleParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifyParams(RequestOptions): + account_tax_ids: NotRequired["Literal['']|List[str]|None"] + application_fee_amount: NotRequired["int|None"] + auto_advance: NotRequired["bool|None"] + automatic_tax: NotRequired["Invoice.ModifyParamsAutomaticTax|None"] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + custom_fields: NotRequired[ + "Literal['']|List[Invoice.ModifyParamsCustomField]|None" + ] + days_until_due: NotRequired["int|None"] + default_payment_method: NotRequired["str|None"] + default_source: NotRequired["Literal['']|str|None"] + default_tax_rates: NotRequired["Literal['']|List[str]|None"] + description: NotRequired["str|None"] + discounts: NotRequired[ + "Literal['']|List[Invoice.ModifyParamsDiscount]|None" + ] + due_date: NotRequired["int|None"] + effective_at: NotRequired["Literal['']|int|None"] + expand: NotRequired["List[str]|None"] + footer: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + on_behalf_of: NotRequired["Literal['']|str|None"] + payment_settings: NotRequired[ + "Invoice.ModifyParamsPaymentSettings|None" + ] + rendering: NotRequired["Invoice.ModifyParamsRendering|None"] + rendering_options: NotRequired[ + "Literal['']|Invoice.ModifyParamsRenderingOptions|None" + ] + shipping_cost: NotRequired[ + "Literal['']|Invoice.ModifyParamsShippingCost|None" + ] + shipping_details: NotRequired[ + "Literal['']|Invoice.ModifyParamsShippingDetails|None" + ] + statement_descriptor: NotRequired["str|None"] + transfer_data: NotRequired[ + "Literal['']|Invoice.ModifyParamsTransferData|None" + ] + + class ModifyParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + destination: str + + class ModifyParamsShippingDetails(TypedDict): + address: "Invoice.ModifyParamsShippingDetailsAddress" + name: str + phone: NotRequired["Literal['']|str|None"] + + class ModifyParamsShippingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsShippingCost(TypedDict): + shipping_rate: NotRequired["str|None"] + shipping_rate_data: NotRequired[ + "Invoice.ModifyParamsShippingCostShippingRateData|None" + ] + + class ModifyParamsShippingCostShippingRateData(TypedDict): + delivery_estimate: NotRequired[ + "Invoice.ModifyParamsShippingCostShippingRateDataDeliveryEstimate|None" + ] + display_name: str + fixed_amount: NotRequired[ + "Invoice.ModifyParamsShippingCostShippingRateDataFixedAmount|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["str|None"] + type: NotRequired["Literal['fixed_amount']|None"] + + class ModifyParamsShippingCostShippingRateDataFixedAmount(TypedDict): + amount: int + currency: str + currency_options: NotRequired[ + "Dict[str, Invoice.ModifyParamsShippingCostShippingRateDataFixedAmountCurrencyOptions]|None" + ] + + class ModifyParamsShippingCostShippingRateDataFixedAmountCurrencyOptions( + TypedDict, + ): + amount: int + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + + class ModifyParamsShippingCostShippingRateDataDeliveryEstimate( + TypedDict, + ): + maximum: NotRequired[ + "Invoice.ModifyParamsShippingCostShippingRateDataDeliveryEstimateMaximum|None" + ] + minimum: NotRequired[ + "Invoice.ModifyParamsShippingCostShippingRateDataDeliveryEstimateMinimum|None" + ] + + class ModifyParamsShippingCostShippingRateDataDeliveryEstimateMinimum( + TypedDict, + ): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class ModifyParamsShippingCostShippingRateDataDeliveryEstimateMaximum( + TypedDict, + ): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class ModifyParamsRenderingOptions(TypedDict): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + + class ModifyParamsRendering(TypedDict): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + pdf: NotRequired["Invoice.ModifyParamsRenderingPdf|None"] + + class ModifyParamsRenderingPdf(TypedDict): + page_size: NotRequired["Literal['a4', 'auto', 'letter']|None"] + + class ModifyParamsPaymentSettings(TypedDict): + default_mandate: NotRequired["Literal['']|str|None"] + payment_method_options: NotRequired[ + "Invoice.ModifyParamsPaymentSettingsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired[ + "Literal['']|List[Literal['ach_credit_transfer', 'ach_debit', 'acss_debit', 'au_becs_debit', 'bacs_debit', 'bancontact', 'boleto', 'card', 'cashapp', 'customer_balance', 'fpx', 'giropay', 'grabpay', 'ideal', 'konbini', 'link', 'paynow', 'paypal', 'promptpay', 'sepa_credit_transfer', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay']]|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Literal['']|Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebit|None" + ] + bancontact: NotRequired[ + "Literal['']|Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsBancontact|None" + ] + card: NotRequired[ + "Literal['']|Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsCard|None" + ] + customer_balance: NotRequired[ + "Literal['']|Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalance|None" + ] + konbini: NotRequired[ + "Literal['']|Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsKonbini|None" + ] + us_bank_account: NotRequired[ + "Literal['']|Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccount|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccount( + TypedDict, + ): + financial_connections: NotRequired[ + "Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsKonbini( + TypedDict + ): + pass + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalance( + TypedDict, + ): + bank_transfer: NotRequired[ + "Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["str|None"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + type: NotRequired["str|None"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCard(TypedDict): + installments: NotRequired[ + "Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsCardInstallments|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCardInstallments( + TypedDict, + ): + enabled: NotRequired["bool|None"] + plan: NotRequired[ + "Literal['']|Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsCardInstallmentsPlan|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCardInstallmentsPlan( + TypedDict, + ): + count: int + interval: Literal["month"] + type: Literal["fixed_count"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsBancontact( + TypedDict, + ): + preferred_language: NotRequired[ + "Literal['de', 'en', 'fr', 'nl']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebit( + TypedDict, + ): + mandate_options: NotRequired[ + "Invoice.ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class ModifyParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class ModifyParamsCustomField(TypedDict): + name: str + value: str + + class ModifyParamsAutomaticTax(TypedDict): + enabled: bool + + class PayParams(RequestOptions): + expand: NotRequired["List[str]|None"] + forgive: NotRequired["bool|None"] + mandate: NotRequired["Literal['']|str|None"] + off_session: NotRequired["bool|None"] + paid_out_of_band: NotRequired["bool|None"] + payment_method: NotRequired["str|None"] + source: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SendInvoiceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class UpcomingParams(RequestOptions): + automatic_tax: NotRequired[ + "Invoice.UpcomingParamsAutomaticTax|None" + ] + coupon: NotRequired["str|None"] + currency: NotRequired["str|None"] + customer: NotRequired["str|None"] + customer_details: NotRequired[ + "Invoice.UpcomingParamsCustomerDetails|None" + ] + discounts: NotRequired[ + "Literal['']|List[Invoice.UpcomingParamsDiscount]|None" + ] + expand: NotRequired["List[str]|None"] + invoice_items: NotRequired[ + "List[Invoice.UpcomingParamsInvoiceItem]|None" + ] + schedule: NotRequired["str|None"] + subscription: NotRequired["str|None"] + subscription_billing_cycle_anchor: NotRequired[ + "Literal['now', 'unchanged']|int|None" + ] + subscription_cancel_at: NotRequired["Literal['']|int|None"] + subscription_cancel_at_period_end: NotRequired["bool|None"] + subscription_cancel_now: NotRequired["bool|None"] + subscription_default_tax_rates: NotRequired[ + "Literal['']|List[str]|None" + ] + subscription_items: NotRequired[ + "List[Invoice.UpcomingParamsSubscriptionItem]|None" + ] + subscription_proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + subscription_proration_date: NotRequired["int|None"] + subscription_resume_at: NotRequired["Literal['now']|None"] + subscription_start_date: NotRequired["int|None"] + subscription_trial_end: NotRequired["Literal['now']|int|None"] + subscription_trial_from_plan: NotRequired["bool|None"] + + class UpcomingParamsSubscriptionItem(TypedDict): + billing_thresholds: NotRequired[ + "Literal['']|Invoice.UpcomingParamsSubscriptionItemBillingThresholds|None" + ] + clear_usage: NotRequired["bool|None"] + deleted: NotRequired["bool|None"] + id: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "Invoice.UpcomingParamsSubscriptionItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class UpcomingParamsSubscriptionItemPriceData(TypedDict): + currency: str + product: str + recurring: "Invoice.UpcomingParamsSubscriptionItemPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class UpcomingParamsSubscriptionItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class UpcomingParamsSubscriptionItemBillingThresholds(TypedDict): + usage_gte: int + + class UpcomingParamsInvoiceItem(TypedDict): + amount: NotRequired["int|None"] + currency: NotRequired["str|None"] + description: NotRequired["str|None"] + discountable: NotRequired["bool|None"] + discounts: NotRequired[ + "Literal['']|List[Invoice.UpcomingParamsInvoiceItemDiscount]|None" + ] + invoiceitem: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + period: NotRequired["Invoice.UpcomingParamsInvoiceItemPeriod|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "Invoice.UpcomingParamsInvoiceItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["Literal['']|str|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class UpcomingParamsInvoiceItemPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class UpcomingParamsInvoiceItemPeriod(TypedDict): + end: int + start: int + + class UpcomingParamsInvoiceItemDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class UpcomingParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class UpcomingParamsCustomerDetails(TypedDict): + address: NotRequired[ + "Literal['']|Invoice.UpcomingParamsCustomerDetailsAddress|None" + ] + shipping: NotRequired[ + "Literal['']|Invoice.UpcomingParamsCustomerDetailsShipping|None" + ] + tax: NotRequired["Invoice.UpcomingParamsCustomerDetailsTax|None"] + tax_exempt: NotRequired[ + "Literal['']|Literal['exempt', 'none', 'reverse']|None" + ] + tax_ids: NotRequired[ + "List[Invoice.UpcomingParamsCustomerDetailsTaxId]|None" + ] + + class UpcomingParamsCustomerDetailsTaxId(TypedDict): + type: Literal[ + "ad_nrt", + "ae_trn", + "ar_cuit", + "au_abn", + "au_arn", + "bg_uic", + "bo_tin", + "br_cnpj", + "br_cpf", + "ca_bn", + "ca_gst_hst", + "ca_pst_bc", + "ca_pst_mb", + "ca_pst_sk", + "ca_qst", + "ch_vat", + "cl_tin", + "cn_tin", + "co_nit", + "cr_tin", + "do_rcn", + "ec_ruc", + "eg_tin", + "es_cif", + "eu_oss_vat", + "eu_vat", + "gb_vat", + "ge_vat", + "hk_br", + "hu_tin", + "id_npwp", + "il_vat", + "in_gst", + "is_vat", + "jp_cn", + "jp_rn", + "jp_trn", + "ke_pin", + "kr_brn", + "li_uid", + "mx_rfc", + "my_frp", + "my_itn", + "my_sst", + "no_vat", + "nz_gst", + "pe_ruc", + "ph_tin", + "ro_tin", + "rs_pib", + "ru_inn", + "ru_kpp", + "sa_vat", + "sg_gst", + "sg_uen", + "si_tin", + "sv_nit", + "th_vat", + "tr_tin", + "tw_vat", + "ua_vat", + "us_ein", + "uy_ruc", + "ve_rif", + "vn_tin", + "za_vat", + ] + value: str + + class UpcomingParamsCustomerDetailsTax(TypedDict): + ip_address: NotRequired["Literal['']|str|None"] + + class UpcomingParamsCustomerDetailsShipping(TypedDict): + address: "Invoice.UpcomingParamsCustomerDetailsShippingAddress" + name: str + phone: NotRequired["str|None"] + + class UpcomingParamsCustomerDetailsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class UpcomingParamsCustomerDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class UpcomingParamsAutomaticTax(TypedDict): + enabled: bool + + class UpcomingLinesParams(RequestOptions): + automatic_tax: NotRequired[ + "Invoice.UpcomingLinesParamsAutomaticTax|None" + ] + coupon: NotRequired["str|None"] + currency: NotRequired["str|None"] + customer: NotRequired["str|None"] + customer_details: NotRequired[ + "Invoice.UpcomingLinesParamsCustomerDetails|None" + ] + discounts: NotRequired[ + "Literal['']|List[Invoice.UpcomingLinesParamsDiscount]|None" + ] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + invoice_items: NotRequired[ + "List[Invoice.UpcomingLinesParamsInvoiceItem]|None" + ] + limit: NotRequired["int|None"] + schedule: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + subscription: NotRequired["str|None"] + subscription_billing_cycle_anchor: NotRequired[ + "Literal['now', 'unchanged']|int|None" + ] + subscription_cancel_at: NotRequired["Literal['']|int|None"] + subscription_cancel_at_period_end: NotRequired["bool|None"] + subscription_cancel_now: NotRequired["bool|None"] + subscription_default_tax_rates: NotRequired[ + "Literal['']|List[str]|None" + ] + subscription_items: NotRequired[ + "List[Invoice.UpcomingLinesParamsSubscriptionItem]|None" + ] + subscription_proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + subscription_proration_date: NotRequired["int|None"] + subscription_resume_at: NotRequired["Literal['now']|None"] + subscription_start_date: NotRequired["int|None"] + subscription_trial_end: NotRequired["Literal['now']|int|None"] + subscription_trial_from_plan: NotRequired["bool|None"] + + class UpcomingLinesParamsSubscriptionItem(TypedDict): + billing_thresholds: NotRequired[ + "Literal['']|Invoice.UpcomingLinesParamsSubscriptionItemBillingThresholds|None" + ] + clear_usage: NotRequired["bool|None"] + deleted: NotRequired["bool|None"] + id: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "Invoice.UpcomingLinesParamsSubscriptionItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class UpcomingLinesParamsSubscriptionItemPriceData(TypedDict): + currency: str + product: str + recurring: "Invoice.UpcomingLinesParamsSubscriptionItemPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class UpcomingLinesParamsSubscriptionItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class UpcomingLinesParamsSubscriptionItemBillingThresholds(TypedDict): + usage_gte: int + + class UpcomingLinesParamsInvoiceItem(TypedDict): + amount: NotRequired["int|None"] + currency: NotRequired["str|None"] + description: NotRequired["str|None"] + discountable: NotRequired["bool|None"] + discounts: NotRequired[ + "Literal['']|List[Invoice.UpcomingLinesParamsInvoiceItemDiscount]|None" + ] + invoiceitem: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + period: NotRequired[ + "Invoice.UpcomingLinesParamsInvoiceItemPeriod|None" + ] + price: NotRequired["str|None"] + price_data: NotRequired[ + "Invoice.UpcomingLinesParamsInvoiceItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["Literal['']|str|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class UpcomingLinesParamsInvoiceItemPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class UpcomingLinesParamsInvoiceItemPeriod(TypedDict): + end: int + start: int + + class UpcomingLinesParamsInvoiceItemDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class UpcomingLinesParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class UpcomingLinesParamsCustomerDetails(TypedDict): + address: NotRequired[ + "Literal['']|Invoice.UpcomingLinesParamsCustomerDetailsAddress|None" + ] + shipping: NotRequired[ + "Literal['']|Invoice.UpcomingLinesParamsCustomerDetailsShipping|None" + ] + tax: NotRequired[ + "Invoice.UpcomingLinesParamsCustomerDetailsTax|None" + ] + tax_exempt: NotRequired[ + "Literal['']|Literal['exempt', 'none', 'reverse']|None" + ] + tax_ids: NotRequired[ + "List[Invoice.UpcomingLinesParamsCustomerDetailsTaxId]|None" + ] + + class UpcomingLinesParamsCustomerDetailsTaxId(TypedDict): + type: Literal[ + "ad_nrt", + "ae_trn", + "ar_cuit", + "au_abn", + "au_arn", + "bg_uic", + "bo_tin", + "br_cnpj", + "br_cpf", + "ca_bn", + "ca_gst_hst", + "ca_pst_bc", + "ca_pst_mb", + "ca_pst_sk", + "ca_qst", + "ch_vat", + "cl_tin", + "cn_tin", + "co_nit", + "cr_tin", + "do_rcn", + "ec_ruc", + "eg_tin", + "es_cif", + "eu_oss_vat", + "eu_vat", + "gb_vat", + "ge_vat", + "hk_br", + "hu_tin", + "id_npwp", + "il_vat", + "in_gst", + "is_vat", + "jp_cn", + "jp_rn", + "jp_trn", + "ke_pin", + "kr_brn", + "li_uid", + "mx_rfc", + "my_frp", + "my_itn", + "my_sst", + "no_vat", + "nz_gst", + "pe_ruc", + "ph_tin", + "ro_tin", + "rs_pib", + "ru_inn", + "ru_kpp", + "sa_vat", + "sg_gst", + "sg_uen", + "si_tin", + "sv_nit", + "th_vat", + "tr_tin", + "tw_vat", + "ua_vat", + "us_ein", + "uy_ruc", + "ve_rif", + "vn_tin", + "za_vat", + ] + value: str + + class UpcomingLinesParamsCustomerDetailsTax(TypedDict): + ip_address: NotRequired["Literal['']|str|None"] + + class UpcomingLinesParamsCustomerDetailsShipping(TypedDict): + address: "Invoice.UpcomingLinesParamsCustomerDetailsShippingAddress" + name: str + phone: NotRequired["str|None"] + + class UpcomingLinesParamsCustomerDetailsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class UpcomingLinesParamsCustomerDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class UpcomingLinesParamsAutomaticTax(TypedDict): + enabled: bool + + class VoidInvoiceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SearchParams(RequestOptions): + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + page: NotRequired["str|None"] + query: str + account_country: Optional[str] account_name: Optional[str] account_tax_ids: Optional[List[ExpandableField["TaxId"]]] @@ -180,7 +1251,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.CreateParams"] ) -> "Invoice": return cast( "Invoice", @@ -196,7 +1267,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Invoice": + def _cls_delete( + cls, sid: str, **params: Unpack["Invoice.DeleteParams"] + ) -> "Invoice": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Invoice", @@ -204,7 +1277,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Invoice": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Invoice": + def delete(self, **params: Unpack["Invoice.DeleteParams"]) -> "Invoice": return self._request_and_refresh( "delete", self.instance_url(), @@ -218,7 +1291,7 @@ def _cls_finalize_invoice( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.FinalizeInvoiceParams"] ): return cls._static_request( "post", @@ -233,7 +1306,9 @@ def _cls_finalize_invoice( @util.class_method_variant("_cls_finalize_invoice") def finalize_invoice( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Invoice.FinalizeInvoiceParams"] ): return self._request( "post", @@ -250,7 +1325,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.ListParams"] ) -> ListObject["Invoice"]: result = cls._static_request( "get", @@ -276,7 +1351,7 @@ def _cls_mark_uncollectible( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.MarkUncollectibleParams"] ): return cls._static_request( "post", @@ -291,7 +1366,9 @@ def _cls_mark_uncollectible( @util.class_method_variant("_cls_mark_uncollectible") def mark_uncollectible( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Invoice.MarkUncollectibleParams"] ): return self._request( "post", @@ -303,7 +1380,7 @@ def mark_uncollectible( ) @classmethod - def modify(cls, id, **params: Any) -> "Invoice": + def modify(cls, id, **params: Unpack["Invoice.ModifyParams"]) -> "Invoice": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Invoice", @@ -317,7 +1394,7 @@ def _cls_pay( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.PayParams"] ): return cls._static_request( "post", @@ -331,7 +1408,11 @@ def _cls_pay( ) @util.class_method_variant("_cls_pay") - def pay(self, idempotency_key: Optional[str] = None, **params: Any): + def pay( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Invoice.PayParams"] + ): return self._request( "post", "/v1/invoices/{invoice}/pay".format( @@ -343,9 +1424,9 @@ def pay(self, idempotency_key: Optional[str] = None, **params: Any): @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Invoice.RetrieveParams"] ) -> "Invoice": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -356,7 +1437,7 @@ def _cls_send_invoice( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.SendInvoiceParams"] ): return cls._static_request( "post", @@ -371,7 +1452,9 @@ def _cls_send_invoice( @util.class_method_variant("_cls_send_invoice") def send_invoice( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Invoice.SendInvoiceParams"] ): return self._request( "post", @@ -388,7 +1471,7 @@ def upcoming( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.UpcomingParams"] ): return cls._static_request( "get", @@ -405,7 +1488,7 @@ def upcoming_lines( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.UpcomingLinesParams"] ): return cls._static_request( "get", @@ -423,7 +1506,7 @@ def _cls_void_invoice( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Invoice.VoidInvoiceParams"] ): return cls._static_request( "post", @@ -438,7 +1521,9 @@ def _cls_void_invoice( @util.class_method_variant("_cls_void_invoice") def void_invoice( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Invoice.VoidInvoiceParams"] ): return self._request( "post", @@ -450,9 +1535,13 @@ def void_invoice( ) @classmethod - def search(cls, *args, **kwargs) -> SearchResultObject["Invoice"]: + def search( + cls, *args, **kwargs: Unpack["Invoice.SearchParams"] + ) -> SearchResultObject["Invoice"]: return cls._search(search_url="/v1/invoices/search", *args, **kwargs) @classmethod - def search_auto_paging_iter(cls, *args, **kwargs): + def search_auto_paging_iter( + cls, *args, **kwargs: Unpack["Invoice.SearchParams"] + ): return cls.search(*args, **kwargs).auto_paging_iter() diff --git a/stripe/api_resources/invoice_item.py b/stripe/api_resources/invoice_item.py index f31d32cdb..cf3fdaf74 100644 --- a/stripe/api_resources/invoice_item.py +++ b/stripe/api_resources/invoice_item.py @@ -9,13 +9,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.customer import Customer from stripe.api_resources.discount import Discount @@ -48,6 +53,110 @@ class InvoiceItem( """ OBJECT_NAME = "invoiceitem" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + amount: NotRequired["int|None"] + currency: NotRequired["str|None"] + customer: str + description: NotRequired["str|None"] + discountable: NotRequired["bool|None"] + discounts: NotRequired[ + "Literal['']|List[InvoiceItem.CreateParamsDiscount]|None" + ] + expand: NotRequired["List[str]|None"] + invoice: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + period: NotRequired["InvoiceItem.CreateParamsPeriod|None"] + price: NotRequired["str|None"] + price_data: NotRequired["InvoiceItem.CreateParamsPriceData|None"] + quantity: NotRequired["int|None"] + subscription: NotRequired["str|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["Literal['']|str|None"] + tax_rates: NotRequired["List[str]|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsPeriod(TypedDict): + end: int + start: int + + class CreateParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + created: NotRequired["InvoiceItem.ListParamsCreated|int|None"] + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + invoice: NotRequired["str|None"] + limit: NotRequired["int|None"] + pending: NotRequired["bool|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + amount: NotRequired["int|None"] + description: NotRequired["str|None"] + discountable: NotRequired["bool|None"] + discounts: NotRequired[ + "Literal['']|List[InvoiceItem.ModifyParamsDiscount]|None" + ] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + period: NotRequired["InvoiceItem.ModifyParamsPeriod|None"] + price: NotRequired["str|None"] + price_data: NotRequired["InvoiceItem.ModifyParamsPriceData|None"] + quantity: NotRequired["int|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["Literal['']|str|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsPeriod(TypedDict): + end: int + start: int + + class ModifyParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int currency: str customer: ExpandableField["Customer"] @@ -80,7 +189,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InvoiceItem.CreateParams"] ) -> "InvoiceItem": return cast( "InvoiceItem", @@ -96,7 +205,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "InvoiceItem": + def _cls_delete( + cls, sid: str, **params: Unpack["InvoiceItem.DeleteParams"] + ) -> "InvoiceItem": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "InvoiceItem", @@ -104,7 +215,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "InvoiceItem": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "InvoiceItem": + def delete( + self, **params: Unpack["InvoiceItem.DeleteParams"] + ) -> "InvoiceItem": return self._request_and_refresh( "delete", self.instance_url(), @@ -117,7 +230,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InvoiceItem.ListParams"] ) -> ListObject["InvoiceItem"]: result = cls._static_request( "get", @@ -137,7 +250,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "InvoiceItem": + def modify( + cls, id, **params: Unpack["InvoiceItem.ModifyParams"] + ) -> "InvoiceItem": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "InvoiceItem", @@ -146,8 +261,8 @@ def modify(cls, id, **params: Any) -> "InvoiceItem": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["InvoiceItem.RetrieveParams"] ) -> "InvoiceItem": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/invoice_line_item.py b/stripe/api_resources/invoice_line_item.py index 7d083e463..ad4177e69 100644 --- a/stripe/api_resources/invoice_line_item.py +++ b/stripe/api_resources/invoice_line_item.py @@ -3,9 +3,7 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.stripe_object import StripeObject from typing import Dict, List, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing_extensions import Literal, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.discount import Discount diff --git a/stripe/api_resources/issuing/authorization.py b/stripe/api_resources/issuing/authorization.py index 114712ab2..9120cd222 100644 --- a/stripe/api_resources/issuing/authorization.py +++ b/stripe/api_resources/issuing/authorization.py @@ -8,13 +8,19 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal, Type +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction from stripe.api_resources.issuing.card import Card @@ -36,6 +42,170 @@ class Authorization( """ OBJECT_NAME = "issuing.authorization" + if TYPE_CHECKING: + + class ApproveParams(RequestOptions): + amount: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class DeclineParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ListParams(RequestOptions): + card: NotRequired["str|None"] + cardholder: NotRequired["str|None"] + created: NotRequired["Authorization.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['closed', 'pending', 'reversed']|None" + ] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CaptureParams(RequestOptions): + capture_amount: NotRequired["int|None"] + close_authorization: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + purchase_details: NotRequired[ + "Authorization.CaptureParamsPurchaseDetails|None" + ] + + class CaptureParamsPurchaseDetails(TypedDict): + flight: NotRequired[ + "Authorization.CaptureParamsPurchaseDetailsFlight|None" + ] + fuel: NotRequired[ + "Authorization.CaptureParamsPurchaseDetailsFuel|None" + ] + lodging: NotRequired[ + "Authorization.CaptureParamsPurchaseDetailsLodging|None" + ] + receipt: NotRequired[ + "List[Authorization.CaptureParamsPurchaseDetailsReceipt]|None" + ] + reference: NotRequired["str|None"] + + class CaptureParamsPurchaseDetailsReceipt(TypedDict): + description: NotRequired["str|None"] + quantity: NotRequired["float|None"] + total: NotRequired["int|None"] + unit_cost: NotRequired["int|None"] + + class CaptureParamsPurchaseDetailsLodging(TypedDict): + check_in_at: NotRequired["int|None"] + nights: NotRequired["int|None"] + + class CaptureParamsPurchaseDetailsFuel(TypedDict): + type: NotRequired[ + "Literal['diesel', 'other', 'unleaded_plus', 'unleaded_regular', 'unleaded_super']|None" + ] + unit: NotRequired["Literal['liter', 'us_gallon']|None"] + unit_cost_decimal: NotRequired["float|None"] + volume_decimal: NotRequired["float|None"] + + class CaptureParamsPurchaseDetailsFlight(TypedDict): + departure_at: NotRequired["int|None"] + passenger_name: NotRequired["str|None"] + refundable: NotRequired["bool|None"] + segments: NotRequired[ + "List[Authorization.CaptureParamsPurchaseDetailsFlightSegment]|None" + ] + travel_agency: NotRequired["str|None"] + + class CaptureParamsPurchaseDetailsFlightSegment(TypedDict): + arrival_airport_code: NotRequired["str|None"] + carrier: NotRequired["str|None"] + departure_airport_code: NotRequired["str|None"] + flight_number: NotRequired["str|None"] + service_class: NotRequired["str|None"] + stopover_allowed: NotRequired["bool|None"] + + class CreateParams(RequestOptions): + amount: int + amount_details: NotRequired[ + "Authorization.CreateParamsAmountDetails|None" + ] + authorization_method: NotRequired[ + "Literal['chip', 'contactless', 'keyed_in', 'online', 'swipe']|None" + ] + card: str + currency: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + is_amount_controllable: NotRequired["bool|None"] + merchant_data: NotRequired[ + "Authorization.CreateParamsMerchantData|None" + ] + network_data: NotRequired[ + "Authorization.CreateParamsNetworkData|None" + ] + verification_data: NotRequired[ + "Authorization.CreateParamsVerificationData|None" + ] + wallet: NotRequired[ + "Literal['apple_pay', 'google_pay', 'samsung_pay']|None" + ] + + class CreateParamsVerificationData(TypedDict): + address_line1_check: NotRequired[ + "Literal['match', 'mismatch', 'not_provided']|None" + ] + address_postal_code_check: NotRequired[ + "Literal['match', 'mismatch', 'not_provided']|None" + ] + cvc_check: NotRequired[ + "Literal['match', 'mismatch', 'not_provided']|None" + ] + expiry_check: NotRequired[ + "Literal['match', 'mismatch', 'not_provided']|None" + ] + + class CreateParamsNetworkData(TypedDict): + acquiring_institution_id: NotRequired["str|None"] + + class CreateParamsMerchantData(TypedDict): + category: NotRequired[ + "Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']|None" + ] + city: NotRequired["str|None"] + country: NotRequired["str|None"] + name: NotRequired["str|None"] + network_id: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + terminal_id: NotRequired["str|None"] + + class CreateParamsAmountDetails(TypedDict): + atm_fee: NotRequired["int|None"] + cashback_amount: NotRequired["int|None"] + + class ExpireParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class IncrementParams(RequestOptions): + expand: NotRequired["List[str]|None"] + increment_amount: int + is_amount_controllable: NotRequired["bool|None"] + + class ReverseParams(RequestOptions): + expand: NotRequired["List[str]|None"] + reverse_amount: NotRequired["int|None"] + amount: int amount_details: Optional[StripeObject] approved: bool @@ -71,7 +241,7 @@ def _cls_approve( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.ApproveParams"] ): return cls._static_request( "post", @@ -85,7 +255,11 @@ def _cls_approve( ) @util.class_method_variant("_cls_approve") - def approve(self, idempotency_key: Optional[str] = None, **params: Any): + def approve( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Authorization.ApproveParams"] + ): return self._request( "post", "/v1/issuing/authorizations/{authorization}/approve".format( @@ -102,7 +276,7 @@ def _cls_decline( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.DeclineParams"] ): return cls._static_request( "post", @@ -116,7 +290,11 @@ def _cls_decline( ) @util.class_method_variant("_cls_decline") - def decline(self, idempotency_key: Optional[str] = None, **params: Any): + def decline( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Authorization.DeclineParams"] + ): return self._request( "post", "/v1/issuing/authorizations/{authorization}/decline".format( @@ -132,7 +310,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.ListParams"] ) -> ListObject["Authorization"]: result = cls._static_request( "get", @@ -152,7 +330,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Authorization": + def modify( + cls, id, **params: Unpack["Authorization.ModifyParams"] + ) -> "Authorization": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Authorization", @@ -161,9 +341,9 @@ def modify(cls, id, **params: Any) -> "Authorization": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Authorization.RetrieveParams"] ) -> "Authorization": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -177,7 +357,7 @@ def _cls_capture( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.CaptureParams"] ): return cls._static_request( "post", @@ -192,7 +372,9 @@ def _cls_capture( @util.class_method_variant("_cls_capture") def capture( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Authorization.CaptureParams"] ): return self.resource._request( "post", @@ -209,7 +391,7 @@ def create( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.CreateParams"] ): return cls._static_request( "post", @@ -227,7 +409,7 @@ def _cls_expire( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.ExpireParams"] ): return cls._static_request( "post", @@ -241,7 +423,11 @@ def _cls_expire( ) @util.class_method_variant("_cls_expire") - def expire(self, idempotency_key: Optional[str] = None, **params: Any): + def expire( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Authorization.ExpireParams"] + ): return self.resource._request( "post", "/v1/test_helpers/issuing/authorizations/{authorization}/expire".format( @@ -258,7 +444,7 @@ def _cls_increment( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.IncrementParams"] ): return cls._static_request( "post", @@ -273,7 +459,9 @@ def _cls_increment( @util.class_method_variant("_cls_increment") def increment( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Authorization.IncrementParams"] ): return self.resource._request( "post", @@ -291,7 +479,7 @@ def _cls_reverse( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Authorization.ReverseParams"] ): return cls._static_request( "post", @@ -306,7 +494,9 @@ def _cls_reverse( @util.class_method_variant("_cls_reverse") def reverse( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Authorization.ReverseParams"] ): return self.resource._request( "post", diff --git a/stripe/api_resources/issuing/card.py b/stripe/api_resources/issuing/card.py index d37f2834b..fef660948 100644 --- a/stripe/api_resources/issuing/card.py +++ b/stripe/api_resources/issuing/card.py @@ -9,13 +9,19 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal, Type +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.issuing.cardholder import Cardholder @@ -30,6 +36,148 @@ class Card( """ OBJECT_NAME = "issuing.card" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + cardholder: NotRequired["str|None"] + currency: str + expand: NotRequired["List[str]|None"] + financial_account: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + replacement_for: NotRequired["str|None"] + replacement_reason: NotRequired[ + "Literal['damaged', 'expired', 'lost', 'stolen']|None" + ] + shipping: NotRequired["Card.CreateParamsShipping|None"] + spending_controls: NotRequired[ + "Card.CreateParamsSpendingControls|None" + ] + status: NotRequired["Literal['active', 'inactive']|None"] + type: Literal["physical", "virtual"] + + class CreateParamsSpendingControls(TypedDict): + allowed_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + blocked_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + spending_limits: NotRequired[ + "List[Card.CreateParamsSpendingControlsSpendingLimit]|None" + ] + + class CreateParamsSpendingControlsSpendingLimit(TypedDict): + amount: int + categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + interval: Literal[ + "all_time", + "daily", + "monthly", + "per_authorization", + "weekly", + "yearly", + ] + + class CreateParamsShipping(TypedDict): + address: "Card.CreateParamsShippingAddress" + customs: NotRequired["Card.CreateParamsShippingCustoms|None"] + name: str + phone_number: NotRequired["str|None"] + require_signature: NotRequired["bool|None"] + service: NotRequired[ + "Literal['express', 'priority', 'standard']|None" + ] + type: NotRequired["Literal['bulk', 'individual']|None"] + + class CreateParamsShippingCustoms(TypedDict): + eori_number: NotRequired["str|None"] + + class CreateParamsShippingAddress(TypedDict): + city: str + country: str + line1: str + line2: NotRequired["str|None"] + postal_code: str + state: NotRequired["str|None"] + + class ListParams(RequestOptions): + cardholder: NotRequired["str|None"] + created: NotRequired["Card.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + exp_month: NotRequired["int|None"] + exp_year: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + last4: NotRequired["str|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['active', 'canceled', 'inactive']|None" + ] + type: NotRequired["Literal['physical', 'virtual']|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + cancellation_reason: NotRequired["Literal['lost', 'stolen']|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + pin: NotRequired["Card.ModifyParamsPin|None"] + spending_controls: NotRequired[ + "Card.ModifyParamsSpendingControls|None" + ] + status: NotRequired[ + "Literal['active', 'canceled', 'inactive']|None" + ] + + class ModifyParamsSpendingControls(TypedDict): + allowed_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + blocked_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + spending_limits: NotRequired[ + "List[Card.ModifyParamsSpendingControlsSpendingLimit]|None" + ] + + class ModifyParamsSpendingControlsSpendingLimit(TypedDict): + amount: int + categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + interval: Literal[ + "all_time", + "daily", + "monthly", + "per_authorization", + "weekly", + "yearly", + ] + + class ModifyParamsPin(TypedDict): + encrypted_number: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class DeliverCardParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class FailCardParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ReturnCardParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ShipCardParams(RequestOptions): + expand: NotRequired["List[str]|None"] + brand: str cancellation_reason: Optional[Literal["design_rejected", "lost", "stolen"]] cardholder: "Cardholder" @@ -63,7 +211,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Card.CreateParams"] ) -> "Card": return cast( "Card", @@ -84,7 +232,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Card.ListParams"] ) -> ListObject["Card"]: result = cls._static_request( "get", @@ -104,7 +252,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Card": + def modify(cls, id, **params: Unpack["Card.ModifyParams"]) -> "Card": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Card", @@ -113,9 +261,9 @@ def modify(cls, id, **params: Any) -> "Card": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Card.RetrieveParams"] ) -> "Card": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -129,7 +277,7 @@ def _cls_deliver_card( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Card.DeliverCardParams"] ): return cls._static_request( "post", @@ -144,7 +292,9 @@ def _cls_deliver_card( @util.class_method_variant("_cls_deliver_card") def deliver_card( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Card.DeliverCardParams"] ): return self.resource._request( "post", @@ -162,7 +312,7 @@ def _cls_fail_card( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Card.FailCardParams"] ): return cls._static_request( "post", @@ -177,7 +327,9 @@ def _cls_fail_card( @util.class_method_variant("_cls_fail_card") def fail_card( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Card.FailCardParams"] ): return self.resource._request( "post", @@ -195,7 +347,7 @@ def _cls_return_card( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Card.ReturnCardParams"] ): return cls._static_request( "post", @@ -210,7 +362,9 @@ def _cls_return_card( @util.class_method_variant("_cls_return_card") def return_card( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Card.ReturnCardParams"] ): return self.resource._request( "post", @@ -228,7 +382,7 @@ def _cls_ship_card( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Card.ShipCardParams"] ): return cls._static_request( "post", @@ -243,7 +397,9 @@ def _cls_ship_card( @util.class_method_variant("_cls_ship_card") def ship_card( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Card.ShipCardParams"] ): return self.resource._request( "post", diff --git a/stripe/api_resources/issuing/cardholder.py b/stripe/api_resources/issuing/cardholder.py index 2f768c7d4..506b251e6 100644 --- a/stripe/api_resources/issuing/cardholder.py +++ b/stripe/api_resources/issuing/cardholder.py @@ -6,9 +6,16 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -24,6 +31,214 @@ class Cardholder( """ OBJECT_NAME = "issuing.cardholder" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + billing: "Cardholder.CreateParamsBilling" + company: NotRequired["Cardholder.CreateParamsCompany|None"] + email: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + individual: NotRequired["Cardholder.CreateParamsIndividual|None"] + metadata: NotRequired["Dict[str, str]|None"] + name: str + phone_number: NotRequired["str|None"] + preferred_locales: NotRequired[ + "List[Literal['de', 'en', 'es', 'fr', 'it']]|None" + ] + spending_controls: NotRequired[ + "Cardholder.CreateParamsSpendingControls|None" + ] + status: NotRequired["Literal['active', 'inactive']|None"] + type: NotRequired["Literal['company', 'individual']|None"] + + class CreateParamsSpendingControls(TypedDict): + allowed_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + blocked_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + spending_limits: NotRequired[ + "List[Cardholder.CreateParamsSpendingControlsSpendingLimit]|None" + ] + spending_limits_currency: NotRequired["str|None"] + + class CreateParamsSpendingControlsSpendingLimit(TypedDict): + amount: int + categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + interval: Literal[ + "all_time", + "daily", + "monthly", + "per_authorization", + "weekly", + "yearly", + ] + + class CreateParamsIndividual(TypedDict): + card_issuing: NotRequired[ + "Cardholder.CreateParamsIndividualCardIssuing|None" + ] + dob: NotRequired["Cardholder.CreateParamsIndividualDob|None"] + first_name: NotRequired["str|None"] + last_name: NotRequired["str|None"] + verification: NotRequired[ + "Cardholder.CreateParamsIndividualVerification|None" + ] + + class CreateParamsIndividualVerification(TypedDict): + document: NotRequired[ + "Cardholder.CreateParamsIndividualVerificationDocument|None" + ] + + class CreateParamsIndividualVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsIndividualDob(TypedDict): + day: int + month: int + year: int + + class CreateParamsIndividualCardIssuing(TypedDict): + user_terms_acceptance: NotRequired[ + "Cardholder.CreateParamsIndividualCardIssuingUserTermsAcceptance|None" + ] + + class CreateParamsIndividualCardIssuingUserTermsAcceptance(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["Literal['']|str|None"] + + class CreateParamsCompany(TypedDict): + tax_id: NotRequired["str|None"] + + class CreateParamsBilling(TypedDict): + address: "Cardholder.CreateParamsBillingAddress" + + class CreateParamsBillingAddress(TypedDict): + city: str + country: str + line1: str + line2: NotRequired["str|None"] + postal_code: str + state: NotRequired["str|None"] + + class ListParams(RequestOptions): + created: NotRequired["Cardholder.ListParamsCreated|int|None"] + email: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + phone_number: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['active', 'blocked', 'inactive']|None" + ] + type: NotRequired["Literal['company', 'individual']|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + billing: NotRequired["Cardholder.ModifyParamsBilling|None"] + company: NotRequired["Cardholder.ModifyParamsCompany|None"] + email: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + individual: NotRequired["Cardholder.ModifyParamsIndividual|None"] + metadata: NotRequired["Dict[str, str]|None"] + phone_number: NotRequired["str|None"] + preferred_locales: NotRequired[ + "List[Literal['de', 'en', 'es', 'fr', 'it']]|None" + ] + spending_controls: NotRequired[ + "Cardholder.ModifyParamsSpendingControls|None" + ] + status: NotRequired["Literal['active', 'inactive']|None"] + + class ModifyParamsSpendingControls(TypedDict): + allowed_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + blocked_categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + spending_limits: NotRequired[ + "List[Cardholder.ModifyParamsSpendingControlsSpendingLimit]|None" + ] + spending_limits_currency: NotRequired["str|None"] + + class ModifyParamsSpendingControlsSpendingLimit(TypedDict): + amount: int + categories: NotRequired[ + "List[Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']]|None" + ] + interval: Literal[ + "all_time", + "daily", + "monthly", + "per_authorization", + "weekly", + "yearly", + ] + + class ModifyParamsIndividual(TypedDict): + card_issuing: NotRequired[ + "Cardholder.ModifyParamsIndividualCardIssuing|None" + ] + dob: NotRequired["Cardholder.ModifyParamsIndividualDob|None"] + first_name: NotRequired["str|None"] + last_name: NotRequired["str|None"] + verification: NotRequired[ + "Cardholder.ModifyParamsIndividualVerification|None" + ] + + class ModifyParamsIndividualVerification(TypedDict): + document: NotRequired[ + "Cardholder.ModifyParamsIndividualVerificationDocument|None" + ] + + class ModifyParamsIndividualVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class ModifyParamsIndividualDob(TypedDict): + day: int + month: int + year: int + + class ModifyParamsIndividualCardIssuing(TypedDict): + user_terms_acceptance: NotRequired[ + "Cardholder.ModifyParamsIndividualCardIssuingUserTermsAcceptance|None" + ] + + class ModifyParamsIndividualCardIssuingUserTermsAcceptance(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["Literal['']|str|None"] + + class ModifyParamsCompany(TypedDict): + tax_id: NotRequired["str|None"] + + class ModifyParamsBilling(TypedDict): + address: "Cardholder.ModifyParamsBillingAddress" + + class ModifyParamsBillingAddress(TypedDict): + city: str + country: str + line1: str + line2: NotRequired["str|None"] + postal_code: str + state: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + billing: StripeObject company: Optional[StripeObject] created: int @@ -48,7 +263,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Cardholder.CreateParams"] ) -> "Cardholder": return cast( "Cardholder", @@ -69,7 +284,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Cardholder.ListParams"] ) -> ListObject["Cardholder"]: result = cls._static_request( "get", @@ -89,7 +304,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Cardholder": + def modify( + cls, id, **params: Unpack["Cardholder.ModifyParams"] + ) -> "Cardholder": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Cardholder", @@ -98,8 +315,8 @@ def modify(cls, id, **params: Any) -> "Cardholder": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Cardholder.RetrieveParams"] ) -> "Cardholder": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/issuing/dispute.py b/stripe/api_resources/issuing/dispute.py index ddc82b70f..556b575d9 100644 --- a/stripe/api_resources/issuing/dispute.py +++ b/stripe/api_resources/issuing/dispute.py @@ -8,13 +8,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction from stripe.api_resources.issuing.transaction import Transaction @@ -32,6 +37,225 @@ class Dispute( """ OBJECT_NAME = "issuing.dispute" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + amount: NotRequired["int|None"] + evidence: NotRequired["Dispute.CreateParamsEvidence|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + transaction: NotRequired["str|None"] + treasury: NotRequired["Dispute.CreateParamsTreasury|None"] + + class CreateParamsTreasury(TypedDict): + received_debit: str + + class CreateParamsEvidence(TypedDict): + canceled: NotRequired[ + "Literal['']|Dispute.CreateParamsEvidenceCanceled|None" + ] + duplicate: NotRequired[ + "Literal['']|Dispute.CreateParamsEvidenceDuplicate|None" + ] + fraudulent: NotRequired[ + "Literal['']|Dispute.CreateParamsEvidenceFraudulent|None" + ] + merchandise_not_as_described: NotRequired[ + "Literal['']|Dispute.CreateParamsEvidenceMerchandiseNotAsDescribed|None" + ] + not_received: NotRequired[ + "Literal['']|Dispute.CreateParamsEvidenceNotReceived|None" + ] + other: NotRequired[ + "Literal['']|Dispute.CreateParamsEvidenceOther|None" + ] + reason: NotRequired[ + "Literal['canceled', 'duplicate', 'fraudulent', 'merchandise_not_as_described', 'not_received', 'other', 'service_not_as_described']|None" + ] + service_not_as_described: NotRequired[ + "Literal['']|Dispute.CreateParamsEvidenceServiceNotAsDescribed|None" + ] + + class CreateParamsEvidenceServiceNotAsDescribed(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + canceled_at: NotRequired["Literal['']|int|None"] + cancellation_reason: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + received_at: NotRequired["Literal['']|int|None"] + + class CreateParamsEvidenceOther(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + product_description: NotRequired["Literal['']|str|None"] + product_type: NotRequired[ + "Literal['']|Literal['merchandise', 'service']|None" + ] + + class CreateParamsEvidenceNotReceived(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + expected_at: NotRequired["Literal['']|int|None"] + explanation: NotRequired["Literal['']|str|None"] + product_description: NotRequired["Literal['']|str|None"] + product_type: NotRequired[ + "Literal['']|Literal['merchandise', 'service']|None" + ] + + class CreateParamsEvidenceMerchandiseNotAsDescribed(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + received_at: NotRequired["Literal['']|int|None"] + return_description: NotRequired["Literal['']|str|None"] + return_status: NotRequired[ + "Literal['']|Literal['merchant_rejected', 'successful']|None" + ] + returned_at: NotRequired["Literal['']|int|None"] + + class CreateParamsEvidenceFraudulent(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + + class CreateParamsEvidenceDuplicate(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + card_statement: NotRequired["Literal['']|str|None"] + cash_receipt: NotRequired["Literal['']|str|None"] + check_image: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + original_transaction: NotRequired["str|None"] + + class CreateParamsEvidenceCanceled(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + canceled_at: NotRequired["Literal['']|int|None"] + cancellation_policy_provided: NotRequired["Literal['']|bool|None"] + cancellation_reason: NotRequired["Literal['']|str|None"] + expected_at: NotRequired["Literal['']|int|None"] + explanation: NotRequired["Literal['']|str|None"] + product_description: NotRequired["Literal['']|str|None"] + product_type: NotRequired[ + "Literal['']|Literal['merchandise', 'service']|None" + ] + return_status: NotRequired[ + "Literal['']|Literal['merchant_rejected', 'successful']|None" + ] + returned_at: NotRequired["Literal['']|int|None"] + + class ListParams(RequestOptions): + created: NotRequired["Dispute.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['expired', 'lost', 'submitted', 'unsubmitted', 'won']|None" + ] + transaction: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + amount: NotRequired["int|None"] + evidence: NotRequired["Dispute.ModifyParamsEvidence|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ModifyParamsEvidence(TypedDict): + canceled: NotRequired[ + "Literal['']|Dispute.ModifyParamsEvidenceCanceled|None" + ] + duplicate: NotRequired[ + "Literal['']|Dispute.ModifyParamsEvidenceDuplicate|None" + ] + fraudulent: NotRequired[ + "Literal['']|Dispute.ModifyParamsEvidenceFraudulent|None" + ] + merchandise_not_as_described: NotRequired[ + "Literal['']|Dispute.ModifyParamsEvidenceMerchandiseNotAsDescribed|None" + ] + not_received: NotRequired[ + "Literal['']|Dispute.ModifyParamsEvidenceNotReceived|None" + ] + other: NotRequired[ + "Literal['']|Dispute.ModifyParamsEvidenceOther|None" + ] + reason: NotRequired[ + "Literal['canceled', 'duplicate', 'fraudulent', 'merchandise_not_as_described', 'not_received', 'other', 'service_not_as_described']|None" + ] + service_not_as_described: NotRequired[ + "Literal['']|Dispute.ModifyParamsEvidenceServiceNotAsDescribed|None" + ] + + class ModifyParamsEvidenceServiceNotAsDescribed(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + canceled_at: NotRequired["Literal['']|int|None"] + cancellation_reason: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + received_at: NotRequired["Literal['']|int|None"] + + class ModifyParamsEvidenceOther(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + product_description: NotRequired["Literal['']|str|None"] + product_type: NotRequired[ + "Literal['']|Literal['merchandise', 'service']|None" + ] + + class ModifyParamsEvidenceNotReceived(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + expected_at: NotRequired["Literal['']|int|None"] + explanation: NotRequired["Literal['']|str|None"] + product_description: NotRequired["Literal['']|str|None"] + product_type: NotRequired[ + "Literal['']|Literal['merchandise', 'service']|None" + ] + + class ModifyParamsEvidenceMerchandiseNotAsDescribed(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + received_at: NotRequired["Literal['']|int|None"] + return_description: NotRequired["Literal['']|str|None"] + return_status: NotRequired[ + "Literal['']|Literal['merchant_rejected', 'successful']|None" + ] + returned_at: NotRequired["Literal['']|int|None"] + + class ModifyParamsEvidenceFraudulent(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + + class ModifyParamsEvidenceDuplicate(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + card_statement: NotRequired["Literal['']|str|None"] + cash_receipt: NotRequired["Literal['']|str|None"] + check_image: NotRequired["Literal['']|str|None"] + explanation: NotRequired["Literal['']|str|None"] + original_transaction: NotRequired["str|None"] + + class ModifyParamsEvidenceCanceled(TypedDict): + additional_documentation: NotRequired["Literal['']|str|None"] + canceled_at: NotRequired["Literal['']|int|None"] + cancellation_policy_provided: NotRequired["Literal['']|bool|None"] + cancellation_reason: NotRequired["Literal['']|str|None"] + expected_at: NotRequired["Literal['']|int|None"] + explanation: NotRequired["Literal['']|str|None"] + product_description: NotRequired["Literal['']|str|None"] + product_type: NotRequired[ + "Literal['']|Literal['merchandise', 'service']|None" + ] + return_status: NotRequired[ + "Literal['']|Literal['merchant_rejected', 'successful']|None" + ] + returned_at: NotRequired["Literal['']|int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SubmitParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + amount: int balance_transactions: Optional[List["BalanceTransaction"]] created: int @@ -52,7 +276,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Dispute.CreateParams"] ) -> "Dispute": return cast( "Dispute", @@ -73,7 +297,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Dispute.ListParams"] ) -> ListObject["Dispute"]: result = cls._static_request( "get", @@ -93,7 +317,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Dispute": + def modify(cls, id, **params: Unpack["Dispute.ModifyParams"]) -> "Dispute": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Dispute", @@ -102,9 +326,9 @@ def modify(cls, id, **params: Any) -> "Dispute": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Dispute.RetrieveParams"] ) -> "Dispute": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -115,7 +339,7 @@ def _cls_submit( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Dispute.SubmitParams"] ): return cls._static_request( "post", @@ -129,7 +353,11 @@ def _cls_submit( ) @util.class_method_variant("_cls_submit") - def submit(self, idempotency_key: Optional[str] = None, **params: Any): + def submit( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Dispute.SubmitParams"] + ): return self._request( "post", "/v1/issuing/disputes/{dispute}/submit".format( diff --git a/stripe/api_resources/issuing/token.py b/stripe/api_resources/issuing/token.py index ba36822dc..3d247d090 100644 --- a/stripe/api_resources/issuing/token.py +++ b/stripe/api_resources/issuing/token.py @@ -6,13 +6,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.issuing.card import Card @@ -23,6 +28,32 @@ class Token(ListableAPIResource["Token"], UpdateableAPIResource["Token"]): """ OBJECT_NAME = "issuing.token" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + card: str + created: NotRequired["Token.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['active', 'deleted', 'requested', 'suspended']|None" + ] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + status: Literal["active", "deleted", "suspended"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + card: ExpandableField["Card"] created: int device_fingerprint: Optional[str] @@ -44,7 +75,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Token.ListParams"] ) -> ListObject["Token"]: result = cls._static_request( "get", @@ -64,7 +95,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Token": + def modify(cls, id, **params: Unpack["Token.ModifyParams"]) -> "Token": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Token", @@ -73,8 +104,8 @@ def modify(cls, id, **params: Any) -> "Token": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Token.RetrieveParams"] ) -> "Token": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/issuing/transaction.py b/stripe/api_resources/issuing/transaction.py index a5b14829f..b4ced7775 100644 --- a/stripe/api_resources/issuing/transaction.py +++ b/stripe/api_resources/issuing/transaction.py @@ -8,13 +8,19 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal, Type +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction from stripe.api_resources.issuing.authorization import Authorization @@ -37,6 +43,185 @@ class Transaction( """ OBJECT_NAME = "issuing.transaction" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + card: NotRequired["str|None"] + cardholder: NotRequired["str|None"] + created: NotRequired["Transaction.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + type: NotRequired["Literal['capture', 'refund']|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateForceCaptureParams(RequestOptions): + amount: int + card: str + currency: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + merchant_data: NotRequired[ + "Transaction.CreateForceCaptureParamsMerchantData|None" + ] + purchase_details: NotRequired[ + "Transaction.CreateForceCaptureParamsPurchaseDetails|None" + ] + + class CreateForceCaptureParamsPurchaseDetails(TypedDict): + flight: NotRequired[ + "Transaction.CreateForceCaptureParamsPurchaseDetailsFlight|None" + ] + fuel: NotRequired[ + "Transaction.CreateForceCaptureParamsPurchaseDetailsFuel|None" + ] + lodging: NotRequired[ + "Transaction.CreateForceCaptureParamsPurchaseDetailsLodging|None" + ] + receipt: NotRequired[ + "List[Transaction.CreateForceCaptureParamsPurchaseDetailsReceipt]|None" + ] + reference: NotRequired["str|None"] + + class CreateForceCaptureParamsPurchaseDetailsReceipt(TypedDict): + description: NotRequired["str|None"] + quantity: NotRequired["float|None"] + total: NotRequired["int|None"] + unit_cost: NotRequired["int|None"] + + class CreateForceCaptureParamsPurchaseDetailsLodging(TypedDict): + check_in_at: NotRequired["int|None"] + nights: NotRequired["int|None"] + + class CreateForceCaptureParamsPurchaseDetailsFuel(TypedDict): + type: NotRequired[ + "Literal['diesel', 'other', 'unleaded_plus', 'unleaded_regular', 'unleaded_super']|None" + ] + unit: NotRequired["Literal['liter', 'us_gallon']|None"] + unit_cost_decimal: NotRequired["float|None"] + volume_decimal: NotRequired["float|None"] + + class CreateForceCaptureParamsPurchaseDetailsFlight(TypedDict): + departure_at: NotRequired["int|None"] + passenger_name: NotRequired["str|None"] + refundable: NotRequired["bool|None"] + segments: NotRequired[ + "List[Transaction.CreateForceCaptureParamsPurchaseDetailsFlightSegment]|None" + ] + travel_agency: NotRequired["str|None"] + + class CreateForceCaptureParamsPurchaseDetailsFlightSegment(TypedDict): + arrival_airport_code: NotRequired["str|None"] + carrier: NotRequired["str|None"] + departure_airport_code: NotRequired["str|None"] + flight_number: NotRequired["str|None"] + service_class: NotRequired["str|None"] + stopover_allowed: NotRequired["bool|None"] + + class CreateForceCaptureParamsMerchantData(TypedDict): + category: NotRequired[ + "Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']|None" + ] + city: NotRequired["str|None"] + country: NotRequired["str|None"] + name: NotRequired["str|None"] + network_id: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + terminal_id: NotRequired["str|None"] + + class CreateUnlinkedRefundParams(RequestOptions): + amount: int + card: str + currency: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + merchant_data: NotRequired[ + "Transaction.CreateUnlinkedRefundParamsMerchantData|None" + ] + purchase_details: NotRequired[ + "Transaction.CreateUnlinkedRefundParamsPurchaseDetails|None" + ] + + class CreateUnlinkedRefundParamsPurchaseDetails(TypedDict): + flight: NotRequired[ + "Transaction.CreateUnlinkedRefundParamsPurchaseDetailsFlight|None" + ] + fuel: NotRequired[ + "Transaction.CreateUnlinkedRefundParamsPurchaseDetailsFuel|None" + ] + lodging: NotRequired[ + "Transaction.CreateUnlinkedRefundParamsPurchaseDetailsLodging|None" + ] + receipt: NotRequired[ + "List[Transaction.CreateUnlinkedRefundParamsPurchaseDetailsReceipt]|None" + ] + reference: NotRequired["str|None"] + + class CreateUnlinkedRefundParamsPurchaseDetailsReceipt(TypedDict): + description: NotRequired["str|None"] + quantity: NotRequired["float|None"] + total: NotRequired["int|None"] + unit_cost: NotRequired["int|None"] + + class CreateUnlinkedRefundParamsPurchaseDetailsLodging(TypedDict): + check_in_at: NotRequired["int|None"] + nights: NotRequired["int|None"] + + class CreateUnlinkedRefundParamsPurchaseDetailsFuel(TypedDict): + type: NotRequired[ + "Literal['diesel', 'other', 'unleaded_plus', 'unleaded_regular', 'unleaded_super']|None" + ] + unit: NotRequired["Literal['liter', 'us_gallon']|None"] + unit_cost_decimal: NotRequired["float|None"] + volume_decimal: NotRequired["float|None"] + + class CreateUnlinkedRefundParamsPurchaseDetailsFlight(TypedDict): + departure_at: NotRequired["int|None"] + passenger_name: NotRequired["str|None"] + refundable: NotRequired["bool|None"] + segments: NotRequired[ + "List[Transaction.CreateUnlinkedRefundParamsPurchaseDetailsFlightSegment]|None" + ] + travel_agency: NotRequired["str|None"] + + class CreateUnlinkedRefundParamsPurchaseDetailsFlightSegment( + TypedDict + ): + arrival_airport_code: NotRequired["str|None"] + carrier: NotRequired["str|None"] + departure_airport_code: NotRequired["str|None"] + flight_number: NotRequired["str|None"] + service_class: NotRequired["str|None"] + stopover_allowed: NotRequired["bool|None"] + + class CreateUnlinkedRefundParamsMerchantData(TypedDict): + category: NotRequired[ + "Literal['ac_refrigeration_repair', 'accounting_bookkeeping_services', 'advertising_services', 'agricultural_cooperative', 'airlines_air_carriers', 'airports_flying_fields', 'ambulance_services', 'amusement_parks_carnivals', 'antique_reproductions', 'antique_shops', 'aquariums', 'architectural_surveying_services', 'art_dealers_and_galleries', 'artists_supply_and_craft_shops', 'auto_and_home_supply_stores', 'auto_body_repair_shops', 'auto_paint_shops', 'auto_service_shops', 'automated_cash_disburse', 'automated_fuel_dispensers', 'automobile_associations', 'automotive_parts_and_accessories_stores', 'automotive_tire_stores', 'bail_and_bond_payments', 'bakeries', 'bands_orchestras', 'barber_and_beauty_shops', 'betting_casino_gambling', 'bicycle_shops', 'billiard_pool_establishments', 'boat_dealers', 'boat_rentals_and_leases', 'book_stores', 'books_periodicals_and_newspapers', 'bowling_alleys', 'bus_lines', 'business_secretarial_schools', 'buying_shopping_services', 'cable_satellite_and_other_pay_television_and_radio', 'camera_and_photographic_supply_stores', 'candy_nut_and_confectionery_stores', 'car_and_truck_dealers_new_used', 'car_and_truck_dealers_used_only', 'car_rental_agencies', 'car_washes', 'carpentry_services', 'carpet_upholstery_cleaning', 'caterers', 'charitable_and_social_service_organizations_fundraising', 'chemicals_and_allied_products', 'child_care_services', 'childrens_and_infants_wear_stores', 'chiropodists_podiatrists', 'chiropractors', 'cigar_stores_and_stands', 'civic_social_fraternal_associations', 'cleaning_and_maintenance', 'clothing_rental', 'colleges_universities', 'commercial_equipment', 'commercial_footwear', 'commercial_photography_art_and_graphics', 'commuter_transport_and_ferries', 'computer_network_services', 'computer_programming', 'computer_repair', 'computer_software_stores', 'computers_peripherals_and_software', 'concrete_work_services', 'construction_materials', 'consulting_public_relations', 'correspondence_schools', 'cosmetic_stores', 'counseling_services', 'country_clubs', 'courier_services', 'court_costs', 'credit_reporting_agencies', 'cruise_lines', 'dairy_products_stores', 'dance_hall_studios_schools', 'dating_escort_services', 'dentists_orthodontists', 'department_stores', 'detective_agencies', 'digital_goods_applications', 'digital_goods_games', 'digital_goods_large_volume', 'digital_goods_media', 'direct_marketing_catalog_merchant', 'direct_marketing_combination_catalog_and_retail_merchant', 'direct_marketing_inbound_telemarketing', 'direct_marketing_insurance_services', 'direct_marketing_other', 'direct_marketing_outbound_telemarketing', 'direct_marketing_subscription', 'direct_marketing_travel', 'discount_stores', 'doctors', 'door_to_door_sales', 'drapery_window_covering_and_upholstery_stores', 'drinking_places', 'drug_stores_and_pharmacies', 'drugs_drug_proprietaries_and_druggist_sundries', 'dry_cleaners', 'durable_goods', 'duty_free_stores', 'eating_places_restaurants', 'educational_services', 'electric_razor_stores', 'electric_vehicle_charging', 'electrical_parts_and_equipment', 'electrical_services', 'electronics_repair_shops', 'electronics_stores', 'elementary_secondary_schools', 'emergency_services_gcas_visa_use_only', 'employment_temp_agencies', 'equipment_rental', 'exterminating_services', 'family_clothing_stores', 'fast_food_restaurants', 'financial_institutions', 'fines_government_administrative_entities', 'fireplace_fireplace_screens_and_accessories_stores', 'floor_covering_stores', 'florists', 'florists_supplies_nursery_stock_and_flowers', 'freezer_and_locker_meat_provisioners', 'fuel_dealers_non_automotive', 'funeral_services_crematories', 'furniture_home_furnishings_and_equipment_stores_except_appliances', 'furniture_repair_refinishing', 'furriers_and_fur_shops', 'general_services', 'gift_card_novelty_and_souvenir_shops', 'glass_paint_and_wallpaper_stores', 'glassware_crystal_stores', 'golf_courses_public', 'government_licensed_horse_dog_racing_us_region_only', 'government_licensed_online_casions_online_gambling_us_region_only', 'government_owned_lotteries_non_us_region', 'government_owned_lotteries_us_region_only', 'government_services', 'grocery_stores_supermarkets', 'hardware_equipment_and_supplies', 'hardware_stores', 'health_and_beauty_spas', 'hearing_aids_sales_and_supplies', 'heating_plumbing_a_c', 'hobby_toy_and_game_shops', 'home_supply_warehouse_stores', 'hospitals', 'hotels_motels_and_resorts', 'household_appliance_stores', 'industrial_supplies', 'information_retrieval_services', 'insurance_default', 'insurance_underwriting_premiums', 'intra_company_purchases', 'jewelry_stores_watches_clocks_and_silverware_stores', 'landscaping_services', 'laundries', 'laundry_cleaning_services', 'legal_services_attorneys', 'luggage_and_leather_goods_stores', 'lumber_building_materials_stores', 'manual_cash_disburse', 'marinas_service_and_supplies', 'marketplaces', 'masonry_stonework_and_plaster', 'massage_parlors', 'medical_and_dental_labs', 'medical_dental_ophthalmic_and_hospital_equipment_and_supplies', 'medical_services', 'membership_organizations', 'mens_and_boys_clothing_and_accessories_stores', 'mens_womens_clothing_stores', 'metal_service_centers', 'miscellaneous_apparel_and_accessory_shops', 'miscellaneous_auto_dealers', 'miscellaneous_business_services', 'miscellaneous_food_stores', 'miscellaneous_general_merchandise', 'miscellaneous_general_services', 'miscellaneous_home_furnishing_specialty_stores', 'miscellaneous_publishing_and_printing', 'miscellaneous_recreation_services', 'miscellaneous_repair_shops', 'miscellaneous_specialty_retail', 'mobile_home_dealers', 'motion_picture_theaters', 'motor_freight_carriers_and_trucking', 'motor_homes_dealers', 'motor_vehicle_supplies_and_new_parts', 'motorcycle_shops_and_dealers', 'motorcycle_shops_dealers', 'music_stores_musical_instruments_pianos_and_sheet_music', 'news_dealers_and_newsstands', 'non_fi_money_orders', 'non_fi_stored_value_card_purchase_load', 'nondurable_goods', 'nurseries_lawn_and_garden_supply_stores', 'nursing_personal_care', 'office_and_commercial_furniture', 'opticians_eyeglasses', 'optometrists_ophthalmologist', 'orthopedic_goods_prosthetic_devices', 'osteopaths', 'package_stores_beer_wine_and_liquor', 'paints_varnishes_and_supplies', 'parking_lots_garages', 'passenger_railways', 'pawn_shops', 'pet_shops_pet_food_and_supplies', 'petroleum_and_petroleum_products', 'photo_developing', 'photographic_photocopy_microfilm_equipment_and_supplies', 'photographic_studios', 'picture_video_production', 'piece_goods_notions_and_other_dry_goods', 'plumbing_heating_equipment_and_supplies', 'political_organizations', 'postal_services_government_only', 'precious_stones_and_metals_watches_and_jewelry', 'professional_services', 'public_warehousing_and_storage', 'quick_copy_repro_and_blueprint', 'railroads', 'real_estate_agents_and_managers_rentals', 'record_stores', 'recreational_vehicle_rentals', 'religious_goods_stores', 'religious_organizations', 'roofing_siding_sheet_metal', 'secretarial_support_services', 'security_brokers_dealers', 'service_stations', 'sewing_needlework_fabric_and_piece_goods_stores', 'shoe_repair_hat_cleaning', 'shoe_stores', 'small_appliance_repair', 'snowmobile_dealers', 'special_trade_services', 'specialty_cleaning', 'sporting_goods_stores', 'sporting_recreation_camps', 'sports_and_riding_apparel_stores', 'sports_clubs_fields', 'stamp_and_coin_stores', 'stationary_office_supplies_printing_and_writing_paper', 'stationery_stores_office_and_school_supply_stores', 'swimming_pools_sales', 't_ui_travel_germany', 'tailors_alterations', 'tax_payments_government_agencies', 'tax_preparation_services', 'taxicabs_limousines', 'telecommunication_equipment_and_telephone_sales', 'telecommunication_services', 'telegraph_services', 'tent_and_awning_shops', 'testing_laboratories', 'theatrical_ticket_agencies', 'timeshares', 'tire_retreading_and_repair', 'tolls_bridge_fees', 'tourist_attractions_and_exhibits', 'towing_services', 'trailer_parks_campgrounds', 'transportation_services', 'travel_agencies_tour_operators', 'truck_stop_iteration', 'truck_utility_trailer_rentals', 'typesetting_plate_making_and_related_services', 'typewriter_stores', 'u_s_federal_government_agencies_or_departments', 'uniforms_commercial_clothing', 'used_merchandise_and_secondhand_stores', 'utilities', 'variety_stores', 'veterinary_services', 'video_amusement_game_supplies', 'video_game_arcades', 'video_tape_rental_stores', 'vocational_trade_schools', 'watch_jewelry_repair', 'welding_repair', 'wholesale_clubs', 'wig_and_toupee_stores', 'wires_money_orders', 'womens_accessory_and_specialty_shops', 'womens_ready_to_wear_stores', 'wrecking_and_salvage_yards']|None" + ] + city: NotRequired["str|None"] + country: NotRequired["str|None"] + name: NotRequired["str|None"] + network_id: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + terminal_id: NotRequired["str|None"] + + class RefundParams(RequestOptions): + expand: NotRequired["List[str]|None"] + refund_amount: NotRequired["int|None"] + amount: int amount_details: Optional[StripeObject] authorization: Optional[ExpandableField["Authorization"]] @@ -65,7 +250,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.ListParams"] ) -> ListObject["Transaction"]: result = cls._static_request( "get", @@ -85,7 +270,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Transaction": + def modify( + cls, id, **params: Unpack["Transaction.ModifyParams"] + ) -> "Transaction": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Transaction", @@ -94,9 +281,9 @@ def modify(cls, id, **params: Any) -> "Transaction": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Transaction.RetrieveParams"] ) -> "Transaction": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -109,7 +296,7 @@ def create_force_capture( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.CreateForceCaptureParams"] ): return cls._static_request( "post", @@ -126,7 +313,7 @@ def create_unlinked_refund( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.CreateUnlinkedRefundParams"] ): return cls._static_request( "post", @@ -144,7 +331,7 @@ def _cls_refund( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.RefundParams"] ): return cls._static_request( "post", @@ -158,7 +345,11 @@ def _cls_refund( ) @util.class_method_variant("_cls_refund") - def refund(self, idempotency_key: Optional[str] = None, **params: Any): + def refund( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Transaction.RefundParams"] + ): return self.resource._request( "post", "/v1/test_helpers/issuing/transactions/{transaction}/refund".format( diff --git a/stripe/api_resources/line_item.py b/stripe/api_resources/line_item.py index 60c49c83e..3df9045b7 100644 --- a/stripe/api_resources/line_item.py +++ b/stripe/api_resources/line_item.py @@ -2,9 +2,7 @@ # File generated from our OpenAPI spec from stripe.stripe_object import StripeObject from typing import List, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing_extensions import Literal, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.price import Price diff --git a/stripe/api_resources/mandate.py b/stripe/api_resources/mandate.py index dd34bd96c..4592711bf 100644 --- a/stripe/api_resources/mandate.py +++ b/stripe/api_resources/mandate.py @@ -2,11 +2,10 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import APIResource from stripe.api_resources.expandable_field import ExpandableField +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.payment_method import PaymentMethod @@ -18,6 +17,11 @@ class Mandate(APIResource["Mandate"]): """ OBJECT_NAME = "mandate" + if TYPE_CHECKING: + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + customer_acceptance: StripeObject id: str livemode: bool @@ -32,8 +36,8 @@ class Mandate(APIResource["Mandate"]): @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Mandate.RetrieveParams"] ) -> "Mandate": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/payment_intent.py b/stripe/api_resources/payment_intent.py index 9ce1bd347..3ea164087 100644 --- a/stripe/api_resources/payment_intent.py +++ b/stripe/api_resources/payment_intent.py @@ -10,13 +10,18 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject from stripe.api_resources.search_result_object import SearchResultObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.application import Application @@ -48,6 +53,2394 @@ class PaymentIntent( """ OBJECT_NAME = "payment_intent" + if TYPE_CHECKING: + + class ApplyCustomerBalanceParams(RequestOptions): + amount: NotRequired["int|None"] + currency: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + + class CancelParams(RequestOptions): + cancellation_reason: NotRequired[ + "Literal['abandoned', 'duplicate', 'fraudulent', 'requested_by_customer']|None" + ] + expand: NotRequired["List[str]|None"] + + class CaptureParams(RequestOptions): + amount_to_capture: NotRequired["int|None"] + application_fee_amount: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + final_capture: NotRequired["bool|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + statement_descriptor: NotRequired["str|None"] + statement_descriptor_suffix: NotRequired["str|None"] + transfer_data: NotRequired[ + "PaymentIntent.CaptureParamsTransferData|None" + ] + + class CaptureParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + + class ConfirmParams(RequestOptions): + capture_method: NotRequired[ + "Literal['automatic', 'automatic_async', 'manual']|None" + ] + error_on_requires_action: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + mandate: NotRequired["str|None"] + mandate_data: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsMandateData|PaymentIntent.ConfirmParamsMandateData2|None" + ] + off_session: NotRequired[ + "bool|Literal['one_off', 'recurring']|None" + ] + payment_method: NotRequired["str|None"] + payment_method_data: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodData|None" + ] + payment_method_options: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptions|None" + ] + radar_options: NotRequired[ + "PaymentIntent.ConfirmParamsRadarOptions|None" + ] + receipt_email: NotRequired["Literal['']|str|None"] + return_url: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['off_session', 'on_session']|None" + ] + shipping: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsShipping|None" + ] + use_stripe_sdk: NotRequired["bool|None"] + + class ConfirmParamsShipping(TypedDict): + address: "PaymentIntent.ConfirmParamsShippingAddress" + carrier: NotRequired["str|None"] + name: str + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class ConfirmParamsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ConfirmParamsRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsAcssDebit|None" + ] + affirm: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsAfterpayClearpay|None" + ] + alipay: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsAlipay|None" + ] + au_becs_debit: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsBacsDebit|None" + ] + bancontact: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsBancontact|None" + ] + blik: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsBlik|None" + ] + boleto: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsBoleto|None" + ] + card: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsCard|None" + ] + card_present: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsCardPresent|None" + ] + cashapp: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsCashapp|None" + ] + customer_balance: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsCustomerBalance|None" + ] + eps: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsEps|None" + ] + fpx: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsFpx|None" + ] + giropay: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsGiropay|None" + ] + grabpay: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsGrabpay|None" + ] + ideal: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsIdeal|None" + ] + interac_present: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsInteracPresent|None" + ] + klarna: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsKlarna|None" + ] + konbini: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsKonbini|None" + ] + link: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsLink|None" + ] + oxxo: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsOxxo|None" + ] + p24: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsP24|None" + ] + paynow: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsPaynow|None" + ] + paypal: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsPaypal|None" + ] + pix: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsPix|None" + ] + promptpay: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsPromptpay|None" + ] + sepa_debit: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsSepaDebit|None" + ] + sofort: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsSofort|None" + ] + us_bank_account: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsWechatPay|None" + ] + zip: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsZip|None" + ] + + class ConfirmParamsPaymentMethodOptionsZip(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsWechatPay(TypedDict): + app_id: NotRequired["str|None"] + client: Literal["android", "ios", "web"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsUsBankAccount(TypedDict): + financial_connections: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + networks: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsUsBankAccountNetworks|None" + ] + preferred_settlement_speed: NotRequired[ + "Literal['']|Literal['fastest', 'standard']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ConfirmParamsPaymentMethodOptionsUsBankAccountNetworks( + TypedDict + ): + requested: NotRequired[ + "List[Literal['ach', 'us_domestic_wire']]|None" + ] + + class ConfirmParamsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + return_url: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodOptionsSofort(TypedDict): + preferred_language: NotRequired[ + "Literal['']|Literal['de', 'en', 'es', 'fr', 'it', 'nl', 'pl']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsSepaDebit(TypedDict): + mandate_options: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsSepaDebitMandateOptions|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsSepaDebitMandateOptions( + TypedDict, + ): + pass + + class ConfirmParamsPaymentMethodOptionsPromptpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsPix(TypedDict): + expires_after_seconds: NotRequired["int|None"] + expires_at: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsPaypal(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired[ + "Literal['cs-CZ', 'da-DK', 'de-AT', 'de-DE', 'de-LU', 'el-GR', 'en-GB', 'en-US', 'es-ES', 'fi-FI', 'fr-BE', 'fr-FR', 'fr-LU', 'hu-HU', 'it-IT', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-PT', 'sk-SK', 'sv-SE']|None" + ] + reference: NotRequired["str|None"] + risk_correlation_id: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsPaynow(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsP24(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + tos_shown_and_accepted: NotRequired["bool|None"] + + class ConfirmParamsPaymentMethodOptionsOxxo(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsLink(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + persistent_token: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsKonbini(TypedDict): + confirmation_number: NotRequired["Literal['']|str|None"] + expires_after_days: NotRequired["Literal['']|int|None"] + expires_at: NotRequired["Literal['']|int|None"] + product_description: NotRequired["Literal['']|str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsKlarna(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired[ + "Literal['cs-CZ', 'da-DK', 'de-AT', 'de-CH', 'de-DE', 'el-GR', 'en-AT', 'en-AU', 'en-BE', 'en-CA', 'en-CH', 'en-CZ', 'en-DE', 'en-DK', 'en-ES', 'en-FI', 'en-FR', 'en-GB', 'en-GR', 'en-IE', 'en-IT', 'en-NL', 'en-NO', 'en-NZ', 'en-PL', 'en-PT', 'en-SE', 'en-US', 'es-ES', 'es-US', 'fi-FI', 'fr-BE', 'fr-CA', 'fr-CH', 'fr-FR', 'it-CH', 'it-IT', 'nb-NO', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-PT', 'sv-FI', 'sv-SE']|None" + ] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsInteracPresent(TypedDict): + pass + + class ConfirmParamsPaymentMethodOptionsIdeal(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsGrabpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsGiropay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsFpx(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsEps(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsCustomerBalance(TypedDict): + bank_transfer: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["Literal['bank_transfer']|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + requested_address_types: NotRequired[ + "List[Literal['aba', 'iban', 'sepa', 'sort_code', 'spei', 'swift', 'zengin']]|None" + ] + type: Literal[ + "eu_bank_transfer", + "gb_bank_transfer", + "jp_bank_transfer", + "mx_bank_transfer", + "us_bank_transfer", + ] + + class ConfirmParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class ConfirmParamsPaymentMethodOptionsCashapp(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsCardPresent(TypedDict): + request_extended_authorization: NotRequired["bool|None"] + request_incremental_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_incremental_authorization_support: NotRequired["bool|None"] + + class ConfirmParamsPaymentMethodOptionsCard(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + cvc_token: NotRequired["str|None"] + installments: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsCardInstallments|None" + ] + mandate_options: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsCardMandateOptions|None" + ] + moto: NotRequired["bool|None"] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_extended_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_incremental_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_multicapture: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_overcapture: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + statement_descriptor_suffix_kana: NotRequired[ + "Literal['']|str|None" + ] + statement_descriptor_suffix_kanji: NotRequired[ + "Literal['']|str|None" + ] + + class ConfirmParamsPaymentMethodOptionsCardMandateOptions(TypedDict): + amount: int + amount_type: Literal["fixed", "maximum"] + description: NotRequired["str|None"] + end_date: NotRequired["int|None"] + interval: Literal["day", "month", "sporadic", "week", "year"] + interval_count: NotRequired["int|None"] + reference: str + start_date: int + supported_types: NotRequired["List[Literal['india']]|None"] + + class ConfirmParamsPaymentMethodOptionsCardInstallments(TypedDict): + enabled: NotRequired["bool|None"] + plan: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodOptionsCardInstallmentsPlan|None" + ] + + class ConfirmParamsPaymentMethodOptionsCardInstallmentsPlan(TypedDict): + count: int + interval: Literal["month"] + type: Literal["fixed_count"] + + class ConfirmParamsPaymentMethodOptionsBoleto(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsBlik(TypedDict): + code: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodOptionsBancontact(TypedDict): + preferred_language: NotRequired[ + "Literal['de', 'en', 'fr', 'nl']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsBacsDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsAuBecsDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsAlipay(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ConfirmParamsPaymentMethodOptionsAfterpayClearpay(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + reference: NotRequired["str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsAffirm(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired["str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ConfirmParamsPaymentMethodOptionsAcssDebit(TypedDict): + mandate_options: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ConfirmParamsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + custom_mandate_url: NotRequired["Literal['']|str|None"] + interval_description: NotRequired["str|None"] + payment_schedule: NotRequired[ + "Literal['combined', 'interval', 'sporadic']|None" + ] + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class ConfirmParamsPaymentMethodData(TypedDict): + acss_debit: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataAcssDebit|None" + ] + affirm: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataAfterpayClearpay|None" + ] + alipay: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataAlipay|None" + ] + au_becs_debit: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataBacsDebit|None" + ] + bancontact: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataBancontact|None" + ] + billing_details: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataBillingDetails|None" + ] + blik: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataBlik|None" + ] + boleto: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataBoleto|None" + ] + cashapp: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataCashapp|None" + ] + customer_balance: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataCustomerBalance|None" + ] + eps: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataEps|None" + ] + fpx: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataFpx|None" + ] + giropay: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataGiropay|None" + ] + grabpay: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataGrabpay|None" + ] + ideal: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataIdeal|None" + ] + interac_present: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataInteracPresent|None" + ] + klarna: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataKlarna|None" + ] + konbini: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataKonbini|None" + ] + link: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataLink|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + oxxo: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataOxxo|None" + ] + p24: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataP24|None" + ] + paynow: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataPaynow|None" + ] + paypal: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataPaypal|None" + ] + pix: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataPix|None" + ] + promptpay: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataPromptpay|None" + ] + radar_options: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataRadarOptions|None" + ] + sepa_debit: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataSepaDebit|None" + ] + sofort: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataSofort|None" + ] + type: Literal[ + "acss_debit", + "affirm", + "afterpay_clearpay", + "alipay", + "au_becs_debit", + "bacs_debit", + "bancontact", + "blik", + "boleto", + "cashapp", + "customer_balance", + "eps", + "fpx", + "giropay", + "grabpay", + "ideal", + "klarna", + "konbini", + "link", + "oxxo", + "p24", + "paynow", + "paypal", + "pix", + "promptpay", + "sepa_debit", + "sofort", + "us_bank_account", + "wechat_pay", + "zip", + ] + us_bank_account: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataWechatPay|None" + ] + zip: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataZip|None" + ] + + class ConfirmParamsPaymentMethodDataZip(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataWechatPay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataSofort(TypedDict): + country: Literal["AT", "BE", "DE", "ES", "IT", "NL"] + + class ConfirmParamsPaymentMethodDataSepaDebit(TypedDict): + iban: str + + class ConfirmParamsPaymentMethodDataRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataPromptpay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataPix(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataPaypal(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataPaynow(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataP24(TypedDict): + bank: NotRequired[ + "Literal['alior_bank', 'bank_millennium', 'bank_nowy_bfg_sa', 'bank_pekao_sa', 'banki_spbdzielcze', 'blik', 'bnp_paribas', 'boz', 'citi_handlowy', 'credit_agricole', 'envelobank', 'etransfer_pocztowy24', 'getin_bank', 'ideabank', 'ing', 'inteligo', 'mbank_mtransfer', 'nest_przelew', 'noble_pay', 'pbac_z_ipko', 'plus_bank', 'santander_przelew24', 'tmobile_usbugi_bankowe', 'toyota_bank', 'volkswagen_bank']|None" + ] + + class ConfirmParamsPaymentMethodDataOxxo(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataLink(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataKonbini(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataKlarna(TypedDict): + dob: NotRequired[ + "PaymentIntent.ConfirmParamsPaymentMethodDataKlarnaDob|None" + ] + + class ConfirmParamsPaymentMethodDataKlarnaDob(TypedDict): + day: int + month: int + year: int + + class ConfirmParamsPaymentMethodDataInteracPresent(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataIdeal(TypedDict): + bank: NotRequired[ + "Literal['abn_amro', 'asn_bank', 'bunq', 'handelsbanken', 'ing', 'knab', 'moneyou', 'n26', 'rabobank', 'regiobank', 'revolut', 'sns_bank', 'triodos_bank', 'van_lanschot', 'yoursafe']|None" + ] + + class ConfirmParamsPaymentMethodDataGrabpay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataGiropay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataFpx(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + bank: Literal[ + "affin_bank", + "agrobank", + "alliance_bank", + "ambank", + "bank_islam", + "bank_muamalat", + "bank_of_china", + "bank_rakyat", + "bsn", + "cimb", + "deutsche_bank", + "hong_leong_bank", + "hsbc", + "kfh", + "maybank2e", + "maybank2u", + "ocbc", + "pb_enterprise", + "public_bank", + "rhb", + "standard_chartered", + "uob", + ] + + class ConfirmParamsPaymentMethodDataEps(TypedDict): + bank: NotRequired[ + "Literal['arzte_und_apotheker_bank', 'austrian_anadi_bank_ag', 'bank_austria', 'bankhaus_carl_spangler', 'bankhaus_schelhammer_und_schattera_ag', 'bawag_psk_ag', 'bks_bank_ag', 'brull_kallmus_bank_ag', 'btv_vier_lander_bank', 'capital_bank_grawe_gruppe_ag', 'deutsche_bank_ag', 'dolomitenbank', 'easybank_ag', 'erste_bank_und_sparkassen', 'hypo_alpeadriabank_international_ag', 'hypo_bank_burgenland_aktiengesellschaft', 'hypo_noe_lb_fur_niederosterreich_u_wien', 'hypo_oberosterreich_salzburg_steiermark', 'hypo_tirol_bank_ag', 'hypo_vorarlberg_bank_ag', 'marchfelder_bank', 'oberbank_ag', 'raiffeisen_bankengruppe_osterreich', 'schoellerbank_ag', 'sparda_bank_wien', 'volksbank_gruppe', 'volkskreditbank_ag', 'vr_bank_braunau']|None" + ] + + class ConfirmParamsPaymentMethodDataCustomerBalance(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataCashapp(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataBoleto(TypedDict): + tax_id: str + + class ConfirmParamsPaymentMethodDataBlik(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|PaymentIntent.ConfirmParamsPaymentMethodDataBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class ConfirmParamsPaymentMethodDataBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataBancontact(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataBacsDebit(TypedDict): + account_number: NotRequired["str|None"] + sort_code: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataAuBecsDebit(TypedDict): + account_number: str + bsb_number: str + + class ConfirmParamsPaymentMethodDataAlipay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataAfterpayClearpay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataAffirm(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataAcssDebit(TypedDict): + account_number: str + institution_number: str + transit_number: str + + class ConfirmParamsMandateData2(TypedDict): + customer_acceptance: "PaymentIntent.ConfirmParamsMandateDataCustomerAcceptance2" + + class ConfirmParamsMandateDataCustomerAcceptance2(TypedDict): + online: "PaymentIntent.ConfirmParamsMandateDataCustomerAcceptanceOnline2" + type: Literal["online"] + + class ConfirmParamsMandateDataCustomerAcceptanceOnline2(TypedDict): + ip_address: NotRequired["str|None"] + user_agent: NotRequired["str|None"] + + class ConfirmParamsMandateData(TypedDict): + customer_acceptance: "PaymentIntent.ConfirmParamsMandateDataCustomerAcceptance" + + class ConfirmParamsMandateDataCustomerAcceptance(TypedDict): + accepted_at: NotRequired["int|None"] + offline: NotRequired[ + "PaymentIntent.ConfirmParamsMandateDataCustomerAcceptanceOffline|None" + ] + online: NotRequired[ + "PaymentIntent.ConfirmParamsMandateDataCustomerAcceptanceOnline|None" + ] + type: Literal["offline", "online"] + + class ConfirmParamsMandateDataCustomerAcceptanceOnline(TypedDict): + ip_address: str + user_agent: str + + class ConfirmParamsMandateDataCustomerAcceptanceOffline(TypedDict): + pass + + class CreateParams(RequestOptions): + amount: int + application_fee_amount: NotRequired["int|None"] + automatic_payment_methods: NotRequired[ + "PaymentIntent.CreateParamsAutomaticPaymentMethods|None" + ] + capture_method: NotRequired[ + "Literal['automatic', 'automatic_async', 'manual']|None" + ] + confirm: NotRequired["bool|None"] + confirmation_method: NotRequired[ + "Literal['automatic', 'manual']|None" + ] + currency: str + customer: NotRequired["str|None"] + description: NotRequired["str|None"] + error_on_requires_action: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + mandate: NotRequired["str|None"] + mandate_data: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsMandateData|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + off_session: NotRequired[ + "bool|Literal['one_off', 'recurring']|None" + ] + on_behalf_of: NotRequired["str|None"] + payment_method: NotRequired["str|None"] + payment_method_configuration: NotRequired["str|None"] + payment_method_data: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodData|None" + ] + payment_method_options: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired["List[str]|None"] + radar_options: NotRequired[ + "PaymentIntent.CreateParamsRadarOptions|None" + ] + receipt_email: NotRequired["str|None"] + return_url: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['off_session', 'on_session']|None" + ] + shipping: NotRequired["PaymentIntent.CreateParamsShipping|None"] + statement_descriptor: NotRequired["str|None"] + statement_descriptor_suffix: NotRequired["str|None"] + transfer_data: NotRequired[ + "PaymentIntent.CreateParamsTransferData|None" + ] + transfer_group: NotRequired["str|None"] + use_stripe_sdk: NotRequired["bool|None"] + + class CreateParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + destination: str + + class CreateParamsShipping(TypedDict): + address: "PaymentIntent.CreateParamsShippingAddress" + carrier: NotRequired["str|None"] + name: str + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class CreateParamsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class CreateParamsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsAcssDebit|None" + ] + affirm: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsAfterpayClearpay|None" + ] + alipay: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsAlipay|None" + ] + au_becs_debit: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsBacsDebit|None" + ] + bancontact: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsBancontact|None" + ] + blik: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsBlik|None" + ] + boleto: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsBoleto|None" + ] + card: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsCard|None" + ] + card_present: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsCardPresent|None" + ] + cashapp: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsCashapp|None" + ] + customer_balance: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsCustomerBalance|None" + ] + eps: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsEps|None" + ] + fpx: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsFpx|None" + ] + giropay: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsGiropay|None" + ] + grabpay: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsGrabpay|None" + ] + ideal: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsIdeal|None" + ] + interac_present: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsInteracPresent|None" + ] + klarna: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsKlarna|None" + ] + konbini: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsKonbini|None" + ] + link: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsLink|None" + ] + oxxo: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsOxxo|None" + ] + p24: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsP24|None" + ] + paynow: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsPaynow|None" + ] + paypal: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsPaypal|None" + ] + pix: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsPix|None" + ] + promptpay: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsPromptpay|None" + ] + sepa_debit: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsSepaDebit|None" + ] + sofort: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsSofort|None" + ] + us_bank_account: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsWechatPay|None" + ] + zip: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsZip|None" + ] + + class CreateParamsPaymentMethodOptionsZip(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsWechatPay(TypedDict): + app_id: NotRequired["str|None"] + client: Literal["android", "ios", "web"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsUsBankAccount(TypedDict): + financial_connections: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + networks: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsUsBankAccountNetworks|None" + ] + preferred_settlement_speed: NotRequired[ + "Literal['']|Literal['fastest', 'standard']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentMethodOptionsUsBankAccountNetworks(TypedDict): + requested: NotRequired[ + "List[Literal['ach', 'us_domestic_wire']]|None" + ] + + class CreateParamsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + return_url: NotRequired["str|None"] + + class CreateParamsPaymentMethodOptionsSofort(TypedDict): + preferred_language: NotRequired[ + "Literal['']|Literal['de', 'en', 'es', 'fr', 'it', 'nl', 'pl']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsSepaDebit(TypedDict): + mandate_options: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsSepaDebitMandateOptions|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsSepaDebitMandateOptions( + TypedDict, + ): + pass + + class CreateParamsPaymentMethodOptionsPromptpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsPix(TypedDict): + expires_after_seconds: NotRequired["int|None"] + expires_at: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsPaypal(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired[ + "Literal['cs-CZ', 'da-DK', 'de-AT', 'de-DE', 'de-LU', 'el-GR', 'en-GB', 'en-US', 'es-ES', 'fi-FI', 'fr-BE', 'fr-FR', 'fr-LU', 'hu-HU', 'it-IT', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-PT', 'sk-SK', 'sv-SE']|None" + ] + reference: NotRequired["str|None"] + risk_correlation_id: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsPaynow(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsP24(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + tos_shown_and_accepted: NotRequired["bool|None"] + + class CreateParamsPaymentMethodOptionsOxxo(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsLink(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + persistent_token: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsKonbini(TypedDict): + confirmation_number: NotRequired["Literal['']|str|None"] + expires_after_days: NotRequired["Literal['']|int|None"] + expires_at: NotRequired["Literal['']|int|None"] + product_description: NotRequired["Literal['']|str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsKlarna(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired[ + "Literal['cs-CZ', 'da-DK', 'de-AT', 'de-CH', 'de-DE', 'el-GR', 'en-AT', 'en-AU', 'en-BE', 'en-CA', 'en-CH', 'en-CZ', 'en-DE', 'en-DK', 'en-ES', 'en-FI', 'en-FR', 'en-GB', 'en-GR', 'en-IE', 'en-IT', 'en-NL', 'en-NO', 'en-NZ', 'en-PL', 'en-PT', 'en-SE', 'en-US', 'es-ES', 'es-US', 'fi-FI', 'fr-BE', 'fr-CA', 'fr-CH', 'fr-FR', 'it-CH', 'it-IT', 'nb-NO', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-PT', 'sv-FI', 'sv-SE']|None" + ] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsInteracPresent(TypedDict): + pass + + class CreateParamsPaymentMethodOptionsIdeal(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsGrabpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsGiropay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsFpx(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsEps(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsCustomerBalance(TypedDict): + bank_transfer: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["Literal['bank_transfer']|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + requested_address_types: NotRequired[ + "List[Literal['aba', 'iban', 'sepa', 'sort_code', 'spei', 'swift', 'zengin']]|None" + ] + type: Literal[ + "eu_bank_transfer", + "gb_bank_transfer", + "jp_bank_transfer", + "mx_bank_transfer", + "us_bank_transfer", + ] + + class CreateParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class CreateParamsPaymentMethodOptionsCashapp(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsCardPresent(TypedDict): + request_extended_authorization: NotRequired["bool|None"] + request_incremental_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_incremental_authorization_support: NotRequired["bool|None"] + + class CreateParamsPaymentMethodOptionsCard(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + cvc_token: NotRequired["str|None"] + installments: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsCardInstallments|None" + ] + mandate_options: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsCardMandateOptions|None" + ] + moto: NotRequired["bool|None"] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_extended_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_incremental_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_multicapture: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_overcapture: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + statement_descriptor_suffix_kana: NotRequired[ + "Literal['']|str|None" + ] + statement_descriptor_suffix_kanji: NotRequired[ + "Literal['']|str|None" + ] + + class CreateParamsPaymentMethodOptionsCardMandateOptions(TypedDict): + amount: int + amount_type: Literal["fixed", "maximum"] + description: NotRequired["str|None"] + end_date: NotRequired["int|None"] + interval: Literal["day", "month", "sporadic", "week", "year"] + interval_count: NotRequired["int|None"] + reference: str + start_date: int + supported_types: NotRequired["List[Literal['india']]|None"] + + class CreateParamsPaymentMethodOptionsCardInstallments(TypedDict): + enabled: NotRequired["bool|None"] + plan: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodOptionsCardInstallmentsPlan|None" + ] + + class CreateParamsPaymentMethodOptionsCardInstallmentsPlan(TypedDict): + count: int + interval: Literal["month"] + type: Literal["fixed_count"] + + class CreateParamsPaymentMethodOptionsBoleto(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsBlik(TypedDict): + code: NotRequired["str|None"] + + class CreateParamsPaymentMethodOptionsBancontact(TypedDict): + preferred_language: NotRequired[ + "Literal['de', 'en', 'fr', 'nl']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsBacsDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsAuBecsDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class CreateParamsPaymentMethodOptionsAlipay(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class CreateParamsPaymentMethodOptionsAfterpayClearpay(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + reference: NotRequired["str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsAffirm(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired["str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class CreateParamsPaymentMethodOptionsAcssDebit(TypedDict): + mandate_options: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + custom_mandate_url: NotRequired["Literal['']|str|None"] + interval_description: NotRequired["str|None"] + payment_schedule: NotRequired[ + "Literal['combined', 'interval', 'sporadic']|None" + ] + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class CreateParamsPaymentMethodData(TypedDict): + acss_debit: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataAcssDebit|None" + ] + affirm: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataAfterpayClearpay|None" + ] + alipay: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataAlipay|None" + ] + au_becs_debit: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataBacsDebit|None" + ] + bancontact: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataBancontact|None" + ] + billing_details: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataBillingDetails|None" + ] + blik: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataBlik|None" + ] + boleto: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataBoleto|None" + ] + cashapp: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataCashapp|None" + ] + customer_balance: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataCustomerBalance|None" + ] + eps: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataEps|None" + ] + fpx: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataFpx|None" + ] + giropay: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataGiropay|None" + ] + grabpay: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataGrabpay|None" + ] + ideal: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataIdeal|None" + ] + interac_present: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataInteracPresent|None" + ] + klarna: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataKlarna|None" + ] + konbini: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataKonbini|None" + ] + link: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataLink|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + oxxo: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataOxxo|None" + ] + p24: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataP24|None" + ] + paynow: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataPaynow|None" + ] + paypal: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataPaypal|None" + ] + pix: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataPix|None" + ] + promptpay: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataPromptpay|None" + ] + radar_options: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataRadarOptions|None" + ] + sepa_debit: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataSepaDebit|None" + ] + sofort: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataSofort|None" + ] + type: Literal[ + "acss_debit", + "affirm", + "afterpay_clearpay", + "alipay", + "au_becs_debit", + "bacs_debit", + "bancontact", + "blik", + "boleto", + "cashapp", + "customer_balance", + "eps", + "fpx", + "giropay", + "grabpay", + "ideal", + "klarna", + "konbini", + "link", + "oxxo", + "p24", + "paynow", + "paypal", + "pix", + "promptpay", + "sepa_debit", + "sofort", + "us_bank_account", + "wechat_pay", + "zip", + ] + us_bank_account: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataWechatPay|None" + ] + zip: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataZip|None" + ] + + class CreateParamsPaymentMethodDataZip(TypedDict): + pass + + class CreateParamsPaymentMethodDataWechatPay(TypedDict): + pass + + class CreateParamsPaymentMethodDataUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataSofort(TypedDict): + country: Literal["AT", "BE", "DE", "ES", "IT", "NL"] + + class CreateParamsPaymentMethodDataSepaDebit(TypedDict): + iban: str + + class CreateParamsPaymentMethodDataRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataPromptpay(TypedDict): + pass + + class CreateParamsPaymentMethodDataPix(TypedDict): + pass + + class CreateParamsPaymentMethodDataPaypal(TypedDict): + pass + + class CreateParamsPaymentMethodDataPaynow(TypedDict): + pass + + class CreateParamsPaymentMethodDataP24(TypedDict): + bank: NotRequired[ + "Literal['alior_bank', 'bank_millennium', 'bank_nowy_bfg_sa', 'bank_pekao_sa', 'banki_spbdzielcze', 'blik', 'bnp_paribas', 'boz', 'citi_handlowy', 'credit_agricole', 'envelobank', 'etransfer_pocztowy24', 'getin_bank', 'ideabank', 'ing', 'inteligo', 'mbank_mtransfer', 'nest_przelew', 'noble_pay', 'pbac_z_ipko', 'plus_bank', 'santander_przelew24', 'tmobile_usbugi_bankowe', 'toyota_bank', 'volkswagen_bank']|None" + ] + + class CreateParamsPaymentMethodDataOxxo(TypedDict): + pass + + class CreateParamsPaymentMethodDataLink(TypedDict): + pass + + class CreateParamsPaymentMethodDataKonbini(TypedDict): + pass + + class CreateParamsPaymentMethodDataKlarna(TypedDict): + dob: NotRequired[ + "PaymentIntent.CreateParamsPaymentMethodDataKlarnaDob|None" + ] + + class CreateParamsPaymentMethodDataKlarnaDob(TypedDict): + day: int + month: int + year: int + + class CreateParamsPaymentMethodDataInteracPresent(TypedDict): + pass + + class CreateParamsPaymentMethodDataIdeal(TypedDict): + bank: NotRequired[ + "Literal['abn_amro', 'asn_bank', 'bunq', 'handelsbanken', 'ing', 'knab', 'moneyou', 'n26', 'rabobank', 'regiobank', 'revolut', 'sns_bank', 'triodos_bank', 'van_lanschot', 'yoursafe']|None" + ] + + class CreateParamsPaymentMethodDataGrabpay(TypedDict): + pass + + class CreateParamsPaymentMethodDataGiropay(TypedDict): + pass + + class CreateParamsPaymentMethodDataFpx(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + bank: Literal[ + "affin_bank", + "agrobank", + "alliance_bank", + "ambank", + "bank_islam", + "bank_muamalat", + "bank_of_china", + "bank_rakyat", + "bsn", + "cimb", + "deutsche_bank", + "hong_leong_bank", + "hsbc", + "kfh", + "maybank2e", + "maybank2u", + "ocbc", + "pb_enterprise", + "public_bank", + "rhb", + "standard_chartered", + "uob", + ] + + class CreateParamsPaymentMethodDataEps(TypedDict): + bank: NotRequired[ + "Literal['arzte_und_apotheker_bank', 'austrian_anadi_bank_ag', 'bank_austria', 'bankhaus_carl_spangler', 'bankhaus_schelhammer_und_schattera_ag', 'bawag_psk_ag', 'bks_bank_ag', 'brull_kallmus_bank_ag', 'btv_vier_lander_bank', 'capital_bank_grawe_gruppe_ag', 'deutsche_bank_ag', 'dolomitenbank', 'easybank_ag', 'erste_bank_und_sparkassen', 'hypo_alpeadriabank_international_ag', 'hypo_bank_burgenland_aktiengesellschaft', 'hypo_noe_lb_fur_niederosterreich_u_wien', 'hypo_oberosterreich_salzburg_steiermark', 'hypo_tirol_bank_ag', 'hypo_vorarlberg_bank_ag', 'marchfelder_bank', 'oberbank_ag', 'raiffeisen_bankengruppe_osterreich', 'schoellerbank_ag', 'sparda_bank_wien', 'volksbank_gruppe', 'volkskreditbank_ag', 'vr_bank_braunau']|None" + ] + + class CreateParamsPaymentMethodDataCustomerBalance(TypedDict): + pass + + class CreateParamsPaymentMethodDataCashapp(TypedDict): + pass + + class CreateParamsPaymentMethodDataBoleto(TypedDict): + tax_id: str + + class CreateParamsPaymentMethodDataBlik(TypedDict): + pass + + class CreateParamsPaymentMethodDataBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|PaymentIntent.CreateParamsPaymentMethodDataBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class CreateParamsPaymentMethodDataBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataBancontact(TypedDict): + pass + + class CreateParamsPaymentMethodDataBacsDebit(TypedDict): + account_number: NotRequired["str|None"] + sort_code: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataAuBecsDebit(TypedDict): + account_number: str + bsb_number: str + + class CreateParamsPaymentMethodDataAlipay(TypedDict): + pass + + class CreateParamsPaymentMethodDataAfterpayClearpay(TypedDict): + pass + + class CreateParamsPaymentMethodDataAffirm(TypedDict): + pass + + class CreateParamsPaymentMethodDataAcssDebit(TypedDict): + account_number: str + institution_number: str + transit_number: str + + class CreateParamsMandateData(TypedDict): + customer_acceptance: "PaymentIntent.CreateParamsMandateDataCustomerAcceptance" + + class CreateParamsMandateDataCustomerAcceptance(TypedDict): + accepted_at: NotRequired["int|None"] + offline: NotRequired[ + "PaymentIntent.CreateParamsMandateDataCustomerAcceptanceOffline|None" + ] + online: NotRequired[ + "PaymentIntent.CreateParamsMandateDataCustomerAcceptanceOnline|None" + ] + type: Literal["offline", "online"] + + class CreateParamsMandateDataCustomerAcceptanceOnline(TypedDict): + ip_address: str + user_agent: str + + class CreateParamsMandateDataCustomerAcceptanceOffline(TypedDict): + pass + + class CreateParamsAutomaticPaymentMethods(TypedDict): + allow_redirects: NotRequired["Literal['always', 'never']|None"] + enabled: bool + + class IncrementAuthorizationParams(RequestOptions): + amount: int + application_fee_amount: NotRequired["int|None"] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + statement_descriptor: NotRequired["str|None"] + transfer_data: NotRequired[ + "PaymentIntent.IncrementAuthorizationParamsTransferData|None" + ] + + class IncrementAuthorizationParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + + class ListParams(RequestOptions): + created: NotRequired["PaymentIntent.ListParamsCreated|int|None"] + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + amount: NotRequired["int|None"] + application_fee_amount: NotRequired["Literal['']|int|None"] + capture_method: NotRequired[ + "Literal['automatic', 'automatic_async', 'manual']|None" + ] + currency: NotRequired["str|None"] + customer: NotRequired["str|None"] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + payment_method: NotRequired["str|None"] + payment_method_configuration: NotRequired["str|None"] + payment_method_data: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodData|None" + ] + payment_method_options: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired["List[str]|None"] + receipt_email: NotRequired["Literal['']|str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['off_session', 'on_session']|None" + ] + shipping: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsShipping|None" + ] + statement_descriptor: NotRequired["str|None"] + statement_descriptor_suffix: NotRequired["str|None"] + transfer_data: NotRequired[ + "PaymentIntent.ModifyParamsTransferData|None" + ] + transfer_group: NotRequired["str|None"] + + class ModifyParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + + class ModifyParamsShipping(TypedDict): + address: "PaymentIntent.ModifyParamsShippingAddress" + carrier: NotRequired["str|None"] + name: str + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class ModifyParamsShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsAcssDebit|None" + ] + affirm: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsAfterpayClearpay|None" + ] + alipay: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsAlipay|None" + ] + au_becs_debit: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsBacsDebit|None" + ] + bancontact: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsBancontact|None" + ] + blik: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsBlik|None" + ] + boleto: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsBoleto|None" + ] + card: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsCard|None" + ] + card_present: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsCardPresent|None" + ] + cashapp: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsCashapp|None" + ] + customer_balance: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsCustomerBalance|None" + ] + eps: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsEps|None" + ] + fpx: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsFpx|None" + ] + giropay: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsGiropay|None" + ] + grabpay: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsGrabpay|None" + ] + ideal: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsIdeal|None" + ] + interac_present: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsInteracPresent|None" + ] + klarna: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsKlarna|None" + ] + konbini: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsKonbini|None" + ] + link: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsLink|None" + ] + oxxo: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsOxxo|None" + ] + p24: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsP24|None" + ] + paynow: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsPaynow|None" + ] + paypal: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsPaypal|None" + ] + pix: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsPix|None" + ] + promptpay: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsPromptpay|None" + ] + sepa_debit: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsSepaDebit|None" + ] + sofort: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsSofort|None" + ] + us_bank_account: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsWechatPay|None" + ] + zip: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsZip|None" + ] + + class ModifyParamsPaymentMethodOptionsZip(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsWechatPay(TypedDict): + app_id: NotRequired["str|None"] + client: Literal["android", "ios", "web"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsUsBankAccount(TypedDict): + financial_connections: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + networks: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsUsBankAccountNetworks|None" + ] + preferred_settlement_speed: NotRequired[ + "Literal['']|Literal['fastest', 'standard']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentMethodOptionsUsBankAccountNetworks(TypedDict): + requested: NotRequired[ + "List[Literal['ach', 'us_domestic_wire']]|None" + ] + + class ModifyParamsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + return_url: NotRequired["str|None"] + + class ModifyParamsPaymentMethodOptionsSofort(TypedDict): + preferred_language: NotRequired[ + "Literal['']|Literal['de', 'en', 'es', 'fr', 'it', 'nl', 'pl']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsSepaDebit(TypedDict): + mandate_options: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsSepaDebitMandateOptions|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsSepaDebitMandateOptions( + TypedDict, + ): + pass + + class ModifyParamsPaymentMethodOptionsPromptpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsPix(TypedDict): + expires_after_seconds: NotRequired["int|None"] + expires_at: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsPaypal(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired[ + "Literal['cs-CZ', 'da-DK', 'de-AT', 'de-DE', 'de-LU', 'el-GR', 'en-GB', 'en-US', 'es-ES', 'fi-FI', 'fr-BE', 'fr-FR', 'fr-LU', 'hu-HU', 'it-IT', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-PT', 'sk-SK', 'sv-SE']|None" + ] + reference: NotRequired["str|None"] + risk_correlation_id: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsPaynow(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsP24(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + tos_shown_and_accepted: NotRequired["bool|None"] + + class ModifyParamsPaymentMethodOptionsOxxo(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsLink(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + persistent_token: NotRequired["str|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsKonbini(TypedDict): + confirmation_number: NotRequired["Literal['']|str|None"] + expires_after_days: NotRequired["Literal['']|int|None"] + expires_at: NotRequired["Literal['']|int|None"] + product_description: NotRequired["Literal['']|str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsKlarna(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired[ + "Literal['cs-CZ', 'da-DK', 'de-AT', 'de-CH', 'de-DE', 'el-GR', 'en-AT', 'en-AU', 'en-BE', 'en-CA', 'en-CH', 'en-CZ', 'en-DE', 'en-DK', 'en-ES', 'en-FI', 'en-FR', 'en-GB', 'en-GR', 'en-IE', 'en-IT', 'en-NL', 'en-NO', 'en-NZ', 'en-PL', 'en-PT', 'en-SE', 'en-US', 'es-ES', 'es-US', 'fi-FI', 'fr-BE', 'fr-CA', 'fr-CH', 'fr-FR', 'it-CH', 'it-IT', 'nb-NO', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-PT', 'sv-FI', 'sv-SE']|None" + ] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsInteracPresent(TypedDict): + pass + + class ModifyParamsPaymentMethodOptionsIdeal(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsGrabpay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsGiropay(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsFpx(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsEps(TypedDict): + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsCustomerBalance(TypedDict): + bank_transfer: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["Literal['bank_transfer']|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + requested_address_types: NotRequired[ + "List[Literal['aba', 'iban', 'sepa', 'sort_code', 'spei', 'swift', 'zengin']]|None" + ] + type: Literal[ + "eu_bank_transfer", + "gb_bank_transfer", + "jp_bank_transfer", + "mx_bank_transfer", + "us_bank_transfer", + ] + + class ModifyParamsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class ModifyParamsPaymentMethodOptionsCashapp(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsCardPresent(TypedDict): + request_extended_authorization: NotRequired["bool|None"] + request_incremental_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_incremental_authorization_support: NotRequired["bool|None"] + + class ModifyParamsPaymentMethodOptionsCard(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + cvc_token: NotRequired["str|None"] + installments: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsCardInstallments|None" + ] + mandate_options: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsCardMandateOptions|None" + ] + moto: NotRequired["bool|None"] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_extended_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_incremental_authorization: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_multicapture: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_overcapture: NotRequired[ + "Literal['if_available', 'never']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + statement_descriptor_suffix_kana: NotRequired[ + "Literal['']|str|None" + ] + statement_descriptor_suffix_kanji: NotRequired[ + "Literal['']|str|None" + ] + + class ModifyParamsPaymentMethodOptionsCardMandateOptions(TypedDict): + amount: int + amount_type: Literal["fixed", "maximum"] + description: NotRequired["str|None"] + end_date: NotRequired["int|None"] + interval: Literal["day", "month", "sporadic", "week", "year"] + interval_count: NotRequired["int|None"] + reference: str + start_date: int + supported_types: NotRequired["List[Literal['india']]|None"] + + class ModifyParamsPaymentMethodOptionsCardInstallments(TypedDict): + enabled: NotRequired["bool|None"] + plan: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodOptionsCardInstallmentsPlan|None" + ] + + class ModifyParamsPaymentMethodOptionsCardInstallmentsPlan(TypedDict): + count: int + interval: Literal["month"] + type: Literal["fixed_count"] + + class ModifyParamsPaymentMethodOptionsBoleto(TypedDict): + expires_after_days: NotRequired["int|None"] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsBlik(TypedDict): + code: NotRequired["str|None"] + + class ModifyParamsPaymentMethodOptionsBancontact(TypedDict): + preferred_language: NotRequired[ + "Literal['de', 'en', 'fr', 'nl']|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsBacsDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsAuBecsDebit(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsAlipay(TypedDict): + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session']|None" + ] + + class ModifyParamsPaymentMethodOptionsAfterpayClearpay(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + reference: NotRequired["str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsAffirm(TypedDict): + capture_method: NotRequired["Literal['']|Literal['manual']|None"] + preferred_locale: NotRequired["str|None"] + setup_future_usage: NotRequired["Literal['none']|None"] + + class ModifyParamsPaymentMethodOptionsAcssDebit(TypedDict): + mandate_options: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + setup_future_usage: NotRequired[ + "Literal['']|Literal['none', 'off_session', 'on_session']|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + custom_mandate_url: NotRequired["Literal['']|str|None"] + interval_description: NotRequired["str|None"] + payment_schedule: NotRequired[ + "Literal['combined', 'interval', 'sporadic']|None" + ] + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class ModifyParamsPaymentMethodData(TypedDict): + acss_debit: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataAcssDebit|None" + ] + affirm: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataAfterpayClearpay|None" + ] + alipay: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataAlipay|None" + ] + au_becs_debit: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataBacsDebit|None" + ] + bancontact: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataBancontact|None" + ] + billing_details: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataBillingDetails|None" + ] + blik: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataBlik|None" + ] + boleto: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataBoleto|None" + ] + cashapp: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataCashapp|None" + ] + customer_balance: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataCustomerBalance|None" + ] + eps: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataEps|None" + ] + fpx: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataFpx|None" + ] + giropay: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataGiropay|None" + ] + grabpay: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataGrabpay|None" + ] + ideal: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataIdeal|None" + ] + interac_present: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataInteracPresent|None" + ] + klarna: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataKlarna|None" + ] + konbini: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataKonbini|None" + ] + link: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataLink|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + oxxo: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataOxxo|None" + ] + p24: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataP24|None" + ] + paynow: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataPaynow|None" + ] + paypal: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataPaypal|None" + ] + pix: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataPix|None" + ] + promptpay: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataPromptpay|None" + ] + radar_options: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataRadarOptions|None" + ] + sepa_debit: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataSepaDebit|None" + ] + sofort: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataSofort|None" + ] + type: Literal[ + "acss_debit", + "affirm", + "afterpay_clearpay", + "alipay", + "au_becs_debit", + "bacs_debit", + "bancontact", + "blik", + "boleto", + "cashapp", + "customer_balance", + "eps", + "fpx", + "giropay", + "grabpay", + "ideal", + "klarna", + "konbini", + "link", + "oxxo", + "p24", + "paynow", + "paypal", + "pix", + "promptpay", + "sepa_debit", + "sofort", + "us_bank_account", + "wechat_pay", + "zip", + ] + us_bank_account: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataWechatPay|None" + ] + zip: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataZip|None" + ] + + class ModifyParamsPaymentMethodDataZip(TypedDict): + pass + + class ModifyParamsPaymentMethodDataWechatPay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataSofort(TypedDict): + country: Literal["AT", "BE", "DE", "ES", "IT", "NL"] + + class ModifyParamsPaymentMethodDataSepaDebit(TypedDict): + iban: str + + class ModifyParamsPaymentMethodDataRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataPromptpay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataPix(TypedDict): + pass + + class ModifyParamsPaymentMethodDataPaypal(TypedDict): + pass + + class ModifyParamsPaymentMethodDataPaynow(TypedDict): + pass + + class ModifyParamsPaymentMethodDataP24(TypedDict): + bank: NotRequired[ + "Literal['alior_bank', 'bank_millennium', 'bank_nowy_bfg_sa', 'bank_pekao_sa', 'banki_spbdzielcze', 'blik', 'bnp_paribas', 'boz', 'citi_handlowy', 'credit_agricole', 'envelobank', 'etransfer_pocztowy24', 'getin_bank', 'ideabank', 'ing', 'inteligo', 'mbank_mtransfer', 'nest_przelew', 'noble_pay', 'pbac_z_ipko', 'plus_bank', 'santander_przelew24', 'tmobile_usbugi_bankowe', 'toyota_bank', 'volkswagen_bank']|None" + ] + + class ModifyParamsPaymentMethodDataOxxo(TypedDict): + pass + + class ModifyParamsPaymentMethodDataLink(TypedDict): + pass + + class ModifyParamsPaymentMethodDataKonbini(TypedDict): + pass + + class ModifyParamsPaymentMethodDataKlarna(TypedDict): + dob: NotRequired[ + "PaymentIntent.ModifyParamsPaymentMethodDataKlarnaDob|None" + ] + + class ModifyParamsPaymentMethodDataKlarnaDob(TypedDict): + day: int + month: int + year: int + + class ModifyParamsPaymentMethodDataInteracPresent(TypedDict): + pass + + class ModifyParamsPaymentMethodDataIdeal(TypedDict): + bank: NotRequired[ + "Literal['abn_amro', 'asn_bank', 'bunq', 'handelsbanken', 'ing', 'knab', 'moneyou', 'n26', 'rabobank', 'regiobank', 'revolut', 'sns_bank', 'triodos_bank', 'van_lanschot', 'yoursafe']|None" + ] + + class ModifyParamsPaymentMethodDataGrabpay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataGiropay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataFpx(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + bank: Literal[ + "affin_bank", + "agrobank", + "alliance_bank", + "ambank", + "bank_islam", + "bank_muamalat", + "bank_of_china", + "bank_rakyat", + "bsn", + "cimb", + "deutsche_bank", + "hong_leong_bank", + "hsbc", + "kfh", + "maybank2e", + "maybank2u", + "ocbc", + "pb_enterprise", + "public_bank", + "rhb", + "standard_chartered", + "uob", + ] + + class ModifyParamsPaymentMethodDataEps(TypedDict): + bank: NotRequired[ + "Literal['arzte_und_apotheker_bank', 'austrian_anadi_bank_ag', 'bank_austria', 'bankhaus_carl_spangler', 'bankhaus_schelhammer_und_schattera_ag', 'bawag_psk_ag', 'bks_bank_ag', 'brull_kallmus_bank_ag', 'btv_vier_lander_bank', 'capital_bank_grawe_gruppe_ag', 'deutsche_bank_ag', 'dolomitenbank', 'easybank_ag', 'erste_bank_und_sparkassen', 'hypo_alpeadriabank_international_ag', 'hypo_bank_burgenland_aktiengesellschaft', 'hypo_noe_lb_fur_niederosterreich_u_wien', 'hypo_oberosterreich_salzburg_steiermark', 'hypo_tirol_bank_ag', 'hypo_vorarlberg_bank_ag', 'marchfelder_bank', 'oberbank_ag', 'raiffeisen_bankengruppe_osterreich', 'schoellerbank_ag', 'sparda_bank_wien', 'volksbank_gruppe', 'volkskreditbank_ag', 'vr_bank_braunau']|None" + ] + + class ModifyParamsPaymentMethodDataCustomerBalance(TypedDict): + pass + + class ModifyParamsPaymentMethodDataCashapp(TypedDict): + pass + + class ModifyParamsPaymentMethodDataBoleto(TypedDict): + tax_id: str + + class ModifyParamsPaymentMethodDataBlik(TypedDict): + pass + + class ModifyParamsPaymentMethodDataBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|PaymentIntent.ModifyParamsPaymentMethodDataBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class ModifyParamsPaymentMethodDataBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataBancontact(TypedDict): + pass + + class ModifyParamsPaymentMethodDataBacsDebit(TypedDict): + account_number: NotRequired["str|None"] + sort_code: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataAuBecsDebit(TypedDict): + account_number: str + bsb_number: str + + class ModifyParamsPaymentMethodDataAlipay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataAfterpayClearpay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataAffirm(TypedDict): + pass + + class ModifyParamsPaymentMethodDataAcssDebit(TypedDict): + account_number: str + institution_number: str + transit_number: str + + class RetrieveParams(RequestOptions): + client_secret: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + + class VerifyMicrodepositsParams(RequestOptions): + amounts: NotRequired["List[int]|None"] + descriptor_code: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + + class SearchParams(RequestOptions): + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + page: NotRequired["str|None"] + query: str + amount: int amount_capturable: int amount_details: Optional[StripeObject] @@ -114,7 +2507,7 @@ def _cls_apply_customer_balance( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.ApplyCustomerBalanceParams"] ): return cls._static_request( "post", @@ -129,7 +2522,9 @@ def _cls_apply_customer_balance( @util.class_method_variant("_cls_apply_customer_balance") def apply_customer_balance( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentIntent.ApplyCustomerBalanceParams"] ): return self._request( "post", @@ -147,7 +2542,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.CancelParams"] ): return cls._static_request( "post", @@ -161,7 +2556,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentIntent.CancelParams"] + ): return self._request( "post", "/v1/payment_intents/{intent}/cancel".format( @@ -178,7 +2577,7 @@ def _cls_capture( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.CaptureParams"] ): return cls._static_request( "post", @@ -192,7 +2591,11 @@ def _cls_capture( ) @util.class_method_variant("_cls_capture") - def capture(self, idempotency_key: Optional[str] = None, **params: Any): + def capture( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentIntent.CaptureParams"] + ): return self._request( "post", "/v1/payment_intents/{intent}/capture".format( @@ -209,7 +2612,7 @@ def _cls_confirm( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.ConfirmParams"] ): return cls._static_request( "post", @@ -223,7 +2626,11 @@ def _cls_confirm( ) @util.class_method_variant("_cls_confirm") - def confirm(self, idempotency_key: Optional[str] = None, **params: Any): + def confirm( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentIntent.ConfirmParams"] + ): return self._request( "post", "/v1/payment_intents/{intent}/confirm".format( @@ -240,7 +2647,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.CreateParams"] ) -> "PaymentIntent": return cast( "PaymentIntent", @@ -262,7 +2669,7 @@ def _cls_increment_authorization( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.IncrementAuthorizationParams"] ): return cls._static_request( "post", @@ -277,7 +2684,9 @@ def _cls_increment_authorization( @util.class_method_variant("_cls_increment_authorization") def increment_authorization( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentIntent.IncrementAuthorizationParams"] ): return self._request( "post", @@ -294,7 +2703,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.ListParams"] ) -> ListObject["PaymentIntent"]: result = cls._static_request( "get", @@ -314,7 +2723,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "PaymentIntent": + def modify( + cls, id, **params: Unpack["PaymentIntent.ModifyParams"] + ) -> "PaymentIntent": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "PaymentIntent", @@ -323,9 +2734,9 @@ def modify(cls, id, **params: Any) -> "PaymentIntent": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["PaymentIntent.RetrieveParams"] ) -> "PaymentIntent": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -336,7 +2747,7 @@ def _cls_verify_microdeposits( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentIntent.VerifyMicrodepositsParams"] ): return cls._static_request( "post", @@ -351,7 +2762,9 @@ def _cls_verify_microdeposits( @util.class_method_variant("_cls_verify_microdeposits") def verify_microdeposits( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentIntent.VerifyMicrodepositsParams"] ): return self._request( "post", @@ -363,11 +2776,15 @@ def verify_microdeposits( ) @classmethod - def search(cls, *args, **kwargs) -> SearchResultObject["PaymentIntent"]: + def search( + cls, *args, **kwargs: Unpack["PaymentIntent.SearchParams"] + ) -> SearchResultObject["PaymentIntent"]: return cls._search( search_url="/v1/payment_intents/search", *args, **kwargs ) @classmethod - def search_auto_paging_iter(cls, *args, **kwargs): + def search_auto_paging_iter( + cls, *args, **kwargs: Unpack["PaymentIntent.SearchParams"] + ): return cls.search(*args, **kwargs).auto_paging_iter() diff --git a/stripe/api_resources/payment_link.py b/stripe/api_resources/payment_link.py index face44155..8994082c7 100644 --- a/stripe/api_resources/payment_link.py +++ b/stripe/api_resources/payment_link.py @@ -8,13 +8,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.application import Application @@ -35,6 +40,878 @@ class PaymentLink( """ OBJECT_NAME = "payment_link" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + after_completion: NotRequired[ + "PaymentLink.CreateParamsAfterCompletion|None" + ] + allow_promotion_codes: NotRequired["bool|None"] + application_fee_amount: NotRequired["int|None"] + application_fee_percent: NotRequired["float|None"] + automatic_tax: NotRequired[ + "PaymentLink.CreateParamsAutomaticTax|None" + ] + billing_address_collection: NotRequired[ + "Literal['auto', 'required']|None" + ] + consent_collection: NotRequired[ + "PaymentLink.CreateParamsConsentCollection|None" + ] + currency: NotRequired["str|None"] + custom_fields: NotRequired[ + "List[PaymentLink.CreateParamsCustomField]|None" + ] + custom_text: NotRequired["PaymentLink.CreateParamsCustomText|None"] + customer_creation: NotRequired[ + "Literal['always', 'if_required']|None" + ] + expand: NotRequired["List[str]|None"] + invoice_creation: NotRequired[ + "PaymentLink.CreateParamsInvoiceCreation|None" + ] + line_items: List["PaymentLink.CreateParamsLineItem"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + payment_intent_data: NotRequired[ + "PaymentLink.CreateParamsPaymentIntentData|None" + ] + payment_method_collection: NotRequired[ + "Literal['always', 'if_required']|None" + ] + payment_method_types: NotRequired[ + "List[Literal['affirm', 'afterpay_clearpay', 'alipay', 'au_becs_debit', 'bacs_debit', 'bancontact', 'blik', 'boleto', 'card', 'cashapp', 'eps', 'fpx', 'giropay', 'grabpay', 'ideal', 'klarna', 'konbini', 'link', 'oxxo', 'p24', 'paynow', 'paypal', 'pix', 'promptpay', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay']]|None" + ] + phone_number_collection: NotRequired[ + "PaymentLink.CreateParamsPhoneNumberCollection|None" + ] + shipping_address_collection: NotRequired[ + "PaymentLink.CreateParamsShippingAddressCollection|None" + ] + shipping_options: NotRequired[ + "List[PaymentLink.CreateParamsShippingOption]|None" + ] + submit_type: NotRequired[ + "Literal['auto', 'book', 'donate', 'pay']|None" + ] + subscription_data: NotRequired[ + "PaymentLink.CreateParamsSubscriptionData|None" + ] + tax_id_collection: NotRequired[ + "PaymentLink.CreateParamsTaxIdCollection|None" + ] + transfer_data: NotRequired[ + "PaymentLink.CreateParamsTransferData|None" + ] + + class CreateParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + destination: str + + class CreateParamsTaxIdCollection(TypedDict): + enabled: bool + + class CreateParamsSubscriptionData(TypedDict): + description: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + trial_period_days: NotRequired["int|None"] + + class CreateParamsShippingOption(TypedDict): + shipping_rate: NotRequired["str|None"] + + class CreateParamsShippingAddressCollection(TypedDict): + allowed_countries: List[ + Literal[ + "AC", + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CV", + "CW", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MK", + "ML", + "MM", + "MN", + "MO", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SZ", + "TA", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + "ZZ", + ] + ] + + class CreateParamsPhoneNumberCollection(TypedDict): + enabled: bool + + class CreateParamsPaymentIntentData(TypedDict): + capture_method: NotRequired[ + "Literal['automatic', 'automatic_async', 'manual']|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + setup_future_usage: NotRequired[ + "Literal['off_session', 'on_session']|None" + ] + statement_descriptor: NotRequired["str|None"] + statement_descriptor_suffix: NotRequired["str|None"] + + class CreateParamsLineItem(TypedDict): + adjustable_quantity: NotRequired[ + "PaymentLink.CreateParamsLineItemAdjustableQuantity|None" + ] + price: str + quantity: int + + class CreateParamsLineItemAdjustableQuantity(TypedDict): + enabled: bool + maximum: NotRequired["int|None"] + minimum: NotRequired["int|None"] + + class CreateParamsInvoiceCreation(TypedDict): + enabled: bool + invoice_data: NotRequired[ + "PaymentLink.CreateParamsInvoiceCreationInvoiceData|None" + ] + + class CreateParamsInvoiceCreationInvoiceData(TypedDict): + account_tax_ids: NotRequired["Literal['']|List[str]|None"] + custom_fields: NotRequired[ + "Literal['']|List[PaymentLink.CreateParamsInvoiceCreationInvoiceDataCustomField]|None" + ] + description: NotRequired["str|None"] + footer: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + rendering_options: NotRequired[ + "Literal['']|PaymentLink.CreateParamsInvoiceCreationInvoiceDataRenderingOptions|None" + ] + + class CreateParamsInvoiceCreationInvoiceDataRenderingOptions( + TypedDict + ): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + + class CreateParamsInvoiceCreationInvoiceDataCustomField(TypedDict): + name: str + value: str + + class CreateParamsCustomText(TypedDict): + shipping_address: NotRequired[ + "Literal['']|PaymentLink.CreateParamsCustomTextShippingAddress|None" + ] + submit: NotRequired[ + "Literal['']|PaymentLink.CreateParamsCustomTextSubmit|None" + ] + terms_of_service_acceptance: NotRequired[ + "Literal['']|PaymentLink.CreateParamsCustomTextTermsOfServiceAcceptance|None" + ] + + class CreateParamsCustomTextTermsOfServiceAcceptance(TypedDict): + message: str + + class CreateParamsCustomTextSubmit(TypedDict): + message: str + + class CreateParamsCustomTextShippingAddress(TypedDict): + message: str + + class CreateParamsCustomField(TypedDict): + dropdown: NotRequired[ + "PaymentLink.CreateParamsCustomFieldDropdown|None" + ] + key: str + label: "PaymentLink.CreateParamsCustomFieldLabel" + numeric: NotRequired[ + "PaymentLink.CreateParamsCustomFieldNumeric|None" + ] + optional: NotRequired["bool|None"] + text: NotRequired["PaymentLink.CreateParamsCustomFieldText|None"] + type: Literal["dropdown", "numeric", "text"] + + class CreateParamsCustomFieldText(TypedDict): + maximum_length: NotRequired["int|None"] + minimum_length: NotRequired["int|None"] + + class CreateParamsCustomFieldNumeric(TypedDict): + maximum_length: NotRequired["int|None"] + minimum_length: NotRequired["int|None"] + + class CreateParamsCustomFieldLabel(TypedDict): + custom: str + type: Literal["custom"] + + class CreateParamsCustomFieldDropdown(TypedDict): + options: List["PaymentLink.CreateParamsCustomFieldDropdownOption"] + + class CreateParamsCustomFieldDropdownOption(TypedDict): + label: str + value: str + + class CreateParamsConsentCollection(TypedDict): + promotions: NotRequired["Literal['auto', 'none']|None"] + terms_of_service: NotRequired["Literal['none', 'required']|None"] + + class CreateParamsAutomaticTax(TypedDict): + enabled: bool + + class CreateParamsAfterCompletion(TypedDict): + hosted_confirmation: NotRequired[ + "PaymentLink.CreateParamsAfterCompletionHostedConfirmation|None" + ] + redirect: NotRequired[ + "PaymentLink.CreateParamsAfterCompletionRedirect|None" + ] + type: Literal["hosted_confirmation", "redirect"] + + class CreateParamsAfterCompletionRedirect(TypedDict): + url: str + + class CreateParamsAfterCompletionHostedConfirmation(TypedDict): + custom_message: NotRequired["str|None"] + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListLineItemsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + after_completion: NotRequired[ + "PaymentLink.ModifyParamsAfterCompletion|None" + ] + allow_promotion_codes: NotRequired["bool|None"] + automatic_tax: NotRequired[ + "PaymentLink.ModifyParamsAutomaticTax|None" + ] + billing_address_collection: NotRequired[ + "Literal['auto', 'required']|None" + ] + custom_fields: NotRequired[ + "Literal['']|List[PaymentLink.ModifyParamsCustomField]|None" + ] + custom_text: NotRequired["PaymentLink.ModifyParamsCustomText|None"] + customer_creation: NotRequired[ + "Literal['always', 'if_required']|None" + ] + expand: NotRequired["List[str]|None"] + invoice_creation: NotRequired[ + "PaymentLink.ModifyParamsInvoiceCreation|None" + ] + line_items: NotRequired[ + "List[PaymentLink.ModifyParamsLineItem]|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + payment_intent_data: NotRequired[ + "PaymentLink.ModifyParamsPaymentIntentData|None" + ] + payment_method_collection: NotRequired[ + "Literal['always', 'if_required']|None" + ] + payment_method_types: NotRequired[ + "Literal['']|List[Literal['affirm', 'afterpay_clearpay', 'alipay', 'au_becs_debit', 'bacs_debit', 'bancontact', 'blik', 'boleto', 'card', 'cashapp', 'eps', 'fpx', 'giropay', 'grabpay', 'ideal', 'klarna', 'konbini', 'link', 'oxxo', 'p24', 'paynow', 'paypal', 'pix', 'promptpay', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay']]|None" + ] + shipping_address_collection: NotRequired[ + "Literal['']|PaymentLink.ModifyParamsShippingAddressCollection|None" + ] + subscription_data: NotRequired[ + "PaymentLink.ModifyParamsSubscriptionData|None" + ] + + class ModifyParamsSubscriptionData(TypedDict): + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ModifyParamsShippingAddressCollection(TypedDict): + allowed_countries: List[ + Literal[ + "AC", + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CV", + "CW", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MK", + "ML", + "MM", + "MN", + "MO", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SZ", + "TA", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + "ZZ", + ] + ] + + class ModifyParamsPaymentIntentData(TypedDict): + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + statement_descriptor: NotRequired["Literal['']|str|None"] + statement_descriptor_suffix: NotRequired["Literal['']|str|None"] + + class ModifyParamsLineItem(TypedDict): + adjustable_quantity: NotRequired[ + "PaymentLink.ModifyParamsLineItemAdjustableQuantity|None" + ] + id: str + quantity: NotRequired["int|None"] + + class ModifyParamsLineItemAdjustableQuantity(TypedDict): + enabled: bool + maximum: NotRequired["int|None"] + minimum: NotRequired["int|None"] + + class ModifyParamsInvoiceCreation(TypedDict): + enabled: bool + invoice_data: NotRequired[ + "PaymentLink.ModifyParamsInvoiceCreationInvoiceData|None" + ] + + class ModifyParamsInvoiceCreationInvoiceData(TypedDict): + account_tax_ids: NotRequired["Literal['']|List[str]|None"] + custom_fields: NotRequired[ + "Literal['']|List[PaymentLink.ModifyParamsInvoiceCreationInvoiceDataCustomField]|None" + ] + description: NotRequired["str|None"] + footer: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + rendering_options: NotRequired[ + "Literal['']|PaymentLink.ModifyParamsInvoiceCreationInvoiceDataRenderingOptions|None" + ] + + class ModifyParamsInvoiceCreationInvoiceDataRenderingOptions( + TypedDict + ): + amount_tax_display: NotRequired[ + "Literal['']|Literal['exclude_tax', 'include_inclusive_tax']|None" + ] + + class ModifyParamsInvoiceCreationInvoiceDataCustomField(TypedDict): + name: str + value: str + + class ModifyParamsCustomText(TypedDict): + shipping_address: NotRequired[ + "Literal['']|PaymentLink.ModifyParamsCustomTextShippingAddress|None" + ] + submit: NotRequired[ + "Literal['']|PaymentLink.ModifyParamsCustomTextSubmit|None" + ] + terms_of_service_acceptance: NotRequired[ + "Literal['']|PaymentLink.ModifyParamsCustomTextTermsOfServiceAcceptance|None" + ] + + class ModifyParamsCustomTextTermsOfServiceAcceptance(TypedDict): + message: str + + class ModifyParamsCustomTextSubmit(TypedDict): + message: str + + class ModifyParamsCustomTextShippingAddress(TypedDict): + message: str + + class ModifyParamsCustomField(TypedDict): + dropdown: NotRequired[ + "PaymentLink.ModifyParamsCustomFieldDropdown|None" + ] + key: str + label: "PaymentLink.ModifyParamsCustomFieldLabel" + numeric: NotRequired[ + "PaymentLink.ModifyParamsCustomFieldNumeric|None" + ] + optional: NotRequired["bool|None"] + text: NotRequired["PaymentLink.ModifyParamsCustomFieldText|None"] + type: Literal["dropdown", "numeric", "text"] + + class ModifyParamsCustomFieldText(TypedDict): + maximum_length: NotRequired["int|None"] + minimum_length: NotRequired["int|None"] + + class ModifyParamsCustomFieldNumeric(TypedDict): + maximum_length: NotRequired["int|None"] + minimum_length: NotRequired["int|None"] + + class ModifyParamsCustomFieldLabel(TypedDict): + custom: str + type: Literal["custom"] + + class ModifyParamsCustomFieldDropdown(TypedDict): + options: List["PaymentLink.ModifyParamsCustomFieldDropdownOption"] + + class ModifyParamsCustomFieldDropdownOption(TypedDict): + label: str + value: str + + class ModifyParamsAutomaticTax(TypedDict): + enabled: bool + + class ModifyParamsAfterCompletion(TypedDict): + hosted_confirmation: NotRequired[ + "PaymentLink.ModifyParamsAfterCompletionHostedConfirmation|None" + ] + redirect: NotRequired[ + "PaymentLink.ModifyParamsAfterCompletionRedirect|None" + ] + type: Literal["hosted_confirmation", "redirect"] + + class ModifyParamsAfterCompletionRedirect(TypedDict): + url: str + + class ModifyParamsAfterCompletionHostedConfirmation(TypedDict): + custom_message: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + active: bool after_completion: StripeObject allow_promotion_codes: bool @@ -107,7 +984,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentLink.CreateParams"] ) -> "PaymentLink": return cast( "PaymentLink", @@ -128,7 +1005,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentLink.ListParams"] ) -> ListObject["PaymentLink"]: result = cls._static_request( "get", @@ -154,7 +1031,7 @@ def _cls_list_line_items( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentLink.ListLineItemsParams"] ): return cls._static_request( "get", @@ -169,7 +1046,9 @@ def _cls_list_line_items( @util.class_method_variant("_cls_list_line_items") def list_line_items( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentLink.ListLineItemsParams"] ): return self._request( "get", @@ -181,7 +1060,9 @@ def list_line_items( ) @classmethod - def modify(cls, id, **params: Any) -> "PaymentLink": + def modify( + cls, id, **params: Unpack["PaymentLink.ModifyParams"] + ) -> "PaymentLink": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "PaymentLink", @@ -190,8 +1071,8 @@ def modify(cls, id, **params: Any) -> "PaymentLink": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["PaymentLink.RetrieveParams"] ) -> "PaymentLink": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/payment_method.py b/stripe/api_resources/payment_method.py index 3a7545df2..e73da4d12 100644 --- a/stripe/api_resources/payment_method.py +++ b/stripe/api_resources/payment_method.py @@ -8,13 +8,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.customer import Customer @@ -33,6 +38,297 @@ class PaymentMethod( """ OBJECT_NAME = "payment_method" + if TYPE_CHECKING: + + class AttachParams(RequestOptions): + customer: str + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + acss_debit: NotRequired["PaymentMethod.CreateParamsAcssDebit|None"] + affirm: NotRequired["PaymentMethod.CreateParamsAffirm|None"] + afterpay_clearpay: NotRequired[ + "PaymentMethod.CreateParamsAfterpayClearpay|None" + ] + alipay: NotRequired["PaymentMethod.CreateParamsAlipay|None"] + au_becs_debit: NotRequired[ + "PaymentMethod.CreateParamsAuBecsDebit|None" + ] + bacs_debit: NotRequired["PaymentMethod.CreateParamsBacsDebit|None"] + bancontact: NotRequired[ + "PaymentMethod.CreateParamsBancontact|None" + ] + billing_details: NotRequired[ + "PaymentMethod.CreateParamsBillingDetails|None" + ] + blik: NotRequired["PaymentMethod.CreateParamsBlik|None"] + boleto: NotRequired["PaymentMethod.CreateParamsBoleto|None"] + card: NotRequired[ + "PaymentMethod.CreateParamsCard|PaymentMethod.CreateParamsCard2|None" + ] + cashapp: NotRequired["PaymentMethod.CreateParamsCashapp|None"] + customer: NotRequired["str|None"] + customer_balance: NotRequired[ + "PaymentMethod.CreateParamsCustomerBalance|None" + ] + eps: NotRequired["PaymentMethod.CreateParamsEps|None"] + expand: NotRequired["List[str]|None"] + fpx: NotRequired["PaymentMethod.CreateParamsFpx|None"] + giropay: NotRequired["PaymentMethod.CreateParamsGiropay|None"] + grabpay: NotRequired["PaymentMethod.CreateParamsGrabpay|None"] + ideal: NotRequired["PaymentMethod.CreateParamsIdeal|None"] + interac_present: NotRequired[ + "PaymentMethod.CreateParamsInteracPresent|None" + ] + klarna: NotRequired["PaymentMethod.CreateParamsKlarna|None"] + konbini: NotRequired["PaymentMethod.CreateParamsKonbini|None"] + link: NotRequired["PaymentMethod.CreateParamsLink|None"] + metadata: NotRequired["Dict[str, str]|None"] + oxxo: NotRequired["PaymentMethod.CreateParamsOxxo|None"] + p24: NotRequired["PaymentMethod.CreateParamsP24|None"] + payment_method: NotRequired["str|None"] + paynow: NotRequired["PaymentMethod.CreateParamsPaynow|None"] + paypal: NotRequired["PaymentMethod.CreateParamsPaypal|None"] + pix: NotRequired["PaymentMethod.CreateParamsPix|None"] + promptpay: NotRequired["PaymentMethod.CreateParamsPromptpay|None"] + radar_options: NotRequired[ + "PaymentMethod.CreateParamsRadarOptions|None" + ] + sepa_debit: NotRequired["PaymentMethod.CreateParamsSepaDebit|None"] + sofort: NotRequired["PaymentMethod.CreateParamsSofort|None"] + type: NotRequired[ + "Literal['acss_debit', 'affirm', 'afterpay_clearpay', 'alipay', 'au_becs_debit', 'bacs_debit', 'bancontact', 'blik', 'boleto', 'card', 'cashapp', 'customer_balance', 'eps', 'fpx', 'giropay', 'grabpay', 'ideal', 'klarna', 'konbini', 'link', 'oxxo', 'p24', 'paynow', 'paypal', 'pix', 'promptpay', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay', 'zip']|None" + ] + us_bank_account: NotRequired[ + "PaymentMethod.CreateParamsUsBankAccount|None" + ] + wechat_pay: NotRequired["PaymentMethod.CreateParamsWechatPay|None"] + zip: NotRequired["PaymentMethod.CreateParamsZip|None"] + + class CreateParamsZip(TypedDict): + pass + + class CreateParamsWechatPay(TypedDict): + pass + + class CreateParamsUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class CreateParamsSofort(TypedDict): + country: Literal["AT", "BE", "DE", "ES", "IT", "NL"] + + class CreateParamsSepaDebit(TypedDict): + iban: str + + class CreateParamsRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class CreateParamsPromptpay(TypedDict): + pass + + class CreateParamsPix(TypedDict): + pass + + class CreateParamsPaypal(TypedDict): + pass + + class CreateParamsPaynow(TypedDict): + pass + + class CreateParamsP24(TypedDict): + bank: NotRequired[ + "Literal['alior_bank', 'bank_millennium', 'bank_nowy_bfg_sa', 'bank_pekao_sa', 'banki_spbdzielcze', 'blik', 'bnp_paribas', 'boz', 'citi_handlowy', 'credit_agricole', 'envelobank', 'etransfer_pocztowy24', 'getin_bank', 'ideabank', 'ing', 'inteligo', 'mbank_mtransfer', 'nest_przelew', 'noble_pay', 'pbac_z_ipko', 'plus_bank', 'santander_przelew24', 'tmobile_usbugi_bankowe', 'toyota_bank', 'volkswagen_bank']|None" + ] + + class CreateParamsOxxo(TypedDict): + pass + + class CreateParamsLink(TypedDict): + pass + + class CreateParamsKonbini(TypedDict): + pass + + class CreateParamsKlarna(TypedDict): + dob: NotRequired["PaymentMethod.CreateParamsKlarnaDob|None"] + + class CreateParamsKlarnaDob(TypedDict): + day: int + month: int + year: int + + class CreateParamsInteracPresent(TypedDict): + pass + + class CreateParamsIdeal(TypedDict): + bank: NotRequired[ + "Literal['abn_amro', 'asn_bank', 'bunq', 'handelsbanken', 'ing', 'knab', 'moneyou', 'n26', 'rabobank', 'regiobank', 'revolut', 'sns_bank', 'triodos_bank', 'van_lanschot', 'yoursafe']|None" + ] + + class CreateParamsGrabpay(TypedDict): + pass + + class CreateParamsGiropay(TypedDict): + pass + + class CreateParamsFpx(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + bank: Literal[ + "affin_bank", + "agrobank", + "alliance_bank", + "ambank", + "bank_islam", + "bank_muamalat", + "bank_of_china", + "bank_rakyat", + "bsn", + "cimb", + "deutsche_bank", + "hong_leong_bank", + "hsbc", + "kfh", + "maybank2e", + "maybank2u", + "ocbc", + "pb_enterprise", + "public_bank", + "rhb", + "standard_chartered", + "uob", + ] + + class CreateParamsEps(TypedDict): + bank: NotRequired[ + "Literal['arzte_und_apotheker_bank', 'austrian_anadi_bank_ag', 'bank_austria', 'bankhaus_carl_spangler', 'bankhaus_schelhammer_und_schattera_ag', 'bawag_psk_ag', 'bks_bank_ag', 'brull_kallmus_bank_ag', 'btv_vier_lander_bank', 'capital_bank_grawe_gruppe_ag', 'deutsche_bank_ag', 'dolomitenbank', 'easybank_ag', 'erste_bank_und_sparkassen', 'hypo_alpeadriabank_international_ag', 'hypo_bank_burgenland_aktiengesellschaft', 'hypo_noe_lb_fur_niederosterreich_u_wien', 'hypo_oberosterreich_salzburg_steiermark', 'hypo_tirol_bank_ag', 'hypo_vorarlberg_bank_ag', 'marchfelder_bank', 'oberbank_ag', 'raiffeisen_bankengruppe_osterreich', 'schoellerbank_ag', 'sparda_bank_wien', 'volksbank_gruppe', 'volkskreditbank_ag', 'vr_bank_braunau']|None" + ] + + class CreateParamsCustomerBalance(TypedDict): + pass + + class CreateParamsCashapp(TypedDict): + pass + + class CreateParamsCard2(TypedDict): + token: str + + class CreateParamsCard(TypedDict): + cvc: NotRequired["str|None"] + exp_month: int + exp_year: int + number: str + + class CreateParamsBoleto(TypedDict): + tax_id: str + + class CreateParamsBlik(TypedDict): + pass + + class CreateParamsBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|PaymentMethod.CreateParamsBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class CreateParamsBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsBancontact(TypedDict): + pass + + class CreateParamsBacsDebit(TypedDict): + account_number: NotRequired["str|None"] + sort_code: NotRequired["str|None"] + + class CreateParamsAuBecsDebit(TypedDict): + account_number: str + bsb_number: str + + class CreateParamsAlipay(TypedDict): + pass + + class CreateParamsAfterpayClearpay(TypedDict): + pass + + class CreateParamsAffirm(TypedDict): + pass + + class CreateParamsAcssDebit(TypedDict): + account_number: str + institution_number: str + transit_number: str + + class DetachParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListParams(RequestOptions): + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + type: NotRequired[ + "Literal['acss_debit', 'affirm', 'afterpay_clearpay', 'alipay', 'au_becs_debit', 'bacs_debit', 'bancontact', 'blik', 'boleto', 'card', 'cashapp', 'customer_balance', 'eps', 'fpx', 'giropay', 'grabpay', 'ideal', 'klarna', 'konbini', 'link', 'oxxo', 'p24', 'paynow', 'paypal', 'pix', 'promptpay', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay', 'zip']|None" + ] + + class ModifyParams(RequestOptions): + billing_details: NotRequired[ + "PaymentMethod.ModifyParamsBillingDetails|None" + ] + card: NotRequired["PaymentMethod.ModifyParamsCard|None"] + expand: NotRequired["List[str]|None"] + link: NotRequired["PaymentMethod.ModifyParamsLink|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + us_bank_account: NotRequired[ + "PaymentMethod.ModifyParamsUsBankAccount|None" + ] + + class ModifyParamsUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + + class ModifyParamsLink(TypedDict): + pass + + class ModifyParamsCard(TypedDict): + exp_month: NotRequired["int|None"] + exp_year: NotRequired["int|None"] + + class ModifyParamsBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|PaymentMethod.ModifyParamsBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class ModifyParamsBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + acss_debit: Optional[StripeObject] affirm: Optional[StripeObject] afterpay_clearpay: Optional[StripeObject] @@ -117,7 +413,7 @@ def _cls_attach( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethod.AttachParams"] ): return cls._static_request( "post", @@ -131,7 +427,11 @@ def _cls_attach( ) @util.class_method_variant("_cls_attach") - def attach(self, idempotency_key: Optional[str] = None, **params: Any): + def attach( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentMethod.AttachParams"] + ): return self._request( "post", "/v1/payment_methods/{payment_method}/attach".format( @@ -148,7 +448,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethod.CreateParams"] ) -> "PaymentMethod": return cast( "PaymentMethod", @@ -170,7 +470,7 @@ def _cls_detach( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethod.DetachParams"] ): return cls._static_request( "post", @@ -184,7 +484,11 @@ def _cls_detach( ) @util.class_method_variant("_cls_detach") - def detach(self, idempotency_key: Optional[str] = None, **params: Any): + def detach( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentMethod.DetachParams"] + ): return self._request( "post", "/v1/payment_methods/{payment_method}/detach".format( @@ -200,7 +504,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethod.ListParams"] ) -> ListObject["PaymentMethod"]: result = cls._static_request( "get", @@ -220,7 +524,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "PaymentMethod": + def modify( + cls, id, **params: Unpack["PaymentMethod.ModifyParams"] + ) -> "PaymentMethod": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "PaymentMethod", @@ -229,8 +535,8 @@ def modify(cls, id, **params: Any) -> "PaymentMethod": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["PaymentMethod.RetrieveParams"] ) -> "PaymentMethod": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/payment_method_configuration.py b/stripe/api_resources/payment_method_configuration.py index f0280c844..f7099f140 100644 --- a/stripe/api_resources/payment_method_configuration.py +++ b/stripe/api_resources/payment_method_configuration.py @@ -6,9 +6,16 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -35,6 +42,735 @@ class PaymentMethodConfiguration( """ OBJECT_NAME = "payment_method_configuration" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + acss_debit: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAcssDebit|None" + ] + affirm: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAfterpayClearpay|None" + ] + alipay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAlipay|None" + ] + apple_pay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsApplePay|None" + ] + apple_pay_later: NotRequired[ + "PaymentMethodConfiguration.CreateParamsApplePayLater|None" + ] + au_becs_debit: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBacsDebit|None" + ] + bancontact: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBancontact|None" + ] + blik: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBlik|None" + ] + boleto: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBoleto|None" + ] + card: NotRequired[ + "PaymentMethodConfiguration.CreateParamsCard|None" + ] + cartes_bancaires: NotRequired[ + "PaymentMethodConfiguration.CreateParamsCartesBancaires|None" + ] + cashapp: NotRequired[ + "PaymentMethodConfiguration.CreateParamsCashapp|None" + ] + eps: NotRequired["PaymentMethodConfiguration.CreateParamsEps|None"] + expand: NotRequired["List[str]|None"] + fpx: NotRequired["PaymentMethodConfiguration.CreateParamsFpx|None"] + giropay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsGiropay|None" + ] + google_pay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsGooglePay|None" + ] + grabpay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsGrabpay|None" + ] + ideal: NotRequired[ + "PaymentMethodConfiguration.CreateParamsIdeal|None" + ] + jcb: NotRequired["PaymentMethodConfiguration.CreateParamsJcb|None"] + klarna: NotRequired[ + "PaymentMethodConfiguration.CreateParamsKlarna|None" + ] + konbini: NotRequired[ + "PaymentMethodConfiguration.CreateParamsKonbini|None" + ] + link: NotRequired[ + "PaymentMethodConfiguration.CreateParamsLink|None" + ] + name: NotRequired["str|None"] + oxxo: NotRequired[ + "PaymentMethodConfiguration.CreateParamsOxxo|None" + ] + p24: NotRequired["PaymentMethodConfiguration.CreateParamsP24|None"] + parent: NotRequired["str|None"] + paynow: NotRequired[ + "PaymentMethodConfiguration.CreateParamsPaynow|None" + ] + paypal: NotRequired[ + "PaymentMethodConfiguration.CreateParamsPaypal|None" + ] + promptpay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsPromptpay|None" + ] + sepa_debit: NotRequired[ + "PaymentMethodConfiguration.CreateParamsSepaDebit|None" + ] + sofort: NotRequired[ + "PaymentMethodConfiguration.CreateParamsSofort|None" + ] + us_bank_account: NotRequired[ + "PaymentMethodConfiguration.CreateParamsUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "PaymentMethodConfiguration.CreateParamsWechatPay|None" + ] + + class CreateParamsWechatPay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsWechatPayDisplayPreference|None" + ] + + class CreateParamsWechatPayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsUsBankAccount(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsUsBankAccountDisplayPreference|None" + ] + + class CreateParamsUsBankAccountDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsSofort(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsSofortDisplayPreference|None" + ] + + class CreateParamsSofortDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsSepaDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsSepaDebitDisplayPreference|None" + ] + + class CreateParamsSepaDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsPromptpay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsPromptpayDisplayPreference|None" + ] + + class CreateParamsPromptpayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsPaypal(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsPaypalDisplayPreference|None" + ] + + class CreateParamsPaypalDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsPaynow(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsPaynowDisplayPreference|None" + ] + + class CreateParamsPaynowDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsP24(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsP24DisplayPreference|None" + ] + + class CreateParamsP24DisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsOxxo(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsOxxoDisplayPreference|None" + ] + + class CreateParamsOxxoDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsLink(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsLinkDisplayPreference|None" + ] + + class CreateParamsLinkDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsKonbini(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsKonbiniDisplayPreference|None" + ] + + class CreateParamsKonbiniDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsKlarna(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsKlarnaDisplayPreference|None" + ] + + class CreateParamsKlarnaDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsJcb(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsJcbDisplayPreference|None" + ] + + class CreateParamsJcbDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsIdeal(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsIdealDisplayPreference|None" + ] + + class CreateParamsIdealDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsGrabpay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsGrabpayDisplayPreference|None" + ] + + class CreateParamsGrabpayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsGooglePay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsGooglePayDisplayPreference|None" + ] + + class CreateParamsGooglePayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsGiropay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsGiropayDisplayPreference|None" + ] + + class CreateParamsGiropayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsFpx(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsFpxDisplayPreference|None" + ] + + class CreateParamsFpxDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsEps(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsEpsDisplayPreference|None" + ] + + class CreateParamsEpsDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsCashapp(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsCashappDisplayPreference|None" + ] + + class CreateParamsCashappDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsCartesBancaires(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsCartesBancairesDisplayPreference|None" + ] + + class CreateParamsCartesBancairesDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsCard(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsCardDisplayPreference|None" + ] + + class CreateParamsCardDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsBoleto(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBoletoDisplayPreference|None" + ] + + class CreateParamsBoletoDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsBlik(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBlikDisplayPreference|None" + ] + + class CreateParamsBlikDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsBancontact(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBancontactDisplayPreference|None" + ] + + class CreateParamsBancontactDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsBacsDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsBacsDebitDisplayPreference|None" + ] + + class CreateParamsBacsDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsAuBecsDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAuBecsDebitDisplayPreference|None" + ] + + class CreateParamsAuBecsDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsApplePayLater(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsApplePayLaterDisplayPreference|None" + ] + + class CreateParamsApplePayLaterDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsApplePay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsApplePayDisplayPreference|None" + ] + + class CreateParamsApplePayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsAlipay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAlipayDisplayPreference|None" + ] + + class CreateParamsAlipayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsAfterpayClearpay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAfterpayClearpayDisplayPreference|None" + ] + + class CreateParamsAfterpayClearpayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsAffirm(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAffirmDisplayPreference|None" + ] + + class CreateParamsAffirmDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class CreateParamsAcssDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.CreateParamsAcssDebitDisplayPreference|None" + ] + + class CreateParamsAcssDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ListParams(RequestOptions): + application: NotRequired["Literal['']|str|None"] + expand: NotRequired["List[str]|None"] + + class ModifyParams(RequestOptions): + acss_debit: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAcssDebit|None" + ] + active: NotRequired["bool|None"] + affirm: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAfterpayClearpay|None" + ] + alipay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAlipay|None" + ] + apple_pay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsApplePay|None" + ] + apple_pay_later: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsApplePayLater|None" + ] + au_becs_debit: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBacsDebit|None" + ] + bancontact: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBancontact|None" + ] + blik: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBlik|None" + ] + boleto: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBoleto|None" + ] + card: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsCard|None" + ] + cartes_bancaires: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsCartesBancaires|None" + ] + cashapp: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsCashapp|None" + ] + eps: NotRequired["PaymentMethodConfiguration.ModifyParamsEps|None"] + expand: NotRequired["List[str]|None"] + fpx: NotRequired["PaymentMethodConfiguration.ModifyParamsFpx|None"] + giropay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsGiropay|None" + ] + google_pay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsGooglePay|None" + ] + grabpay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsGrabpay|None" + ] + ideal: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsIdeal|None" + ] + jcb: NotRequired["PaymentMethodConfiguration.ModifyParamsJcb|None"] + klarna: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsKlarna|None" + ] + konbini: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsKonbini|None" + ] + link: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsLink|None" + ] + name: NotRequired["str|None"] + oxxo: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsOxxo|None" + ] + p24: NotRequired["PaymentMethodConfiguration.ModifyParamsP24|None"] + paynow: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsPaynow|None" + ] + paypal: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsPaypal|None" + ] + promptpay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsPromptpay|None" + ] + sepa_debit: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsSepaDebit|None" + ] + sofort: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsSofort|None" + ] + us_bank_account: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsWechatPay|None" + ] + + class ModifyParamsWechatPay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsWechatPayDisplayPreference|None" + ] + + class ModifyParamsWechatPayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsUsBankAccount(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsUsBankAccountDisplayPreference|None" + ] + + class ModifyParamsUsBankAccountDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsSofort(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsSofortDisplayPreference|None" + ] + + class ModifyParamsSofortDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsSepaDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsSepaDebitDisplayPreference|None" + ] + + class ModifyParamsSepaDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsPromptpay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsPromptpayDisplayPreference|None" + ] + + class ModifyParamsPromptpayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsPaypal(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsPaypalDisplayPreference|None" + ] + + class ModifyParamsPaypalDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsPaynow(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsPaynowDisplayPreference|None" + ] + + class ModifyParamsPaynowDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsP24(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsP24DisplayPreference|None" + ] + + class ModifyParamsP24DisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsOxxo(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsOxxoDisplayPreference|None" + ] + + class ModifyParamsOxxoDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsLink(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsLinkDisplayPreference|None" + ] + + class ModifyParamsLinkDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsKonbini(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsKonbiniDisplayPreference|None" + ] + + class ModifyParamsKonbiniDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsKlarna(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsKlarnaDisplayPreference|None" + ] + + class ModifyParamsKlarnaDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsJcb(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsJcbDisplayPreference|None" + ] + + class ModifyParamsJcbDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsIdeal(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsIdealDisplayPreference|None" + ] + + class ModifyParamsIdealDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsGrabpay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsGrabpayDisplayPreference|None" + ] + + class ModifyParamsGrabpayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsGooglePay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsGooglePayDisplayPreference|None" + ] + + class ModifyParamsGooglePayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsGiropay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsGiropayDisplayPreference|None" + ] + + class ModifyParamsGiropayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsFpx(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsFpxDisplayPreference|None" + ] + + class ModifyParamsFpxDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsEps(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsEpsDisplayPreference|None" + ] + + class ModifyParamsEpsDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsCashapp(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsCashappDisplayPreference|None" + ] + + class ModifyParamsCashappDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsCartesBancaires(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsCartesBancairesDisplayPreference|None" + ] + + class ModifyParamsCartesBancairesDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsCard(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsCardDisplayPreference|None" + ] + + class ModifyParamsCardDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsBoleto(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBoletoDisplayPreference|None" + ] + + class ModifyParamsBoletoDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsBlik(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBlikDisplayPreference|None" + ] + + class ModifyParamsBlikDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsBancontact(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBancontactDisplayPreference|None" + ] + + class ModifyParamsBancontactDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsBacsDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsBacsDebitDisplayPreference|None" + ] + + class ModifyParamsBacsDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsAuBecsDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAuBecsDebitDisplayPreference|None" + ] + + class ModifyParamsAuBecsDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsApplePayLater(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsApplePayLaterDisplayPreference|None" + ] + + class ModifyParamsApplePayLaterDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsApplePay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsApplePayDisplayPreference|None" + ] + + class ModifyParamsApplePayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsAlipay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAlipayDisplayPreference|None" + ] + + class ModifyParamsAlipayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsAfterpayClearpay(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAfterpayClearpayDisplayPreference|None" + ] + + class ModifyParamsAfterpayClearpayDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsAffirm(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAffirmDisplayPreference|None" + ] + + class ModifyParamsAffirmDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class ModifyParamsAcssDebit(TypedDict): + display_preference: NotRequired[ + "PaymentMethodConfiguration.ModifyParamsAcssDebitDisplayPreference|None" + ] + + class ModifyParamsAcssDebitDisplayPreference(TypedDict): + preference: NotRequired["Literal['none', 'off', 'on']|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + acss_debit: Optional[StripeObject] active: bool affirm: Optional[StripeObject] @@ -88,7 +824,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethodConfiguration.CreateParams"] ) -> "PaymentMethodConfiguration": return cast( "PaymentMethodConfiguration", @@ -109,7 +845,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethodConfiguration.ListParams"] ) -> ListObject["PaymentMethodConfiguration"]: result = cls._static_request( "get", @@ -129,7 +865,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "PaymentMethodConfiguration": + def modify( + cls, id, **params: Unpack["PaymentMethodConfiguration.ModifyParams"] + ) -> "PaymentMethodConfiguration": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "PaymentMethodConfiguration", @@ -138,8 +876,10 @@ def modify(cls, id, **params: Any) -> "PaymentMethodConfiguration": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, + id: str, + **params: Unpack["PaymentMethodConfiguration.RetrieveParams"] ) -> "PaymentMethodConfiguration": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/payment_method_domain.py b/stripe/api_resources/payment_method_domain.py index a945554b5..cbfe12b23 100644 --- a/stripe/api_resources/payment_method_domain.py +++ b/stripe/api_resources/payment_method_domain.py @@ -7,9 +7,10 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from typing import List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING from urllib.parse import quote_plus @@ -26,6 +27,31 @@ class PaymentMethodDomain( """ OBJECT_NAME = "payment_method_domain" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + domain_name: str + enabled: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + + class ListParams(RequestOptions): + domain_name: NotRequired["str|None"] + enabled: NotRequired["bool|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + enabled: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ValidateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + apple_pay: StripeObject created: int domain_name: str @@ -44,7 +70,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethodDomain.CreateParams"] ) -> "PaymentMethodDomain": return cast( "PaymentMethodDomain", @@ -65,7 +91,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethodDomain.ListParams"] ) -> ListObject["PaymentMethodDomain"]: result = cls._static_request( "get", @@ -85,7 +111,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "PaymentMethodDomain": + def modify( + cls, id, **params: Unpack["PaymentMethodDomain.ModifyParams"] + ) -> "PaymentMethodDomain": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "PaymentMethodDomain", @@ -94,9 +122,9 @@ def modify(cls, id, **params: Any) -> "PaymentMethodDomain": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["PaymentMethodDomain.RetrieveParams"] ) -> "PaymentMethodDomain": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -107,7 +135,7 @@ def _cls_validate( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PaymentMethodDomain.ValidateParams"] ): return cls._static_request( "post", @@ -121,7 +149,11 @@ def _cls_validate( ) @util.class_method_variant("_cls_validate") - def validate(self, idempotency_key: Optional[str] = None, **params: Any): + def validate( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["PaymentMethodDomain.ValidateParams"] + ): return self._request( "post", "/v1/payment_method_domains/{payment_method_domain}/validate".format( diff --git a/stripe/api_resources/payout.py b/stripe/api_resources/payout.py index 7bf558301..1eb88a78e 100644 --- a/stripe/api_resources/payout.py +++ b/stripe/api_resources/payout.py @@ -8,12 +8,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Any, Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction @@ -35,6 +40,57 @@ class Payout( """ OBJECT_NAME = "payout" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: int + currency: str + description: NotRequired["str|None"] + destination: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + method: NotRequired["Literal['instant', 'standard']|None"] + source_type: NotRequired[ + "Literal['bank_account', 'card', 'fpx']|None" + ] + statement_descriptor: NotRequired["str|None"] + + class ListParams(RequestOptions): + arrival_date: NotRequired["Payout.ListParamsArrivalDate|int|None"] + created: NotRequired["Payout.ListParamsCreated|int|None"] + destination: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsArrivalDate(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ReverseParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + amount: int arrival_date: int automatic: bool @@ -70,7 +126,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Payout.CancelParams"] ): return cls._static_request( "post", @@ -84,7 +140,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Payout.CancelParams"] + ): return self._request( "post", "/v1/payouts/{payout}/cancel".format( @@ -101,7 +161,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Payout.CreateParams"] ) -> "Payout": return cast( "Payout", @@ -122,7 +182,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Payout.ListParams"] ) -> ListObject["Payout"]: result = cls._static_request( "get", @@ -142,7 +202,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Payout": + def modify(cls, id, **params: Unpack["Payout.ModifyParams"]) -> "Payout": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Payout", @@ -151,9 +211,9 @@ def modify(cls, id, **params: Any) -> "Payout": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Payout.RetrieveParams"] ) -> "Payout": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -164,7 +224,7 @@ def _cls_reverse( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Payout.ReverseParams"] ): return cls._static_request( "post", @@ -178,7 +238,11 @@ def _cls_reverse( ) @util.class_method_variant("_cls_reverse") - def reverse(self, idempotency_key: Optional[str] = None, **params: Any): + def reverse( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Payout.ReverseParams"] + ): return self._request( "post", "/v1/payouts/{payout}/reverse".format( diff --git a/stripe/api_resources/plan.py b/stripe/api_resources/plan.py index 2e486f076..21f0a76cd 100644 --- a/stripe/api_resources/plan.py +++ b/stripe/api_resources/plan.py @@ -9,13 +9,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, Union, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.product import Product @@ -38,6 +43,81 @@ class Plan( """ OBJECT_NAME = "plan" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + active: NotRequired["bool|None"] + aggregate_usage: NotRequired[ + "Literal['last_during_period', 'last_ever', 'max', 'sum']|None" + ] + amount: NotRequired["int|None"] + amount_decimal: NotRequired["float|None"] + billing_scheme: NotRequired["Literal['per_unit', 'tiered']|None"] + currency: str + expand: NotRequired["List[str]|None"] + id: NotRequired["str|None"] + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + nickname: NotRequired["str|None"] + product: NotRequired["Plan.CreateParamsProduct|str|None"] + tiers: NotRequired["List[Plan.CreateParamsTier]|None"] + tiers_mode: NotRequired["Literal['graduated', 'volume']|None"] + transform_usage: NotRequired[ + "Plan.CreateParamsTransformUsage|None" + ] + trial_period_days: NotRequired["int|None"] + usage_type: NotRequired["Literal['licensed', 'metered']|None"] + + class CreateParamsTransformUsage(TypedDict): + divide_by: int + round: Literal["down", "up"] + + class CreateParamsTier(TypedDict): + flat_amount: NotRequired["int|None"] + flat_amount_decimal: NotRequired["float|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + up_to: Union[Literal["inf"], int] + + class CreateParamsProduct(TypedDict): + active: NotRequired["bool|None"] + id: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + name: str + statement_descriptor: NotRequired["str|None"] + tax_code: NotRequired["str|None"] + unit_label: NotRequired["str|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + created: NotRequired["Plan.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + product: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + nickname: NotRequired["str|None"] + product: NotRequired["str|None"] + trial_period_days: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + active: bool aggregate_usage: Optional[ Literal["last_during_period", "last_ever", "max", "sum"] @@ -69,7 +149,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Plan.CreateParams"] ) -> "Plan": return cast( "Plan", @@ -85,7 +165,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Plan": + def _cls_delete( + cls, sid: str, **params: Unpack["Plan.DeleteParams"] + ) -> "Plan": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Plan", @@ -93,7 +175,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Plan": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Plan": + def delete(self, **params: Unpack["Plan.DeleteParams"]) -> "Plan": return self._request_and_refresh( "delete", self.instance_url(), @@ -106,7 +188,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Plan.ListParams"] ) -> ListObject["Plan"]: result = cls._static_request( "get", @@ -126,7 +208,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Plan": + def modify(cls, id, **params: Unpack["Plan.ModifyParams"]) -> "Plan": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Plan", @@ -135,8 +217,8 @@ def modify(cls, id, **params: Any) -> "Plan": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Plan.RetrieveParams"] ) -> "Plan": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/price.py b/stripe/api_resources/price.py index fe045b41d..45613ecf2 100644 --- a/stripe/api_resources/price.py +++ b/stripe/api_resources/price.py @@ -9,13 +9,18 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject from stripe.api_resources.search_result_object import SearchResultObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, Union, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.product import Product @@ -36,6 +41,172 @@ class Price( """ OBJECT_NAME = "price" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + active: NotRequired["bool|None"] + billing_scheme: NotRequired["Literal['per_unit', 'tiered']|None"] + currency: str + currency_options: NotRequired[ + "Dict[str, Price.CreateParamsCurrencyOptions]|None" + ] + custom_unit_amount: NotRequired[ + "Price.CreateParamsCustomUnitAmount|None" + ] + expand: NotRequired["List[str]|None"] + lookup_key: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + nickname: NotRequired["str|None"] + product: NotRequired["str|None"] + product_data: NotRequired["Price.CreateParamsProductData|None"] + recurring: NotRequired["Price.CreateParamsRecurring|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tiers: NotRequired["List[Price.CreateParamsTier]|None"] + tiers_mode: NotRequired["Literal['graduated', 'volume']|None"] + transfer_lookup_key: NotRequired["bool|None"] + transform_quantity: NotRequired[ + "Price.CreateParamsTransformQuantity|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsTransformQuantity(TypedDict): + divide_by: int + round: Literal["down", "up"] + + class CreateParamsTier(TypedDict): + flat_amount: NotRequired["int|None"] + flat_amount_decimal: NotRequired["float|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + up_to: Union[Literal["inf"], int] + + class CreateParamsRecurring(TypedDict): + aggregate_usage: NotRequired[ + "Literal['last_during_period', 'last_ever', 'max', 'sum']|None" + ] + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + trial_period_days: NotRequired["int|None"] + usage_type: NotRequired["Literal['licensed', 'metered']|None"] + + class CreateParamsProductData(TypedDict): + active: NotRequired["bool|None"] + id: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + name: str + statement_descriptor: NotRequired["str|None"] + tax_code: NotRequired["str|None"] + unit_label: NotRequired["str|None"] + + class CreateParamsCustomUnitAmount(TypedDict): + enabled: bool + maximum: NotRequired["int|None"] + minimum: NotRequired["int|None"] + preset: NotRequired["int|None"] + + class CreateParamsCurrencyOptions(TypedDict): + custom_unit_amount: NotRequired[ + "Price.CreateParamsCurrencyOptionsCustomUnitAmount|None" + ] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tiers: NotRequired[ + "List[Price.CreateParamsCurrencyOptionsTier]|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsCurrencyOptionsTier(TypedDict): + flat_amount: NotRequired["int|None"] + flat_amount_decimal: NotRequired["float|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + up_to: Union[Literal["inf"], int] + + class CreateParamsCurrencyOptionsCustomUnitAmount(TypedDict): + enabled: bool + maximum: NotRequired["int|None"] + minimum: NotRequired["int|None"] + preset: NotRequired["int|None"] + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + created: NotRequired["Price.ListParamsCreated|int|None"] + currency: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + lookup_keys: NotRequired["List[str]|None"] + product: NotRequired["str|None"] + recurring: NotRequired["Price.ListParamsRecurring|None"] + starting_after: NotRequired["str|None"] + type: NotRequired["Literal['one_time', 'recurring']|None"] + + class ListParamsRecurring(TypedDict): + interval: NotRequired[ + "Literal['day', 'month', 'week', 'year']|None" + ] + usage_type: NotRequired["Literal['licensed', 'metered']|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + currency_options: NotRequired[ + "Literal['']|Dict[str, Price.ModifyParamsCurrencyOptions]|None" + ] + expand: NotRequired["List[str]|None"] + lookup_key: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + nickname: NotRequired["str|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + transfer_lookup_key: NotRequired["bool|None"] + + class ModifyParamsCurrencyOptions(TypedDict): + custom_unit_amount: NotRequired[ + "Price.ModifyParamsCurrencyOptionsCustomUnitAmount|None" + ] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tiers: NotRequired[ + "List[Price.ModifyParamsCurrencyOptionsTier]|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsCurrencyOptionsTier(TypedDict): + flat_amount: NotRequired["int|None"] + flat_amount_decimal: NotRequired["float|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + up_to: Union[Literal["inf"], int] + + class ModifyParamsCurrencyOptionsCustomUnitAmount(TypedDict): + enabled: bool + maximum: NotRequired["int|None"] + minimum: NotRequired["int|None"] + preset: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SearchParams(RequestOptions): + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + page: NotRequired["str|None"] + query: str + active: bool billing_scheme: Literal["per_unit", "tiered"] created: int @@ -66,7 +237,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Price.CreateParams"] ) -> "Price": return cast( "Price", @@ -87,7 +258,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Price.ListParams"] ) -> ListObject["Price"]: result = cls._static_request( "get", @@ -107,7 +278,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Price": + def modify(cls, id, **params: Unpack["Price.ModifyParams"]) -> "Price": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Price", @@ -116,16 +287,20 @@ def modify(cls, id, **params: Any) -> "Price": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Price.RetrieveParams"] ) -> "Price": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @classmethod - def search(cls, *args, **kwargs) -> SearchResultObject["Price"]: + def search( + cls, *args, **kwargs: Unpack["Price.SearchParams"] + ) -> SearchResultObject["Price"]: return cls._search(search_url="/v1/prices/search", *args, **kwargs) @classmethod - def search_auto_paging_iter(cls, *args, **kwargs): + def search_auto_paging_iter( + cls, *args, **kwargs: Unpack["Price.SearchParams"] + ): return cls.search(*args, **kwargs).auto_paging_iter() diff --git a/stripe/api_resources/product.py b/stripe/api_resources/product.py index deaecbe1e..88830aead 100644 --- a/stripe/api_resources/product.py +++ b/stripe/api_resources/product.py @@ -11,13 +11,18 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject from stripe.api_resources.search_result_object import SearchResultObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, Union, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.price import Price from stripe.api_resources.tax_code import TaxCode @@ -42,6 +47,144 @@ class Product( """ OBJECT_NAME = "product" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + active: NotRequired["bool|None"] + default_price_data: NotRequired[ + "Product.CreateParamsDefaultPriceData|None" + ] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + features: NotRequired["List[Product.CreateParamsFeature]|None"] + id: NotRequired["str|None"] + images: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + name: str + package_dimensions: NotRequired[ + "Product.CreateParamsPackageDimensions|None" + ] + shippable: NotRequired["bool|None"] + statement_descriptor: NotRequired["str|None"] + tax_code: NotRequired["str|None"] + type: NotRequired["Literal['good', 'service']|None"] + unit_label: NotRequired["str|None"] + url: NotRequired["str|None"] + + class CreateParamsPackageDimensions(TypedDict): + height: float + length: float + weight: float + width: float + + class CreateParamsFeature(TypedDict): + name: str + + class CreateParamsDefaultPriceData(TypedDict): + currency: str + currency_options: NotRequired[ + "Dict[str, Product.CreateParamsDefaultPriceDataCurrencyOptions]|None" + ] + recurring: NotRequired[ + "Product.CreateParamsDefaultPriceDataRecurring|None" + ] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsDefaultPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class CreateParamsDefaultPriceDataCurrencyOptions(TypedDict): + custom_unit_amount: NotRequired[ + "Product.CreateParamsDefaultPriceDataCurrencyOptionsCustomUnitAmount|None" + ] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tiers: NotRequired[ + "List[Product.CreateParamsDefaultPriceDataCurrencyOptionsTier]|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsDefaultPriceDataCurrencyOptionsTier(TypedDict): + flat_amount: NotRequired["int|None"] + flat_amount_decimal: NotRequired["float|None"] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + up_to: Union[Literal["inf"], int] + + class CreateParamsDefaultPriceDataCurrencyOptionsCustomUnitAmount( + TypedDict, + ): + enabled: bool + maximum: NotRequired["int|None"] + minimum: NotRequired["int|None"] + preset: NotRequired["int|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + created: NotRequired["Product.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + ids: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + shippable: NotRequired["bool|None"] + starting_after: NotRequired["str|None"] + type: NotRequired["Literal['good', 'service']|None"] + url: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + default_price: NotRequired["str|None"] + description: NotRequired["Literal['']|str|None"] + expand: NotRequired["List[str]|None"] + features: NotRequired[ + "Literal['']|List[Product.ModifyParamsFeature]|None" + ] + images: NotRequired["Literal['']|List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + name: NotRequired["str|None"] + package_dimensions: NotRequired[ + "Literal['']|Product.ModifyParamsPackageDimensions|None" + ] + shippable: NotRequired["bool|None"] + statement_descriptor: NotRequired["str|None"] + tax_code: NotRequired["Literal['']|str|None"] + unit_label: NotRequired["Literal['']|str|None"] + url: NotRequired["Literal['']|str|None"] + + class ModifyParamsPackageDimensions(TypedDict): + height: float + length: float + weight: float + width: float + + class ModifyParamsFeature(TypedDict): + name: str + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SearchParams(RequestOptions): + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + page: NotRequired["str|None"] + query: str + active: bool created: int default_price: Optional[ExpandableField["Price"]] @@ -70,7 +213,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Product.CreateParams"] ) -> "Product": return cast( "Product", @@ -86,7 +229,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Product": + def _cls_delete( + cls, sid: str, **params: Unpack["Product.DeleteParams"] + ) -> "Product": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Product", @@ -94,7 +239,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Product": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Product": + def delete(self, **params: Unpack["Product.DeleteParams"]) -> "Product": return self._request_and_refresh( "delete", self.instance_url(), @@ -107,7 +252,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Product.ListParams"] ) -> ListObject["Product"]: result = cls._static_request( "get", @@ -127,7 +272,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Product": + def modify(cls, id, **params: Unpack["Product.ModifyParams"]) -> "Product": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Product", @@ -136,16 +281,20 @@ def modify(cls, id, **params: Any) -> "Product": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Product.RetrieveParams"] ) -> "Product": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @classmethod - def search(cls, *args, **kwargs) -> SearchResultObject["Product"]: + def search( + cls, *args, **kwargs: Unpack["Product.SearchParams"] + ) -> SearchResultObject["Product"]: return cls._search(search_url="/v1/products/search", *args, **kwargs) @classmethod - def search_auto_paging_iter(cls, *args, **kwargs): + def search_auto_paging_iter( + cls, *args, **kwargs: Unpack["Product.SearchParams"] + ): return cls.search(*args, **kwargs).auto_paging_iter() diff --git a/stripe/api_resources/promotion_code.py b/stripe/api_resources/promotion_code.py index a6aee0e6f..c31d8bfee 100644 --- a/stripe/api_resources/promotion_code.py +++ b/stripe/api_resources/promotion_code.py @@ -7,13 +7,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.coupon import Coupon from stripe.api_resources.customer import Customer @@ -30,6 +35,68 @@ class PromotionCode( """ OBJECT_NAME = "promotion_code" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + active: NotRequired["bool|None"] + code: NotRequired["str|None"] + coupon: str + customer: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["int|None"] + max_redemptions: NotRequired["int|None"] + metadata: NotRequired["Dict[str, str]|None"] + restrictions: NotRequired[ + "PromotionCode.CreateParamsRestrictions|None" + ] + + class CreateParamsRestrictions(TypedDict): + currency_options: NotRequired[ + "Dict[str, PromotionCode.CreateParamsRestrictionsCurrencyOptions]|None" + ] + first_time_transaction: NotRequired["bool|None"] + minimum_amount: NotRequired["int|None"] + minimum_amount_currency: NotRequired["str|None"] + + class CreateParamsRestrictionsCurrencyOptions(TypedDict): + minimum_amount: NotRequired["int|None"] + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + code: NotRequired["str|None"] + coupon: NotRequired["str|None"] + created: NotRequired["PromotionCode.ListParamsCreated|int|None"] + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + restrictions: NotRequired[ + "PromotionCode.ModifyParamsRestrictions|None" + ] + + class ModifyParamsRestrictions(TypedDict): + currency_options: NotRequired[ + "Dict[str, PromotionCode.ModifyParamsRestrictionsCurrencyOptions]|None" + ] + + class ModifyParamsRestrictionsCurrencyOptions(TypedDict): + minimum_amount: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + active: bool code: str coupon: "Coupon" @@ -51,7 +118,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PromotionCode.CreateParams"] ) -> "PromotionCode": return cast( "PromotionCode", @@ -72,7 +139,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["PromotionCode.ListParams"] ) -> ListObject["PromotionCode"]: result = cls._static_request( "get", @@ -92,7 +159,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "PromotionCode": + def modify( + cls, id, **params: Unpack["PromotionCode.ModifyParams"] + ) -> "PromotionCode": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "PromotionCode", @@ -101,8 +170,8 @@ def modify(cls, id, **params: Any) -> "PromotionCode": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["PromotionCode.RetrieveParams"] ) -> "PromotionCode": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/quote.py b/stripe/api_resources/quote.py index 75ac113ef..49dbcbc1e 100644 --- a/stripe/api_resources/quote.py +++ b/stripe/api_resources/quote.py @@ -9,13 +9,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.application import Application @@ -40,6 +45,199 @@ class Quote( """ OBJECT_NAME = "quote" + if TYPE_CHECKING: + + class AcceptParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + application_fee_amount: NotRequired["Literal['']|int|None"] + application_fee_percent: NotRequired["Literal['']|float|None"] + automatic_tax: NotRequired["Quote.CreateParamsAutomaticTax|None"] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + customer: NotRequired["str|None"] + default_tax_rates: NotRequired["Literal['']|List[str]|None"] + description: NotRequired["Literal['']|str|None"] + discounts: NotRequired[ + "Literal['']|List[Quote.CreateParamsDiscount]|None" + ] + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["int|None"] + footer: NotRequired["Literal['']|str|None"] + from_quote: NotRequired["Quote.CreateParamsFromQuote|None"] + header: NotRequired["Literal['']|str|None"] + invoice_settings: NotRequired[ + "Quote.CreateParamsInvoiceSettings|None" + ] + line_items: NotRequired["List[Quote.CreateParamsLineItem]|None"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["Literal['']|str|None"] + subscription_data: NotRequired[ + "Quote.CreateParamsSubscriptionData|None" + ] + test_clock: NotRequired["str|None"] + transfer_data: NotRequired[ + "Literal['']|Quote.CreateParamsTransferData|None" + ] + + class CreateParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + amount_percent: NotRequired["float|None"] + destination: str + + class CreateParamsSubscriptionData(TypedDict): + description: NotRequired["str|None"] + effective_date: NotRequired[ + "Literal['']|Literal['current_period_end']|int|None" + ] + trial_period_days: NotRequired["Literal['']|int|None"] + + class CreateParamsLineItem(TypedDict): + price: NotRequired["str|None"] + price_data: NotRequired["Quote.CreateParamsLineItemPriceData|None"] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class CreateParamsLineItemPriceData(TypedDict): + currency: str + product: str + recurring: NotRequired[ + "Quote.CreateParamsLineItemPriceDataRecurring|None" + ] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsLineItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class CreateParamsInvoiceSettings(TypedDict): + days_until_due: NotRequired["int|None"] + + class CreateParamsFromQuote(TypedDict): + is_revision: NotRequired["bool|None"] + quote: str + + class CreateParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class CreateParamsAutomaticTax(TypedDict): + enabled: bool + + class FinalizeQuoteParams(RequestOptions): + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["int|None"] + + class ListParams(RequestOptions): + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['accepted', 'canceled', 'draft', 'open']|None" + ] + test_clock: NotRequired["str|None"] + + class ListComputedUpfrontLineItemsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListLineItemsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + application_fee_amount: NotRequired["Literal['']|int|None"] + application_fee_percent: NotRequired["Literal['']|float|None"] + automatic_tax: NotRequired["Quote.ModifyParamsAutomaticTax|None"] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + customer: NotRequired["str|None"] + default_tax_rates: NotRequired["Literal['']|List[str]|None"] + description: NotRequired["Literal['']|str|None"] + discounts: NotRequired[ + "Literal['']|List[Quote.ModifyParamsDiscount]|None" + ] + expand: NotRequired["List[str]|None"] + expires_at: NotRequired["int|None"] + footer: NotRequired["Literal['']|str|None"] + header: NotRequired["Literal['']|str|None"] + invoice_settings: NotRequired[ + "Quote.ModifyParamsInvoiceSettings|None" + ] + line_items: NotRequired["List[Quote.ModifyParamsLineItem]|None"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["Literal['']|str|None"] + subscription_data: NotRequired[ + "Quote.ModifyParamsSubscriptionData|None" + ] + transfer_data: NotRequired[ + "Literal['']|Quote.ModifyParamsTransferData|None" + ] + + class ModifyParamsTransferData(TypedDict): + amount: NotRequired["int|None"] + amount_percent: NotRequired["float|None"] + destination: str + + class ModifyParamsSubscriptionData(TypedDict): + description: NotRequired["Literal['']|str|None"] + effective_date: NotRequired[ + "Literal['']|Literal['current_period_end']|int|None" + ] + trial_period_days: NotRequired["Literal['']|int|None"] + + class ModifyParamsLineItem(TypedDict): + id: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired["Quote.ModifyParamsLineItemPriceData|None"] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class ModifyParamsLineItemPriceData(TypedDict): + currency: str + product: str + recurring: NotRequired[ + "Quote.ModifyParamsLineItemPriceDataRecurring|None" + ] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsLineItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class ModifyParamsInvoiceSettings(TypedDict): + days_until_due: NotRequired["int|None"] + + class ModifyParamsDiscount(TypedDict): + coupon: NotRequired["str|None"] + discount: NotRequired["str|None"] + + class ModifyParamsAutomaticTax(TypedDict): + enabled: bool + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount_subtotal: int amount_total: int application: Optional[ExpandableField["Application"]] @@ -83,7 +281,7 @@ def _cls_accept( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Quote.AcceptParams"] ): return cls._static_request( "post", @@ -95,7 +293,11 @@ def _cls_accept( ) @util.class_method_variant("_cls_accept") - def accept(self, idempotency_key: Optional[str] = None, **params: Any): + def accept( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Quote.AcceptParams"] + ): return self._request( "post", "/v1/quotes/{quote}/accept".format( @@ -112,7 +314,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Quote.CancelParams"] ): return cls._static_request( "post", @@ -124,7 +326,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Quote.CancelParams"] + ): return self._request( "post", "/v1/quotes/{quote}/cancel".format( @@ -141,7 +347,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Quote.CreateParams"] ) -> "Quote": return cast( "Quote", @@ -163,7 +369,7 @@ def _cls_finalize_quote( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Quote.FinalizeQuoteParams"] ): return cls._static_request( "post", @@ -178,7 +384,9 @@ def _cls_finalize_quote( @util.class_method_variant("_cls_finalize_quote") def finalize_quote( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Quote.FinalizeQuoteParams"] ): return self._request( "post", @@ -195,7 +403,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Quote.ListParams"] ) -> ListObject["Quote"]: result = cls._static_request( "get", @@ -221,7 +429,7 @@ def _cls_list_computed_upfront_line_items( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Quote.ListComputedUpfrontLineItemsParams"] ): return cls._static_request( "get", @@ -236,7 +444,9 @@ def _cls_list_computed_upfront_line_items( @util.class_method_variant("_cls_list_computed_upfront_line_items") def list_computed_upfront_line_items( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Quote.ListComputedUpfrontLineItemsParams"] ): return self._request( "get", @@ -254,7 +464,7 @@ def _cls_list_line_items( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Quote.ListLineItemsParams"] ): return cls._static_request( "get", @@ -269,7 +479,9 @@ def _cls_list_line_items( @util.class_method_variant("_cls_list_line_items") def list_line_items( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Quote.ListLineItemsParams"] ): return self._request( "get", @@ -281,7 +493,7 @@ def list_line_items( ) @classmethod - def modify(cls, id, **params: Any) -> "Quote": + def modify(cls, id, **params: Unpack["Quote.ModifyParams"]) -> "Quote": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Quote", @@ -290,9 +502,9 @@ def modify(cls, id, **params: Any) -> "Quote": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Quote.RetrieveParams"] ) -> "Quote": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/radar/early_fraud_warning.py b/stripe/api_resources/radar/early_fraud_warning.py index b98ac0f67..4126cbf8d 100644 --- a/stripe/api_resources/radar/early_fraud_warning.py +++ b/stripe/api_resources/radar/early_fraud_warning.py @@ -3,10 +3,9 @@ from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from stripe.request_options import RequestOptions +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.charge import Charge @@ -22,6 +21,19 @@ class EarlyFraudWarning(ListableAPIResource["EarlyFraudWarning"]): """ OBJECT_NAME = "radar.early_fraud_warning" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + charge: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + payment_intent: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + actionable: bool charge: ExpandableField["Charge"] created: int @@ -37,7 +49,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["EarlyFraudWarning.ListParams"] ) -> ListObject["EarlyFraudWarning"]: result = cls._static_request( "get", @@ -58,8 +70,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["EarlyFraudWarning.RetrieveParams"] ) -> "EarlyFraudWarning": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/radar/value_list.py b/stripe/api_resources/radar/value_list.py index bba07c507..7c12672a2 100644 --- a/stripe/api_resources/radar/value_list.py +++ b/stripe/api_resources/radar/value_list.py @@ -8,12 +8,17 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.radar.value_list_item import ValueListItem @@ -31,6 +36,44 @@ class ValueList( """ OBJECT_NAME = "radar.value_list" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + alias: str + expand: NotRequired["List[str]|None"] + item_type: NotRequired[ + "Literal['card_bin', 'card_fingerprint', 'case_sensitive_string', 'country', 'customer_id', 'email', 'ip_address', 'sepa_debit_fingerprint', 'string', 'us_bank_account_fingerprint']|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + name: str + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + alias: NotRequired["str|None"] + contains: NotRequired["str|None"] + created: NotRequired["ValueList.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + alias: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + name: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + alias: str created: int created_by: str @@ -61,7 +104,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ValueList.CreateParams"] ) -> "ValueList": return cast( "ValueList", @@ -77,7 +120,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "ValueList": + def _cls_delete( + cls, sid: str, **params: Unpack["ValueList.DeleteParams"] + ) -> "ValueList": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "ValueList", @@ -85,7 +130,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "ValueList": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "ValueList": + def delete( + self, **params: Unpack["ValueList.DeleteParams"] + ) -> "ValueList": return self._request_and_refresh( "delete", self.instance_url(), @@ -98,7 +145,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ValueList.ListParams"] ) -> ListObject["ValueList"]: result = cls._static_request( "get", @@ -118,7 +165,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "ValueList": + def modify( + cls, id, **params: Unpack["ValueList.ModifyParams"] + ) -> "ValueList": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "ValueList", @@ -127,8 +176,8 @@ def modify(cls, id, **params: Any) -> "ValueList": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ValueList.RetrieveParams"] ) -> "ValueList": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/radar/value_list_item.py b/stripe/api_resources/radar/value_list_item.py index a82b8edee..8539d9258 100644 --- a/stripe/api_resources/radar/value_list_item.py +++ b/stripe/api_resources/radar/value_list_item.py @@ -7,8 +7,15 @@ ListableAPIResource, ) from stripe.api_resources.list_object import ListObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -24,6 +31,34 @@ class ValueListItem( """ OBJECT_NAME = "radar.value_list_item" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + value: str + value_list: str + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + created: NotRequired["ValueListItem.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + value: NotRequired["str|None"] + value_list: str + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int created_by: str id: str @@ -40,7 +75,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ValueListItem.CreateParams"] ) -> "ValueListItem": return cast( "ValueListItem", @@ -56,7 +91,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "ValueListItem": + def _cls_delete( + cls, sid: str, **params: Unpack["ValueListItem.DeleteParams"] + ) -> "ValueListItem": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "ValueListItem", @@ -64,7 +101,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "ValueListItem": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "ValueListItem": + def delete( + self, **params: Unpack["ValueListItem.DeleteParams"] + ) -> "ValueListItem": return self._request_and_refresh( "delete", self.instance_url(), @@ -77,7 +116,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ValueListItem.ListParams"] ) -> ListObject["ValueListItem"]: result = cls._static_request( "get", @@ -98,8 +137,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ValueListItem.RetrieveParams"] ) -> "ValueListItem": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/refund.py b/stripe/api_resources/refund.py index 0a845948b..9a7b995ba 100644 --- a/stripe/api_resources/refund.py +++ b/stripe/api_resources/refund.py @@ -9,13 +9,12 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal, Type +from typing import Dict, List, Optional, cast +from typing_extensions import Literal, NotRequired, Type, Unpack, TYPE_CHECKING from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction from stripe.api_resources.charge import Charge @@ -37,6 +36,43 @@ class Refund( """ OBJECT_NAME = "refund" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: NotRequired["int|None"] + charge: NotRequired["str|None"] + currency: NotRequired["str|None"] + customer: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + instructions_email: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + origin: NotRequired["Literal['customer_balance']|None"] + payment_intent: NotRequired["str|None"] + reason: NotRequired[ + "Literal['duplicate', 'fraudulent', 'requested_by_customer']|None" + ] + refund_application_fee: NotRequired["bool|None"] + reverse_transfer: NotRequired["bool|None"] + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ExpireParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int balance_transaction: Optional[ExpandableField["BalanceTransaction"]] charge: Optional[ExpandableField["Charge"]] @@ -73,7 +109,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Refund.CancelParams"] ): return cls._static_request( "post", @@ -87,7 +123,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Refund.CancelParams"] + ): return self._request( "post", "/v1/refunds/{refund}/cancel".format( @@ -104,7 +144,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Refund.CreateParams"] ) -> "Refund": return cast( "Refund", @@ -125,7 +165,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Refund.ListParams"] ) -> ListObject["Refund"]: result = cls._static_request( "get", @@ -145,7 +185,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Refund": + def modify(cls, id, **params: Unpack["Refund.ModifyParams"]) -> "Refund": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Refund", @@ -154,9 +194,9 @@ def modify(cls, id, **params: Any) -> "Refund": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Refund.RetrieveParams"] ) -> "Refund": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -170,7 +210,7 @@ def _cls_expire( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Refund.ExpireParams"] ): return cls._static_request( "post", @@ -184,7 +224,11 @@ def _cls_expire( ) @util.class_method_variant("_cls_expire") - def expire(self, idempotency_key: Optional[str] = None, **params: Any): + def expire( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Refund.ExpireParams"] + ): return self.resource._request( "post", "/v1/test_helpers/refunds/{refund}/expire".format( diff --git a/stripe/api_resources/reporting/report_run.py b/stripe/api_resources/reporting/report_run.py index c7c54bd07..223047227 100644 --- a/stripe/api_resources/reporting/report_run.py +++ b/stripe/api_resources/reporting/report_run.py @@ -5,11 +5,16 @@ ListableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.file import File @@ -31,6 +36,43 @@ class ReportRun( """ OBJECT_NAME = "reporting.report_run" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + parameters: NotRequired["ReportRun.CreateParamsParameters|None"] + report_type: str + + class CreateParamsParameters(TypedDict): + columns: NotRequired["List[str]|None"] + connected_account: NotRequired["str|None"] + currency: NotRequired["str|None"] + interval_end: NotRequired["int|None"] + interval_start: NotRequired["int|None"] + payout: NotRequired["str|None"] + reporting_category: NotRequired[ + "Literal['advance', 'advance_funding', 'anticipation_repayment', 'charge', 'charge_failure', 'connect_collection_transfer', 'connect_reserved_funds', 'contribution', 'dispute', 'dispute_reversal', 'fee', 'financing_paydown', 'financing_paydown_reversal', 'financing_payout', 'financing_payout_reversal', 'issuing_authorization_hold', 'issuing_authorization_release', 'issuing_dispute', 'issuing_transaction', 'network_cost', 'obligation', 'other_adjustment', 'partial_capture_reversal', 'payout', 'payout_reversal', 'platform_earning', 'platform_earning_refund', 'refund', 'refund_failure', 'risk_reserved_funds', 'tax', 'topup', 'topup_reversal', 'transfer', 'transfer_reversal']|None" + ] + timezone: NotRequired[ + "Literal['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'Factory', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Pacific-New', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu']|None" + ] + + class ListParams(RequestOptions): + created: NotRequired["ReportRun.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int error: Optional[str] id: str @@ -49,7 +91,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ReportRun.CreateParams"] ) -> "ReportRun": return cast( "ReportRun", @@ -70,7 +112,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ReportRun.ListParams"] ) -> ListObject["ReportRun"]: result = cls._static_request( "get", @@ -91,8 +133,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ReportRun.RetrieveParams"] ) -> "ReportRun": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/reporting/report_type.py b/stripe/api_resources/reporting/report_type.py index 23513351f..8b814ee9d 100644 --- a/stripe/api_resources/reporting/report_type.py +++ b/stripe/api_resources/reporting/report_type.py @@ -2,8 +2,9 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject -from typing import Any, List, Optional -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING class ReportType(ListableAPIResource["ReportType"]): @@ -19,6 +20,14 @@ class ReportType(ListableAPIResource["ReportType"]): """ OBJECT_NAME = "reporting.report_type" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + data_available_end: int data_available_start: int default_columns: Optional[List[str]] @@ -35,7 +44,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ReportType.ListParams"] ) -> ListObject["ReportType"]: result = cls._static_request( "get", @@ -56,8 +65,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ReportType.RetrieveParams"] ) -> "ReportType": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/reversal.py b/stripe/api_resources/reversal.py index cd53cd801..fd812860f 100644 --- a/stripe/api_resources/reversal.py +++ b/stripe/api_resources/reversal.py @@ -4,11 +4,9 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.transfer import Transfer from typing import Dict, Optional -from typing_extensions import Literal +from typing_extensions import Literal, TYPE_CHECKING from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction from stripe.api_resources.refund import Refund diff --git a/stripe/api_resources/review.py b/stripe/api_resources/review.py index e32b703b2..2b69c4939 100644 --- a/stripe/api_resources/review.py +++ b/stripe/api_resources/review.py @@ -4,11 +4,16 @@ from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.charge import Charge @@ -24,6 +29,27 @@ class Review(ListableAPIResource["Review"]): """ OBJECT_NAME = "review" + if TYPE_CHECKING: + + class ApproveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ListParams(RequestOptions): + created: NotRequired["Review.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + billing_zip: Optional[str] charge: Optional[ExpandableField["Charge"]] closed_reason: Optional[ @@ -50,7 +76,7 @@ def _cls_approve( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Review.ApproveParams"] ): return cls._static_request( "post", @@ -64,7 +90,11 @@ def _cls_approve( ) @util.class_method_variant("_cls_approve") - def approve(self, idempotency_key: Optional[str] = None, **params: Any): + def approve( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Review.ApproveParams"] + ): return self._request( "post", "/v1/reviews/{review}/approve".format( @@ -80,7 +110,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Review.ListParams"] ) -> ListObject["Review"]: result = cls._static_request( "get", @@ -101,8 +131,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Review.RetrieveParams"] ) -> "Review": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/setup_attempt.py b/stripe/api_resources/setup_attempt.py index f7a9c5b86..54900c334 100644 --- a/stripe/api_resources/setup_attempt.py +++ b/stripe/api_resources/setup_attempt.py @@ -3,11 +3,16 @@ from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, List, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.account import Account @@ -26,6 +31,22 @@ class SetupAttempt(ListableAPIResource["SetupAttempt"]): """ OBJECT_NAME = "setup_attempt" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + created: NotRequired["SetupAttempt.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + setup_intent: str + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + application: Optional[ExpandableField["Application"]] attach_to_self: Optional[bool] created: int @@ -48,7 +69,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SetupAttempt.ListParams"] ) -> ListObject["SetupAttempt"]: result = cls._static_request( "get", diff --git a/stripe/api_resources/setup_intent.py b/stripe/api_resources/setup_intent.py index 231897fc2..1bd5776a5 100644 --- a/stripe/api_resources/setup_intent.py +++ b/stripe/api_resources/setup_intent.py @@ -8,13 +8,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.application import Application @@ -54,6 +59,1377 @@ class SetupIntent( """ OBJECT_NAME = "setup_intent" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + cancellation_reason: NotRequired[ + "Literal['abandoned', 'duplicate', 'requested_by_customer']|None" + ] + expand: NotRequired["List[str]|None"] + + class ConfirmParams(RequestOptions): + expand: NotRequired["List[str]|None"] + mandate_data: NotRequired[ + "Literal['']|SetupIntent.ConfirmParamsMandateData|SetupIntent.ConfirmParamsMandateData2|None" + ] + payment_method: NotRequired["str|None"] + payment_method_data: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodData|None" + ] + payment_method_options: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptions|None" + ] + return_url: NotRequired["str|None"] + use_stripe_sdk: NotRequired["bool|None"] + + class ConfirmParamsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsAcssDebit|None" + ] + card: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsCard|None" + ] + link: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsLink|None" + ] + paypal: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsPaypal|None" + ] + sepa_debit: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsSepaDebit|None" + ] + us_bank_account: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsUsBankAccount|None" + ] + + class ConfirmParamsPaymentMethodOptionsUsBankAccount(TypedDict): + financial_connections: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + networks: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsUsBankAccountNetworks|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ConfirmParamsPaymentMethodOptionsUsBankAccountNetworks( + TypedDict + ): + requested: NotRequired[ + "List[Literal['ach', 'us_domestic_wire']]|None" + ] + + class ConfirmParamsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + return_url: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodOptionsSepaDebit(TypedDict): + mandate_options: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsSepaDebitMandateOptions|None" + ] + + class ConfirmParamsPaymentMethodOptionsSepaDebitMandateOptions( + TypedDict, + ): + pass + + class ConfirmParamsPaymentMethodOptionsPaypal(TypedDict): + billing_agreement_id: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodOptionsLink(TypedDict): + persistent_token: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodOptionsCard(TypedDict): + mandate_options: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsCardMandateOptions|None" + ] + moto: NotRequired["bool|None"] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + + class ConfirmParamsPaymentMethodOptionsCardMandateOptions(TypedDict): + amount: int + amount_type: Literal["fixed", "maximum"] + currency: str + description: NotRequired["str|None"] + end_date: NotRequired["int|None"] + interval: Literal["day", "month", "sporadic", "week", "year"] + interval_count: NotRequired["int|None"] + reference: str + start_date: int + supported_types: NotRequired["List[Literal['india']]|None"] + + class ConfirmParamsPaymentMethodOptionsAcssDebit(TypedDict): + currency: NotRequired["Literal['cad', 'usd']|None"] + mandate_options: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ConfirmParamsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + custom_mandate_url: NotRequired["Literal['']|str|None"] + default_for: NotRequired[ + "List[Literal['invoice', 'subscription']]|None" + ] + interval_description: NotRequired["str|None"] + payment_schedule: NotRequired[ + "Literal['combined', 'interval', 'sporadic']|None" + ] + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class ConfirmParamsPaymentMethodData(TypedDict): + acss_debit: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataAcssDebit|None" + ] + affirm: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataAfterpayClearpay|None" + ] + alipay: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataAlipay|None" + ] + au_becs_debit: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataBacsDebit|None" + ] + bancontact: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataBancontact|None" + ] + billing_details: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataBillingDetails|None" + ] + blik: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataBlik|None" + ] + boleto: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataBoleto|None" + ] + cashapp: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataCashapp|None" + ] + customer_balance: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataCustomerBalance|None" + ] + eps: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataEps|None" + ] + fpx: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataFpx|None" + ] + giropay: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataGiropay|None" + ] + grabpay: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataGrabpay|None" + ] + ideal: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataIdeal|None" + ] + interac_present: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataInteracPresent|None" + ] + klarna: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataKlarna|None" + ] + konbini: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataKonbini|None" + ] + link: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataLink|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + oxxo: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataOxxo|None" + ] + p24: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataP24|None" + ] + paynow: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataPaynow|None" + ] + paypal: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataPaypal|None" + ] + pix: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataPix|None" + ] + promptpay: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataPromptpay|None" + ] + radar_options: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataRadarOptions|None" + ] + sepa_debit: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataSepaDebit|None" + ] + sofort: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataSofort|None" + ] + type: Literal[ + "acss_debit", + "affirm", + "afterpay_clearpay", + "alipay", + "au_becs_debit", + "bacs_debit", + "bancontact", + "blik", + "boleto", + "cashapp", + "customer_balance", + "eps", + "fpx", + "giropay", + "grabpay", + "ideal", + "klarna", + "konbini", + "link", + "oxxo", + "p24", + "paynow", + "paypal", + "pix", + "promptpay", + "sepa_debit", + "sofort", + "us_bank_account", + "wechat_pay", + "zip", + ] + us_bank_account: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataWechatPay|None" + ] + zip: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataZip|None" + ] + + class ConfirmParamsPaymentMethodDataZip(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataWechatPay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataSofort(TypedDict): + country: Literal["AT", "BE", "DE", "ES", "IT", "NL"] + + class ConfirmParamsPaymentMethodDataSepaDebit(TypedDict): + iban: str + + class ConfirmParamsPaymentMethodDataRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataPromptpay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataPix(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataPaypal(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataPaynow(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataP24(TypedDict): + bank: NotRequired[ + "Literal['alior_bank', 'bank_millennium', 'bank_nowy_bfg_sa', 'bank_pekao_sa', 'banki_spbdzielcze', 'blik', 'bnp_paribas', 'boz', 'citi_handlowy', 'credit_agricole', 'envelobank', 'etransfer_pocztowy24', 'getin_bank', 'ideabank', 'ing', 'inteligo', 'mbank_mtransfer', 'nest_przelew', 'noble_pay', 'pbac_z_ipko', 'plus_bank', 'santander_przelew24', 'tmobile_usbugi_bankowe', 'toyota_bank', 'volkswagen_bank']|None" + ] + + class ConfirmParamsPaymentMethodDataOxxo(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataLink(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataKonbini(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataKlarna(TypedDict): + dob: NotRequired[ + "SetupIntent.ConfirmParamsPaymentMethodDataKlarnaDob|None" + ] + + class ConfirmParamsPaymentMethodDataKlarnaDob(TypedDict): + day: int + month: int + year: int + + class ConfirmParamsPaymentMethodDataInteracPresent(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataIdeal(TypedDict): + bank: NotRequired[ + "Literal['abn_amro', 'asn_bank', 'bunq', 'handelsbanken', 'ing', 'knab', 'moneyou', 'n26', 'rabobank', 'regiobank', 'revolut', 'sns_bank', 'triodos_bank', 'van_lanschot', 'yoursafe']|None" + ] + + class ConfirmParamsPaymentMethodDataGrabpay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataGiropay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataFpx(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + bank: Literal[ + "affin_bank", + "agrobank", + "alliance_bank", + "ambank", + "bank_islam", + "bank_muamalat", + "bank_of_china", + "bank_rakyat", + "bsn", + "cimb", + "deutsche_bank", + "hong_leong_bank", + "hsbc", + "kfh", + "maybank2e", + "maybank2u", + "ocbc", + "pb_enterprise", + "public_bank", + "rhb", + "standard_chartered", + "uob", + ] + + class ConfirmParamsPaymentMethodDataEps(TypedDict): + bank: NotRequired[ + "Literal['arzte_und_apotheker_bank', 'austrian_anadi_bank_ag', 'bank_austria', 'bankhaus_carl_spangler', 'bankhaus_schelhammer_und_schattera_ag', 'bawag_psk_ag', 'bks_bank_ag', 'brull_kallmus_bank_ag', 'btv_vier_lander_bank', 'capital_bank_grawe_gruppe_ag', 'deutsche_bank_ag', 'dolomitenbank', 'easybank_ag', 'erste_bank_und_sparkassen', 'hypo_alpeadriabank_international_ag', 'hypo_bank_burgenland_aktiengesellschaft', 'hypo_noe_lb_fur_niederosterreich_u_wien', 'hypo_oberosterreich_salzburg_steiermark', 'hypo_tirol_bank_ag', 'hypo_vorarlberg_bank_ag', 'marchfelder_bank', 'oberbank_ag', 'raiffeisen_bankengruppe_osterreich', 'schoellerbank_ag', 'sparda_bank_wien', 'volksbank_gruppe', 'volkskreditbank_ag', 'vr_bank_braunau']|None" + ] + + class ConfirmParamsPaymentMethodDataCustomerBalance(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataCashapp(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataBoleto(TypedDict): + tax_id: str + + class ConfirmParamsPaymentMethodDataBlik(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|SetupIntent.ConfirmParamsPaymentMethodDataBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class ConfirmParamsPaymentMethodDataBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataBancontact(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataBacsDebit(TypedDict): + account_number: NotRequired["str|None"] + sort_code: NotRequired["str|None"] + + class ConfirmParamsPaymentMethodDataAuBecsDebit(TypedDict): + account_number: str + bsb_number: str + + class ConfirmParamsPaymentMethodDataAlipay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataAfterpayClearpay(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataAffirm(TypedDict): + pass + + class ConfirmParamsPaymentMethodDataAcssDebit(TypedDict): + account_number: str + institution_number: str + transit_number: str + + class ConfirmParamsMandateData2(TypedDict): + customer_acceptance: "SetupIntent.ConfirmParamsMandateDataCustomerAcceptance2" + + class ConfirmParamsMandateDataCustomerAcceptance2(TypedDict): + online: "SetupIntent.ConfirmParamsMandateDataCustomerAcceptanceOnline2" + type: Literal["online"] + + class ConfirmParamsMandateDataCustomerAcceptanceOnline2(TypedDict): + ip_address: NotRequired["str|None"] + user_agent: NotRequired["str|None"] + + class ConfirmParamsMandateData(TypedDict): + customer_acceptance: "SetupIntent.ConfirmParamsMandateDataCustomerAcceptance" + + class ConfirmParamsMandateDataCustomerAcceptance(TypedDict): + accepted_at: NotRequired["int|None"] + offline: NotRequired[ + "SetupIntent.ConfirmParamsMandateDataCustomerAcceptanceOffline|None" + ] + online: NotRequired[ + "SetupIntent.ConfirmParamsMandateDataCustomerAcceptanceOnline|None" + ] + type: Literal["offline", "online"] + + class ConfirmParamsMandateDataCustomerAcceptanceOnline(TypedDict): + ip_address: str + user_agent: str + + class ConfirmParamsMandateDataCustomerAcceptanceOffline(TypedDict): + pass + + class CreateParams(RequestOptions): + attach_to_self: NotRequired["bool|None"] + automatic_payment_methods: NotRequired[ + "SetupIntent.CreateParamsAutomaticPaymentMethods|None" + ] + confirm: NotRequired["bool|None"] + customer: NotRequired["str|None"] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + flow_directions: NotRequired[ + "List[Literal['inbound', 'outbound']]|None" + ] + mandate_data: NotRequired[ + "Literal['']|SetupIntent.CreateParamsMandateData|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + payment_method: NotRequired["str|None"] + payment_method_configuration: NotRequired["str|None"] + payment_method_data: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodData|None" + ] + payment_method_options: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired["List[str]|None"] + return_url: NotRequired["str|None"] + single_use: NotRequired["SetupIntent.CreateParamsSingleUse|None"] + usage: NotRequired["Literal['off_session', 'on_session']|None"] + use_stripe_sdk: NotRequired["bool|None"] + + class CreateParamsSingleUse(TypedDict): + amount: int + currency: str + + class CreateParamsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsAcssDebit|None" + ] + card: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsCard|None" + ] + link: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsLink|None" + ] + paypal: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsPaypal|None" + ] + sepa_debit: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsSepaDebit|None" + ] + us_bank_account: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsUsBankAccount|None" + ] + + class CreateParamsPaymentMethodOptionsUsBankAccount(TypedDict): + financial_connections: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + networks: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsUsBankAccountNetworks|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentMethodOptionsUsBankAccountNetworks(TypedDict): + requested: NotRequired[ + "List[Literal['ach', 'us_domestic_wire']]|None" + ] + + class CreateParamsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + return_url: NotRequired["str|None"] + + class CreateParamsPaymentMethodOptionsSepaDebit(TypedDict): + mandate_options: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsSepaDebitMandateOptions|None" + ] + + class CreateParamsPaymentMethodOptionsSepaDebitMandateOptions( + TypedDict, + ): + pass + + class CreateParamsPaymentMethodOptionsPaypal(TypedDict): + billing_agreement_id: NotRequired["str|None"] + + class CreateParamsPaymentMethodOptionsLink(TypedDict): + persistent_token: NotRequired["str|None"] + + class CreateParamsPaymentMethodOptionsCard(TypedDict): + mandate_options: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsCardMandateOptions|None" + ] + moto: NotRequired["bool|None"] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + + class CreateParamsPaymentMethodOptionsCardMandateOptions(TypedDict): + amount: int + amount_type: Literal["fixed", "maximum"] + currency: str + description: NotRequired["str|None"] + end_date: NotRequired["int|None"] + interval: Literal["day", "month", "sporadic", "week", "year"] + interval_count: NotRequired["int|None"] + reference: str + start_date: int + supported_types: NotRequired["List[Literal['india']]|None"] + + class CreateParamsPaymentMethodOptionsAcssDebit(TypedDict): + currency: NotRequired["Literal['cad', 'usd']|None"] + mandate_options: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + custom_mandate_url: NotRequired["Literal['']|str|None"] + default_for: NotRequired[ + "List[Literal['invoice', 'subscription']]|None" + ] + interval_description: NotRequired["str|None"] + payment_schedule: NotRequired[ + "Literal['combined', 'interval', 'sporadic']|None" + ] + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class CreateParamsPaymentMethodData(TypedDict): + acss_debit: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataAcssDebit|None" + ] + affirm: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataAfterpayClearpay|None" + ] + alipay: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataAlipay|None" + ] + au_becs_debit: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataBacsDebit|None" + ] + bancontact: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataBancontact|None" + ] + billing_details: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataBillingDetails|None" + ] + blik: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataBlik|None" + ] + boleto: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataBoleto|None" + ] + cashapp: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataCashapp|None" + ] + customer_balance: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataCustomerBalance|None" + ] + eps: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataEps|None" + ] + fpx: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataFpx|None" + ] + giropay: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataGiropay|None" + ] + grabpay: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataGrabpay|None" + ] + ideal: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataIdeal|None" + ] + interac_present: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataInteracPresent|None" + ] + klarna: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataKlarna|None" + ] + konbini: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataKonbini|None" + ] + link: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataLink|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + oxxo: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataOxxo|None" + ] + p24: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataP24|None" + ] + paynow: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataPaynow|None" + ] + paypal: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataPaypal|None" + ] + pix: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataPix|None" + ] + promptpay: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataPromptpay|None" + ] + radar_options: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataRadarOptions|None" + ] + sepa_debit: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataSepaDebit|None" + ] + sofort: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataSofort|None" + ] + type: Literal[ + "acss_debit", + "affirm", + "afterpay_clearpay", + "alipay", + "au_becs_debit", + "bacs_debit", + "bancontact", + "blik", + "boleto", + "cashapp", + "customer_balance", + "eps", + "fpx", + "giropay", + "grabpay", + "ideal", + "klarna", + "konbini", + "link", + "oxxo", + "p24", + "paynow", + "paypal", + "pix", + "promptpay", + "sepa_debit", + "sofort", + "us_bank_account", + "wechat_pay", + "zip", + ] + us_bank_account: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataWechatPay|None" + ] + zip: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataZip|None" + ] + + class CreateParamsPaymentMethodDataZip(TypedDict): + pass + + class CreateParamsPaymentMethodDataWechatPay(TypedDict): + pass + + class CreateParamsPaymentMethodDataUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataSofort(TypedDict): + country: Literal["AT", "BE", "DE", "ES", "IT", "NL"] + + class CreateParamsPaymentMethodDataSepaDebit(TypedDict): + iban: str + + class CreateParamsPaymentMethodDataRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataPromptpay(TypedDict): + pass + + class CreateParamsPaymentMethodDataPix(TypedDict): + pass + + class CreateParamsPaymentMethodDataPaypal(TypedDict): + pass + + class CreateParamsPaymentMethodDataPaynow(TypedDict): + pass + + class CreateParamsPaymentMethodDataP24(TypedDict): + bank: NotRequired[ + "Literal['alior_bank', 'bank_millennium', 'bank_nowy_bfg_sa', 'bank_pekao_sa', 'banki_spbdzielcze', 'blik', 'bnp_paribas', 'boz', 'citi_handlowy', 'credit_agricole', 'envelobank', 'etransfer_pocztowy24', 'getin_bank', 'ideabank', 'ing', 'inteligo', 'mbank_mtransfer', 'nest_przelew', 'noble_pay', 'pbac_z_ipko', 'plus_bank', 'santander_przelew24', 'tmobile_usbugi_bankowe', 'toyota_bank', 'volkswagen_bank']|None" + ] + + class CreateParamsPaymentMethodDataOxxo(TypedDict): + pass + + class CreateParamsPaymentMethodDataLink(TypedDict): + pass + + class CreateParamsPaymentMethodDataKonbini(TypedDict): + pass + + class CreateParamsPaymentMethodDataKlarna(TypedDict): + dob: NotRequired[ + "SetupIntent.CreateParamsPaymentMethodDataKlarnaDob|None" + ] + + class CreateParamsPaymentMethodDataKlarnaDob(TypedDict): + day: int + month: int + year: int + + class CreateParamsPaymentMethodDataInteracPresent(TypedDict): + pass + + class CreateParamsPaymentMethodDataIdeal(TypedDict): + bank: NotRequired[ + "Literal['abn_amro', 'asn_bank', 'bunq', 'handelsbanken', 'ing', 'knab', 'moneyou', 'n26', 'rabobank', 'regiobank', 'revolut', 'sns_bank', 'triodos_bank', 'van_lanschot', 'yoursafe']|None" + ] + + class CreateParamsPaymentMethodDataGrabpay(TypedDict): + pass + + class CreateParamsPaymentMethodDataGiropay(TypedDict): + pass + + class CreateParamsPaymentMethodDataFpx(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + bank: Literal[ + "affin_bank", + "agrobank", + "alliance_bank", + "ambank", + "bank_islam", + "bank_muamalat", + "bank_of_china", + "bank_rakyat", + "bsn", + "cimb", + "deutsche_bank", + "hong_leong_bank", + "hsbc", + "kfh", + "maybank2e", + "maybank2u", + "ocbc", + "pb_enterprise", + "public_bank", + "rhb", + "standard_chartered", + "uob", + ] + + class CreateParamsPaymentMethodDataEps(TypedDict): + bank: NotRequired[ + "Literal['arzte_und_apotheker_bank', 'austrian_anadi_bank_ag', 'bank_austria', 'bankhaus_carl_spangler', 'bankhaus_schelhammer_und_schattera_ag', 'bawag_psk_ag', 'bks_bank_ag', 'brull_kallmus_bank_ag', 'btv_vier_lander_bank', 'capital_bank_grawe_gruppe_ag', 'deutsche_bank_ag', 'dolomitenbank', 'easybank_ag', 'erste_bank_und_sparkassen', 'hypo_alpeadriabank_international_ag', 'hypo_bank_burgenland_aktiengesellschaft', 'hypo_noe_lb_fur_niederosterreich_u_wien', 'hypo_oberosterreich_salzburg_steiermark', 'hypo_tirol_bank_ag', 'hypo_vorarlberg_bank_ag', 'marchfelder_bank', 'oberbank_ag', 'raiffeisen_bankengruppe_osterreich', 'schoellerbank_ag', 'sparda_bank_wien', 'volksbank_gruppe', 'volkskreditbank_ag', 'vr_bank_braunau']|None" + ] + + class CreateParamsPaymentMethodDataCustomerBalance(TypedDict): + pass + + class CreateParamsPaymentMethodDataCashapp(TypedDict): + pass + + class CreateParamsPaymentMethodDataBoleto(TypedDict): + tax_id: str + + class CreateParamsPaymentMethodDataBlik(TypedDict): + pass + + class CreateParamsPaymentMethodDataBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|SetupIntent.CreateParamsPaymentMethodDataBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class CreateParamsPaymentMethodDataBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataBancontact(TypedDict): + pass + + class CreateParamsPaymentMethodDataBacsDebit(TypedDict): + account_number: NotRequired["str|None"] + sort_code: NotRequired["str|None"] + + class CreateParamsPaymentMethodDataAuBecsDebit(TypedDict): + account_number: str + bsb_number: str + + class CreateParamsPaymentMethodDataAlipay(TypedDict): + pass + + class CreateParamsPaymentMethodDataAfterpayClearpay(TypedDict): + pass + + class CreateParamsPaymentMethodDataAffirm(TypedDict): + pass + + class CreateParamsPaymentMethodDataAcssDebit(TypedDict): + account_number: str + institution_number: str + transit_number: str + + class CreateParamsMandateData(TypedDict): + customer_acceptance: "SetupIntent.CreateParamsMandateDataCustomerAcceptance" + + class CreateParamsMandateDataCustomerAcceptance(TypedDict): + accepted_at: NotRequired["int|None"] + offline: NotRequired[ + "SetupIntent.CreateParamsMandateDataCustomerAcceptanceOffline|None" + ] + online: NotRequired[ + "SetupIntent.CreateParamsMandateDataCustomerAcceptanceOnline|None" + ] + type: Literal["offline", "online"] + + class CreateParamsMandateDataCustomerAcceptanceOnline(TypedDict): + ip_address: str + user_agent: str + + class CreateParamsMandateDataCustomerAcceptanceOffline(TypedDict): + pass + + class CreateParamsAutomaticPaymentMethods(TypedDict): + allow_redirects: NotRequired["Literal['always', 'never']|None"] + enabled: bool + + class ListParams(RequestOptions): + attach_to_self: NotRequired["bool|None"] + created: NotRequired["SetupIntent.ListParamsCreated|int|None"] + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + payment_method: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + attach_to_self: NotRequired["bool|None"] + customer: NotRequired["str|None"] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + flow_directions: NotRequired[ + "List[Literal['inbound', 'outbound']]|None" + ] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + payment_method: NotRequired["str|None"] + payment_method_configuration: NotRequired["str|None"] + payment_method_data: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodData|None" + ] + payment_method_options: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired["List[str]|None"] + + class ModifyParamsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsAcssDebit|None" + ] + card: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsCard|None" + ] + link: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsLink|None" + ] + paypal: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsPaypal|None" + ] + sepa_debit: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsSepaDebit|None" + ] + us_bank_account: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsUsBankAccount|None" + ] + + class ModifyParamsPaymentMethodOptionsUsBankAccount(TypedDict): + financial_connections: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + networks: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsUsBankAccountNetworks|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentMethodOptionsUsBankAccountNetworks(TypedDict): + requested: NotRequired[ + "List[Literal['ach', 'us_domestic_wire']]|None" + ] + + class ModifyParamsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + return_url: NotRequired["str|None"] + + class ModifyParamsPaymentMethodOptionsSepaDebit(TypedDict): + mandate_options: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsSepaDebitMandateOptions|None" + ] + + class ModifyParamsPaymentMethodOptionsSepaDebitMandateOptions( + TypedDict, + ): + pass + + class ModifyParamsPaymentMethodOptionsPaypal(TypedDict): + billing_agreement_id: NotRequired["str|None"] + + class ModifyParamsPaymentMethodOptionsLink(TypedDict): + persistent_token: NotRequired["str|None"] + + class ModifyParamsPaymentMethodOptionsCard(TypedDict): + mandate_options: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsCardMandateOptions|None" + ] + moto: NotRequired["bool|None"] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + + class ModifyParamsPaymentMethodOptionsCardMandateOptions(TypedDict): + amount: int + amount_type: Literal["fixed", "maximum"] + currency: str + description: NotRequired["str|None"] + end_date: NotRequired["int|None"] + interval: Literal["day", "month", "sporadic", "week", "year"] + interval_count: NotRequired["int|None"] + reference: str + start_date: int + supported_types: NotRequired["List[Literal['india']]|None"] + + class ModifyParamsPaymentMethodOptionsAcssDebit(TypedDict): + currency: NotRequired["Literal['cad', 'usd']|None"] + mandate_options: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + custom_mandate_url: NotRequired["Literal['']|str|None"] + default_for: NotRequired[ + "List[Literal['invoice', 'subscription']]|None" + ] + interval_description: NotRequired["str|None"] + payment_schedule: NotRequired[ + "Literal['combined', 'interval', 'sporadic']|None" + ] + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class ModifyParamsPaymentMethodData(TypedDict): + acss_debit: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataAcssDebit|None" + ] + affirm: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataAffirm|None" + ] + afterpay_clearpay: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataAfterpayClearpay|None" + ] + alipay: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataAlipay|None" + ] + au_becs_debit: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataAuBecsDebit|None" + ] + bacs_debit: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataBacsDebit|None" + ] + bancontact: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataBancontact|None" + ] + billing_details: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataBillingDetails|None" + ] + blik: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataBlik|None" + ] + boleto: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataBoleto|None" + ] + cashapp: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataCashapp|None" + ] + customer_balance: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataCustomerBalance|None" + ] + eps: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataEps|None" + ] + fpx: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataFpx|None" + ] + giropay: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataGiropay|None" + ] + grabpay: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataGrabpay|None" + ] + ideal: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataIdeal|None" + ] + interac_present: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataInteracPresent|None" + ] + klarna: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataKlarna|None" + ] + konbini: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataKonbini|None" + ] + link: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataLink|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + oxxo: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataOxxo|None" + ] + p24: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataP24|None" + ] + paynow: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataPaynow|None" + ] + paypal: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataPaypal|None" + ] + pix: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataPix|None" + ] + promptpay: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataPromptpay|None" + ] + radar_options: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataRadarOptions|None" + ] + sepa_debit: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataSepaDebit|None" + ] + sofort: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataSofort|None" + ] + type: Literal[ + "acss_debit", + "affirm", + "afterpay_clearpay", + "alipay", + "au_becs_debit", + "bacs_debit", + "bancontact", + "blik", + "boleto", + "cashapp", + "customer_balance", + "eps", + "fpx", + "giropay", + "grabpay", + "ideal", + "klarna", + "konbini", + "link", + "oxxo", + "p24", + "paynow", + "paypal", + "pix", + "promptpay", + "sepa_debit", + "sofort", + "us_bank_account", + "wechat_pay", + "zip", + ] + us_bank_account: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataUsBankAccount|None" + ] + wechat_pay: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataWechatPay|None" + ] + zip: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataZip|None" + ] + + class ModifyParamsPaymentMethodDataZip(TypedDict): + pass + + class ModifyParamsPaymentMethodDataWechatPay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataSofort(TypedDict): + country: Literal["AT", "BE", "DE", "ES", "IT", "NL"] + + class ModifyParamsPaymentMethodDataSepaDebit(TypedDict): + iban: str + + class ModifyParamsPaymentMethodDataRadarOptions(TypedDict): + session: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataPromptpay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataPix(TypedDict): + pass + + class ModifyParamsPaymentMethodDataPaypal(TypedDict): + pass + + class ModifyParamsPaymentMethodDataPaynow(TypedDict): + pass + + class ModifyParamsPaymentMethodDataP24(TypedDict): + bank: NotRequired[ + "Literal['alior_bank', 'bank_millennium', 'bank_nowy_bfg_sa', 'bank_pekao_sa', 'banki_spbdzielcze', 'blik', 'bnp_paribas', 'boz', 'citi_handlowy', 'credit_agricole', 'envelobank', 'etransfer_pocztowy24', 'getin_bank', 'ideabank', 'ing', 'inteligo', 'mbank_mtransfer', 'nest_przelew', 'noble_pay', 'pbac_z_ipko', 'plus_bank', 'santander_przelew24', 'tmobile_usbugi_bankowe', 'toyota_bank', 'volkswagen_bank']|None" + ] + + class ModifyParamsPaymentMethodDataOxxo(TypedDict): + pass + + class ModifyParamsPaymentMethodDataLink(TypedDict): + pass + + class ModifyParamsPaymentMethodDataKonbini(TypedDict): + pass + + class ModifyParamsPaymentMethodDataKlarna(TypedDict): + dob: NotRequired[ + "SetupIntent.ModifyParamsPaymentMethodDataKlarnaDob|None" + ] + + class ModifyParamsPaymentMethodDataKlarnaDob(TypedDict): + day: int + month: int + year: int + + class ModifyParamsPaymentMethodDataInteracPresent(TypedDict): + pass + + class ModifyParamsPaymentMethodDataIdeal(TypedDict): + bank: NotRequired[ + "Literal['abn_amro', 'asn_bank', 'bunq', 'handelsbanken', 'ing', 'knab', 'moneyou', 'n26', 'rabobank', 'regiobank', 'revolut', 'sns_bank', 'triodos_bank', 'van_lanschot', 'yoursafe']|None" + ] + + class ModifyParamsPaymentMethodDataGrabpay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataGiropay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataFpx(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + bank: Literal[ + "affin_bank", + "agrobank", + "alliance_bank", + "ambank", + "bank_islam", + "bank_muamalat", + "bank_of_china", + "bank_rakyat", + "bsn", + "cimb", + "deutsche_bank", + "hong_leong_bank", + "hsbc", + "kfh", + "maybank2e", + "maybank2u", + "ocbc", + "pb_enterprise", + "public_bank", + "rhb", + "standard_chartered", + "uob", + ] + + class ModifyParamsPaymentMethodDataEps(TypedDict): + bank: NotRequired[ + "Literal['arzte_und_apotheker_bank', 'austrian_anadi_bank_ag', 'bank_austria', 'bankhaus_carl_spangler', 'bankhaus_schelhammer_und_schattera_ag', 'bawag_psk_ag', 'bks_bank_ag', 'brull_kallmus_bank_ag', 'btv_vier_lander_bank', 'capital_bank_grawe_gruppe_ag', 'deutsche_bank_ag', 'dolomitenbank', 'easybank_ag', 'erste_bank_und_sparkassen', 'hypo_alpeadriabank_international_ag', 'hypo_bank_burgenland_aktiengesellschaft', 'hypo_noe_lb_fur_niederosterreich_u_wien', 'hypo_oberosterreich_salzburg_steiermark', 'hypo_tirol_bank_ag', 'hypo_vorarlberg_bank_ag', 'marchfelder_bank', 'oberbank_ag', 'raiffeisen_bankengruppe_osterreich', 'schoellerbank_ag', 'sparda_bank_wien', 'volksbank_gruppe', 'volkskreditbank_ag', 'vr_bank_braunau']|None" + ] + + class ModifyParamsPaymentMethodDataCustomerBalance(TypedDict): + pass + + class ModifyParamsPaymentMethodDataCashapp(TypedDict): + pass + + class ModifyParamsPaymentMethodDataBoleto(TypedDict): + tax_id: str + + class ModifyParamsPaymentMethodDataBlik(TypedDict): + pass + + class ModifyParamsPaymentMethodDataBillingDetails(TypedDict): + address: NotRequired[ + "Literal['']|SetupIntent.ModifyParamsPaymentMethodDataBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class ModifyParamsPaymentMethodDataBillingDetailsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataBancontact(TypedDict): + pass + + class ModifyParamsPaymentMethodDataBacsDebit(TypedDict): + account_number: NotRequired["str|None"] + sort_code: NotRequired["str|None"] + + class ModifyParamsPaymentMethodDataAuBecsDebit(TypedDict): + account_number: str + bsb_number: str + + class ModifyParamsPaymentMethodDataAlipay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataAfterpayClearpay(TypedDict): + pass + + class ModifyParamsPaymentMethodDataAffirm(TypedDict): + pass + + class ModifyParamsPaymentMethodDataAcssDebit(TypedDict): + account_number: str + institution_number: str + transit_number: str + + class RetrieveParams(RequestOptions): + client_secret: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + + class VerifyMicrodepositsParams(RequestOptions): + amounts: NotRequired["List[int]|None"] + descriptor_code: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + application: Optional[ExpandableField["Application"]] attach_to_self: Optional[bool] automatic_payment_methods: Optional[StripeObject] @@ -96,7 +1472,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SetupIntent.CancelParams"] ): return cls._static_request( "post", @@ -110,7 +1486,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["SetupIntent.CancelParams"] + ): return self._request( "post", "/v1/setup_intents/{intent}/cancel".format( @@ -127,7 +1507,7 @@ def _cls_confirm( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SetupIntent.ConfirmParams"] ): return cls._static_request( "post", @@ -141,7 +1521,11 @@ def _cls_confirm( ) @util.class_method_variant("_cls_confirm") - def confirm(self, idempotency_key: Optional[str] = None, **params: Any): + def confirm( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["SetupIntent.ConfirmParams"] + ): return self._request( "post", "/v1/setup_intents/{intent}/confirm".format( @@ -158,7 +1542,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SetupIntent.CreateParams"] ) -> "SetupIntent": return cast( "SetupIntent", @@ -179,7 +1563,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SetupIntent.ListParams"] ) -> ListObject["SetupIntent"]: result = cls._static_request( "get", @@ -199,7 +1583,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "SetupIntent": + def modify( + cls, id, **params: Unpack["SetupIntent.ModifyParams"] + ) -> "SetupIntent": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "SetupIntent", @@ -208,9 +1594,9 @@ def modify(cls, id, **params: Any) -> "SetupIntent": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["SetupIntent.RetrieveParams"] ) -> "SetupIntent": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -221,7 +1607,7 @@ def _cls_verify_microdeposits( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SetupIntent.VerifyMicrodepositsParams"] ): return cls._static_request( "post", @@ -236,7 +1622,9 @@ def _cls_verify_microdeposits( @util.class_method_variant("_cls_verify_microdeposits") def verify_microdeposits( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["SetupIntent.VerifyMicrodepositsParams"] ): return self._request( "post", diff --git a/stripe/api_resources/shipping_rate.py b/stripe/api_resources/shipping_rate.py index 73bf6e164..8d5d985c2 100644 --- a/stripe/api_resources/shipping_rate.py +++ b/stripe/api_resources/shipping_rate.py @@ -7,13 +7,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.tax_code import TaxCode @@ -29,6 +34,93 @@ class ShippingRate( """ OBJECT_NAME = "shipping_rate" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + delivery_estimate: NotRequired[ + "ShippingRate.CreateParamsDeliveryEstimate|None" + ] + display_name: str + expand: NotRequired["List[str]|None"] + fixed_amount: NotRequired[ + "ShippingRate.CreateParamsFixedAmount|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + tax_code: NotRequired["str|None"] + type: NotRequired["Literal['fixed_amount']|None"] + + class CreateParamsFixedAmount(TypedDict): + amount: int + currency: str + currency_options: NotRequired[ + "Dict[str, ShippingRate.CreateParamsFixedAmountCurrencyOptions]|None" + ] + + class CreateParamsFixedAmountCurrencyOptions(TypedDict): + amount: int + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + + class CreateParamsDeliveryEstimate(TypedDict): + maximum: NotRequired[ + "ShippingRate.CreateParamsDeliveryEstimateMaximum|None" + ] + minimum: NotRequired[ + "ShippingRate.CreateParamsDeliveryEstimateMinimum|None" + ] + + class CreateParamsDeliveryEstimateMinimum(TypedDict): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class CreateParamsDeliveryEstimateMaximum(TypedDict): + unit: Literal["business_day", "day", "hour", "month", "week"] + value: int + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + created: NotRequired["ShippingRate.ListParamsCreated|int|None"] + currency: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + expand: NotRequired["List[str]|None"] + fixed_amount: NotRequired[ + "ShippingRate.ModifyParamsFixedAmount|None" + ] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + + class ModifyParamsFixedAmount(TypedDict): + currency_options: NotRequired[ + "Dict[str, ShippingRate.ModifyParamsFixedAmountCurrencyOptions]|None" + ] + + class ModifyParamsFixedAmountCurrencyOptions(TypedDict): + amount: NotRequired["int|None"] + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + active: bool created: int delivery_estimate: Optional[StripeObject] @@ -49,7 +141,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ShippingRate.CreateParams"] ) -> "ShippingRate": return cast( "ShippingRate", @@ -70,7 +162,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ShippingRate.ListParams"] ) -> ListObject["ShippingRate"]: result = cls._static_request( "get", @@ -90,7 +182,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "ShippingRate": + def modify( + cls, id, **params: Unpack["ShippingRate.ModifyParams"] + ) -> "ShippingRate": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "ShippingRate", @@ -99,8 +193,8 @@ def modify(cls, id, **params: Any) -> "ShippingRate": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ShippingRate.RetrieveParams"] ) -> "ShippingRate": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/sigma/scheduled_query_run.py b/stripe/api_resources/sigma/scheduled_query_run.py index fe208a5dc..936a898ae 100644 --- a/stripe/api_resources/sigma/scheduled_query_run.py +++ b/stripe/api_resources/sigma/scheduled_query_run.py @@ -2,11 +2,10 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.file import File @@ -21,6 +20,17 @@ class ScheduledQueryRun(ListableAPIResource["ScheduledQueryRun"]): """ OBJECT_NAME = "scheduled_query_run" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int data_load_time: int error: Optional[StripeObject] @@ -39,7 +49,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ScheduledQueryRun.ListParams"] ) -> ListObject["ScheduledQueryRun"]: result = cls._static_request( "get", @@ -60,9 +70,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ScheduledQueryRun.RetrieveParams"] ) -> "ScheduledQueryRun": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/source.py b/stripe/api_resources/source.py index 494424407..f03be49e1 100644 --- a/stripe/api_resources/source.py +++ b/stripe/api_resources/source.py @@ -6,9 +6,16 @@ CreateableAPIResource, UpdateableAPIResource, ) +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -27,6 +34,216 @@ class Source(CreateableAPIResource["Source"], UpdateableAPIResource["Source"]): """ OBJECT_NAME = "source" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + amount: NotRequired["int|None"] + currency: NotRequired["str|None"] + customer: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + flow: NotRequired[ + "Literal['code_verification', 'none', 'receiver', 'redirect']|None" + ] + mandate: NotRequired["Source.CreateParamsMandate|None"] + metadata: NotRequired["Dict[str, str]|None"] + original_source: NotRequired["str|None"] + owner: NotRequired["Source.CreateParamsOwner|None"] + receiver: NotRequired["Source.CreateParamsReceiver|None"] + redirect: NotRequired["Source.CreateParamsRedirect|None"] + source_order: NotRequired["Source.CreateParamsSourceOrder|None"] + statement_descriptor: NotRequired["str|None"] + token: NotRequired["str|None"] + type: NotRequired["str|None"] + usage: NotRequired["Literal['reusable', 'single_use']|None"] + + class CreateParamsSourceOrder(TypedDict): + items: NotRequired["List[Source.CreateParamsSourceOrderItem]|None"] + shipping: NotRequired[ + "Source.CreateParamsSourceOrderShipping|None" + ] + + class CreateParamsSourceOrderShipping(TypedDict): + address: "Source.CreateParamsSourceOrderShippingAddress" + carrier: NotRequired["str|None"] + name: NotRequired["str|None"] + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class CreateParamsSourceOrderShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: str + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsSourceOrderItem(TypedDict): + amount: NotRequired["int|None"] + currency: NotRequired["str|None"] + description: NotRequired["str|None"] + parent: NotRequired["str|None"] + quantity: NotRequired["int|None"] + type: NotRequired[ + "Literal['discount', 'shipping', 'sku', 'tax']|None" + ] + + class CreateParamsRedirect(TypedDict): + return_url: str + + class CreateParamsReceiver(TypedDict): + refund_attributes_method: NotRequired[ + "Literal['email', 'manual', 'none']|None" + ] + + class CreateParamsOwner(TypedDict): + address: NotRequired["Source.CreateParamsOwnerAddress|None"] + email: NotRequired["str|None"] + name: NotRequired["str|None"] + phone: NotRequired["str|None"] + + class CreateParamsOwnerAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsMandate(TypedDict): + acceptance: NotRequired[ + "Source.CreateParamsMandateAcceptance|None" + ] + amount: NotRequired["Literal['']|int|None"] + currency: NotRequired["str|None"] + interval: NotRequired[ + "Literal['one_time', 'scheduled', 'variable']|None" + ] + notification_method: NotRequired[ + "Literal['deprecated_none', 'email', 'manual', 'none', 'stripe_email']|None" + ] + + class CreateParamsMandateAcceptance(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + offline: NotRequired[ + "Source.CreateParamsMandateAcceptanceOffline|None" + ] + online: NotRequired[ + "Source.CreateParamsMandateAcceptanceOnline|None" + ] + status: Literal["accepted", "pending", "refused", "revoked"] + type: NotRequired["Literal['offline', 'online']|None"] + user_agent: NotRequired["str|None"] + + class CreateParamsMandateAcceptanceOnline(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["str|None"] + + class CreateParamsMandateAcceptanceOffline(TypedDict): + contact_email: str + + class ListSourceTransactionsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + amount: NotRequired["int|None"] + expand: NotRequired["List[str]|None"] + mandate: NotRequired["Source.ModifyParamsMandate|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + owner: NotRequired["Source.ModifyParamsOwner|None"] + source_order: NotRequired["Source.ModifyParamsSourceOrder|None"] + + class ModifyParamsSourceOrder(TypedDict): + items: NotRequired["List[Source.ModifyParamsSourceOrderItem]|None"] + shipping: NotRequired[ + "Source.ModifyParamsSourceOrderShipping|None" + ] + + class ModifyParamsSourceOrderShipping(TypedDict): + address: "Source.ModifyParamsSourceOrderShippingAddress" + carrier: NotRequired["str|None"] + name: NotRequired["str|None"] + phone: NotRequired["str|None"] + tracking_number: NotRequired["str|None"] + + class ModifyParamsSourceOrderShippingAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: str + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsSourceOrderItem(TypedDict): + amount: NotRequired["int|None"] + currency: NotRequired["str|None"] + description: NotRequired["str|None"] + parent: NotRequired["str|None"] + quantity: NotRequired["int|None"] + type: NotRequired[ + "Literal['discount', 'shipping', 'sku', 'tax']|None" + ] + + class ModifyParamsOwner(TypedDict): + address: NotRequired["Source.ModifyParamsOwnerAddress|None"] + email: NotRequired["str|None"] + name: NotRequired["str|None"] + phone: NotRequired["str|None"] + + class ModifyParamsOwnerAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsMandate(TypedDict): + acceptance: NotRequired[ + "Source.ModifyParamsMandateAcceptance|None" + ] + amount: NotRequired["Literal['']|int|None"] + currency: NotRequired["str|None"] + interval: NotRequired[ + "Literal['one_time', 'scheduled', 'variable']|None" + ] + notification_method: NotRequired[ + "Literal['deprecated_none', 'email', 'manual', 'none', 'stripe_email']|None" + ] + + class ModifyParamsMandateAcceptance(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + offline: NotRequired[ + "Source.ModifyParamsMandateAcceptanceOffline|None" + ] + online: NotRequired[ + "Source.ModifyParamsMandateAcceptanceOnline|None" + ] + status: Literal["accepted", "pending", "refused", "revoked"] + type: NotRequired["Literal['offline', 'online']|None"] + user_agent: NotRequired["str|None"] + + class ModifyParamsMandateAcceptanceOnline(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["str|None"] + + class ModifyParamsMandateAcceptanceOffline(TypedDict): + contact_email: str + + class RetrieveParams(RequestOptions): + client_secret: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + + class VerifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + values: List[str] + ach_credit_transfer: Optional[StripeObject] ach_debit: Optional[StripeObject] acss_debit: Optional[StripeObject] @@ -93,7 +310,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Source.CreateParams"] ) -> "Source": return cast( "Source", @@ -115,7 +332,7 @@ def _cls_list_source_transactions( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Source.ListSourceTransactionsParams"] ): return cls._static_request( "get", @@ -130,7 +347,9 @@ def _cls_list_source_transactions( @util.class_method_variant("_cls_list_source_transactions") def list_source_transactions( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Source.ListSourceTransactionsParams"] ): return self._request( "get", @@ -142,7 +361,7 @@ def list_source_transactions( ) @classmethod - def modify(cls, id, **params: Any) -> "Source": + def modify(cls, id, **params: Unpack["Source.ModifyParams"]) -> "Source": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Source", @@ -151,9 +370,9 @@ def modify(cls, id, **params: Any) -> "Source": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Source.RetrieveParams"] ) -> "Source": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -164,7 +383,7 @@ def _cls_verify( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Source.VerifyParams"] ): return cls._static_request( "post", @@ -178,7 +397,11 @@ def _cls_verify( ) @util.class_method_variant("_cls_verify") - def verify(self, idempotency_key: Optional[str] = None, **params: Any): + def verify( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Source.VerifyParams"] + ): return self._request( "post", "/v1/sources/{source}/verify".format( diff --git a/stripe/api_resources/source_mandate_notification.py b/stripe/api_resources/source_mandate_notification.py index 9d1a9ab81..ca3640c15 100644 --- a/stripe/api_resources/source_mandate_notification.py +++ b/stripe/api_resources/source_mandate_notification.py @@ -2,9 +2,7 @@ # File generated from our OpenAPI spec from stripe.stripe_object import StripeObject from typing import Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing_extensions import Literal, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.source import Source diff --git a/stripe/api_resources/subscription.py b/stripe/api_resources/subscription.py index ff47e8d67..59de5e84c 100644 --- a/stripe/api_resources/subscription.py +++ b/stripe/api_resources/subscription.py @@ -11,13 +11,18 @@ from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject from stripe.api_resources.search_result_object import SearchResultObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.application import Application @@ -46,6 +51,591 @@ class Subscription( """ OBJECT_NAME = "subscription" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + cancellation_details: NotRequired[ + "Subscription.CancelParamsCancellationDetails|None" + ] + expand: NotRequired["List[str]|None"] + invoice_now: NotRequired["bool|None"] + prorate: NotRequired["bool|None"] + + class CancelParamsCancellationDetails(TypedDict): + comment: NotRequired["Literal['']|str|None"] + feedback: NotRequired[ + "Literal['']|Literal['customer_service', 'low_quality', 'missing_features', 'other', 'switched_service', 'too_complex', 'too_expensive', 'unused']|None" + ] + + class CreateParams(RequestOptions): + add_invoice_items: NotRequired[ + "List[Subscription.CreateParamsAddInvoiceItem]|None" + ] + application_fee_percent: NotRequired["float|None"] + automatic_tax: NotRequired[ + "Subscription.CreateParamsAutomaticTax|None" + ] + backdate_start_date: NotRequired["int|None"] + billing_cycle_anchor: NotRequired["int|None"] + billing_thresholds: NotRequired[ + "Literal['']|Subscription.CreateParamsBillingThresholds|None" + ] + cancel_at: NotRequired["int|None"] + cancel_at_period_end: NotRequired["bool|None"] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + coupon: NotRequired["str|None"] + currency: NotRequired["str|None"] + customer: str + days_until_due: NotRequired["int|None"] + default_payment_method: NotRequired["str|None"] + default_source: NotRequired["str|None"] + default_tax_rates: NotRequired["Literal['']|List[str]|None"] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + items: NotRequired["List[Subscription.CreateParamsItem]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + off_session: NotRequired["bool|None"] + on_behalf_of: NotRequired["Literal['']|str|None"] + payment_behavior: NotRequired[ + "Literal['allow_incomplete', 'default_incomplete', 'error_if_incomplete', 'pending_if_incomplete']|None" + ] + payment_settings: NotRequired[ + "Subscription.CreateParamsPaymentSettings|None" + ] + pending_invoice_item_interval: NotRequired[ + "Literal['']|Subscription.CreateParamsPendingInvoiceItemInterval|None" + ] + promotion_code: NotRequired["str|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + transfer_data: NotRequired[ + "Subscription.CreateParamsTransferData|None" + ] + trial_end: NotRequired["Literal['now']|int|None"] + trial_from_plan: NotRequired["bool|None"] + trial_period_days: NotRequired["int|None"] + trial_settings: NotRequired[ + "Subscription.CreateParamsTrialSettings|None" + ] + + class CreateParamsTrialSettings(TypedDict): + end_behavior: "Subscription.CreateParamsTrialSettingsEndBehavior" + + class CreateParamsTrialSettingsEndBehavior(TypedDict): + missing_payment_method: Literal[ + "cancel", "create_invoice", "pause" + ] + + class CreateParamsTransferData(TypedDict): + amount_percent: NotRequired["float|None"] + destination: str + + class CreateParamsPendingInvoiceItemInterval(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class CreateParamsPaymentSettings(TypedDict): + payment_method_options: NotRequired[ + "Subscription.CreateParamsPaymentSettingsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired[ + "Literal['']|List[Literal['ach_credit_transfer', 'ach_debit', 'acss_debit', 'au_becs_debit', 'bacs_debit', 'bancontact', 'boleto', 'card', 'cashapp', 'customer_balance', 'fpx', 'giropay', 'grabpay', 'ideal', 'konbini', 'link', 'paynow', 'paypal', 'promptpay', 'sepa_credit_transfer', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay']]|None" + ] + save_default_payment_method: NotRequired[ + "Literal['off', 'on_subscription']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Literal['']|Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebit|None" + ] + bancontact: NotRequired[ + "Literal['']|Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsBancontact|None" + ] + card: NotRequired[ + "Literal['']|Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsCard|None" + ] + customer_balance: NotRequired[ + "Literal['']|Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalance|None" + ] + konbini: NotRequired[ + "Literal['']|Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsKonbini|None" + ] + us_bank_account: NotRequired[ + "Literal['']|Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccount|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccount( + TypedDict, + ): + financial_connections: NotRequired[ + "Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsKonbini( + TypedDict + ): + pass + + class CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalance( + TypedDict, + ): + bank_transfer: NotRequired[ + "Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["str|None"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + type: NotRequired["str|None"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class CreateParamsPaymentSettingsPaymentMethodOptionsCard(TypedDict): + mandate_options: NotRequired[ + "Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsCardMandateOptions|None" + ] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsCardMandateOptions( + TypedDict, + ): + amount: NotRequired["int|None"] + amount_type: NotRequired["Literal['fixed', 'maximum']|None"] + description: NotRequired["str|None"] + + class CreateParamsPaymentSettingsPaymentMethodOptionsBancontact( + TypedDict, + ): + preferred_language: NotRequired[ + "Literal['de', 'en', 'fr', 'nl']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebit( + TypedDict, + ): + mandate_options: NotRequired[ + "Subscription.CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class CreateParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class CreateParamsItem(TypedDict): + billing_thresholds: NotRequired[ + "Literal['']|Subscription.CreateParamsItemBillingThresholds|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "Subscription.CreateParamsItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class CreateParamsItemPriceData(TypedDict): + currency: str + product: str + recurring: "Subscription.CreateParamsItemPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class CreateParamsItemBillingThresholds(TypedDict): + usage_gte: int + + class CreateParamsBillingThresholds(TypedDict): + amount_gte: NotRequired["int|None"] + reset_billing_cycle_anchor: NotRequired["bool|None"] + + class CreateParamsAutomaticTax(TypedDict): + enabled: bool + + class CreateParamsAddInvoiceItem(TypedDict): + price: NotRequired["str|None"] + price_data: NotRequired[ + "Subscription.CreateParamsAddInvoiceItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class CreateParamsAddInvoiceItemPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class DeleteDiscountParams(RequestOptions): + pass + + class ListParams(RequestOptions): + automatic_tax: NotRequired[ + "Subscription.ListParamsAutomaticTax|None" + ] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + created: NotRequired["Subscription.ListParamsCreated|int|None"] + current_period_end: NotRequired[ + "Subscription.ListParamsCurrentPeriodEnd|int|None" + ] + current_period_start: NotRequired[ + "Subscription.ListParamsCurrentPeriodStart|int|None" + ] + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['active', 'all', 'canceled', 'ended', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']|None" + ] + test_clock: NotRequired["str|None"] + + class ListParamsCurrentPeriodStart(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCurrentPeriodEnd(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsAutomaticTax(TypedDict): + enabled: bool + + class ModifyParams(RequestOptions): + add_invoice_items: NotRequired[ + "List[Subscription.ModifyParamsAddInvoiceItem]|None" + ] + application_fee_percent: NotRequired["float|None"] + automatic_tax: NotRequired[ + "Subscription.ModifyParamsAutomaticTax|None" + ] + billing_cycle_anchor: NotRequired[ + "Literal['now', 'unchanged']|None" + ] + billing_thresholds: NotRequired[ + "Literal['']|Subscription.ModifyParamsBillingThresholds|None" + ] + cancel_at: NotRequired["Literal['']|int|None"] + cancel_at_period_end: NotRequired["bool|None"] + cancellation_details: NotRequired[ + "Subscription.ModifyParamsCancellationDetails|None" + ] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + coupon: NotRequired["str|None"] + days_until_due: NotRequired["int|None"] + default_payment_method: NotRequired["str|None"] + default_source: NotRequired["Literal['']|str|None"] + default_tax_rates: NotRequired["Literal['']|List[str]|None"] + description: NotRequired["Literal['']|str|None"] + expand: NotRequired["List[str]|None"] + items: NotRequired["List[Subscription.ModifyParamsItem]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + off_session: NotRequired["bool|None"] + on_behalf_of: NotRequired["Literal['']|str|None"] + pause_collection: NotRequired[ + "Literal['']|Subscription.ModifyParamsPauseCollection|None" + ] + payment_behavior: NotRequired[ + "Literal['allow_incomplete', 'default_incomplete', 'error_if_incomplete', 'pending_if_incomplete']|None" + ] + payment_settings: NotRequired[ + "Subscription.ModifyParamsPaymentSettings|None" + ] + pending_invoice_item_interval: NotRequired[ + "Literal['']|Subscription.ModifyParamsPendingInvoiceItemInterval|None" + ] + promotion_code: NotRequired["str|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + proration_date: NotRequired["int|None"] + transfer_data: NotRequired[ + "Literal['']|Subscription.ModifyParamsTransferData|None" + ] + trial_end: NotRequired["Literal['now']|int|None"] + trial_from_plan: NotRequired["bool|None"] + trial_settings: NotRequired[ + "Subscription.ModifyParamsTrialSettings|None" + ] + + class ModifyParamsTrialSettings(TypedDict): + end_behavior: "Subscription.ModifyParamsTrialSettingsEndBehavior" + + class ModifyParamsTrialSettingsEndBehavior(TypedDict): + missing_payment_method: Literal[ + "cancel", "create_invoice", "pause" + ] + + class ModifyParamsTransferData(TypedDict): + amount_percent: NotRequired["float|None"] + destination: str + + class ModifyParamsPendingInvoiceItemInterval(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class ModifyParamsPaymentSettings(TypedDict): + payment_method_options: NotRequired[ + "Subscription.ModifyParamsPaymentSettingsPaymentMethodOptions|None" + ] + payment_method_types: NotRequired[ + "Literal['']|List[Literal['ach_credit_transfer', 'ach_debit', 'acss_debit', 'au_becs_debit', 'bacs_debit', 'bancontact', 'boleto', 'card', 'cashapp', 'customer_balance', 'fpx', 'giropay', 'grabpay', 'ideal', 'konbini', 'link', 'paynow', 'paypal', 'promptpay', 'sepa_credit_transfer', 'sepa_debit', 'sofort', 'us_bank_account', 'wechat_pay']]|None" + ] + save_default_payment_method: NotRequired[ + "Literal['off', 'on_subscription']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptions(TypedDict): + acss_debit: NotRequired[ + "Literal['']|Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebit|None" + ] + bancontact: NotRequired[ + "Literal['']|Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsBancontact|None" + ] + card: NotRequired[ + "Literal['']|Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsCard|None" + ] + customer_balance: NotRequired[ + "Literal['']|Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalance|None" + ] + konbini: NotRequired[ + "Literal['']|Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsKonbini|None" + ] + us_bank_account: NotRequired[ + "Literal['']|Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccount|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccount( + TypedDict, + ): + financial_connections: NotRequired[ + "Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsUsBankAccountFinancialConnections( + TypedDict, + ): + permissions: NotRequired[ + "List[Literal['balances', 'ownership', 'payment_method', 'transactions']]|None" + ] + prefetch: NotRequired["List[Literal['balances']]|None"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsKonbini( + TypedDict + ): + pass + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalance( + TypedDict, + ): + bank_transfer: NotRequired[ + "Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer|None" + ] + funding_type: NotRequired["str|None"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransfer( + TypedDict, + ): + eu_bank_transfer: NotRequired[ + "Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer|None" + ] + type: NotRequired["str|None"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer( + TypedDict, + ): + country: str + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCard(TypedDict): + mandate_options: NotRequired[ + "Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsCardMandateOptions|None" + ] + network: NotRequired[ + "Literal['amex', 'cartes_bancaires', 'diners', 'discover', 'eftpos_au', 'interac', 'jcb', 'mastercard', 'unionpay', 'unknown', 'visa']|None" + ] + request_three_d_secure: NotRequired[ + "Literal['any', 'automatic']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsCardMandateOptions( + TypedDict, + ): + amount: NotRequired["int|None"] + amount_type: NotRequired["Literal['fixed', 'maximum']|None"] + description: NotRequired["str|None"] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsBancontact( + TypedDict, + ): + preferred_language: NotRequired[ + "Literal['de', 'en', 'fr', 'nl']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebit( + TypedDict, + ): + mandate_options: NotRequired[ + "Subscription.ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions|None" + ] + verification_method: NotRequired[ + "Literal['automatic', 'instant', 'microdeposits']|None" + ] + + class ModifyParamsPaymentSettingsPaymentMethodOptionsAcssDebitMandateOptions( + TypedDict, + ): + transaction_type: NotRequired[ + "Literal['business', 'personal']|None" + ] + + class ModifyParamsPauseCollection(TypedDict): + behavior: Literal["keep_as_draft", "mark_uncollectible", "void"] + resumes_at: NotRequired["int|None"] + + class ModifyParamsItem(TypedDict): + billing_thresholds: NotRequired[ + "Literal['']|Subscription.ModifyParamsItemBillingThresholds|None" + ] + clear_usage: NotRequired["bool|None"] + deleted: NotRequired["bool|None"] + id: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "Subscription.ModifyParamsItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class ModifyParamsItemPriceData(TypedDict): + currency: str + product: str + recurring: "Subscription.ModifyParamsItemPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class ModifyParamsItemBillingThresholds(TypedDict): + usage_gte: int + + class ModifyParamsCancellationDetails(TypedDict): + comment: NotRequired["Literal['']|str|None"] + feedback: NotRequired[ + "Literal['']|Literal['customer_service', 'low_quality', 'missing_features', 'other', 'switched_service', 'too_complex', 'too_expensive', 'unused']|None" + ] + + class ModifyParamsBillingThresholds(TypedDict): + amount_gte: NotRequired["int|None"] + reset_billing_cycle_anchor: NotRequired["bool|None"] + + class ModifyParamsAutomaticTax(TypedDict): + enabled: bool + + class ModifyParamsAddInvoiceItem(TypedDict): + price: NotRequired["str|None"] + price_data: NotRequired[ + "Subscription.ModifyParamsAddInvoiceItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class ModifyParamsAddInvoiceItemPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ResumeParams(RequestOptions): + billing_cycle_anchor: NotRequired[ + "Literal['now', 'unchanged']|None" + ] + expand: NotRequired["List[str]|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + proration_date: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SearchParams(RequestOptions): + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + page: NotRequired["str|None"] + query: str + application: Optional[ExpandableField["Application"]] application_fee_percent: Optional[float] automatic_tax: StripeObject @@ -106,7 +696,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Subscription.CancelParams"] ): return cls._static_request( "delete", @@ -122,7 +712,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Subscription.CancelParams"] + ): return self._request( "delete", "/v1/subscriptions/{subscription_exposed_id}".format( @@ -139,7 +733,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Subscription.CreateParams"] ) -> "Subscription": return cast( "Subscription", @@ -161,7 +755,7 @@ def _cls_delete_discount( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Subscription.DeleteDiscountParams"] ): return cls._static_request( "delete", @@ -178,7 +772,9 @@ def _cls_delete_discount( @util.class_method_variant("_cls_delete_discount") def delete_discount( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Subscription.DeleteDiscountParams"] ): return self._request( "delete", @@ -195,7 +791,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Subscription.ListParams"] ) -> ListObject["Subscription"]: result = cls._static_request( "get", @@ -215,7 +811,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Subscription": + def modify( + cls, id, **params: Unpack["Subscription.ModifyParams"] + ) -> "Subscription": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Subscription", @@ -229,7 +827,7 @@ def _cls_resume( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Subscription.ResumeParams"] ): return cls._static_request( "post", @@ -243,7 +841,11 @@ def _cls_resume( ) @util.class_method_variant("_cls_resume") - def resume(self, idempotency_key: Optional[str] = None, **params: Any): + def resume( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Subscription.ResumeParams"] + ): return self._request( "post", "/v1/subscriptions/{subscription}/resume".format( @@ -255,18 +857,22 @@ def resume(self, idempotency_key: Optional[str] = None, **params: Any): @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Subscription.RetrieveParams"] ) -> "Subscription": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @classmethod - def search(cls, *args, **kwargs) -> SearchResultObject["Subscription"]: + def search( + cls, *args, **kwargs: Unpack["Subscription.SearchParams"] + ) -> SearchResultObject["Subscription"]: return cls._search( search_url="/v1/subscriptions/search", *args, **kwargs ) @classmethod - def search_auto_paging_iter(cls, *args, **kwargs): + def search_auto_paging_iter( + cls, *args, **kwargs: Unpack["Subscription.SearchParams"] + ): return cls.search(*args, **kwargs).auto_paging_iter() diff --git a/stripe/api_resources/subscription_item.py b/stripe/api_resources/subscription_item.py index 7d8a91747..c0e33e5fc 100644 --- a/stripe/api_resources/subscription_item.py +++ b/stripe/api_resources/subscription_item.py @@ -9,13 +9,18 @@ nested_resource_class_methods, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.plan import Plan from stripe.api_resources.price import Price @@ -36,6 +41,115 @@ class SubscriptionItem( """ OBJECT_NAME = "subscription_item" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionItem.CreateParamsBillingThresholds|None" + ] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + payment_behavior: NotRequired[ + "Literal['allow_incomplete', 'default_incomplete', 'error_if_incomplete', 'pending_if_incomplete']|None" + ] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "SubscriptionItem.CreateParamsPriceData|None" + ] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + proration_date: NotRequired["int|None"] + quantity: NotRequired["int|None"] + subscription: str + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class CreateParamsPriceData(TypedDict): + currency: str + product: str + recurring: "SubscriptionItem.CreateParamsPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class CreateParamsBillingThresholds(TypedDict): + usage_gte: int + + class DeleteParams(RequestOptions): + clear_usage: NotRequired["bool|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + proration_date: NotRequired["int|None"] + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + subscription: str + + class ModifyParams(RequestOptions): + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionItem.ModifyParamsBillingThresholds|None" + ] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + off_session: NotRequired["bool|None"] + payment_behavior: NotRequired[ + "Literal['allow_incomplete', 'default_incomplete', 'error_if_incomplete', 'pending_if_incomplete']|None" + ] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "SubscriptionItem.ModifyParamsPriceData|None" + ] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + proration_date: NotRequired["int|None"] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class ModifyParamsPriceData(TypedDict): + currency: str + product: str + recurring: "SubscriptionItem.ModifyParamsPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class ModifyParamsBillingThresholds(TypedDict): + usage_gte: int + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateUsageRecordParams(RequestOptions): + action: NotRequired["Literal['increment', 'set']|None"] + expand: NotRequired["List[str]|None"] + quantity: int + timestamp: NotRequired["Literal['now']|int|None"] + + class ListUsageRecordSummariesParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + billing_thresholds: Optional[StripeObject] created: int id: str @@ -55,7 +169,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionItem.CreateParams"] ) -> "SubscriptionItem": return cast( "SubscriptionItem", @@ -71,7 +185,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "SubscriptionItem": + def _cls_delete( + cls, sid: str, **params: Unpack["SubscriptionItem.DeleteParams"] + ) -> "SubscriptionItem": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "SubscriptionItem", @@ -79,7 +195,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "SubscriptionItem": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "SubscriptionItem": + def delete( + self, **params: Unpack["SubscriptionItem.DeleteParams"] + ) -> "SubscriptionItem": return self._request_and_refresh( "delete", self.instance_url(), @@ -92,7 +210,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionItem.ListParams"] ) -> ListObject["SubscriptionItem"]: result = cls._static_request( "get", @@ -112,7 +230,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "SubscriptionItem": + def modify( + cls, id, **params: Unpack["SubscriptionItem.ModifyParams"] + ) -> "SubscriptionItem": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "SubscriptionItem", @@ -121,9 +241,9 @@ def modify(cls, id, **params: Any) -> "SubscriptionItem": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["SubscriptionItem.RetrieveParams"] ) -> "SubscriptionItem": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -134,7 +254,7 @@ def create_usage_record( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionItem.CreateUsageRecordParams"] ): return cls._static_request( "post", @@ -154,7 +274,7 @@ def list_usage_record_summaries( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionItem.ListUsageRecordSummariesParams"] ): return cls._static_request( "get", diff --git a/stripe/api_resources/subscription_schedule.py b/stripe/api_resources/subscription_schedule.py index 6002354fd..b53ffab8b 100644 --- a/stripe/api_resources/subscription_schedule.py +++ b/stripe/api_resources/subscription_schedule.py @@ -8,13 +8,18 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.application import Application from stripe.api_resources.customer import Customer @@ -34,6 +39,373 @@ class SubscriptionSchedule( """ OBJECT_NAME = "subscription_schedule" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + invoice_now: NotRequired["bool|None"] + prorate: NotRequired["bool|None"] + + class CreateParams(RequestOptions): + customer: NotRequired["str|None"] + default_settings: NotRequired[ + "SubscriptionSchedule.CreateParamsDefaultSettings|None" + ] + end_behavior: NotRequired[ + "Literal['cancel', 'none', 'release', 'renew']|None" + ] + expand: NotRequired["List[str]|None"] + from_subscription: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + phases: NotRequired[ + "List[SubscriptionSchedule.CreateParamsPhase]|None" + ] + start_date: NotRequired["int|Literal['now']|None"] + + class CreateParamsPhase(TypedDict): + add_invoice_items: NotRequired[ + "List[SubscriptionSchedule.CreateParamsPhaseAddInvoiceItem]|None" + ] + application_fee_percent: NotRequired["float|None"] + automatic_tax: NotRequired[ + "SubscriptionSchedule.CreateParamsPhaseAutomaticTax|None" + ] + billing_cycle_anchor: NotRequired[ + "Literal['automatic', 'phase_start']|None" + ] + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionSchedule.CreateParamsPhaseBillingThresholds|None" + ] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + coupon: NotRequired["str|None"] + currency: NotRequired["str|None"] + default_payment_method: NotRequired["str|None"] + default_tax_rates: NotRequired["Literal['']|List[str]|None"] + description: NotRequired["Literal['']|str|None"] + end_date: NotRequired["int|None"] + invoice_settings: NotRequired[ + "SubscriptionSchedule.CreateParamsPhaseInvoiceSettings|None" + ] + items: List["SubscriptionSchedule.CreateParamsPhaseItem"] + iterations: NotRequired["int|None"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + transfer_data: NotRequired[ + "SubscriptionSchedule.CreateParamsPhaseTransferData|None" + ] + trial: NotRequired["bool|None"] + trial_end: NotRequired["int|None"] + + class CreateParamsPhaseTransferData(TypedDict): + amount_percent: NotRequired["float|None"] + destination: str + + class CreateParamsPhaseItem(TypedDict): + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionSchedule.CreateParamsPhaseItemBillingThresholds|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "SubscriptionSchedule.CreateParamsPhaseItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class CreateParamsPhaseItemPriceData(TypedDict): + currency: str + product: str + recurring: "SubscriptionSchedule.CreateParamsPhaseItemPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsPhaseItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class CreateParamsPhaseItemBillingThresholds(TypedDict): + usage_gte: int + + class CreateParamsPhaseInvoiceSettings(TypedDict): + days_until_due: NotRequired["int|None"] + + class CreateParamsPhaseBillingThresholds(TypedDict): + amount_gte: NotRequired["int|None"] + reset_billing_cycle_anchor: NotRequired["bool|None"] + + class CreateParamsPhaseAutomaticTax(TypedDict): + enabled: bool + + class CreateParamsPhaseAddInvoiceItem(TypedDict): + price: NotRequired["str|None"] + price_data: NotRequired[ + "SubscriptionSchedule.CreateParamsPhaseAddInvoiceItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class CreateParamsPhaseAddInvoiceItemPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class CreateParamsDefaultSettings(TypedDict): + application_fee_percent: NotRequired["float|None"] + automatic_tax: NotRequired[ + "SubscriptionSchedule.CreateParamsDefaultSettingsAutomaticTax|None" + ] + billing_cycle_anchor: NotRequired[ + "Literal['automatic', 'phase_start']|None" + ] + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionSchedule.CreateParamsDefaultSettingsBillingThresholds|None" + ] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + default_payment_method: NotRequired["str|None"] + description: NotRequired["Literal['']|str|None"] + invoice_settings: NotRequired[ + "SubscriptionSchedule.CreateParamsDefaultSettingsInvoiceSettings|None" + ] + on_behalf_of: NotRequired["Literal['']|str|None"] + transfer_data: NotRequired[ + "Literal['']|SubscriptionSchedule.CreateParamsDefaultSettingsTransferData|None" + ] + + class CreateParamsDefaultSettingsTransferData(TypedDict): + amount_percent: NotRequired["float|None"] + destination: str + + class CreateParamsDefaultSettingsInvoiceSettings(TypedDict): + days_until_due: NotRequired["int|None"] + + class CreateParamsDefaultSettingsBillingThresholds(TypedDict): + amount_gte: NotRequired["int|None"] + reset_billing_cycle_anchor: NotRequired["bool|None"] + + class CreateParamsDefaultSettingsAutomaticTax(TypedDict): + enabled: bool + + class ListParams(RequestOptions): + canceled_at: NotRequired[ + "SubscriptionSchedule.ListParamsCanceledAt|int|None" + ] + completed_at: NotRequired[ + "SubscriptionSchedule.ListParamsCompletedAt|int|None" + ] + created: NotRequired[ + "SubscriptionSchedule.ListParamsCreated|int|None" + ] + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + released_at: NotRequired[ + "SubscriptionSchedule.ListParamsReleasedAt|int|None" + ] + scheduled: NotRequired["bool|None"] + starting_after: NotRequired["str|None"] + + class ListParamsReleasedAt(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCompletedAt(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCanceledAt(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + default_settings: NotRequired[ + "SubscriptionSchedule.ModifyParamsDefaultSettings|None" + ] + end_behavior: NotRequired[ + "Literal['cancel', 'none', 'release', 'renew']|None" + ] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + phases: NotRequired[ + "List[SubscriptionSchedule.ModifyParamsPhase]|None" + ] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + + class ModifyParamsPhase(TypedDict): + add_invoice_items: NotRequired[ + "List[SubscriptionSchedule.ModifyParamsPhaseAddInvoiceItem]|None" + ] + application_fee_percent: NotRequired["float|None"] + automatic_tax: NotRequired[ + "SubscriptionSchedule.ModifyParamsPhaseAutomaticTax|None" + ] + billing_cycle_anchor: NotRequired[ + "Literal['automatic', 'phase_start']|None" + ] + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionSchedule.ModifyParamsPhaseBillingThresholds|None" + ] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + coupon: NotRequired["str|None"] + currency: NotRequired["str|None"] + default_payment_method: NotRequired["str|None"] + default_tax_rates: NotRequired["Literal['']|List[str]|None"] + description: NotRequired["Literal['']|str|None"] + end_date: NotRequired["int|Literal['now']|None"] + invoice_settings: NotRequired[ + "SubscriptionSchedule.ModifyParamsPhaseInvoiceSettings|None" + ] + items: List["SubscriptionSchedule.ModifyParamsPhaseItem"] + iterations: NotRequired["int|None"] + metadata: NotRequired["Dict[str, str]|None"] + on_behalf_of: NotRequired["str|None"] + proration_behavior: NotRequired[ + "Literal['always_invoice', 'create_prorations', 'none']|None" + ] + start_date: NotRequired["int|Literal['now']|None"] + transfer_data: NotRequired[ + "SubscriptionSchedule.ModifyParamsPhaseTransferData|None" + ] + trial: NotRequired["bool|None"] + trial_end: NotRequired["int|Literal['now']|None"] + + class ModifyParamsPhaseTransferData(TypedDict): + amount_percent: NotRequired["float|None"] + destination: str + + class ModifyParamsPhaseItem(TypedDict): + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionSchedule.ModifyParamsPhaseItemBillingThresholds|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + plan: NotRequired["str|None"] + price: NotRequired["str|None"] + price_data: NotRequired[ + "SubscriptionSchedule.ModifyParamsPhaseItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class ModifyParamsPhaseItemPriceData(TypedDict): + currency: str + product: str + recurring: "SubscriptionSchedule.ModifyParamsPhaseItemPriceDataRecurring" + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsPhaseItemPriceDataRecurring(TypedDict): + interval: Literal["day", "month", "week", "year"] + interval_count: NotRequired["int|None"] + + class ModifyParamsPhaseItemBillingThresholds(TypedDict): + usage_gte: int + + class ModifyParamsPhaseInvoiceSettings(TypedDict): + days_until_due: NotRequired["int|None"] + + class ModifyParamsPhaseBillingThresholds(TypedDict): + amount_gte: NotRequired["int|None"] + reset_billing_cycle_anchor: NotRequired["bool|None"] + + class ModifyParamsPhaseAutomaticTax(TypedDict): + enabled: bool + + class ModifyParamsPhaseAddInvoiceItem(TypedDict): + price: NotRequired["str|None"] + price_data: NotRequired[ + "SubscriptionSchedule.ModifyParamsPhaseAddInvoiceItemPriceData|None" + ] + quantity: NotRequired["int|None"] + tax_rates: NotRequired["Literal['']|List[str]|None"] + + class ModifyParamsPhaseAddInvoiceItemPriceData(TypedDict): + currency: str + product: str + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'unspecified']|None" + ] + unit_amount: NotRequired["int|None"] + unit_amount_decimal: NotRequired["float|None"] + + class ModifyParamsDefaultSettings(TypedDict): + application_fee_percent: NotRequired["float|None"] + automatic_tax: NotRequired[ + "SubscriptionSchedule.ModifyParamsDefaultSettingsAutomaticTax|None" + ] + billing_cycle_anchor: NotRequired[ + "Literal['automatic', 'phase_start']|None" + ] + billing_thresholds: NotRequired[ + "Literal['']|SubscriptionSchedule.ModifyParamsDefaultSettingsBillingThresholds|None" + ] + collection_method: NotRequired[ + "Literal['charge_automatically', 'send_invoice']|None" + ] + default_payment_method: NotRequired["str|None"] + description: NotRequired["Literal['']|str|None"] + invoice_settings: NotRequired[ + "SubscriptionSchedule.ModifyParamsDefaultSettingsInvoiceSettings|None" + ] + on_behalf_of: NotRequired["Literal['']|str|None"] + transfer_data: NotRequired[ + "Literal['']|SubscriptionSchedule.ModifyParamsDefaultSettingsTransferData|None" + ] + + class ModifyParamsDefaultSettingsTransferData(TypedDict): + amount_percent: NotRequired["float|None"] + destination: str + + class ModifyParamsDefaultSettingsInvoiceSettings(TypedDict): + days_until_due: NotRequired["int|None"] + + class ModifyParamsDefaultSettingsBillingThresholds(TypedDict): + amount_gte: NotRequired["int|None"] + reset_billing_cycle_anchor: NotRequired["bool|None"] + + class ModifyParamsDefaultSettingsAutomaticTax(TypedDict): + enabled: bool + + class ReleaseParams(RequestOptions): + expand: NotRequired["List[str]|None"] + preserve_cancel_date: NotRequired["bool|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + application: Optional[ExpandableField["Application"]] canceled_at: Optional[int] completed_at: Optional[int] @@ -62,7 +434,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionSchedule.CancelParams"] ): return cls._static_request( "post", @@ -76,7 +448,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["SubscriptionSchedule.CancelParams"] + ): return self._request( "post", "/v1/subscription_schedules/{schedule}/cancel".format( @@ -93,7 +469,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionSchedule.CreateParams"] ) -> "SubscriptionSchedule": return cast( "SubscriptionSchedule", @@ -114,7 +490,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionSchedule.ListParams"] ) -> ListObject["SubscriptionSchedule"]: result = cls._static_request( "get", @@ -134,7 +510,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "SubscriptionSchedule": + def modify( + cls, id, **params: Unpack["SubscriptionSchedule.ModifyParams"] + ) -> "SubscriptionSchedule": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "SubscriptionSchedule", @@ -148,7 +526,7 @@ def _cls_release( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["SubscriptionSchedule.ReleaseParams"] ): return cls._static_request( "post", @@ -162,7 +540,11 @@ def _cls_release( ) @util.class_method_variant("_cls_release") - def release(self, idempotency_key: Optional[str] = None, **params: Any): + def release( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["SubscriptionSchedule.ReleaseParams"] + ): return self._request( "post", "/v1/subscription_schedules/{schedule}/release".format( @@ -174,8 +556,8 @@ def release(self, idempotency_key: Optional[str] = None, **params: Any): @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["SubscriptionSchedule.RetrieveParams"] ) -> "SubscriptionSchedule": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/tax/calculation.py b/stripe/api_resources/tax/calculation.py index e6af88ca9..8a55edd51 100644 --- a/stripe/api_resources/tax/calculation.py +++ b/stripe/api_resources/tax/calculation.py @@ -3,11 +3,16 @@ from stripe import util from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, List, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.tax.calculation_line_item import ( @@ -23,6 +28,133 @@ class Calculation(CreateableAPIResource["Calculation"]): """ OBJECT_NAME = "tax.calculation" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + currency: str + customer: NotRequired["str|None"] + customer_details: NotRequired[ + "Calculation.CreateParamsCustomerDetails|None" + ] + expand: NotRequired["List[str]|None"] + line_items: List["Calculation.CreateParamsLineItem"] + shipping_cost: NotRequired[ + "Calculation.CreateParamsShippingCost|None" + ] + tax_date: NotRequired["int|None"] + + class CreateParamsShippingCost(TypedDict): + amount: NotRequired["int|None"] + shipping_rate: NotRequired["str|None"] + tax_behavior: NotRequired["Literal['exclusive', 'inclusive']|None"] + tax_code: NotRequired["str|None"] + + class CreateParamsLineItem(TypedDict): + amount: int + product: NotRequired["str|None"] + quantity: NotRequired["int|None"] + reference: NotRequired["str|None"] + tax_behavior: NotRequired["Literal['exclusive', 'inclusive']|None"] + tax_code: NotRequired["str|None"] + + class CreateParamsCustomerDetails(TypedDict): + address: NotRequired[ + "Calculation.CreateParamsCustomerDetailsAddress|None" + ] + address_source: NotRequired["Literal['billing', 'shipping']|None"] + ip_address: NotRequired["str|None"] + tax_ids: NotRequired[ + "List[Calculation.CreateParamsCustomerDetailsTaxId]|None" + ] + taxability_override: NotRequired[ + "Literal['customer_exempt', 'none', 'reverse_charge']|None" + ] + + class CreateParamsCustomerDetailsTaxId(TypedDict): + type: Literal[ + "ad_nrt", + "ae_trn", + "ar_cuit", + "au_abn", + "au_arn", + "bg_uic", + "bo_tin", + "br_cnpj", + "br_cpf", + "ca_bn", + "ca_gst_hst", + "ca_pst_bc", + "ca_pst_mb", + "ca_pst_sk", + "ca_qst", + "ch_vat", + "cl_tin", + "cn_tin", + "co_nit", + "cr_tin", + "do_rcn", + "ec_ruc", + "eg_tin", + "es_cif", + "eu_oss_vat", + "eu_vat", + "gb_vat", + "ge_vat", + "hk_br", + "hu_tin", + "id_npwp", + "il_vat", + "in_gst", + "is_vat", + "jp_cn", + "jp_rn", + "jp_trn", + "ke_pin", + "kr_brn", + "li_uid", + "mx_rfc", + "my_frp", + "my_itn", + "my_sst", + "no_vat", + "nz_gst", + "pe_ruc", + "ph_tin", + "ro_tin", + "rs_pib", + "ru_inn", + "ru_kpp", + "sa_vat", + "sg_gst", + "sg_uen", + "si_tin", + "sv_nit", + "th_vat", + "tr_tin", + "tw_vat", + "ua_vat", + "us_ein", + "uy_ruc", + "ve_rif", + "vn_tin", + "za_vat", + ] + value: str + + class CreateParamsCustomerDetailsAddress(TypedDict): + city: NotRequired["Literal['']|str|None"] + country: str + line1: NotRequired["Literal['']|str|None"] + line2: NotRequired["Literal['']|str|None"] + postal_code: NotRequired["Literal['']|str|None"] + state: NotRequired["Literal['']|str|None"] + + class ListLineItemsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + amount_total: int currency: str customer: Optional[str] @@ -45,7 +177,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Calculation.CreateParams"] ) -> "Calculation": return cast( "Calculation", @@ -67,7 +199,7 @@ def _cls_list_line_items( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Calculation.ListLineItemsParams"] ): return cls._static_request( "get", @@ -82,7 +214,9 @@ def _cls_list_line_items( @util.class_method_variant("_cls_list_line_items") def list_line_items( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Calculation.ListLineItemsParams"] ): return self._request( "get", diff --git a/stripe/api_resources/tax/settings.py b/stripe/api_resources/tax/settings.py index 40f352566..31a7b30c8 100644 --- a/stripe/api_resources/tax/settings.py +++ b/stripe/api_resources/tax/settings.py @@ -4,9 +4,16 @@ SingletonAPIResource, UpdateableAPIResource, ) +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -21,6 +28,33 @@ class Settings( """ OBJECT_NAME = "tax.settings" + if TYPE_CHECKING: + + class ModifyParams(RequestOptions): + defaults: NotRequired["Settings.ModifyParamsDefaults|None"] + expand: NotRequired["List[str]|None"] + head_office: NotRequired["Settings.ModifyParamsHeadOffice|None"] + + class ModifyParamsHeadOffice(TypedDict): + address: "Settings.ModifyParamsHeadOfficeAddress" + + class ModifyParamsHeadOfficeAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ModifyParamsDefaults(TypedDict): + tax_behavior: NotRequired[ + "Literal['exclusive', 'inclusive', 'inferred_by_currency']|None" + ] + tax_code: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + defaults: StripeObject head_office: Optional[StripeObject] livemode: bool @@ -29,7 +63,9 @@ class Settings( status_details: StripeObject @classmethod - def modify(cls, id, **params: Any) -> "Settings": + def modify( + cls, id, **params: Unpack["Settings.ModifyParams"] + ) -> "Settings": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Settings", @@ -37,7 +73,9 @@ def modify(cls, id, **params: Any) -> "Settings": ) @classmethod - def retrieve(cls, **params: Any) -> "Settings": + def retrieve( + cls, **params: Unpack["Settings.RetrieveParams"] + ) -> "Settings": instance = cls(None, **params) instance.refresh() return instance diff --git a/stripe/api_resources/tax/transaction.py b/stripe/api_resources/tax/transaction.py index 67b1cc051..b71b474e0 100644 --- a/stripe/api_resources/tax/transaction.py +++ b/stripe/api_resources/tax/transaction.py @@ -3,11 +3,16 @@ from stripe import util from stripe.api_resources.abstract import APIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import Dict, List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.tax.transaction_line_item import ( @@ -23,6 +28,49 @@ class Transaction(APIResource["Transaction"]): """ OBJECT_NAME = "tax.transaction" + if TYPE_CHECKING: + + class CreateFromCalculationParams(RequestOptions): + calculation: str + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + reference: str + + class CreateReversalParams(RequestOptions): + expand: NotRequired["List[str]|None"] + flat_amount: NotRequired["int|None"] + line_items: NotRequired[ + "List[Transaction.CreateReversalParamsLineItem]|None" + ] + metadata: NotRequired["Dict[str, str]|None"] + mode: Literal["full", "partial"] + original_transaction: str + reference: str + shipping_cost: NotRequired[ + "Transaction.CreateReversalParamsShippingCost|None" + ] + + class CreateReversalParamsShippingCost(TypedDict): + amount: int + amount_tax: int + + class CreateReversalParamsLineItem(TypedDict): + amount: int + amount_tax: int + metadata: NotRequired["Dict[str, str]|None"] + original_line_item: str + quantity: NotRequired["int|None"] + reference: str + + class ListLineItemsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int currency: str customer: Optional[str] @@ -44,7 +92,7 @@ def create_from_calculation( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.CreateFromCalculationParams"] ): return cls._static_request( "post", @@ -61,7 +109,7 @@ def create_reversal( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.CreateReversalParams"] ): return cls._static_request( "post", @@ -79,7 +127,7 @@ def _cls_list_line_items( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.ListLineItemsParams"] ): return cls._static_request( "get", @@ -94,7 +142,9 @@ def _cls_list_line_items( @util.class_method_variant("_cls_list_line_items") def list_line_items( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Transaction.ListLineItemsParams"] ): return self._request( "get", @@ -107,8 +157,8 @@ def list_line_items( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Transaction.RetrieveParams"] ) -> "Transaction": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/tax_code.py b/stripe/api_resources/tax_code.py index 2a44ea4e8..762953482 100644 --- a/stripe/api_resources/tax_code.py +++ b/stripe/api_resources/tax_code.py @@ -2,8 +2,9 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject -from typing import Any, Optional -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING class TaxCode(ListableAPIResource["TaxCode"]): @@ -12,6 +13,17 @@ class TaxCode(ListableAPIResource["TaxCode"]): """ OBJECT_NAME = "tax_code" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + description: str id: str name: str @@ -23,7 +35,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["TaxCode.ListParams"] ) -> ListObject["TaxCode"]: result = cls._static_request( "get", @@ -44,8 +56,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["TaxCode.RetrieveParams"] ) -> "TaxCode": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/tax_rate.py b/stripe/api_resources/tax_rate.py index 5f290eeab..cb43a232c 100644 --- a/stripe/api_resources/tax_rate.py +++ b/stripe/api_resources/tax_rate.py @@ -6,8 +6,15 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -23,6 +30,54 @@ class TaxRate( """ OBJECT_NAME = "tax_rate" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + active: NotRequired["bool|None"] + country: NotRequired["str|None"] + description: NotRequired["str|None"] + display_name: str + expand: NotRequired["List[str]|None"] + inclusive: bool + jurisdiction: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + percentage: float + state: NotRequired["str|None"] + tax_type: NotRequired[ + "Literal['amusement_tax', 'communications_tax', 'gst', 'hst', 'igst', 'jct', 'lease_tax', 'pst', 'qst', 'rst', 'sales_tax', 'service_tax', 'vat']|None" + ] + + class ListParams(RequestOptions): + active: NotRequired["bool|None"] + created: NotRequired["TaxRate.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + inclusive: NotRequired["bool|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + active: NotRequired["bool|None"] + country: NotRequired["str|None"] + description: NotRequired["str|None"] + display_name: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + jurisdiction: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + state: NotRequired["str|None"] + tax_type: NotRequired[ + "Literal['amusement_tax', 'communications_tax', 'gst', 'hst', 'igst', 'jct', 'lease_tax', 'pst', 'qst', 'rst', 'sales_tax', 'service_tax', 'vat']|None" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + active: bool country: Optional[str] created: int @@ -62,7 +117,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["TaxRate.CreateParams"] ) -> "TaxRate": return cast( "TaxRate", @@ -83,7 +138,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["TaxRate.ListParams"] ) -> ListObject["TaxRate"]: result = cls._static_request( "get", @@ -103,7 +158,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "TaxRate": + def modify(cls, id, **params: Unpack["TaxRate.ModifyParams"]) -> "TaxRate": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "TaxRate", @@ -112,8 +167,8 @@ def modify(cls, id, **params: Any) -> "TaxRate": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["TaxRate.RetrieveParams"] ) -> "TaxRate": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/terminal/configuration.py b/stripe/api_resources/terminal/configuration.py index 847658ac2..801a9708d 100644 --- a/stripe/api_resources/terminal/configuration.py +++ b/stripe/api_resources/terminal/configuration.py @@ -8,9 +8,16 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from typing import List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -25,6 +32,241 @@ class Configuration( """ OBJECT_NAME = "terminal.configuration" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + bbpos_wisepos_e: NotRequired[ + "Configuration.CreateParamsBbposWiseposE|None" + ] + expand: NotRequired["List[str]|None"] + offline: NotRequired[ + "Literal['']|Configuration.CreateParamsOffline|None" + ] + tipping: NotRequired[ + "Literal['']|Configuration.CreateParamsTipping|None" + ] + verifone_p400: NotRequired[ + "Configuration.CreateParamsVerifoneP400|None" + ] + + class CreateParamsVerifoneP400(TypedDict): + splashscreen: NotRequired["Literal['']|str|None"] + + class CreateParamsTipping(TypedDict): + aud: NotRequired["Configuration.CreateParamsTippingAud|None"] + cad: NotRequired["Configuration.CreateParamsTippingCad|None"] + chf: NotRequired["Configuration.CreateParamsTippingChf|None"] + czk: NotRequired["Configuration.CreateParamsTippingCzk|None"] + dkk: NotRequired["Configuration.CreateParamsTippingDkk|None"] + eur: NotRequired["Configuration.CreateParamsTippingEur|None"] + gbp: NotRequired["Configuration.CreateParamsTippingGbp|None"] + hkd: NotRequired["Configuration.CreateParamsTippingHkd|None"] + myr: NotRequired["Configuration.CreateParamsTippingMyr|None"] + nok: NotRequired["Configuration.CreateParamsTippingNok|None"] + nzd: NotRequired["Configuration.CreateParamsTippingNzd|None"] + sek: NotRequired["Configuration.CreateParamsTippingSek|None"] + sgd: NotRequired["Configuration.CreateParamsTippingSgd|None"] + usd: NotRequired["Configuration.CreateParamsTippingUsd|None"] + + class CreateParamsTippingUsd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingSgd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingSek(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingNzd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingNok(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingMyr(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingHkd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingGbp(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingEur(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingDkk(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingCzk(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingChf(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingCad(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsTippingAud(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class CreateParamsOffline(TypedDict): + enabled: bool + + class CreateParamsBbposWiseposE(TypedDict): + splashscreen: NotRequired["Literal['']|str|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + is_account_default: NotRequired["bool|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + bbpos_wisepos_e: NotRequired[ + "Literal['']|Configuration.ModifyParamsBbposWiseposE|None" + ] + expand: NotRequired["List[str]|None"] + offline: NotRequired[ + "Literal['']|Configuration.ModifyParamsOffline|None" + ] + tipping: NotRequired[ + "Literal['']|Configuration.ModifyParamsTipping|None" + ] + verifone_p400: NotRequired[ + "Literal['']|Configuration.ModifyParamsVerifoneP400|None" + ] + + class ModifyParamsVerifoneP400(TypedDict): + splashscreen: NotRequired["Literal['']|str|None"] + + class ModifyParamsTipping(TypedDict): + aud: NotRequired["Configuration.ModifyParamsTippingAud|None"] + cad: NotRequired["Configuration.ModifyParamsTippingCad|None"] + chf: NotRequired["Configuration.ModifyParamsTippingChf|None"] + czk: NotRequired["Configuration.ModifyParamsTippingCzk|None"] + dkk: NotRequired["Configuration.ModifyParamsTippingDkk|None"] + eur: NotRequired["Configuration.ModifyParamsTippingEur|None"] + gbp: NotRequired["Configuration.ModifyParamsTippingGbp|None"] + hkd: NotRequired["Configuration.ModifyParamsTippingHkd|None"] + myr: NotRequired["Configuration.ModifyParamsTippingMyr|None"] + nok: NotRequired["Configuration.ModifyParamsTippingNok|None"] + nzd: NotRequired["Configuration.ModifyParamsTippingNzd|None"] + sek: NotRequired["Configuration.ModifyParamsTippingSek|None"] + sgd: NotRequired["Configuration.ModifyParamsTippingSgd|None"] + usd: NotRequired["Configuration.ModifyParamsTippingUsd|None"] + + class ModifyParamsTippingUsd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingSgd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingSek(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingNzd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingNok(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingMyr(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingHkd(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingGbp(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingEur(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingDkk(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingCzk(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingChf(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingCad(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsTippingAud(TypedDict): + fixed_amounts: NotRequired["List[int]|None"] + percentages: NotRequired["List[int]|None"] + smart_tip_threshold: NotRequired["int|None"] + + class ModifyParamsOffline(TypedDict): + enabled: bool + + class ModifyParamsBbposWiseposE(TypedDict): + splashscreen: NotRequired["Literal['']|str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + bbpos_wisepos_e: Optional[StripeObject] id: str is_account_default: Optional[bool] @@ -42,7 +284,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Configuration.CreateParams"] ) -> "Configuration": return cast( "Configuration", @@ -58,7 +300,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Configuration": + def _cls_delete( + cls, sid: str, **params: Unpack["Configuration.DeleteParams"] + ) -> "Configuration": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Configuration", @@ -66,7 +310,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Configuration": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Configuration": + def delete( + self, **params: Unpack["Configuration.DeleteParams"] + ) -> "Configuration": return self._request_and_refresh( "delete", self.instance_url(), @@ -79,7 +325,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Configuration.ListParams"] ) -> ListObject["Configuration"]: result = cls._static_request( "get", @@ -99,7 +345,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Configuration": + def modify( + cls, id, **params: Unpack["Configuration.ModifyParams"] + ) -> "Configuration": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Configuration", @@ -108,8 +356,8 @@ def modify(cls, id, **params: Any) -> "Configuration": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Configuration.RetrieveParams"] ) -> "Configuration": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/terminal/connection_token.py b/stripe/api_resources/terminal/connection_token.py index 47dd27b88..e7153b619 100644 --- a/stripe/api_resources/terminal/connection_token.py +++ b/stripe/api_resources/terminal/connection_token.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- # File generated from our OpenAPI spec from stripe.api_resources.abstract import CreateableAPIResource -from typing import Any, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING class ConnectionToken(CreateableAPIResource["ConnectionToken"]): @@ -13,6 +14,12 @@ class ConnectionToken(CreateableAPIResource["ConnectionToken"]): """ OBJECT_NAME = "terminal.connection_token" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + location: NotRequired["str|None"] + location: Optional[str] object: Literal["terminal.connection_token"] secret: str @@ -24,7 +31,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ConnectionToken.CreateParams"] ) -> "ConnectionToken": return cast( "ConnectionToken", diff --git a/stripe/api_resources/terminal/location.py b/stripe/api_resources/terminal/location.py index 4d2ed212d..3bf7a5290 100644 --- a/stripe/api_resources/terminal/location.py +++ b/stripe/api_resources/terminal/location.py @@ -8,9 +8,16 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus @@ -27,6 +34,50 @@ class Location( """ OBJECT_NAME = "terminal.location" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + address: "Location.CreateParamsAddress" + configuration_overrides: NotRequired["str|None"] + display_name: str + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class CreateParamsAddress(TypedDict): + city: NotRequired["str|None"] + country: str + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + address: NotRequired["Location.ModifyParamsAddress|None"] + configuration_overrides: NotRequired["Literal['']|str|None"] + display_name: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ModifyParamsAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + address: StripeObject configuration_overrides: Optional[str] display_name: str @@ -43,7 +94,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Location.CreateParams"] ) -> "Location": return cast( "Location", @@ -59,7 +110,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Location": + def _cls_delete( + cls, sid: str, **params: Unpack["Location.DeleteParams"] + ) -> "Location": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Location", @@ -67,7 +120,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Location": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Location": + def delete(self, **params: Unpack["Location.DeleteParams"]) -> "Location": return self._request_and_refresh( "delete", self.instance_url(), @@ -80,7 +133,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Location.ListParams"] ) -> ListObject["Location"]: result = cls._static_request( "get", @@ -100,7 +153,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Location": + def modify( + cls, id, **params: Unpack["Location.ModifyParams"] + ) -> "Location": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Location", @@ -109,8 +164,8 @@ def modify(cls, id, **params: Any) -> "Location": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Location.RetrieveParams"] ) -> "Location": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/terminal/reader.py b/stripe/api_resources/terminal/reader.py index b7bb87b38..02433b1ce 100644 --- a/stripe/api_resources/terminal/reader.py +++ b/stripe/api_resources/terminal/reader.py @@ -10,13 +10,19 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal, Type +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.terminal.location import Location @@ -34,6 +40,112 @@ class Reader( """ OBJECT_NAME = "terminal.reader" + if TYPE_CHECKING: + + class CancelActionParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + label: NotRequired["str|None"] + location: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + registration_code: str + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + device_type: NotRequired[ + "Literal['bbpos_chipper2x', 'bbpos_wisepad3', 'bbpos_wisepos_e', 'simulated_wisepos_e', 'stripe_m2', 'verifone_P400']|None" + ] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + location: NotRequired["str|None"] + serial_number: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + status: NotRequired["Literal['offline', 'online']|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + label: NotRequired["Literal['']|str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ProcessPaymentIntentParams(RequestOptions): + expand: NotRequired["List[str]|None"] + payment_intent: str + process_config: NotRequired[ + "Reader.ProcessPaymentIntentParamsProcessConfig|None" + ] + + class ProcessPaymentIntentParamsProcessConfig(TypedDict): + skip_tipping: NotRequired["bool|None"] + tipping: NotRequired[ + "Reader.ProcessPaymentIntentParamsProcessConfigTipping|None" + ] + + class ProcessPaymentIntentParamsProcessConfigTipping(TypedDict): + amount_eligible: NotRequired["int|None"] + + class ProcessSetupIntentParams(RequestOptions): + customer_consent_collected: bool + expand: NotRequired["List[str]|None"] + process_config: NotRequired[ + "Reader.ProcessSetupIntentParamsProcessConfig|None" + ] + setup_intent: str + + class ProcessSetupIntentParamsProcessConfig(TypedDict): + pass + + class RefundPaymentParams(RequestOptions): + amount: NotRequired["int|None"] + charge: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + payment_intent: NotRequired["str|None"] + refund_application_fee: NotRequired["bool|None"] + reverse_transfer: NotRequired["bool|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SetReaderDisplayParams(RequestOptions): + cart: NotRequired["Reader.SetReaderDisplayParamsCart|None"] + expand: NotRequired["List[str]|None"] + type: Literal["cart"] + + class SetReaderDisplayParamsCart(TypedDict): + currency: str + line_items: List["Reader.SetReaderDisplayParamsCartLineItem"] + tax: NotRequired["int|None"] + total: int + + class SetReaderDisplayParamsCartLineItem(TypedDict): + amount: int + description: str + quantity: int + + class PresentPaymentMethodParams(RequestOptions): + amount_tip: NotRequired["int|None"] + card_present: NotRequired[ + "Reader.PresentPaymentMethodParamsCardPresent|None" + ] + expand: NotRequired["List[str]|None"] + interac_present: NotRequired[ + "Reader.PresentPaymentMethodParamsInteracPresent|None" + ] + type: NotRequired[ + "Literal['card_present', 'interac_present']|None" + ] + + class PresentPaymentMethodParamsInteracPresent(TypedDict): + number: NotRequired["str|None"] + + class PresentPaymentMethodParamsCardPresent(TypedDict): + number: NotRequired["str|None"] + action: Optional[StripeObject] device_sw_version: Optional[str] device_type: Literal[ @@ -62,7 +174,7 @@ def _cls_cancel_action( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.CancelActionParams"] ): return cls._static_request( "post", @@ -77,7 +189,9 @@ def _cls_cancel_action( @util.class_method_variant("_cls_cancel_action") def cancel_action( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Reader.CancelActionParams"] ): return self._request( "post", @@ -95,7 +209,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.CreateParams"] ) -> "Reader": return cast( "Reader", @@ -111,7 +225,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "Reader": + def _cls_delete( + cls, sid: str, **params: Unpack["Reader.DeleteParams"] + ) -> "Reader": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "Reader", @@ -119,7 +235,7 @@ def _cls_delete(cls, sid: str, **params: Any) -> "Reader": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "Reader": + def delete(self, **params: Unpack["Reader.DeleteParams"]) -> "Reader": return self._request_and_refresh( "delete", self.instance_url(), @@ -132,7 +248,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.ListParams"] ) -> ListObject["Reader"]: result = cls._static_request( "get", @@ -152,7 +268,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Reader": + def modify(cls, id, **params: Unpack["Reader.ModifyParams"]) -> "Reader": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Reader", @@ -166,7 +282,7 @@ def _cls_process_payment_intent( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.ProcessPaymentIntentParams"] ): return cls._static_request( "post", @@ -181,7 +297,9 @@ def _cls_process_payment_intent( @util.class_method_variant("_cls_process_payment_intent") def process_payment_intent( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Reader.ProcessPaymentIntentParams"] ): return self._request( "post", @@ -199,7 +317,7 @@ def _cls_process_setup_intent( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.ProcessSetupIntentParams"] ): return cls._static_request( "post", @@ -214,7 +332,9 @@ def _cls_process_setup_intent( @util.class_method_variant("_cls_process_setup_intent") def process_setup_intent( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Reader.ProcessSetupIntentParams"] ): return self._request( "post", @@ -232,7 +352,7 @@ def _cls_refund_payment( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.RefundPaymentParams"] ): return cls._static_request( "post", @@ -247,7 +367,9 @@ def _cls_refund_payment( @util.class_method_variant("_cls_refund_payment") def refund_payment( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Reader.RefundPaymentParams"] ): return self._request( "post", @@ -260,9 +382,9 @@ def refund_payment( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Reader.RetrieveParams"] ) -> "Reader": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -273,7 +395,7 @@ def _cls_set_reader_display( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.SetReaderDisplayParams"] ): return cls._static_request( "post", @@ -288,7 +410,9 @@ def _cls_set_reader_display( @util.class_method_variant("_cls_set_reader_display") def set_reader_display( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Reader.SetReaderDisplayParams"] ): return self._request( "post", @@ -309,7 +433,7 @@ def _cls_present_payment_method( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Reader.PresentPaymentMethodParams"] ): return cls._static_request( "post", @@ -324,7 +448,9 @@ def _cls_present_payment_method( @util.class_method_variant("_cls_present_payment_method") def present_payment_method( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Reader.PresentPaymentMethodParams"] ): return self.resource._request( "post", diff --git a/stripe/api_resources/test_helpers/test_clock.py b/stripe/api_resources/test_helpers/test_clock.py index 3aae12104..3e8e411fb 100644 --- a/stripe/api_resources/test_helpers/test_clock.py +++ b/stripe/api_resources/test_helpers/test_clock.py @@ -7,8 +7,9 @@ ListableAPIResource, ) from stripe.api_resources.list_object import ListObject -from typing import Any, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING from urllib.parse import quote_plus @@ -24,6 +25,29 @@ class TestClock( """ OBJECT_NAME = "test_helpers.test_clock" + if TYPE_CHECKING: + + class AdvanceParams(RequestOptions): + expand: NotRequired["List[str]|None"] + frozen_time: int + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + frozen_time: int + name: NotRequired["str|None"] + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + created: int deletes_after: int frozen_time: int @@ -41,7 +65,7 @@ def _cls_advance( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["TestClock.AdvanceParams"] ): return cls._static_request( "post", @@ -55,7 +79,11 @@ def _cls_advance( ) @util.class_method_variant("_cls_advance") - def advance(self, idempotency_key: Optional[str] = None, **params: Any): + def advance( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["TestClock.AdvanceParams"] + ): return self._request( "post", "/v1/test_helpers/test_clocks/{test_clock}/advance".format( @@ -72,7 +100,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["TestClock.CreateParams"] ) -> "TestClock": return cast( "TestClock", @@ -88,7 +116,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "TestClock": + def _cls_delete( + cls, sid: str, **params: Unpack["TestClock.DeleteParams"] + ) -> "TestClock": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "TestClock", @@ -96,7 +126,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "TestClock": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "TestClock": + def delete( + self, **params: Unpack["TestClock.DeleteParams"] + ) -> "TestClock": return self._request_and_refresh( "delete", self.instance_url(), @@ -109,7 +141,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["TestClock.ListParams"] ) -> ListObject["TestClock"]: result = cls._static_request( "get", @@ -130,8 +162,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["TestClock.RetrieveParams"] ) -> "TestClock": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/token.py b/stripe/api_resources/token.py index 2258ea434..5aea4ff81 100644 --- a/stripe/api_resources/token.py +++ b/stripe/api_resources/token.py @@ -1,10 +1,15 @@ # -*- coding: utf-8 -*- # File generated from our OpenAPI spec from stripe.api_resources.abstract import CreateableAPIResource -from typing import Any, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.bank_account import BankAccount @@ -36,6 +41,347 @@ class Token(CreateableAPIResource["Token"]): """ OBJECT_NAME = "token" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + account: NotRequired["Token.CreateParamsAccount|None"] + bank_account: NotRequired["Token.CreateParamsBankAccount|None"] + card: NotRequired["Token.CreateParamsCard|str|None"] + customer: NotRequired["str|None"] + cvc_update: NotRequired["Token.CreateParamsCvcUpdate|None"] + expand: NotRequired["List[str]|None"] + person: NotRequired["Token.CreateParamsPerson|None"] + pii: NotRequired["Token.CreateParamsPii|None"] + + class CreateParamsPii(TypedDict): + id_number: NotRequired["str|None"] + + class CreateParamsPerson(TypedDict): + address: NotRequired["Token.CreateParamsPersonAddress|None"] + address_kana: NotRequired[ + "Token.CreateParamsPersonAddressKana|None" + ] + address_kanji: NotRequired[ + "Token.CreateParamsPersonAddressKanji|None" + ] + dob: NotRequired["Literal['']|Token.CreateParamsPersonDob|None"] + documents: NotRequired["Token.CreateParamsPersonDocuments|None"] + email: NotRequired["str|None"] + first_name: NotRequired["str|None"] + first_name_kana: NotRequired["str|None"] + first_name_kanji: NotRequired["str|None"] + full_name_aliases: NotRequired["Literal['']|List[str]|None"] + gender: NotRequired["str|None"] + id_number: NotRequired["str|None"] + id_number_secondary: NotRequired["str|None"] + last_name: NotRequired["str|None"] + last_name_kana: NotRequired["str|None"] + last_name_kanji: NotRequired["str|None"] + maiden_name: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + nationality: NotRequired["str|None"] + phone: NotRequired["str|None"] + political_exposure: NotRequired["str|None"] + registered_address: NotRequired[ + "Token.CreateParamsPersonRegisteredAddress|None" + ] + relationship: NotRequired[ + "Token.CreateParamsPersonRelationship|None" + ] + ssn_last_4: NotRequired["str|None"] + verification: NotRequired[ + "Token.CreateParamsPersonVerification|None" + ] + + class CreateParamsPersonVerification(TypedDict): + additional_document: NotRequired[ + "Token.CreateParamsPersonVerificationAdditionalDocument|None" + ] + document: NotRequired[ + "Token.CreateParamsPersonVerificationDocument|None" + ] + + class CreateParamsPersonVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsPersonVerificationAdditionalDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsPersonRelationship(TypedDict): + director: NotRequired["bool|None"] + executive: NotRequired["bool|None"] + owner: NotRequired["bool|None"] + percent_ownership: NotRequired["Literal['']|float|None"] + representative: NotRequired["bool|None"] + title: NotRequired["str|None"] + + class CreateParamsPersonRegisteredAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsPersonDocuments(TypedDict): + company_authorization: NotRequired[ + "Token.CreateParamsPersonDocumentsCompanyAuthorization|None" + ] + passport: NotRequired[ + "Token.CreateParamsPersonDocumentsPassport|None" + ] + visa: NotRequired["Token.CreateParamsPersonDocumentsVisa|None"] + + class CreateParamsPersonDocumentsVisa(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsPersonDocumentsPassport(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsPersonDocumentsCompanyAuthorization(TypedDict): + files: NotRequired["List[str]|None"] + + class CreateParamsPersonDob(TypedDict): + day: int + month: int + year: int + + class CreateParamsPersonAddressKanji(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsPersonAddressKana(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsPersonAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsCvcUpdate(TypedDict): + cvc: str + + class CreateParamsCard(TypedDict): + address_city: NotRequired["str|None"] + address_country: NotRequired["str|None"] + address_line1: NotRequired["str|None"] + address_line2: NotRequired["str|None"] + address_state: NotRequired["str|None"] + address_zip: NotRequired["str|None"] + currency: NotRequired["str|None"] + cvc: NotRequired["str|None"] + exp_month: str + exp_year: str + name: NotRequired["str|None"] + number: str + + class CreateParamsBankAccount(TypedDict): + account_holder_name: NotRequired["str|None"] + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: str + account_type: NotRequired[ + "Literal['checking', 'futsu', 'savings', 'toza']|None" + ] + country: str + currency: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class CreateParamsAccount(TypedDict): + business_type: NotRequired[ + "Literal['company', 'government_entity', 'individual', 'non_profit']|None" + ] + company: NotRequired["Token.CreateParamsAccountCompany|None"] + individual: NotRequired["Token.CreateParamsAccountIndividual|None"] + tos_shown_and_accepted: NotRequired["bool|None"] + + class CreateParamsAccountIndividual(TypedDict): + address: NotRequired[ + "Token.CreateParamsAccountIndividualAddress|None" + ] + address_kana: NotRequired[ + "Token.CreateParamsAccountIndividualAddressKana|None" + ] + address_kanji: NotRequired[ + "Token.CreateParamsAccountIndividualAddressKanji|None" + ] + dob: NotRequired[ + "Literal['']|Token.CreateParamsAccountIndividualDob|None" + ] + email: NotRequired["str|None"] + first_name: NotRequired["str|None"] + first_name_kana: NotRequired["str|None"] + first_name_kanji: NotRequired["str|None"] + full_name_aliases: NotRequired["Literal['']|List[str]|None"] + gender: NotRequired["str|None"] + id_number: NotRequired["str|None"] + id_number_secondary: NotRequired["str|None"] + last_name: NotRequired["str|None"] + last_name_kana: NotRequired["str|None"] + last_name_kanji: NotRequired["str|None"] + maiden_name: NotRequired["str|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + phone: NotRequired["str|None"] + political_exposure: NotRequired["Literal['existing', 'none']|None"] + registered_address: NotRequired[ + "Token.CreateParamsAccountIndividualRegisteredAddress|None" + ] + ssn_last_4: NotRequired["str|None"] + verification: NotRequired[ + "Token.CreateParamsAccountIndividualVerification|None" + ] + + class CreateParamsAccountIndividualVerification(TypedDict): + additional_document: NotRequired[ + "Token.CreateParamsAccountIndividualVerificationAdditionalDocument|None" + ] + document: NotRequired[ + "Token.CreateParamsAccountIndividualVerificationDocument|None" + ] + + class CreateParamsAccountIndividualVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsAccountIndividualVerificationAdditionalDocument( + TypedDict, + ): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsAccountIndividualRegisteredAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsAccountIndividualDob(TypedDict): + day: int + month: int + year: int + + class CreateParamsAccountIndividualAddressKanji(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsAccountIndividualAddressKana(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsAccountIndividualAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class CreateParamsAccountCompany(TypedDict): + address: NotRequired[ + "Token.CreateParamsAccountCompanyAddress|None" + ] + address_kana: NotRequired[ + "Token.CreateParamsAccountCompanyAddressKana|None" + ] + address_kanji: NotRequired[ + "Token.CreateParamsAccountCompanyAddressKanji|None" + ] + directors_provided: NotRequired["bool|None"] + executives_provided: NotRequired["bool|None"] + export_license_id: NotRequired["str|None"] + export_purpose_code: NotRequired["str|None"] + name: NotRequired["str|None"] + name_kana: NotRequired["str|None"] + name_kanji: NotRequired["str|None"] + owners_provided: NotRequired["bool|None"] + ownership_declaration: NotRequired[ + "Token.CreateParamsAccountCompanyOwnershipDeclaration|None" + ] + ownership_declaration_shown_and_signed: NotRequired["bool|None"] + phone: NotRequired["str|None"] + registration_number: NotRequired["str|None"] + structure: NotRequired[ + "Literal['']|Literal['free_zone_establishment', 'free_zone_llc', 'government_instrumentality', 'governmental_unit', 'incorporated_non_profit', 'incorporated_partnership', 'limited_liability_partnership', 'llc', 'multi_member_llc', 'private_company', 'private_corporation', 'private_partnership', 'public_company', 'public_corporation', 'public_partnership', 'single_member_llc', 'sole_establishment', 'sole_proprietorship', 'tax_exempt_government_instrumentality', 'unincorporated_association', 'unincorporated_non_profit', 'unincorporated_partnership']|None" + ] + tax_id: NotRequired["str|None"] + tax_id_registrar: NotRequired["str|None"] + vat_id: NotRequired["str|None"] + verification: NotRequired[ + "Token.CreateParamsAccountCompanyVerification|None" + ] + + class CreateParamsAccountCompanyVerification(TypedDict): + document: NotRequired[ + "Token.CreateParamsAccountCompanyVerificationDocument|None" + ] + + class CreateParamsAccountCompanyVerificationDocument(TypedDict): + back: NotRequired["str|None"] + front: NotRequired["str|None"] + + class CreateParamsAccountCompanyOwnershipDeclaration(TypedDict): + date: NotRequired["int|None"] + ip: NotRequired["str|None"] + user_agent: NotRequired["str|None"] + + class CreateParamsAccountCompanyAddressKanji(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsAccountCompanyAddressKana(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + town: NotRequired["str|None"] + + class CreateParamsAccountCompanyAddress(TypedDict): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + bank_account: Optional["BankAccount"] card: Optional["Card"] client_ip: Optional[str] @@ -53,7 +399,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Token.CreateParams"] ) -> "Token": return cast( "Token", @@ -70,8 +416,8 @@ def create( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Token.RetrieveParams"] ) -> "Token": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/topup.py b/stripe/api_resources/topup.py index d1157e8d2..c5bb483f6 100644 --- a/stripe/api_resources/topup.py +++ b/stripe/api_resources/topup.py @@ -8,12 +8,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.balance_transaction import BalanceTransaction from stripe.api_resources.source import Source @@ -33,6 +38,52 @@ class Topup( """ OBJECT_NAME = "topup" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: int + currency: str + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + source: NotRequired["str|None"] + statement_descriptor: NotRequired["str|None"] + transfer_group: NotRequired["str|None"] + + class ListParams(RequestOptions): + amount: NotRequired["Topup.ListParamsAmount|int|None"] + created: NotRequired["Topup.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['canceled', 'failed', 'pending', 'succeeded']|None" + ] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsAmount(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int balance_transaction: Optional[ExpandableField["BalanceTransaction"]] created: int @@ -57,7 +108,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Topup.CancelParams"] ): return cls._static_request( "post", @@ -69,7 +120,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["Topup.CancelParams"] + ): return self._request( "post", "/v1/topups/{topup}/cancel".format( @@ -86,7 +141,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Topup.CreateParams"] ) -> "Topup": return cast( "Topup", @@ -107,7 +162,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Topup.ListParams"] ) -> ListObject["Topup"]: result = cls._static_request( "get", @@ -127,7 +182,7 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Topup": + def modify(cls, id, **params: Unpack["Topup.ModifyParams"]) -> "Topup": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Topup", @@ -136,8 +191,8 @@ def modify(cls, id, **params: Any) -> "Topup": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Topup.RetrieveParams"] ) -> "Topup": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/transfer.py b/stripe/api_resources/transfer.py index 19d6ef9bf..5abaf0a96 100644 --- a/stripe/api_resources/transfer.py +++ b/stripe/api_resources/transfer.py @@ -9,12 +9,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.account import Account from stripe.api_resources.balance_transaction import BalanceTransaction @@ -42,6 +47,64 @@ class Transfer( """ OBJECT_NAME = "transfer" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + amount: NotRequired["int|None"] + currency: str + description: NotRequired["str|None"] + destination: str + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + source_transaction: NotRequired["str|None"] + source_type: NotRequired[ + "Literal['bank_account', 'card', 'fpx']|None" + ] + transfer_group: NotRequired["str|None"] + + class ListParams(RequestOptions): + created: NotRequired["Transfer.ListParamsCreated|int|None"] + destination: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + transfer_group: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateReversalParams(RequestOptions): + amount: NotRequired["int|None"] + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + refund_application_fee: NotRequired["bool|None"] + + class RetrieveReversalParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ModifyReversalParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + + class ListReversalsParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + amount: int amount_reversed: int balance_transaction: Optional[ExpandableField["BalanceTransaction"]] @@ -67,7 +130,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transfer.CreateParams"] ) -> "Transfer": return cast( "Transfer", @@ -88,7 +151,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transfer.ListParams"] ) -> ListObject["Transfer"]: result = cls._static_request( "get", @@ -108,7 +171,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "Transfer": + def modify( + cls, id, **params: Unpack["Transfer.ModifyParams"] + ) -> "Transfer": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "Transfer", @@ -117,9 +182,9 @@ def modify(cls, id, **params: Any) -> "Transfer": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Transfer.RetrieveParams"] ) -> "Transfer": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -130,7 +195,7 @@ def create_reversal( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transfer.CreateReversalParams"] ): return cls._static_request( "post", @@ -149,7 +214,7 @@ def retrieve_reversal( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transfer.RetrieveReversalParams"] ): return cls._static_request( "get", @@ -170,7 +235,7 @@ def modify_reversal( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transfer.ModifyReversalParams"] ): return cls._static_request( "post", @@ -190,7 +255,7 @@ def list_reversals( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transfer.ListReversalsParams"] ): return cls._static_request( "get", diff --git a/stripe/api_resources/treasury/credit_reversal.py b/stripe/api_resources/treasury/credit_reversal.py index 2f6e336dd..c5bdecfee 100644 --- a/stripe/api_resources/treasury/credit_reversal.py +++ b/stripe/api_resources/treasury/credit_reversal.py @@ -6,11 +6,10 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import Dict, List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -25,6 +24,27 @@ class CreditReversal( """ OBJECT_NAME = "treasury.credit_reversal" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + received_credit: str + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + received_credit: NotRequired["str|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['canceled', 'posted', 'processing']|None" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int created: int currency: str @@ -47,7 +67,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditReversal.CreateParams"] ) -> "CreditReversal": return cast( "CreditReversal", @@ -68,7 +88,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["CreditReversal.ListParams"] ) -> ListObject["CreditReversal"]: result = cls._static_request( "get", @@ -89,8 +109,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["CreditReversal.RetrieveParams"] ) -> "CreditReversal": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/treasury/debit_reversal.py b/stripe/api_resources/treasury/debit_reversal.py index 9eeb0eb14..77260039c 100644 --- a/stripe/api_resources/treasury/debit_reversal.py +++ b/stripe/api_resources/treasury/debit_reversal.py @@ -6,11 +6,10 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import Dict, List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -25,6 +24,28 @@ class DebitReversal( """ OBJECT_NAME = "treasury.debit_reversal" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Dict[str, str]|None"] + received_debit: str + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + received_debit: NotRequired["str|None"] + resolution: NotRequired["Literal['lost', 'won']|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['canceled', 'completed', 'processing']|None" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int created: int currency: str @@ -48,7 +69,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["DebitReversal.CreateParams"] ) -> "DebitReversal": return cast( "DebitReversal", @@ -69,7 +90,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["DebitReversal.ListParams"] ) -> ListObject["DebitReversal"]: result = cls._static_request( "get", @@ -90,8 +111,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["DebitReversal.RetrieveParams"] ) -> "DebitReversal": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/treasury/financial_account.py b/stripe/api_resources/treasury/financial_account.py index df806287a..bf41fb995 100644 --- a/stripe/api_resources/treasury/financial_account.py +++ b/stripe/api_resources/treasury/financial_account.py @@ -7,13 +7,18 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) from urllib.parse import quote_plus -from typing_extensions import TYPE_CHECKING - if TYPE_CHECKING: from stripe.api_resources.treasury.financial_account_features import ( FinancialAccountFeatures, @@ -31,6 +36,289 @@ class FinancialAccount( """ OBJECT_NAME = "treasury.financial_account" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + expand: NotRequired["List[str]|None"] + features: NotRequired["FinancialAccount.CreateParamsFeatures|None"] + metadata: NotRequired["Dict[str, str]|None"] + platform_restrictions: NotRequired[ + "FinancialAccount.CreateParamsPlatformRestrictions|None" + ] + supported_currencies: List[str] + + class CreateParamsPlatformRestrictions(TypedDict): + inbound_flows: NotRequired[ + "Literal['restricted', 'unrestricted']|None" + ] + outbound_flows: NotRequired[ + "Literal['restricted', 'unrestricted']|None" + ] + + class CreateParamsFeatures(TypedDict): + card_issuing: NotRequired[ + "FinancialAccount.CreateParamsFeaturesCardIssuing|None" + ] + deposit_insurance: NotRequired[ + "FinancialAccount.CreateParamsFeaturesDepositInsurance|None" + ] + financial_addresses: NotRequired[ + "FinancialAccount.CreateParamsFeaturesFinancialAddresses|None" + ] + inbound_transfers: NotRequired[ + "FinancialAccount.CreateParamsFeaturesInboundTransfers|None" + ] + intra_stripe_flows: NotRequired[ + "FinancialAccount.CreateParamsFeaturesIntraStripeFlows|None" + ] + outbound_payments: NotRequired[ + "FinancialAccount.CreateParamsFeaturesOutboundPayments|None" + ] + outbound_transfers: NotRequired[ + "FinancialAccount.CreateParamsFeaturesOutboundTransfers|None" + ] + + class CreateParamsFeaturesOutboundTransfers(TypedDict): + ach: NotRequired[ + "FinancialAccount.CreateParamsFeaturesOutboundTransfersAch|None" + ] + us_domestic_wire: NotRequired[ + "FinancialAccount.CreateParamsFeaturesOutboundTransfersUsDomesticWire|None" + ] + + class CreateParamsFeaturesOutboundTransfersUsDomesticWire(TypedDict): + requested: bool + + class CreateParamsFeaturesOutboundTransfersAch(TypedDict): + requested: bool + + class CreateParamsFeaturesOutboundPayments(TypedDict): + ach: NotRequired[ + "FinancialAccount.CreateParamsFeaturesOutboundPaymentsAch|None" + ] + us_domestic_wire: NotRequired[ + "FinancialAccount.CreateParamsFeaturesOutboundPaymentsUsDomesticWire|None" + ] + + class CreateParamsFeaturesOutboundPaymentsUsDomesticWire(TypedDict): + requested: bool + + class CreateParamsFeaturesOutboundPaymentsAch(TypedDict): + requested: bool + + class CreateParamsFeaturesIntraStripeFlows(TypedDict): + requested: bool + + class CreateParamsFeaturesInboundTransfers(TypedDict): + ach: NotRequired[ + "FinancialAccount.CreateParamsFeaturesInboundTransfersAch|None" + ] + + class CreateParamsFeaturesInboundTransfersAch(TypedDict): + requested: bool + + class CreateParamsFeaturesFinancialAddresses(TypedDict): + aba: NotRequired[ + "FinancialAccount.CreateParamsFeaturesFinancialAddressesAba|None" + ] + + class CreateParamsFeaturesFinancialAddressesAba(TypedDict): + requested: bool + + class CreateParamsFeaturesDepositInsurance(TypedDict): + requested: bool + + class CreateParamsFeaturesCardIssuing(TypedDict): + requested: bool + + class ListParams(RequestOptions): + created: NotRequired["FinancialAccount.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ModifyParams(RequestOptions): + expand: NotRequired["List[str]|None"] + features: NotRequired["FinancialAccount.ModifyParamsFeatures|None"] + metadata: NotRequired["Dict[str, str]|None"] + platform_restrictions: NotRequired[ + "FinancialAccount.ModifyParamsPlatformRestrictions|None" + ] + + class ModifyParamsPlatformRestrictions(TypedDict): + inbound_flows: NotRequired[ + "Literal['restricted', 'unrestricted']|None" + ] + outbound_flows: NotRequired[ + "Literal['restricted', 'unrestricted']|None" + ] + + class ModifyParamsFeatures(TypedDict): + card_issuing: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesCardIssuing|None" + ] + deposit_insurance: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesDepositInsurance|None" + ] + financial_addresses: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesFinancialAddresses|None" + ] + inbound_transfers: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesInboundTransfers|None" + ] + intra_stripe_flows: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesIntraStripeFlows|None" + ] + outbound_payments: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesOutboundPayments|None" + ] + outbound_transfers: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesOutboundTransfers|None" + ] + + class ModifyParamsFeaturesOutboundTransfers(TypedDict): + ach: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesOutboundTransfersAch|None" + ] + us_domestic_wire: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesOutboundTransfersUsDomesticWire|None" + ] + + class ModifyParamsFeaturesOutboundTransfersUsDomesticWire(TypedDict): + requested: bool + + class ModifyParamsFeaturesOutboundTransfersAch(TypedDict): + requested: bool + + class ModifyParamsFeaturesOutboundPayments(TypedDict): + ach: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesOutboundPaymentsAch|None" + ] + us_domestic_wire: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesOutboundPaymentsUsDomesticWire|None" + ] + + class ModifyParamsFeaturesOutboundPaymentsUsDomesticWire(TypedDict): + requested: bool + + class ModifyParamsFeaturesOutboundPaymentsAch(TypedDict): + requested: bool + + class ModifyParamsFeaturesIntraStripeFlows(TypedDict): + requested: bool + + class ModifyParamsFeaturesInboundTransfers(TypedDict): + ach: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesInboundTransfersAch|None" + ] + + class ModifyParamsFeaturesInboundTransfersAch(TypedDict): + requested: bool + + class ModifyParamsFeaturesFinancialAddresses(TypedDict): + aba: NotRequired[ + "FinancialAccount.ModifyParamsFeaturesFinancialAddressesAba|None" + ] + + class ModifyParamsFeaturesFinancialAddressesAba(TypedDict): + requested: bool + + class ModifyParamsFeaturesDepositInsurance(TypedDict): + requested: bool + + class ModifyParamsFeaturesCardIssuing(TypedDict): + requested: bool + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class RetrieveFeaturesParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class UpdateFeaturesParams(RequestOptions): + card_issuing: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsCardIssuing|None" + ] + deposit_insurance: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsDepositInsurance|None" + ] + expand: NotRequired["List[str]|None"] + financial_addresses: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsFinancialAddresses|None" + ] + inbound_transfers: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsInboundTransfers|None" + ] + intra_stripe_flows: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsIntraStripeFlows|None" + ] + outbound_payments: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsOutboundPayments|None" + ] + outbound_transfers: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsOutboundTransfers|None" + ] + + class UpdateFeaturesParamsOutboundTransfers(TypedDict): + ach: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsOutboundTransfersAch|None" + ] + us_domestic_wire: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsOutboundTransfersUsDomesticWire|None" + ] + + class UpdateFeaturesParamsOutboundTransfersUsDomesticWire(TypedDict): + requested: bool + + class UpdateFeaturesParamsOutboundTransfersAch(TypedDict): + requested: bool + + class UpdateFeaturesParamsOutboundPayments(TypedDict): + ach: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsOutboundPaymentsAch|None" + ] + us_domestic_wire: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsOutboundPaymentsUsDomesticWire|None" + ] + + class UpdateFeaturesParamsOutboundPaymentsUsDomesticWire(TypedDict): + requested: bool + + class UpdateFeaturesParamsOutboundPaymentsAch(TypedDict): + requested: bool + + class UpdateFeaturesParamsIntraStripeFlows(TypedDict): + requested: bool + + class UpdateFeaturesParamsInboundTransfers(TypedDict): + ach: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsInboundTransfersAch|None" + ] + + class UpdateFeaturesParamsInboundTransfersAch(TypedDict): + requested: bool + + class UpdateFeaturesParamsFinancialAddresses(TypedDict): + aba: NotRequired[ + "FinancialAccount.UpdateFeaturesParamsFinancialAddressesAba|None" + ] + + class UpdateFeaturesParamsFinancialAddressesAba(TypedDict): + requested: bool + + class UpdateFeaturesParamsDepositInsurance(TypedDict): + requested: bool + + class UpdateFeaturesParamsCardIssuing(TypedDict): + requested: bool + active_features: Optional[ List[ Literal[ @@ -100,7 +388,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["FinancialAccount.CreateParams"] ) -> "FinancialAccount": return cast( "FinancialAccount", @@ -121,7 +409,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["FinancialAccount.ListParams"] ) -> ListObject["FinancialAccount"]: result = cls._static_request( "get", @@ -141,7 +429,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "FinancialAccount": + def modify( + cls, id, **params: Unpack["FinancialAccount.ModifyParams"] + ) -> "FinancialAccount": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "FinancialAccount", @@ -150,9 +440,9 @@ def modify(cls, id, **params: Any) -> "FinancialAccount": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["FinancialAccount.RetrieveParams"] ) -> "FinancialAccount": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -163,7 +453,7 @@ def _cls_retrieve_features( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["FinancialAccount.RetrieveFeaturesParams"] ): return cls._static_request( "get", @@ -178,7 +468,9 @@ def _cls_retrieve_features( @util.class_method_variant("_cls_retrieve_features") def retrieve_features( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["FinancialAccount.RetrieveFeaturesParams"] ): return self._request( "get", @@ -196,7 +488,7 @@ def _cls_update_features( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["FinancialAccount.UpdateFeaturesParams"] ): return cls._static_request( "post", @@ -211,7 +503,9 @@ def _cls_update_features( @util.class_method_variant("_cls_update_features") def update_features( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["FinancialAccount.UpdateFeaturesParams"] ): return self._request( "post", diff --git a/stripe/api_resources/treasury/inbound_transfer.py b/stripe/api_resources/treasury/inbound_transfer.py index 0f8315c45..1603d998e 100644 --- a/stripe/api_resources/treasury/inbound_transfer.py +++ b/stripe/api_resources/treasury/inbound_transfer.py @@ -8,11 +8,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal, Type - -from typing_extensions import TYPE_CHECKING +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -27,6 +33,51 @@ class InboundTransfer( """ OBJECT_NAME = "treasury.inbound_transfer" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: int + currency: str + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + metadata: NotRequired["Dict[str, str]|None"] + origin_payment_method: str + statement_descriptor: NotRequired["str|None"] + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['canceled', 'failed', 'processing', 'succeeded']|None" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class FailParams(RequestOptions): + expand: NotRequired["List[str]|None"] + failure_details: NotRequired[ + "InboundTransfer.FailParamsFailureDetails|None" + ] + + class FailParamsFailureDetails(TypedDict): + code: NotRequired[ + "Literal['account_closed', 'account_frozen', 'bank_account_restricted', 'bank_ownership_changed', 'debit_not_authorized', 'incorrect_account_holder_address', 'incorrect_account_holder_name', 'incorrect_account_holder_tax_id', 'insufficient_funds', 'invalid_account_number', 'invalid_currency', 'no_account', 'other']|None" + ] + + class ReturnInboundTransferParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class SucceedParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int cancelable: bool created: int @@ -55,7 +106,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InboundTransfer.CancelParams"] ): return cls._static_request( "post", @@ -69,7 +120,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["InboundTransfer.CancelParams"] + ): return self._request( "post", "/v1/treasury/inbound_transfers/{inbound_transfer}/cancel".format( @@ -86,7 +141,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InboundTransfer.CreateParams"] ) -> "InboundTransfer": return cast( "InboundTransfer", @@ -107,7 +162,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InboundTransfer.ListParams"] ) -> ListObject["InboundTransfer"]: result = cls._static_request( "get", @@ -128,9 +183,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["InboundTransfer.RetrieveParams"] ) -> "InboundTransfer": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -144,7 +199,7 @@ def _cls_fail( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InboundTransfer.FailParams"] ): return cls._static_request( "post", @@ -158,7 +213,11 @@ def _cls_fail( ) @util.class_method_variant("_cls_fail") - def fail(self, idempotency_key: Optional[str] = None, **params: Any): + def fail( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["InboundTransfer.FailParams"] + ): return self.resource._request( "post", "/v1/test_helpers/treasury/inbound_transfers/{id}/fail".format( @@ -175,7 +234,7 @@ def _cls_return_inbound_transfer( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InboundTransfer.ReturnInboundTransferParams"] ): return cls._static_request( "post", @@ -190,7 +249,9 @@ def _cls_return_inbound_transfer( @util.class_method_variant("_cls_return_inbound_transfer") def return_inbound_transfer( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["InboundTransfer.ReturnInboundTransferParams"] ): return self.resource._request( "post", @@ -208,7 +269,7 @@ def _cls_succeed( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["InboundTransfer.SucceedParams"] ): return cls._static_request( "post", @@ -223,7 +284,9 @@ def _cls_succeed( @util.class_method_variant("_cls_succeed") def succeed( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["InboundTransfer.SucceedParams"] ): return self.resource._request( "post", diff --git a/stripe/api_resources/treasury/outbound_payment.py b/stripe/api_resources/treasury/outbound_payment.py index 7eabe1f59..dd1943707 100644 --- a/stripe/api_resources/treasury/outbound_payment.py +++ b/stripe/api_resources/treasury/outbound_payment.py @@ -8,11 +8,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal, Type - -from typing_extensions import TYPE_CHECKING +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -29,6 +35,116 @@ class OutboundPayment( """ OBJECT_NAME = "treasury.outbound_payment" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: int + currency: str + customer: NotRequired["str|None"] + description: NotRequired["str|None"] + destination_payment_method: NotRequired["str|None"] + destination_payment_method_data: NotRequired[ + "OutboundPayment.CreateParamsDestinationPaymentMethodData|None" + ] + destination_payment_method_options: NotRequired[ + "OutboundPayment.CreateParamsDestinationPaymentMethodOptions|None" + ] + end_user_details: NotRequired[ + "OutboundPayment.CreateParamsEndUserDetails|None" + ] + expand: NotRequired["List[str]|None"] + financial_account: str + metadata: NotRequired["Dict[str, str]|None"] + statement_descriptor: NotRequired["str|None"] + + class CreateParamsEndUserDetails(TypedDict): + ip_address: NotRequired["str|None"] + present: bool + + class CreateParamsDestinationPaymentMethodOptions(TypedDict): + us_bank_account: NotRequired[ + "Literal['']|OutboundPayment.CreateParamsDestinationPaymentMethodOptionsUsBankAccount|None" + ] + + class CreateParamsDestinationPaymentMethodOptionsUsBankAccount( + TypedDict, + ): + network: NotRequired["Literal['ach', 'us_domestic_wire']|None"] + + class CreateParamsDestinationPaymentMethodData(TypedDict): + billing_details: NotRequired[ + "OutboundPayment.CreateParamsDestinationPaymentMethodDataBillingDetails|None" + ] + financial_account: NotRequired["str|None"] + metadata: NotRequired["Dict[str, str]|None"] + type: Literal["financial_account", "us_bank_account"] + us_bank_account: NotRequired[ + "OutboundPayment.CreateParamsDestinationPaymentMethodDataUsBankAccount|None" + ] + + class CreateParamsDestinationPaymentMethodDataUsBankAccount(TypedDict): + account_holder_type: NotRequired[ + "Literal['company', 'individual']|None" + ] + account_number: NotRequired["str|None"] + account_type: NotRequired["Literal['checking', 'savings']|None"] + financial_connections_account: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + + class CreateParamsDestinationPaymentMethodDataBillingDetails( + TypedDict + ): + address: NotRequired[ + "Literal['']|OutboundPayment.CreateParamsDestinationPaymentMethodDataBillingDetailsAddress|None" + ] + email: NotRequired["Literal['']|str|None"] + name: NotRequired["Literal['']|str|None"] + phone: NotRequired["Literal['']|str|None"] + + class CreateParamsDestinationPaymentMethodDataBillingDetailsAddress( + TypedDict, + ): + city: NotRequired["str|None"] + country: NotRequired["str|None"] + line1: NotRequired["str|None"] + line2: NotRequired["str|None"] + postal_code: NotRequired["str|None"] + state: NotRequired["str|None"] + + class ListParams(RequestOptions): + customer: NotRequired["str|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['canceled', 'failed', 'posted', 'processing', 'returned']|None" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class FailParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class PostParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ReturnOutboundPaymentParams(RequestOptions): + expand: NotRequired["List[str]|None"] + returned_details: NotRequired[ + "OutboundPayment.ReturnOutboundPaymentParamsReturnedDetails|None" + ] + + class ReturnOutboundPaymentParamsReturnedDetails(TypedDict): + code: NotRequired[ + "Literal['account_closed', 'account_frozen', 'bank_account_restricted', 'bank_ownership_changed', 'declined', 'incorrect_account_holder_name', 'invalid_account_number', 'invalid_currency', 'no_account', 'other']|None" + ] + amount: int cancelable: bool created: int @@ -58,7 +174,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundPayment.CancelParams"] ): return cls._static_request( "post", @@ -72,7 +188,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundPayment.CancelParams"] + ): return self._request( "post", "/v1/treasury/outbound_payments/{id}/cancel".format( @@ -89,7 +209,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundPayment.CreateParams"] ) -> "OutboundPayment": return cast( "OutboundPayment", @@ -110,7 +230,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundPayment.ListParams"] ) -> ListObject["OutboundPayment"]: result = cls._static_request( "get", @@ -131,9 +251,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["OutboundPayment.RetrieveParams"] ) -> "OutboundPayment": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -147,7 +267,7 @@ def _cls_fail( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundPayment.FailParams"] ): return cls._static_request( "post", @@ -161,7 +281,11 @@ def _cls_fail( ) @util.class_method_variant("_cls_fail") - def fail(self, idempotency_key: Optional[str] = None, **params: Any): + def fail( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundPayment.FailParams"] + ): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_payments/{id}/fail".format( @@ -178,7 +302,7 @@ def _cls_post( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundPayment.PostParams"] ): return cls._static_request( "post", @@ -192,7 +316,11 @@ def _cls_post( ) @util.class_method_variant("_cls_post") - def post(self, idempotency_key: Optional[str] = None, **params: Any): + def post( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundPayment.PostParams"] + ): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_payments/{id}/post".format( @@ -209,7 +337,7 @@ def _cls_return_outbound_payment( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundPayment.ReturnOutboundPaymentParams"] ): return cls._static_request( "post", @@ -224,7 +352,9 @@ def _cls_return_outbound_payment( @util.class_method_variant("_cls_return_outbound_payment") def return_outbound_payment( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundPayment.ReturnOutboundPaymentParams"] ): return self.resource._request( "post", diff --git a/stripe/api_resources/treasury/outbound_transfer.py b/stripe/api_resources/treasury/outbound_transfer.py index f28b67fc4..fa14e7369 100644 --- a/stripe/api_resources/treasury/outbound_transfer.py +++ b/stripe/api_resources/treasury/outbound_transfer.py @@ -8,11 +8,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Dict, Optional, cast -from typing_extensions import Literal, Type - -from typing_extensions import TYPE_CHECKING +from typing import Dict, List, Optional, cast +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -29,6 +35,64 @@ class OutboundTransfer( """ OBJECT_NAME = "treasury.outbound_transfer" + if TYPE_CHECKING: + + class CancelParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: int + currency: str + description: NotRequired["str|None"] + destination_payment_method: NotRequired["str|None"] + destination_payment_method_options: NotRequired[ + "OutboundTransfer.CreateParamsDestinationPaymentMethodOptions|None" + ] + expand: NotRequired["List[str]|None"] + financial_account: str + metadata: NotRequired["Dict[str, str]|None"] + statement_descriptor: NotRequired["str|None"] + + class CreateParamsDestinationPaymentMethodOptions(TypedDict): + us_bank_account: NotRequired[ + "Literal['']|OutboundTransfer.CreateParamsDestinationPaymentMethodOptionsUsBankAccount|None" + ] + + class CreateParamsDestinationPaymentMethodOptionsUsBankAccount( + TypedDict, + ): + network: NotRequired["Literal['ach', 'us_domestic_wire']|None"] + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired[ + "Literal['canceled', 'failed', 'posted', 'processing', 'returned']|None" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class FailParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class PostParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class ReturnOutboundTransferParams(RequestOptions): + expand: NotRequired["List[str]|None"] + returned_details: NotRequired[ + "OutboundTransfer.ReturnOutboundTransferParamsReturnedDetails|None" + ] + + class ReturnOutboundTransferParamsReturnedDetails(TypedDict): + code: NotRequired[ + "Literal['account_closed', 'account_frozen', 'bank_account_restricted', 'bank_ownership_changed', 'declined', 'incorrect_account_holder_name', 'invalid_account_number', 'invalid_currency', 'no_account', 'other']|None" + ] + amount: int cancelable: bool created: int @@ -56,7 +120,7 @@ def _cls_cancel( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundTransfer.CancelParams"] ): return cls._static_request( "post", @@ -70,7 +134,11 @@ def _cls_cancel( ) @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key: Optional[str] = None, **params: Any): + def cancel( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundTransfer.CancelParams"] + ): return self._request( "post", "/v1/treasury/outbound_transfers/{outbound_transfer}/cancel".format( @@ -87,7 +155,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundTransfer.CreateParams"] ) -> "OutboundTransfer": return cast( "OutboundTransfer", @@ -108,7 +176,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundTransfer.ListParams"] ) -> ListObject["OutboundTransfer"]: result = cls._static_request( "get", @@ -129,9 +197,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["OutboundTransfer.RetrieveParams"] ) -> "OutboundTransfer": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -145,7 +213,7 @@ def _cls_fail( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundTransfer.FailParams"] ): return cls._static_request( "post", @@ -159,7 +227,11 @@ def _cls_fail( ) @util.class_method_variant("_cls_fail") - def fail(self, idempotency_key: Optional[str] = None, **params: Any): + def fail( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundTransfer.FailParams"] + ): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/fail".format( @@ -176,7 +248,7 @@ def _cls_post( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundTransfer.PostParams"] ): return cls._static_request( "post", @@ -190,7 +262,11 @@ def _cls_post( ) @util.class_method_variant("_cls_post") - def post(self, idempotency_key: Optional[str] = None, **params: Any): + def post( + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundTransfer.PostParams"] + ): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/post".format( @@ -207,7 +283,7 @@ def _cls_return_outbound_transfer( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["OutboundTransfer.ReturnOutboundTransferParams"] ): return cls._static_request( "post", @@ -222,7 +298,9 @@ def _cls_return_outbound_transfer( @util.class_method_variant("_cls_return_outbound_transfer") def return_outbound_transfer( - self, idempotency_key: Optional[str] = None, **params: Any + self, + idempotency_key: Optional[str] = None, + **params: Unpack["OutboundTransfer.ReturnOutboundTransferParams"] ): return self.resource._request( "post", diff --git a/stripe/api_resources/treasury/received_credit.py b/stripe/api_resources/treasury/received_credit.py index a07631db3..90a6a8860 100644 --- a/stripe/api_resources/treasury/received_credit.py +++ b/stripe/api_resources/treasury/received_credit.py @@ -6,11 +6,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal, Type - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -22,6 +28,51 @@ class ReceivedCredit(ListableAPIResource["ReceivedCredit"]): """ OBJECT_NAME = "treasury.received_credit" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + linked_flows: NotRequired[ + "ReceivedCredit.ListParamsLinkedFlows|None" + ] + starting_after: NotRequired["str|None"] + status: NotRequired["Literal['failed', 'succeeded']|None"] + + class ListParamsLinkedFlows(TypedDict): + source_flow_type: Literal[ + "credit_reversal", "other", "outbound_payment", "payout" + ] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: int + currency: str + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + initiating_payment_method_details: NotRequired[ + "ReceivedCredit.CreateParamsInitiatingPaymentMethodDetails|None" + ] + network: Literal["ach", "us_domestic_wire"] + + class CreateParamsInitiatingPaymentMethodDetails(TypedDict): + type: Literal["us_bank_account"] + us_bank_account: NotRequired[ + "ReceivedCredit.CreateParamsInitiatingPaymentMethodDetailsUsBankAccount|None" + ] + + class CreateParamsInitiatingPaymentMethodDetailsUsBankAccount( + TypedDict, + ): + account_holder_name: NotRequired["str|None"] + account_number: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + amount: int created: int currency: str @@ -47,7 +98,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ReceivedCredit.ListParams"] ) -> ListObject["ReceivedCredit"]: result = cls._static_request( "get", @@ -68,9 +119,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ReceivedCredit.RetrieveParams"] ) -> "ReceivedCredit": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -83,7 +134,7 @@ def create( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ReceivedCredit.CreateParams"] ): return cls._static_request( "post", diff --git a/stripe/api_resources/treasury/received_debit.py b/stripe/api_resources/treasury/received_debit.py index 1cb75c5e6..562cefaa3 100644 --- a/stripe/api_resources/treasury/received_debit.py +++ b/stripe/api_resources/treasury/received_debit.py @@ -6,11 +6,17 @@ ) from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal, Type - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + Type, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -22,6 +28,43 @@ class ReceivedDebit(ListableAPIResource["ReceivedDebit"]): """ OBJECT_NAME = "treasury.received_debit" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + status: NotRequired["Literal['failed', 'succeeded']|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + + class CreateParams(RequestOptions): + amount: int + currency: str + description: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + initiating_payment_method_details: NotRequired[ + "ReceivedDebit.CreateParamsInitiatingPaymentMethodDetails|None" + ] + network: Literal["ach"] + + class CreateParamsInitiatingPaymentMethodDetails(TypedDict): + type: Literal["us_bank_account"] + us_bank_account: NotRequired[ + "ReceivedDebit.CreateParamsInitiatingPaymentMethodDetailsUsBankAccount|None" + ] + + class CreateParamsInitiatingPaymentMethodDetailsUsBankAccount( + TypedDict, + ): + account_holder_name: NotRequired["str|None"] + account_number: NotRequired["str|None"] + routing_number: NotRequired["str|None"] + amount: int created: int currency: str @@ -49,7 +92,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ReceivedDebit.ListParams"] ) -> ListObject["ReceivedDebit"]: result = cls._static_request( "get", @@ -70,9 +113,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["ReceivedDebit.RetrieveParams"] ) -> "ReceivedDebit": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance @@ -85,7 +128,7 @@ def create( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["ReceivedDebit.CreateParams"] ): return cls._static_request( "post", diff --git a/stripe/api_resources/treasury/transaction.py b/stripe/api_resources/treasury/transaction.py index a3ffdbb7f..d1dac729d 100644 --- a/stripe/api_resources/treasury/transaction.py +++ b/stripe/api_resources/treasury/transaction.py @@ -2,11 +2,16 @@ # File generated from our OpenAPI spec from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.treasury.transaction_entry import ( @@ -20,6 +25,41 @@ class Transaction(ListableAPIResource["Transaction"]): """ OBJECT_NAME = "treasury.transaction" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + created: NotRequired["Transaction.ListParamsCreated|int|None"] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + order_by: NotRequired["Literal['created', 'posted_at']|None"] + starting_after: NotRequired["str|None"] + status: NotRequired["Literal['open', 'posted', 'void']|None"] + status_transitions: NotRequired[ + "Transaction.ListParamsStatusTransitions|None" + ] + + class ListParamsStatusTransitions(TypedDict): + posted_at: NotRequired[ + "Transaction.ListParamsStatusTransitionsPostedAt|int|None" + ] + + class ListParamsStatusTransitionsPostedAt(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + amount: int balance_impact: StripeObject created: int @@ -52,7 +92,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["Transaction.ListParams"] ) -> ListObject["Transaction"]: result = cls._static_request( "get", @@ -73,8 +113,8 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["Transaction.RetrieveParams"] ) -> "Transaction": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/treasury/transaction_entry.py b/stripe/api_resources/treasury/transaction_entry.py index e1f55a209..6d4f2588f 100644 --- a/stripe/api_resources/treasury/transaction_entry.py +++ b/stripe/api_resources/treasury/transaction_entry.py @@ -3,11 +3,16 @@ from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.expandable_field import ExpandableField from stripe.api_resources.list_object import ListObject +from stripe.request_options import RequestOptions from stripe.stripe_object import StripeObject -from typing import Any, Optional -from typing_extensions import Literal - -from typing_extensions import TYPE_CHECKING +from typing import List, Optional +from typing_extensions import ( + Literal, + NotRequired, + TypedDict, + Unpack, + TYPE_CHECKING, +) if TYPE_CHECKING: from stripe.api_resources.treasury.transaction import Transaction @@ -19,6 +24,36 @@ class TransactionEntry(ListableAPIResource["TransactionEntry"]): """ OBJECT_NAME = "treasury.transaction_entry" + if TYPE_CHECKING: + + class ListParams(RequestOptions): + created: NotRequired["TransactionEntry.ListParamsCreated|int|None"] + effective_at: NotRequired[ + "TransactionEntry.ListParamsEffectiveAt|int|None" + ] + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + financial_account: str + limit: NotRequired["int|None"] + order_by: NotRequired["Literal['created', 'effective_at']|None"] + starting_after: NotRequired["str|None"] + transaction: NotRequired["str|None"] + + class ListParamsEffectiveAt(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class ListParamsCreated(TypedDict): + gt: NotRequired["int|None"] + gte: NotRequired["int|None"] + lt: NotRequired["int|None"] + lte: NotRequired["int|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + balance_impact: StripeObject created: int currency: str @@ -70,7 +105,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["TransactionEntry.ListParams"] ) -> ListObject["TransactionEntry"]: result = cls._static_request( "get", @@ -91,9 +126,9 @@ def list( @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["TransactionEntry.RetrieveParams"] ) -> "TransactionEntry": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/api_resources/webhook_endpoint.py b/stripe/api_resources/webhook_endpoint.py index 8ed4d87d8..5e482de39 100644 --- a/stripe/api_resources/webhook_endpoint.py +++ b/stripe/api_resources/webhook_endpoint.py @@ -8,8 +8,9 @@ UpdateableAPIResource, ) from stripe.api_resources.list_object import ListObject -from typing import Any, Dict, List, Optional, cast -from typing_extensions import Literal +from stripe.request_options import RequestOptions +from typing import Dict, List, Optional, cast +from typing_extensions import Literal, NotRequired, Unpack, TYPE_CHECKING from urllib.parse import quote_plus @@ -30,6 +31,268 @@ class WebhookEndpoint( """ OBJECT_NAME = "webhook_endpoint" + if TYPE_CHECKING: + + class CreateParams(RequestOptions): + api_version: NotRequired[ + "Literal['2011-01-01', '2011-06-21', '2011-06-28', '2011-08-01', '2011-09-15', '2011-11-17', '2012-02-23', '2012-03-25', '2012-06-18', '2012-06-28', '2012-07-09', '2012-09-24', '2012-10-26', '2012-11-07', '2013-02-11', '2013-02-13', '2013-07-05', '2013-08-12', '2013-08-13', '2013-10-29', '2013-12-03', '2014-01-31', '2014-03-13', '2014-03-28', '2014-05-19', '2014-06-13', '2014-06-17', '2014-07-22', '2014-07-26', '2014-08-04', '2014-08-20', '2014-09-08', '2014-10-07', '2014-11-05', '2014-11-20', '2014-12-08', '2014-12-17', '2014-12-22', '2015-01-11', '2015-01-26', '2015-02-10', '2015-02-16', '2015-02-18', '2015-03-24', '2015-04-07', '2015-06-15', '2015-07-07', '2015-07-13', '2015-07-28', '2015-08-07', '2015-08-19', '2015-09-03', '2015-09-08', '2015-09-23', '2015-10-01', '2015-10-12', '2015-10-16', '2016-02-03', '2016-02-19', '2016-02-22', '2016-02-23', '2016-02-29', '2016-03-07', '2016-06-15', '2016-07-06', '2016-10-19', '2017-01-27', '2017-02-14', '2017-04-06', '2017-05-25', '2017-06-05', '2017-08-15', '2017-12-14', '2018-01-23', '2018-02-05', '2018-02-06', '2018-02-28', '2018-05-21', '2018-07-27', '2018-08-23', '2018-09-06', '2018-09-24', '2018-10-31', '2018-11-08', '2019-02-11', '2019-02-19', '2019-03-14', '2019-05-16', '2019-08-14', '2019-09-09', '2019-10-08', '2019-10-17', '2019-11-05', '2019-12-03', '2020-03-02', '2020-08-27', '2022-08-01', '2022-11-15', '2023-08-16']|None" + ] + connect: NotRequired["bool|None"] + description: NotRequired["Literal['']|str|None"] + enabled_events: List[ + Literal[ + "*", + "account.application.authorized", + "account.application.deauthorized", + "account.external_account.created", + "account.external_account.deleted", + "account.external_account.updated", + "account.updated", + "application_fee.created", + "application_fee.refund.updated", + "application_fee.refunded", + "balance.available", + "billing_portal.configuration.created", + "billing_portal.configuration.updated", + "billing_portal.session.created", + "capability.updated", + "cash_balance.funds_available", + "charge.captured", + "charge.dispute.closed", + "charge.dispute.created", + "charge.dispute.funds_reinstated", + "charge.dispute.funds_withdrawn", + "charge.dispute.updated", + "charge.expired", + "charge.failed", + "charge.pending", + "charge.refund.updated", + "charge.refunded", + "charge.succeeded", + "charge.updated", + "checkout.session.async_payment_failed", + "checkout.session.async_payment_succeeded", + "checkout.session.completed", + "checkout.session.expired", + "coupon.created", + "coupon.deleted", + "coupon.updated", + "credit_note.created", + "credit_note.updated", + "credit_note.voided", + "customer.created", + "customer.deleted", + "customer.discount.created", + "customer.discount.deleted", + "customer.discount.updated", + "customer.source.created", + "customer.source.deleted", + "customer.source.expiring", + "customer.source.updated", + "customer.subscription.created", + "customer.subscription.deleted", + "customer.subscription.paused", + "customer.subscription.pending_update_applied", + "customer.subscription.pending_update_expired", + "customer.subscription.resumed", + "customer.subscription.trial_will_end", + "customer.subscription.updated", + "customer.tax_id.created", + "customer.tax_id.deleted", + "customer.tax_id.updated", + "customer.updated", + "customer_cash_balance_transaction.created", + "file.created", + "financial_connections.account.created", + "financial_connections.account.deactivated", + "financial_connections.account.disconnected", + "financial_connections.account.reactivated", + "financial_connections.account.refreshed_balance", + "identity.verification_session.canceled", + "identity.verification_session.created", + "identity.verification_session.processing", + "identity.verification_session.redacted", + "identity.verification_session.requires_input", + "identity.verification_session.verified", + "invoice.created", + "invoice.deleted", + "invoice.finalization_failed", + "invoice.finalized", + "invoice.marked_uncollectible", + "invoice.paid", + "invoice.payment_action_required", + "invoice.payment_failed", + "invoice.payment_succeeded", + "invoice.sent", + "invoice.upcoming", + "invoice.updated", + "invoice.voided", + "invoiceitem.created", + "invoiceitem.deleted", + "issuing_authorization.created", + "issuing_authorization.request", + "issuing_authorization.updated", + "issuing_card.created", + "issuing_card.updated", + "issuing_cardholder.created", + "issuing_cardholder.updated", + "issuing_dispute.closed", + "issuing_dispute.created", + "issuing_dispute.funds_reinstated", + "issuing_dispute.submitted", + "issuing_dispute.updated", + "issuing_transaction.created", + "issuing_transaction.updated", + "mandate.updated", + "payment_intent.amount_capturable_updated", + "payment_intent.canceled", + "payment_intent.created", + "payment_intent.partially_funded", + "payment_intent.payment_failed", + "payment_intent.processing", + "payment_intent.requires_action", + "payment_intent.succeeded", + "payment_link.created", + "payment_link.updated", + "payment_method.attached", + "payment_method.automatically_updated", + "payment_method.detached", + "payment_method.updated", + "payout.canceled", + "payout.created", + "payout.failed", + "payout.paid", + "payout.reconciliation_completed", + "payout.updated", + "person.created", + "person.deleted", + "person.updated", + "plan.created", + "plan.deleted", + "plan.updated", + "price.created", + "price.deleted", + "price.updated", + "product.created", + "product.deleted", + "product.updated", + "promotion_code.created", + "promotion_code.updated", + "quote.accepted", + "quote.canceled", + "quote.created", + "quote.finalized", + "radar.early_fraud_warning.created", + "radar.early_fraud_warning.updated", + "refund.created", + "refund.updated", + "reporting.report_run.failed", + "reporting.report_run.succeeded", + "reporting.report_type.updated", + "review.closed", + "review.opened", + "setup_intent.canceled", + "setup_intent.created", + "setup_intent.requires_action", + "setup_intent.setup_failed", + "setup_intent.succeeded", + "sigma.scheduled_query_run.created", + "source.canceled", + "source.chargeable", + "source.failed", + "source.mandate_notification", + "source.refund_attributes_required", + "source.transaction.created", + "source.transaction.updated", + "subscription_schedule.aborted", + "subscription_schedule.canceled", + "subscription_schedule.completed", + "subscription_schedule.created", + "subscription_schedule.expiring", + "subscription_schedule.released", + "subscription_schedule.updated", + "tax.settings.updated", + "tax_rate.created", + "tax_rate.updated", + "terminal.reader.action_failed", + "terminal.reader.action_succeeded", + "test_helpers.test_clock.advancing", + "test_helpers.test_clock.created", + "test_helpers.test_clock.deleted", + "test_helpers.test_clock.internal_failure", + "test_helpers.test_clock.ready", + "topup.canceled", + "topup.created", + "topup.failed", + "topup.reversed", + "topup.succeeded", + "transfer.created", + "transfer.reversed", + "transfer.updated", + "treasury.credit_reversal.created", + "treasury.credit_reversal.posted", + "treasury.debit_reversal.completed", + "treasury.debit_reversal.created", + "treasury.debit_reversal.initial_credit_granted", + "treasury.financial_account.closed", + "treasury.financial_account.created", + "treasury.financial_account.features_status_updated", + "treasury.inbound_transfer.canceled", + "treasury.inbound_transfer.created", + "treasury.inbound_transfer.failed", + "treasury.inbound_transfer.succeeded", + "treasury.outbound_payment.canceled", + "treasury.outbound_payment.created", + "treasury.outbound_payment.expected_arrival_date_updated", + "treasury.outbound_payment.failed", + "treasury.outbound_payment.posted", + "treasury.outbound_payment.returned", + "treasury.outbound_transfer.canceled", + "treasury.outbound_transfer.created", + "treasury.outbound_transfer.expected_arrival_date_updated", + "treasury.outbound_transfer.failed", + "treasury.outbound_transfer.posted", + "treasury.outbound_transfer.returned", + "treasury.received_credit.created", + "treasury.received_credit.failed", + "treasury.received_credit.succeeded", + "treasury.received_debit.created", + "invoiceitem.updated", + "order.created", + "recipient.created", + "recipient.deleted", + "recipient.updated", + "sku.created", + "sku.deleted", + "sku.updated", + ] + ] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + url: str + + class DeleteParams(RequestOptions): + pass + + class ListParams(RequestOptions): + ending_before: NotRequired["str|None"] + expand: NotRequired["List[str]|None"] + limit: NotRequired["int|None"] + starting_after: NotRequired["str|None"] + + class ModifyParams(RequestOptions): + description: NotRequired["Literal['']|str|None"] + disabled: NotRequired["bool|None"] + enabled_events: NotRequired[ + "List[Literal['*', 'account.application.authorized', 'account.application.deauthorized', 'account.external_account.created', 'account.external_account.deleted', 'account.external_account.updated', 'account.updated', 'application_fee.created', 'application_fee.refund.updated', 'application_fee.refunded', 'balance.available', 'billing_portal.configuration.created', 'billing_portal.configuration.updated', 'billing_portal.session.created', 'capability.updated', 'cash_balance.funds_available', 'charge.captured', 'charge.dispute.closed', 'charge.dispute.created', 'charge.dispute.funds_reinstated', 'charge.dispute.funds_withdrawn', 'charge.dispute.updated', 'charge.expired', 'charge.failed', 'charge.pending', 'charge.refund.updated', 'charge.refunded', 'charge.succeeded', 'charge.updated', 'checkout.session.async_payment_failed', 'checkout.session.async_payment_succeeded', 'checkout.session.completed', 'checkout.session.expired', 'coupon.created', 'coupon.deleted', 'coupon.updated', 'credit_note.created', 'credit_note.updated', 'credit_note.voided', 'customer.created', 'customer.deleted', 'customer.discount.created', 'customer.discount.deleted', 'customer.discount.updated', 'customer.source.created', 'customer.source.deleted', 'customer.source.expiring', 'customer.source.updated', 'customer.subscription.created', 'customer.subscription.deleted', 'customer.subscription.paused', 'customer.subscription.pending_update_applied', 'customer.subscription.pending_update_expired', 'customer.subscription.resumed', 'customer.subscription.trial_will_end', 'customer.subscription.updated', 'customer.tax_id.created', 'customer.tax_id.deleted', 'customer.tax_id.updated', 'customer.updated', 'customer_cash_balance_transaction.created', 'file.created', 'financial_connections.account.created', 'financial_connections.account.deactivated', 'financial_connections.account.disconnected', 'financial_connections.account.reactivated', 'financial_connections.account.refreshed_balance', 'identity.verification_session.canceled', 'identity.verification_session.created', 'identity.verification_session.processing', 'identity.verification_session.redacted', 'identity.verification_session.requires_input', 'identity.verification_session.verified', 'invoice.created', 'invoice.deleted', 'invoice.finalization_failed', 'invoice.finalized', 'invoice.marked_uncollectible', 'invoice.paid', 'invoice.payment_action_required', 'invoice.payment_failed', 'invoice.payment_succeeded', 'invoice.sent', 'invoice.upcoming', 'invoice.updated', 'invoice.voided', 'invoiceitem.created', 'invoiceitem.deleted', 'issuing_authorization.created', 'issuing_authorization.request', 'issuing_authorization.updated', 'issuing_card.created', 'issuing_card.updated', 'issuing_cardholder.created', 'issuing_cardholder.updated', 'issuing_dispute.closed', 'issuing_dispute.created', 'issuing_dispute.funds_reinstated', 'issuing_dispute.submitted', 'issuing_dispute.updated', 'issuing_transaction.created', 'issuing_transaction.updated', 'mandate.updated', 'payment_intent.amount_capturable_updated', 'payment_intent.canceled', 'payment_intent.created', 'payment_intent.partially_funded', 'payment_intent.payment_failed', 'payment_intent.processing', 'payment_intent.requires_action', 'payment_intent.succeeded', 'payment_link.created', 'payment_link.updated', 'payment_method.attached', 'payment_method.automatically_updated', 'payment_method.detached', 'payment_method.updated', 'payout.canceled', 'payout.created', 'payout.failed', 'payout.paid', 'payout.reconciliation_completed', 'payout.updated', 'person.created', 'person.deleted', 'person.updated', 'plan.created', 'plan.deleted', 'plan.updated', 'price.created', 'price.deleted', 'price.updated', 'product.created', 'product.deleted', 'product.updated', 'promotion_code.created', 'promotion_code.updated', 'quote.accepted', 'quote.canceled', 'quote.created', 'quote.finalized', 'radar.early_fraud_warning.created', 'radar.early_fraud_warning.updated', 'refund.created', 'refund.updated', 'reporting.report_run.failed', 'reporting.report_run.succeeded', 'reporting.report_type.updated', 'review.closed', 'review.opened', 'setup_intent.canceled', 'setup_intent.created', 'setup_intent.requires_action', 'setup_intent.setup_failed', 'setup_intent.succeeded', 'sigma.scheduled_query_run.created', 'source.canceled', 'source.chargeable', 'source.failed', 'source.mandate_notification', 'source.refund_attributes_required', 'source.transaction.created', 'source.transaction.updated', 'subscription_schedule.aborted', 'subscription_schedule.canceled', 'subscription_schedule.completed', 'subscription_schedule.created', 'subscription_schedule.expiring', 'subscription_schedule.released', 'subscription_schedule.updated', 'tax.settings.updated', 'tax_rate.created', 'tax_rate.updated', 'terminal.reader.action_failed', 'terminal.reader.action_succeeded', 'test_helpers.test_clock.advancing', 'test_helpers.test_clock.created', 'test_helpers.test_clock.deleted', 'test_helpers.test_clock.internal_failure', 'test_helpers.test_clock.ready', 'topup.canceled', 'topup.created', 'topup.failed', 'topup.reversed', 'topup.succeeded', 'transfer.created', 'transfer.reversed', 'transfer.updated', 'treasury.credit_reversal.created', 'treasury.credit_reversal.posted', 'treasury.debit_reversal.completed', 'treasury.debit_reversal.created', 'treasury.debit_reversal.initial_credit_granted', 'treasury.financial_account.closed', 'treasury.financial_account.created', 'treasury.financial_account.features_status_updated', 'treasury.inbound_transfer.canceled', 'treasury.inbound_transfer.created', 'treasury.inbound_transfer.failed', 'treasury.inbound_transfer.succeeded', 'treasury.outbound_payment.canceled', 'treasury.outbound_payment.created', 'treasury.outbound_payment.expected_arrival_date_updated', 'treasury.outbound_payment.failed', 'treasury.outbound_payment.posted', 'treasury.outbound_payment.returned', 'treasury.outbound_transfer.canceled', 'treasury.outbound_transfer.created', 'treasury.outbound_transfer.expected_arrival_date_updated', 'treasury.outbound_transfer.failed', 'treasury.outbound_transfer.posted', 'treasury.outbound_transfer.returned', 'treasury.received_credit.created', 'treasury.received_credit.failed', 'treasury.received_credit.succeeded', 'treasury.received_debit.created', 'invoiceitem.updated', 'order.created', 'recipient.created', 'recipient.deleted', 'recipient.updated', 'sku.created', 'sku.deleted', 'sku.updated']]|None" + ] + expand: NotRequired["List[str]|None"] + metadata: NotRequired["Literal['']|Dict[str, str]|None"] + url: NotRequired["str|None"] + + class RetrieveParams(RequestOptions): + expand: NotRequired["List[str]|None"] + api_version: Optional[str] application: Optional[str] created: int @@ -51,7 +314,7 @@ def create( idempotency_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["WebhookEndpoint.CreateParams"] ) -> "WebhookEndpoint": return cast( "WebhookEndpoint", @@ -67,7 +330,9 @@ def create( ) @classmethod - def _cls_delete(cls, sid: str, **params: Any) -> "WebhookEndpoint": + def _cls_delete( + cls, sid: str, **params: Unpack["WebhookEndpoint.DeleteParams"] + ) -> "WebhookEndpoint": url = "%s/%s" % (cls.class_url(), quote_plus(sid)) return cast( "WebhookEndpoint", @@ -75,7 +340,9 @@ def _cls_delete(cls, sid: str, **params: Any) -> "WebhookEndpoint": ) @util.class_method_variant("_cls_delete") - def delete(self, **params: Any) -> "WebhookEndpoint": + def delete( + self, **params: Unpack["WebhookEndpoint.DeleteParams"] + ) -> "WebhookEndpoint": return self._request_and_refresh( "delete", self.instance_url(), @@ -88,7 +355,7 @@ def list( api_key: Optional[str] = None, stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, - **params: Any + **params: Unpack["WebhookEndpoint.ListParams"] ) -> ListObject["WebhookEndpoint"]: result = cls._static_request( "get", @@ -108,7 +375,9 @@ def list( return result @classmethod - def modify(cls, id, **params: Any) -> "WebhookEndpoint": + def modify( + cls, id, **params: Unpack["WebhookEndpoint.ModifyParams"] + ) -> "WebhookEndpoint": url = "%s/%s" % (cls.class_url(), quote_plus(id)) return cast( "WebhookEndpoint", @@ -117,8 +386,8 @@ def modify(cls, id, **params: Any) -> "WebhookEndpoint": @classmethod def retrieve( - cls, id: str, api_key: Optional[str] = None, **params: Any + cls, id: str, **params: Unpack["WebhookEndpoint.RetrieveParams"] ) -> "WebhookEndpoint": - instance = cls(id, api_key, **params) + instance = cls(id, **params) instance.refresh() return instance diff --git a/stripe/request_options.py b/stripe/request_options.py new file mode 100644 index 000000000..0fd5b91ce --- /dev/null +++ b/stripe/request_options.py @@ -0,0 +1,11 @@ +from typing import Optional, Dict +from typing_extensions import NotRequired, TypedDict + + +class RequestOptions(TypedDict): + api_key: NotRequired[Optional[str]] + api_base: NotRequired[Optional[str]] + stripe_version: NotRequired[Optional[str]] + stripe_account: NotRequired[Optional[str]] + idempotency_key: NotRequired[Optional[str]] + headers: NotRequired[Optional[Dict[str, str]]] diff --git a/stripe/stripe_object.py b/stripe/stripe_object.py index 2d42ebb40..fd2ca642b 100644 --- a/stripe/stripe_object.py +++ b/stripe/stripe_object.py @@ -2,7 +2,7 @@ import json from copy import deepcopy from typing_extensions import TYPE_CHECKING, Literal -from typing import Any, Dict, Optional +from typing import Any, Dict, Optional, Mapping import stripe from stripe import api_requestor, util @@ -258,9 +258,9 @@ def _request( stripe_version: Optional[str] = None, stripe_account: Optional[str] = None, headers: Optional[Dict[str, str]] = None, - params: Optional[Dict[str, Any]] = None, + params: Optional[Mapping[str, Any]] = None, ): - params = None if params is None else params.copy() + params = None if params is None else dict(params) api_key = util.read_special_variable(params, "api_key", api_key) idempotency_key = util.read_special_variable( params, "idempotency_key", idempotency_key