diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs deleted file mode 100644 index 99bbdc4..0000000 --- a/.git-blame-ignore-revs +++ /dev/null @@ -1,2 +0,0 @@ -# uvx ruff format -c1de3e776998c4128593c584413d143f1e0e2bd4 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 551524a..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,81 +0,0 @@ -name: Bug Report -description: Report a bug for this repository. -labels: - - Bug - -body: - - - type: textarea - id: what-happened - attributes: - label: Description of the Bug - description: Please provide a clear and concise description of the bug. - placeholder: Describe what you're experiencing. - validations: - required: true - - - type: textarea - id: repro-steps - attributes: - label: Steps to reproduce - description: Clear and concise instructions to reproduce the bug are essential for quick resolution. - placeholder: | - 1. Fetch '...' - 2. Update the '....' - 3. Encounter the error - validations: - required: true - - - type: textarea - id: expected-behavior - attributes: - label: Expected Behavior - description: Describe what you expected to happen. - validations: - required: true - - - type: textarea - id: code-snippets - attributes: - label: Code Snippets (if applicable) - description: If relevant, provide code snippets to clarify the issue. - render: Python - validations: - required: false - - - type: input - id: os - attributes: - label: Operating System - placeholder: macOS - validations: - required: true - - - type: input - id: language-version - attributes: - label: Language version - placeholder: Python 3.10.4 - validations: - required: true - - - type: input - id: lib-version - attributes: - label: Library version - placeholder: v2.31.0 - validations: - required: true - - - type: textarea - id: additional-context - attributes: - label: Additional context - description: Provide any other relevant information about the problem. - validations: - required: false - - - type: markdown - attributes: - value: | - Thank you for taking the time to submit this bug report! diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 324a6c5..0000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,6 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Chargebee support - url: https://support.chargebee.com/ - about: | - Github issues are not an official support channel for Chargebee. If you have an urgent request we suggest you contact us through an official channel: support@chargebee.com or https://support.chargebee.com/ \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index ae783e4..0000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Feature Request -description: Request a New Feature for the project. -labels: - - Feature Request - -body: - - type: textarea - id: problem - attributes: - label: What problem does your feature request address? - description: Please provide a clear and concise description of the problem you'd like to solve. For example, "I'm frequently frustrated when..." - - - type: textarea - id: solution - attributes: - label: Describe the desired solution - description: Please provide a clear and concise description of the solution you would like to see implemented. - - - type: textarea - id: alternatives - attributes: - label: Alternatives considered - description: Describe any alternative solutions or features you may have thought about in relation to this problem. - - - type: textarea - id: context - attributes: - label: Additional context - description: Feel free to include any other relevant information or context regarding your feature request. - - - type: markdown - attributes: - value: | - Thank you for taking the time to submit your feature request! diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index acfc1ac..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,12 +0,0 @@ -### Description - -Please provide a brief overview of the changes introduced by this pull request. - -### Related Issues - -Closes #IssueNumber - - -### Additional Information - -Include any additional information that might be helpful in reviewing the changes introduced by this pull request. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 219dc42..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Python Unittest - -on: - push: - branches: [ master, v2 ] - pull_request: - branches: [ master, v2 ] - -jobs: - test: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.11] - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Cache pip - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - - name: Run unit tests - run: | - python -m unittest discover -v diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 949c755..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,70 +0,0 @@ -name: Release to PyPI - -on: - push: - tags: - - "v*" - -jobs: - - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Verify tag matches package version - run: | - TAG_VERSION="${GITHUB_REF#refs/tags/v}" - PACKAGE_VERSION="$(cat chargebee/version.py | cut -d'"' -f2)" - - echo "Tag version: $TAG_VERSION" - echo "Package version: $PACKAGE_VERSION" - - if [ "$TAG_VERSION" != "$PACKAGE_VERSION" ]; then - echo "❌ Tag version ($TAG_VERSION) does not match package version ($PACKAGE_VERSION)" - exit 1 - fi - echo "✅ Tag matches package version." - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.11" - cache: "pip" - - - name: Install build backend - run: | - python -m pip install --upgrade pip - pip install build twine - - - name: Build sdist and wheel - run: python -m build - - - name: Check metadata (twine) - run: twine check dist/* - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: dist - path: dist/* - - publish: - name: Publish to PyPI - needs: build - runs-on: ubuntu-latest - - steps: - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: dist - path: dist - - - name: Publish (PyPI) - uses: pypa/gh-action-pypi-publish@release/v1 - with: - password: ${{ secrets.PYPI_API_TOKEN }} - skip-existing: true diff --git a/.gitignore b/.gitignore index 719101d..880c5a3 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,6 @@ var sdist develop-eggs .installed.cfg -.DS_Store # Installer logs pip-log.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0716942..2792422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,707 +1,3 @@ -### v3.19.1 (2026-03-11) -* * * -### Bug Fixes: -- Fixed URL construction to avoid appending a trailing `?` when there are no query parameters. - -### v3.19.0 (2026-03-02) -* * * -### New Resources: -- [`UsageCharge`](https://apidocs.chargebee.com/docs/api/usage_charges) has been added. -- [`UsageSummary`](https://apidocs.chargebee.com/docs/api/usage_summaries) has been added. - - -### New Attributes: -- [`free_period`](https://apidocs.chargebee.com/docs/api/quoted_subscriptions/quoted-subscription-object#free_period) has been added to [`QuotedSubscription`](https://apidocs.chargebee.com/docs/api/quoted_subscriptions). -- [`free_period_unit`](https://apidocs.chargebee.com/docs/api/quoted_subscriptions/quoted-subscription-object#free_period_unit) has been added to [`QuotedSubscription`](https://apidocs.chargebee.com/docs/api/quoted_subscriptions). - - -### New Parameters: -- [`net_term_days`](https://apidocs.chargebee.com/docs/api/invoices/create-invoice-for-items-and-one-time-charges#net_term_days) has been added as request body parameter to [`create_invoice_for_items_and_one-time_charges`](https://apidocs.chargebee.com/docs/api/invoices/create-invoice-for-items-and-one-time-charges) in [`Invoice`](https://apidocs.chargebee.com/docs/api/invoices). -- [`contract_term`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-existing-subscription#contract_term) has been added as request body parameter to [`create_pricing_page_for_existing_subscription`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-existing-subscription) in [`PricingPageSession`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions). -- [`contract_term`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-new-subscription#contract_term) has been added as request body parameter to [`create_pricing_page_for_new_subscription`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-new-subscription) in [`PricingPageSession`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions). -- [`subscription.free_period`](https://apidocs.chargebee.com/docs/api/quotes/create-a-quote-for-a-new-subscription-items#subscription_free_period) has been added as request body parameter to [`create_a_quote_for_a_new_subscription_items`](https://apidocs.chargebee.com/docs/api/quotes/create-a-quote-for-a-new-subscription-items) in [`Quote`](https://apidocs.chargebee.com/docs/api/quotes). -- [`subscription.free_period_unit`](https://apidocs.chargebee.com/docs/api/quotes/create-a-quote-for-a-new-subscription-items#subscription_free_period_unit) has been added as request body parameter to [`create_a_quote_for_a_new_subscription_items`](https://apidocs.chargebee.com/docs/api/quotes/create-a-quote-for-a-new-subscription-items) in [`Quote`](https://apidocs.chargebee.com/docs/api/quotes). -- [`subscription.free_period`](https://apidocs.chargebee.com/docs/api/quotes/edit-create-subscription-quote-for-items#subscription_free_period) has been added as request body parameter to [`edit_create_subscription_quote_for_items`](https://apidocs.chargebee.com/docs/api/quotes/edit-create-subscription-quote-for-items) in [`Quote`](https://apidocs.chargebee.com/docs/api/quotes). -- [`subscription.free_period_unit`](https://apidocs.chargebee.com/docs/api/quotes/edit-create-subscription-quote-for-items#subscription_free_period_unit) has been added as request body parameter to [`edit_create_subscription_quote_for_items`](https://apidocs.chargebee.com/docs/api/quotes/edit-create-subscription-quote-for-items) in [`Quote`](https://apidocs.chargebee.com/docs/api/quotes). - - -### New Enums: -- `month`, `week`, `day`, `hour`, and `minute` have been added as new values enum `WindowSize`. -- `cancel`, `renew_once`, `renew`, and `evergreen` have been added as new values to enum request body parameter `contract_term.action_at_term_end` in [`create_pricing_page_for_existing_subscription`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-existing-subscription) of [`PricingPageSession`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions). -- `cancel`, `renew_once`, `renew`, and `evergreen` have been added as new values to enum request body parameter `contract_term.action_at_term_end` in [`create_pricing_page_for_new_subscription`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-new-subscription) of [`PricingPageSession`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions). - - - -### v3.18.1 (2026-02-19) -* * * - -### Bug Fixes: -- corrected the response schema for [`add_item_entitlement`](https://apidocs.chargebee.com/docs/api/item_entitlements/upsert-or-remove-item-entitlements-for-a-feature). -- corrected the response schema for [`upsert_or_remove_item_entitlements_for_item`](https://apidocs.chargebee.com/docs/api/item_entitlements/upsert-or-remove-item-entitlements-for-an-item). - -### v3.18.1 (2026-02-16) -* * * - -### Bug Fixes: -- Fixed enum serialization in JSON requests to use actual enum values instead of string representations. - -### v3.18.0 (2026-02-06) -* * * -### New Attributes: -- [`subscription_id`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/entitlement-override-object#subscription_id) has been added to [`EntitlementOverride`](https://apidocs.chargebee.com/docs/api/entitlement_overrides). -- [`is_enabled`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/entitlement-override-object#is_enabled) has been added to [`EntitlementOverride`](https://apidocs.chargebee.com/docs/api/entitlement_overrides). -- [`decommissioned`](https://apidocs.chargebee.com/docs/api/subscriptions/subscription-object#decommissioned) has been added to [`Subscription`](https://apidocs.chargebee.com/docs/api/subscriptions). - - -### New Parameters: -- [`omnichannel_subscription_item`](https://apidocs.chargebee.com/docs/api/omnichannel_subscriptions/list-omnichannel-subscriptions#omnichannel_subscription_item) has been added as query parameter to [`list_omnichannel_subscriptions`](https://apidocs.chargebee.com/docs/api/omnichannel_subscriptions/list-omnichannel-subscriptions) in [`OmnichannelSubscription`](https://apidocs.chargebee.com/docs/api/omnichannel_subscriptions). -- [`entitlement_overrides.entity_id`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/upsert-or-remove-entitlement-overrides-for-a-subscription#entitlement_overrides_entity_id) has been added as request body parameter to [`upsert_or_remove_entitlement_overrides_for_a_subscription`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/upsert-or-remove-entitlement-overrides-for-a-subscription) in [`EntitlementOverride`](https://apidocs.chargebee.com/docs/api/entitlement_overrides). -- [`entitlement_overrides.entity_type`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/upsert-or-remove-entitlement-overrides-for-a-subscription#entitlement_overrides_entity_type) has been added as request body parameter to [`upsert_or_remove_entitlement_overrides_for_a_subscription`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/upsert-or-remove-entitlement-overrides-for-a-subscription) in [`EntitlementOverride`](https://apidocs.chargebee.com/docs/api/entitlement_overrides). -- [`entitlement_overrides.is_enabled`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/upsert-or-remove-entitlement-overrides-for-a-subscription#entitlement_overrides_is_enabled) has been added as request body parameter to [`upsert_or_remove_entitlement_overrides_for_a_subscription`](https://apidocs.chargebee.com/docs/api/entitlement_overrides/upsert-or-remove-entitlement-overrides-for-a-subscription) in [`EntitlementOverride`](https://apidocs.chargebee.com/docs/api/entitlement_overrides). -- [`payment_method_save_policy`](https://apidocs.chargebee.com/docs/api/hosted_pages/collect-now#payment_method_save_policy) has been added as request body parameter to [`collect_now`](https://apidocs.chargebee.com/docs/api/hosted_pages/collect-now) in [`HostedPage`](https://apidocs.chargebee.com/docs/api/hosted_pages). -- [`decommissioned`](https://apidocs.chargebee.com/docs/api/subscriptions/cancel-subscription-for-items#decommissioned) has been added as request body parameter to [`cancel_subscription_for_items`](https://apidocs.chargebee.com/docs/api/subscriptions/cancel-subscription-for-items) in [`Subscription`](https://apidocs.chargebee.com/docs/api/subscriptions). - - -### Parameter Updates: -- [`pricing_page`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-existing-subscription#pricing_page) has been changed from required to optional in [`create_pricing_page_for_existing_subscription`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions/create-pricing-page-for-existing-subscription) of [`PricingPageSession`](https://apidocs.chargebee.com/docs/api/pricing_page_sessions). - - -### New Events: -- [`payment_due_reminder`](https://apidocs.chargebee.com/docs/api/events/webhook/payment_due_reminder) has been added. - - -### New Enums: -- `charge` has been added as a new value enum `EntityType`. -- `payment_due_reminder` has been added as a new value enum `EventType`. -- `tempus` has been added as a new value enum `Gateway`. -- `kakao_pay`, `naver_pay`, `revolut_pay`, and `cash_app_pay` have been added as new values enum `PaymentMethod`. -- `always`, `ask`, and `never` have been added as new values enum `PaymentMethodSavePolicy`. -- `kakao_pay`, `naver_pay`, `revolut_pay`, and `cash_app_pay` have been added as new values enum `PaymentMethodType`. -- `kakao_pay`, `naver_pay`, `revolut_pay`, and `cash_app_pay` have been added as new values enum `Type`. -- `accepted`, `rejected`, `message_acknowledgement`, `in_process`, `under_query`, `conditionally_accepted`, and `paid` have been added as new values to enum attribute [`einvoice.status`](https://apidocs.chargebee.com/docs/api/credit_notes/credit-note-object#einvoice_status) in [`CreditNote`](https://apidocs.chargebee.com/docs/api/credit_notes). -- `accepted`, `rejected`, `message_acknowledgement`, `in_process`, `under_query`, `conditionally_accepted`, and `paid` have been added as new values to enum attribute [`status`](https://apidocs.chargebee.com/docs/api/einvoices/einvoice-object#status) in [`Einvoice`](https://apidocs.chargebee.com/docs/api/einvoices). -- `accepted`, `rejected`, `message_acknowledgement`, `in_process`, `under_query`, `conditionally_accepted`, and `paid` have been added as new values to enum attribute [`einvoice.status`](https://apidocs.chargebee.com/docs/api/invoices/invoice-object#einvoice_status) in [`Invoice`](https://apidocs.chargebee.com/docs/api/invoices). -- `kakao_pay`, `naver_pay`, `revolut_pay`, `cash_app_pay`, `wechat_pay`, and `alipay` have been added as new values to enum attribute [`payment_method_type`](https://apidocs.chargebee.com/docs/api/payment_intents/payment-intent-object#payment_method_type) in [`PaymentIntent`](https://apidocs.chargebee.com/docs/api/payment_intents). -- `kakao_pay`, `naver_pay`, `revolut_pay`, `cash_app_pay`, `wechat_pay`, and `alipay` have been added as new values to enum attribute [`active_payment_attempt.payment_method_type`](https://apidocs.chargebee.com/docs/api/payment_intents/payment-intent-object#active_payment_attempt_payment_method_type) in [`PaymentIntent`](https://apidocs.chargebee.com/docs/api/payment_intents). -- `kakao_pay`, `naver_pay`, `revolut_pay`, `cash_app_pay`, `wechat_pay`, and `alipay` have been added as new values to enum request body parameter `payment_method_type` in [`update_a_payment_intent`](https://apidocs.chargebee.com/docs/api/payment_intents/update-a-payment-intent) of [`PaymentIntent`](https://apidocs.chargebee.com/docs/api/payment_intents). -- `kakao_pay`, `naver_pay`, `revolut_pay`, `cash_app_pay`, `wechat_pay`, and `alipay` have been added as new values to enum request body parameter `payment_method_type` in [`create_a_payment_intent`](https://apidocs.chargebee.com/docs/api/payment_intents/create-a-payment-intent) of [`PaymentIntent`](https://apidocs.chargebee.com/docs/api/payment_intents). - - - -### v3.17.0 (2026-01-16) -* * * - -### New Parameters: -* `applicable_item_price_ids` has been added to Coupon#CouponListRequest. -* `applicable_item_price_ids` has been added to Export#CouponRequest. - -### New Enums: -* `Twikey` has been added to GatewayEnum. - -### Deleted Action: -* `move` action has been removed from the ItemPrice. - -### v3.16.0 (2026-01-12) -* * * - -### New Parameters: -* invoice_usages has been added to HostedPage#CheckoutExistingForItemsInputParam. - -### v3.15.0 (2025-12-30) -* * * - -### New Attributes: -* retry_engine has been added to Invoice#DunningAttempt. - -### New Endpoint: -* move action has been added to ItemPrice. - -### New Parameters: -* exclude_tax_type has been added to Estimate#RenewalEstimateInputParam. -* variant_id has been added to ItemPrice#MoveInputParam. -* custom has been added to PricingPageSession#CreateForNewSubscriptionInputParam. -* custom has been added to PricingPageSession#CreateForExistingSubscriptionInputParam. - -### New Enums: -* ELECTRONIC_PAYMENT_STANDARD has been added to PaymentMethodTypeEnum. -* KBC_PAYMENT_BUTTON has been added to PaymentMethodTypeEnum. -* PAY_BY_BANK has been added to PaymentMethodTypeEnum. -* TRUSTLY has been added to PaymentMethodTypeEnum. -* STABLECOIN has been added to PaymentMethodTypeEnum. - -### v3.14.1 (2025-12-18) -* * * - -### Bug Fixes: -* Fixed an issue where top level array resources for non-list response are not getting parsed correctly. - -### v3.14.0 (2025-11-26) -* * * - -### New Resources: -* Einvoice has been added. -* QuotedDeltaRamp has been added. - -### New Attributes: -* line_items_next_offset has been added to CreditNote. -* line_items_next_offset has been added to Invoice. -* credit_lines has been added to SalesOrder. -* billable_unit_price has been added to SalesOrder#LineItem. -* billable_quantity has been added to SalesOrder#LineItem. -* billable_amount has been added to SalesOrder#LineItem. - -### New Endpoint: -* move has been added to ItemPrice. - -### New Parameters: -* line_items_limit has been added to CreditNote#RetrieveRequest. -* line_items_offset has been added to CreditNote#RetrieveRequest. -* line_items_limit has been added to Invoice#RetrieveRequest. -* line_items_offset has been added to Invoice#RetrieveRequest. -* item_tiers has been added to Estimate#GiftSubscriptionForItemsRequest. -* unit_price has been added to Estimate#SubscriptionItems#GiftSubscriptionForItemsRequest. -* unit_price_in_decimal has been added to Estimate#SubscriptionItems#GiftSubscriptionForItemsRequest. -* item_tiers has been added to Gift#CreateForItemsRequest. -* meta_data has been added to Gift#CreateForItemsRequest. -* unit_price has been added to Gift#SubscriptionItems#CreateForItemsRequest. -* unit_price_in_decimal has been added to Gift#SubscriptionItems#CreateForItemsRequest. -* item_tiers has been added to HostedPage#CheckoutGiftForItemsRequest. -* unit_price has been added to HostedPage#SubscriptionItems#CheckoutGiftForItemsRequest. -* unit_price_in_decimal has been added to HostedPage#SubscriptionItems#CheckoutGiftForItemsRequest. -* auto_select_local_currency has been added to PricingPageSession#CreateForNewSubscriptionRequest. - -### New Enums: -* EZIDEBIT has been added to GatewayEnum. -* BUSINESS_RULE has been added to EntityTypeEnum. -* RULESET has been added to EntityTypeEnum. - -### v3.13.0 (2025-10-28) -* * * - -### New Attributes: -* reference_transactions has been added to Invoice. -* payment_attempts[] has been added to PaymentIntent. -* checkout_details has been added to PaymentIntent#PaymentAttempt. -* line_item_id has been added to CreditNoteEstimate#Discount. -* line_item_id has been added to CreditNote#Discount. -* line_item_id has been added to InvoiceEstimate#Discount. -* line_item_id has been added to Invoice#Discount. -* line_item_id has been added to InvoiceEstimate#Discount. -* line_item_id has been added to Quote#Discount. -* line_item_id has been added to QuoteLineGroup#Discount. - -### Modified Attributes: -* omnichannel_subscription_item_offers has been made optional attribute from required attribute. - -### New Input Parameters: -* discount[line_item_id] has been added to CreditNote#ImportCreditNoteRequest. -* discount[line_item_id] has been added to CreditNote#ImportInvoiceRequest. - -### New Enums: -* OMNICHANNEL_TRANSACTION_CREATED has been added to EventTypeEnum. -* DEUTSCHE_BANK has been added to Gateway. - -### v3.12.2 (2025-10-10) -* * * - -### Bug fixes: -* Made a correct response schema for Entitlement#CreateResponse. -* Made a correct response schema for EntitlementOverride#AddEntitlementOverrideForSubscriptionResponse. -* Made a correct response schema for SubscriptionEntitlements#SetSubscriptionEntitlementAvailabilitySubscriptionEntitlementResponse. - -### v3.12.1 (2025-10-06) -* * * - -### Bug Fixes: -* Fixed incorrect type for upcoming_renewal in OmnichannelSubscriptionItemResponse. -* Fixed incorrect type for linked_item in OmnichannelSubscriptionItemResponse. - -### v3.12.0 (2025-09-24) -* * * - -### New Resources: -* PersonalizedOffer has been added. -* OfferFulfillment has been added. -* OfferEvent has been added. -* OmnichannelSubscriptionItemOffer has been added. - -### New Attributes: -* business_entity_id has been added to Customer#Balance. -* processor_advice_code has been added to GatewayErrorDetail. -* processor_advice_code has been added to Transaction#GatewayErrorDetail. -* omnichannel_subscription_item_offers has been added to OmnichannelSubscriptionItem. -* linked_omnichannel_subscriptions has been added to OmnichannelTransaction. -* linked_omnichannel_one_time_orders has been added to OmnichannelTransaction. -* contract_term has been added to Ramp. -* charge_once has been added to Ramp#ItemsToAdd. -* charge_on_option has been added to Ramp#ItemsToAdd. -* charge_on_event has been added to Ramp#ItemsToAdd. -* charge_once has been added to Ramp#ItemsToUpdate. -* charge_on_option has been added to Ramp#ItemsToUpdate. -* charge_on_event has been added to Ramp#ItemsToUpdate. -* error_file_path has been added to UsageFile. -* error_file_url has been added to UsageFile. - -### New Endpoint: -* move has been added to OmnichannelSubscription. - -### New Parameters: -* offline_payment_method has been added to Estimate#CreateSubItemEstimateRequest. -* offline_payment_method has been added to Estimate#CreateSubItemForCustomerEstimateRequest. -* offline_payment_method has been added to HostedPage#CheckoutNewForItemsRequest. -* offline_payment_method has been added to Quote#SubscriptionCreateSubItemsForCustomerQuoteRequest. -* offline_payment_method has been added to Quote#SubscriptionEditCreateSubCustomerQuoteForItemsRequest. -* contract_term has been added to Ramp#CreateForSubscriptionRequest. -* items_to_add has been added to Ramp#CreateForSubscriptionRequest. -* items_to_update has been added to Ramp#CreateForSubscriptionRequest. -* contract_term has been added to Ramp#UpdateRequest. -* items_to_add has been added to Ramp#UpdateRequest. -* items_to_update has been added to Ramp#UpdateRequest. - -### New Enums: -* DUNNING_UPDATED has been added EventType. -* OMNICHANNEL_SUBSCRIPTION_MOVED_IN has been added to EventType. - - -### Bug Fixes: -* currency list action has been marked as ListRequest. -* index has been removed from CreditNote#ShippingAddress. -* index has been removed from Invoice#ShippingAddress -* index has been removed from Order#ShippingAddress. -* index has been removed from Quote#ShippingAddress. -* index has been removed from SubscriptionEstimate#ShippingAddress. -* index has been removed from Subscription#ShippingAddress. - - -### v3.11.0b1 (2025-08-27) -* * * - -### New Features -* Use `httpx` instead of `requests`, thereby adding support for asynchronous API requests. - -### v3.10.0 (2025-08-25) -* * * - -### New enhancement: -* Updated the `./chargebee/ssl/ca-certs.crt` to use the latest version of `DigiCert Global Root G2`. - -### v3.9.0 (2025-08-19) -* * * -### New Resources: -* WebhookEndpoints has been added. -* OmnichannelOneTimeOrder has been added. -* OmnichannelOneTimeOrderItem has been added. - -### New Attributes: -* business_entity_id has been added to Comment. -* business_entity_id has been added to PromotionalCredit. -* quantity has been added to Discount. -* business_entity_id has been added to PromotionalCredit. -* coupon_applicability_mappings[] has been added to QuotedCharge. -* linked_omnichannel_one_time_orders[] has been added to RecordedPurchase. -* quantity has been added to Subscripiton#Discount. - -### New Input Parameters: -* transaction[id] has been added to Customer#RecordExcessPaymentRequest. -* discounts[quantity][] has been added to Estimate#CreateSubItemEstimateRequest. -* consolidate_entitlements has been added to CustomerEntitlement#EntitlementsForCustomer. -* discounts[quantity][] has been added to Estimate#CreateSubItemEstimateRequest. -* discounts[quantity][] has been added to Estimate#CreateSubItemForCustomerEstimateRequest. -* discounts[quantity][] has been added to Estimate#UpdateSubscriptionForItemsRequest. -* discounts[quantity][] has been added to Estimate#CreateInvoiceForItemsRequest. -* discounts[quantity][] has been added to HostedPage#CheckoutOneTimeForItemsRequest. -* discounts[quantity][] has been added to HostedPage#CheckoutNewForItemsRequest. -* discounts[quantity][] has been added to HostedPage#CheckoutExistingForItemsRequest. -* discounts[quantity][] has been added to PricingPageSession#CreateForNewSubscriptionRequest. -* discounts[quantity][] has been added to PricingPageSession#CreateForExistingSubscriptionRequest. -* discounts[quantity][] has been added to Purchase#CreateRequest. -* discounts[quantity][] has been added to Purchase#EstimateRequest. -* discounts[quantity][] has been added to Quote#CreateSubItemsForCustomerQuoteRequest. -* discounts[quantity][] has been added to Quote#EditCreateSubCustomerQuoteForItemsRequest. -* discounts[quantity][] has been added to Quote#UpdateSubscriptionQuoteForItemsRequest. -* discounts[quantity][] has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequest. -* discounts[quantity][] has been added to Quote#CreateForChargeItemsAndChargesRequest. -* discounts[quantity][] has been added to Quote#EditForChargeItemsAndChargesRequest. -* discounts[quantity][] has been added to Subscription#CreateWithItemsRequest. -* discounts[quantity][] has been added to Subscription#UpdateForItemsRequest. -* discounts[quantity][] has been added to Subscription#ImportForItemsRequest. -* google_play_store[product_id] has been added to RecordedPurchase#CreateRequest. -* google_play_store[order_id] has been added to RecordedPurchase#CreateRequest. - -### New Enums -* PAUSE has been added to OmnichannelSubscriptionItemScheduledChange#ChangeType. -* OFFER_QUANTITY has been added to Discount#Type. -* OFFER_QUANTITY has been added to Subscription#Discount#Type. -* OMNICHANNEL_ONE_TIME_ORDER has been added to EntityType. -* OMNICHANNEL_ONE_TIME_ORDER_ITEM has been added to EntityType. -* USAGE_FILE has been added to EntityType. -* OMNICHANNEL_ONE_TIME_ORDER_CREATED has been added to EventType. -* OMNICHANNEL_ONE_TIME_ORDER_ITEM_CANCELLED has been added to EventType. -* USAGE_FILE_INGESTED has been added to EventType. -* OMNICHANNEL_SUBSCRIPTION_ITEM_PAUSE_SCHEDULED has been added to EventType. - - -### v3.8.0 (2025-07-18) -* * * - -### New Resources: -* BillingConfiguration has been added. -* Brand has been added. - -### New Attributes: -* has_children has been added to Hierarchy -* coupon_applicability_mappings has been added to QuotedRamp. - -### New Endpoint: -* listHierarchyDetail has been added to Customer. - -### New Input parameters: -* change_reason children has been added to Entitlement#CreateRequest. -* entitlements[apply_grandfathering] has been added to Entitlement#CreateRequest. -* replace_primary_payment_source has been added to Purchase#CreateRequest. -* omnichannel_subscription has been added to RecordedPurchase#CreateRequest. -* contract_term has been added to Subscription#RemoveScheduledCancellationRequest. -* contract_term_billing_cycle_on_renewal has been added to Subscription#RemoveScheduledCancellationRequest. - -### New Enums: -* payconiq_by_bancontact has been added to PaymentMethodType. -* solidgate has been added to Gateway. -* solidgate has been added to PaymentMethod. - -### v3.7.0 (2025-06-23) -* * * - -### New Features -* Added built-in retry support for handling transient errors and rate-limiting, for list requests. - -### v3.6.0 (2025-06-23) -* * * - -### New Features -* Added built-in retry support for handling transient errors and rate-limiting. -* Retries are now supported for HTTP status codes 500, 502, 503, 504, and 429. -* Includes exponential backoff for server errors and Retry-After respect for rate limits (429). -* Configurable via retryConfig during SDK initialization. - -### v3.5.0 (2025-06-19) -* * * - -### New Resources -* QuotedRamp has been added. - -### New Attributes -* chargebee_response_schema_type has been added to Configuration. -* linked_item has been added to OmnichannelSubscriptionItem. -* resumes_at has been added to OmnichannelSubscriptionItem. - -### Changed Attributes -* percentage changed to is_percentage_pricing in CreditNote. -* percentage changed to is_percentage_pricing in QuoteLineGroup. -* percentage changed to is_percentage_pricing in CreditNoteEstimate. -* percentage changed to is_percentage_pricing in Invoice. -* percentage changed to is_percentage_pricing in InvoiceEstimate. -* percentage changed to is_percentage_pricing in Quote. - - -### New Input Parameters -* is_percentage_pricing has been added to Item#UpdateRequest. -* line_item[subscription_id] has been added to CreditNote#RetrieveRequest. -* line_item[customer_id] has been added to CreditNote#RetrieveRequest. -* line_item[subscription_id] has been added to Invoice#RetrieveRequest. -* line_item[customer_id] has been added to Invoice#RetrieveRequest. -* billing_override[max_excess_payment_usage] has been added to Estimate#CreateSubItemForCustomerEstimateRequest. -* billing_override[max_refundable_credits_usage] has been added to Estimate#CreateSubItemForCustomerEstimateRequest. -* billing_override[max_excess_payment_usage] has been added to Estimate#UpdateSubscriptionForItemsRequest. -* billing_override[max_refundable_credits_usage] has been added to Estimate#UpdateSubscriptionForItemsRequest. -* billing_start_option has been added to Quote#CreateSubItemsForCustomerQuoteRequest. -* net_term_days has been added to Quote#CreateSubItemsForCustomerQuoteRequest. -* billing_address has been added to Quote#CreateSubItemsForCustomerQuoteRequest. -* subscription_items has been added to Quote#CreateSubItemsForCustomerQuoteRequest. -* discounts has been added to Quote#CreateSubItemsForCustomerQuoteRequest. -* billing_start_option has been added to Quote#EditCreateSubCustomerQuoteForItemsRequest. -* net_term_days has been added to Quote#EditCreateSubCustomerQuoteForItemsRequest. -* billing_address has been added to Quote#EditCreateSubCustomerQuoteForItemsRequest. -* subscription_items has been added to Quote#EditCreateSubCustomerQuoteForItemsRequest. -* discounts has been added to Quote#EditCreateSubCustomerQuoteForItemsRequest. -* net_term_days has been added to Quote#UpdateSubscriptionQuoteForItemsRequest. -* subscription_items has been added to Quote#UpdateSubscriptionQuoteForItemsRequest. -* discount has been added to Quote#UpdateSubscriptionQuoteForItemsRequest. -* coupons has been added to Quote#UpdateSubscriptionQuoteForItemsRequest. -* net_term_days has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequest. -* subscription_items has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequest. -* discounts has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequest. -* coupons has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequest. -* billing_address has been added to Quote#CreateForChargeItemsAndChargesRequest. -* billing_address has been added to Quote#EditForChargeItemsAndChargesRequest. -* sort_by[order] has been added to Subscription#SubscriptionContractTermsForSubscriptionRequest. -* item_tiers has been added to Quote#UpdateSubscriptionQuoteForItemsRequest. -* item_tiers has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequest. -* item_tiers has been added to Quote#CreateSubItemsForCustomerQuoteRequest. -* item_tiers has been added to Quote#EditCreateSubCustomerQuoteForItemsRequest. - -### New Endpoints: -* PauseDunningRequest has been added to Invoice. -* ResumeDunningRequest has been added to Invoice. - -### Enum Attributes: -* BillingPeriodUnitEnum has been added. -* BillingStartOptionEnum has been added. -* OMNICHANNEL_SUBSCRIPTION_ITEM_RESUMED has been added to EventTypeEnum. - -### v3.4.0 (2025-05-15) -* * * - -### New Resources -* UsageFile has been added. - -### Input Parameter -* discount[apply_on] has been made optional from required in Estimate#CreateSubItemEstimateRequest. -* discount[apply_on] has been made optional from required in Estimate#CreateSubItemForCustomerEstimateRequest. -* discount[apply_on] has been made optional from required in Estimate#UpdateSubscriptionForItemsRequest. -* discount[apply_on] has been made optional from required in HostedPage#CheckoutNewForItemsRequest. -* discount[apply_on] has been made optional from required in HostedPage#CheckoutNewForItemsRequest. -* discount[apply_on] has been made optional from required in HostedPage#CheckoutNewForItemsRequest. -* discount[apply_on] has been made optional from required in HostedPage#CheckoutNewForItemsRequest. -* discount[apply_on] has been made optional from required in PricingPageSession#CheckoutNewForItemsRequest. -* discount[apply_on] has been made optional from required in PricingPageSession#CreateForExistingSubscriptionRequest. -* discount[apply_on] has been made optional from required in Quote#CreateSubItemsForCustomerQuoteRequest. -* discount[apply_on] has been made optional from required in Quote#EditCreateSubCustomerQuoteForItemsRequest. -* discount[apply_on] has been made optional from required in Quote#UpdateSubscriptionQuoteForItemsRequest. -* discount[apply_on] has been made optional from required in Quote#EditUpdateSubscriptionQuoteForItemsRequest. -* discount[apply_on] has been made optional from required in Subscription#CreateWithItemsRequest. -* discount[apply_on] has been made optional from required in Subscription#UpdateForItemsRequest. -* discount[apply_on] has been made optional from required in Subscription#ImportForItemsRequest. -* line_item_addresses[] has been added to Invoice#ImportInvoiceRequest. -* source has been added to OmnichannelSubscription#OmnichannelSubscriptionListRequest. - -### Attributes: -* swift_code has been made optional from required in VirtualBankAccount. - -### Enum Attributes: -* OMNICHANNEL_SUBSCRIPTION_ITEM_PAUSED has been added to EventTypeEnum. -* PAUSED has been added to OmnichannelSubscriptionItem#StatusEnum. -* MERCHANT_REVOKED has been added to OmnichannelSubscriptionItem#CancellationReasonEnum. - -### v3.3.2 (2025-05-09) -* * * - -### Bug Fixes: -* Fixed an issue where child resource classes of type `JsonObject` or `JsonArray` were not correctly propagated from `Resource`. - -### v3.3.1 (2025-04-23) -* * * - -### Bug Fixes: -* Fixed an issue where child resource classes were not correctly propagated from the Resource class. - -### v3.3.0 (2025-04-23) -* * * - -### New Resources: -* OmnichannelSubscriptionItemScheduledChange has been added. - -### New Attributes: -* pricing_type has been added to DifferentialPrice#Tier. -* package_size has been added to DifferentialPrice#Tier. -* pricing_type has been added to ItemPrice#Tier. -* package_size has been added to ItemPrice#Tier. -* pricing_type has been added to Addon#Tier. -* package_size has been added to Addon#Tier. -* pricing_type has been added to Plan#Tier. -* package_size has been added to Plan#Tier. -* pricing_type has been added to CreditNote#LineItemTier. -* package_size has been added to CreditNote#LineItemTier. -* pricing_type has been added to CreditNoteEstimate#LineItemTier. -* package_size has been added to CreditNoteEstimate#LineItemTier. -* pricing_type has been added to DifferentialPrice#Tier. -* package_size has been added to DifferentialPrice#Tier. -* pricing_type has been added to Invoice#LineItemTier. -* package_size has been added to Invoice#LineItemTier. -* pricing_type has been added to InvoiceEstimate#LineItemTier. -* package_size has been added to InvoiceEstimate#LineItemTier. -* pricing_type has been added to Quote#LineItemTier. -* package_size has been added to Quote#LineItemTier. -* pricing_type has been added to QuotedCharge#LineItemTier. -* package_size has been added to QuotedCharge#LineItemTier. -* pricing_type has been added to QuotedSubscription#LineItemTier. -* package_size has been added to QuotedSubscription#LineItemTier. -* pricing_type has been added to Ramp#ItemTier. -* package_size has been added to Ramp#ItemTier. -* pricing_type has been added to Subscription#ItemTier. -* package_size has been added to Subscription#ItemTier. -* pricing_type has been added to UnbilledCharges#Tier. -* package_size has been added to UnbilledCharges#Tier. -* metered has been added to CreditNote#LineItem. -* metered has been added to CreditNoteEstimate#LineItem. -* metered has been added to Invoice#LineItem. -* metered has been added to Quote#LineItem. -* metered has been added to QuoteLineGroup#LineItem. -* usage_percentage has been changed to percentage in CreditNote#LineItem. -* usage_percentage has been changed to percentage in CreditNoteEstimate#LineItem. -* usage_percentage has been changed to percentage in Invoice#LineItem. -* usage_percentage has been changed to percentage in Quote#LineItem. -* usage_percentage has been changed to percentage in QuoteLineGroup#LineItem. -* line_item_addresses has been added to CreditNote. -* line_item_addresses has been added to Invoices. -* line_item_addresses has been added to InvoiceEstimate. -* has_scheduled_changes has been added on OmnichannelSubscriptionItem. -* item_parent_id_at_source has been added to OmnichannelSubscriptionItem. -* auto_renew_status has been added to OmnichannelSubscriptionItem. -* upcoming_renewal has been added to OmnichannelSubscriptionItem. -* is_percentage_pricing has been added to Item. - -### New Action: -* listOmniSubItemScheduleChanges has been added to OmnichannelSubscriptionItem. - -### Optional Attribute: -* price_currency has been made optional from requried in OmnichannelTransaction. -* price_units has been made optional from requried in OmnichannelTransaction. -* price_nanos has been made optional from requried in OmnichannelTransaction. -* transacted_at has been made optional from requried in OmnichannelTransaction. - -### New Input Params: -* item_tiers[pricing_type] has been added to DifferentialPrice#CreateInputParam. -* item_tiers[package_size] has been added to DifferentialPrice#CreateInputParam. -* item_tiers[pricing_type] has been added to ItemPrice#CreateInputParam. -* item_tiers[package_size] has been added to ItemPrice#CreateInputParam. -* tiers[pricing_type] has been added to DifferentialPrice#CreateInputParam. -* tiers[package_size] has been added to DifferentialPrice#CreateInputParam. -* item_tiers[pricing_type] has been added to Estimate#CreateSubItemEstimateRequestInputParam. -* item_tiers[package_size] has been added to Estimate#CreateSubItemEstimateRequestInputParam. -* item_tiers[pricing_type] has been added to Estimate#CreateSubItemForCustomerRequestInputParam. -* item_tiers[package_size] has been added to Estimate#CreateSubItemForCustomerRequestInputParam. -* item_tiers[pricing_type] has been added to Estimate#UpdateSubscriptionForItemsRequestInputParam. -* item_tiers[package_size] has been added to Estimate#UpdateSubscriptionForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Estimate#CreateInvoiceForItemsRequestInputParam. -* item_tiers[package_size] has been added to Estimate#CreateInvoiceForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Estimate#CheckoutNewForItemsRequestInputParam. -* item_tiers[package_size] has been added to Estimate#CheckoutNewForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Estimate#CheckoutOneTimeForItemsRequestInputParam. -* item_tiers[package_size] has been added to Estimate#CheckoutOneTimeForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Estimate#CheckoutExistingForItemsRequestInputParam. -* item_tiers[package_size] has been added to Estimate#CheckoutExistingForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Invoice#CreateForChargeItemsAndChargesRequestInputParam. -* item_tiers[package_size] has been added to Invoice#CreateForChargeItemsAndChargesRequestInputParam. -* item_tiers[pricing_type] has been added to Invoice#CreateForChargeItemRequestInputParam. -* item_tiers[package_size] has been added to Invoice#CreateForChargeItemRequestInputParam. -* item_tiers[pricing_type] has been added to Invoice#AddChargeItemRequestInputParam. -* item_tiers[package_size] has been added to Invoice#AddChargeItemRequestInputParam. -* item_tiers[pricing_type] has been added to Quote#CreateSubItemsForCustomerQuoteRequestInputParam. -* item_tiers[package_size] has been added to Quote#CreateSubItemsForCustomerQuoteRequestInputParam. -* item_tiers[pricing_type] has been added to Quote#EditCreateSubCustomerQuoteForItemsRequestInputParam. -* item_tiers[package_size] has been added to Quote#EditCreateSubCustomerQuoteForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Quote#UpdateSubscriptionQuoteForItemsRequestInputParam. -* item_tiers[package_size] has been added to Quote#UpdateSubscriptionQuoteForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequestInputParam. -* item_tiers[package_size] has been added to Quote#EditUpdateSubscriptionQuoteForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Quote#CreateForChargeItemsAndChargesRequestInputParam. -* item_tiers[package_size] has been added to Quote#CreateForChargeItemsAndChargesRequestInputParam. -* item_tiers[pricing_type] has been added to Quote#EditForChargeItemsAndChargesRequestInputParam. -* item_tiers[package_size] has been added to Quote#EditForChargeItemsAndChargesRequestInputParam. -* item_tiers[pricing_type] has been added to Ramp#CreateForSubscriptionRequestInputParam. -* item_tiers[package_size] has been added to Ramp#CreateForSubscriptionRequestInputParam. -* item_tiers[pricing_type] has been added to Ramp#UpdateRequestInputParam. -* item_tiers[package_size] has been added to Ramp#UpdateRequestInputParam. -* item_tiers[pricing_type] has been added to Subscription#CreateWithItemsRequestInputParam. -* item_tiers[package_size] has been added to Subscription#CreateWithItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Subscription#UpdateForItemsRequestInputParam. -* item_tiers[package_size] has been added to Subscription#UpdateForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to Subscription#ImportForItemsRequestInputParam. -* item_tiers[package_size] has been added to Subscription#ImportForItemsRequestInputParam. -* item_tiers[pricing_type] has been added to UnbilledCharged#CreateRequestInputParam. -* item_tiers[package_size] has been added to UnbilledCharged#CreateRequestInputParam. -* billing_address has been added to Estimate#CreateInvoiceForItemsRequestInputParam. -* google_play_store[purchase_token] has been added to RecordedPurchase#CreateRequestInputParam. -* is_percentage_pricing has been added to Item#CreateRequest. -* include_deleted has been added to PaymentSource#ListRequest. - -### New Enums: -* OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_CHANGE has been added to EntityType#Enum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_CHANGE_SCHEDULED has been added to EventType#Enum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_CHANGE_REMOVED has been added to EventType#Enum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_REACTIVATED has been added to EventType#Enum. -* GOOGLE_PLAY_STORE has been added to OminchannelSubscription#SourceEnum. -* SPECIFIC_DATE has been added to ContractTermCancelOption. -* END_OF_SUBSCRIPTION_BILLING_TERM has been added to ContractTermCancelOption. -* PAYSTACK has been added to GatewayEnum. -* PricingType Enum has been added. -* JP_MORGAN has been added to GatewayEnum. - -### Deprecated Enums: -* OMNICHANNEL_SUBSCRIPTION_ITEM_DOWNGRADE_SCHEDULED has been deprecated from EntityType#Enum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_DOWNGRADE_REMOVED has been deprecated from EntityType#Enum. -* REFUNDED_DUE_TO_APP_ISSUE has been added to OmnichannelSubscriptionItem#CancellationReasonEnum. -* REFUNDED_FOR_OTHER_REASON has been added to OmnichannelSubscriptionItem#CancellationReasonEnum. - -### v3.2.0 (2025-03-06) -* * * - -### New Input Params: -* created_at has been added to Invoice#LineItemsImportInputParams. -* PaymentIntent has been added to Purchase#CreateInputParams. - -### New Enums: -* SUBSCRIPTION_ENTITLEMENTS_UPDATED has been added to EventType#Enum. - -### v3.1.2 (2025-02-14) -* * * - -#### Bug Fixes -* Type fix for `http_status_code` in response. -* Response parsing fixes for `ForwardRef` in type annotations. -* `error_cause_id` has been added to API Error. -* Fixed issue preventing access to response headers during exceptions. - -### v3.1.1 (2025-02-12) -* * * - -#### Bug Fixes -* Included http_status_code in GET requests. -* Parameter order in send_list_request. - -### v3.1.0 (2025-02-10) -* * * - -#### New Resources: -* Rule has been added. -* UsageEvent has been added. - -#### New Attribute: -* deleted has been added to AttachedItem. -* deleted has been added to Coupon. -* deleted has been added to DifferentialPrice. -* deleted has been added to ItemFamily. -* deleted has been added to ItemPrice. -* deleted has been added to Item. -* deleted has been added to PriceVariant. -* tax_application has abeend added to CreditNote#Allocation. -* tax_application has been added to Invoice#AppliedCredit. -* line_item_credit has been added to Invoice. - -#### New Input Params: -* exhausted_coupon_ids has been added to Subscription#ImportForItems. - -#### New Enums -* STORE has been added in CreditNote#TypeEnum. -* STORE has been added in CreditNoteEstimate#TypeEnum. -* STORE has been added in Order#TypeEnum. -* TaxApplicationEnum has been added in CreditNote#Application. -* TaxApplicationEnum has been added in Invoice#AppliedCredit. -* RECORDED_PURCHASE has been added in EntityTypeEnum. -* RECORD_PURCHASE_FAILED, has been added in EventTypeEnum. - -#### Deleted Input Params -* tax_providers_fields has been removed from Customer#MoveParams. -* tax_providers_fields has been removed from Customer#MergeParams - -#### Deprecated input params. -* deprecated label in discount_quantity has been removed from Coupon#CreateParams. -* deprecated label in discount_quantity has been removed from Coupon#UpdateParams. -* deprecated label in discount_quantity has been removed from Coupon#CreateForItemsParams. -* deprecated label in discount_quantity has been removed from Coupon#UpdateForItemsParams. -### v3.0.0 (2025-01-16) -Releasing v3 version of Python SDK. - ### v3.0.0b3 (2025-01-15) * * * @@ -848,206 +144,6 @@ Releasing v3 version of Python SDK. - **Idempotency Headers**: `is_idempotency_replayed` is now a JSON entry inside `response_headers` instead of a method (`is_idempotency_replayed()`). - **Wait For Process Completion**: Response from previous API calls must be passed as arguments for `wait_for_export_completion()` and `wait_for_time_travel_completion()`. -### v2.49.0 (2025-02-10) -* * * - -#### New Resources: -* Rule has been added. -* UsageEvent has been added. - -#### New Attribute: -* deleted has been added to AttachedItem. -* deleted has been added to Coupon. -* deleted has been added to DifferentialPrice. -* deleted has been added to ItemFamily. -* deleted has been added to ItemPrice. -* deleted has been added to Item. -* deleted has been added to PriceVariant. -* tax_application has abeend added to CreditNote#Allocation. -* tax_application has been added to Invoice#AppliedCredit. -* line_item_credit has been added to Invoice. - -#### New Input Params: -* exhausted_coupon_ids has been added to Subscription#ImportForItems. - -#### New Enums -* STORE has been added in CreditNote#TypeEnum. -* STORE has been added in CreditNoteEstimate#TypeEnum. -* STORE has been added in Order#TypeEnum. -* TaxApplicationEnum has been added in CreditNote#Application. -* TaxApplicationEnum has been added in Invoice#AppliedCredit. -* RECORDED_PURCHASE has been added in EntityTypeEnum. -* RECORD_PURCHASE_FAILED, has been added in EventTypeEnum. - -#### Deleted Input Params -* tax_providers_fields has been removed from Customer#MoveParams. -* tax_providers_fields has been removed from Customer#MergeParams - -#### Deprecated input params. -* deprecated label in discount_quantity has been removed from Coupon#CreateParams. -* deprecated label in discount_quantity has been removed from Coupon#UpdateParams. -* deprecated label in discount_quantity has been removed from Coupon#CreateForItemsParams. -* deprecated label in discount_quantity has been removed from Coupon#UpdateForItemsParams. - - -### v2.48.0 (2024-12-19) -* * * - -#### New Resource: -* Configuration has been added. - -#### New Attribute: -* discount_type has been added to CreditNote#Discount. -* discount_type has been added to CreditNoteEstimate#Discount. -* discount_type has been added to Invoice#Discount. -* discount_type has been added to InvoiceEstimate#Discount. -* discount_type has been added to QuoteLineGroup#Discount. -* initial_purchase_transaction has been added to OmnichannelSubscription. -* error_cause_id has been added to GatewayErrorDetail. -* error_cause_id has been added to Transaction#GatewayErrorDetail. -* error_cause_id has been added to APIError. -* deleted has been added to Quote. -* current_term_start has been added to QuotedSubscripiton#SubscriptionItem. -* current_term_end has been added to QuotedSubscripiton#SubscriptionItem. -* next_billing_at has been added to QuotedSubscripiton#SubscriptionItem. -* current_term_start has been added to Subscription#SubscriptionItem. -* current_term_end has been added to Subscription#SubscriptionItem. -* next_billing_at has been added to Subscription#SubscriptionItem. -* billing_override has been added to Subscription. -* grace_period_expires_at has been added to OmnichannelSubscriptionItem. - -#### New Input Params: -* billing_override has been added to Subscription#CreateWithItemsInputParam. -* billing_override has been added to Subscription#UpdateForItemsInputParam. - -#### New Enum Values: -* OMNICHANNEL_SUBSCRIPTION_IMPORTED has been added to EventTypeEnum. -* DISABLED has been added to Event#WebhookStatus. -* OMNICHANNEL_SUBSCRIPTION_ITEM_GRACE_PERIOD_STARTED has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_GRACE_PERIOD_EXPIRED has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_DUNNING_STARTED has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_DUNNING_EXPIRED has been added to EventTypeEnum. -* IGNORED has been added to RecordedPurchase#StatusEnum. -* IN_DUNNING & IN_GRACE_PERIOD have been added to OmnichannelSubscriptionItem#StatusEnum. - -### v2.47.2 (2024-12-11) - -#### Bug Fixes: -* Updated the `api_error` class to make response headers an optional parameter, ensuring backward compatibility. - -### v2.47.1 (2024-12-04) - -#### Bug Fixes: -* Fixed issue preventing access to response headers during exceptions. - -### v2.47.0 (2024-11-27) - -#### New Resource: -* OmnichannelSubscriptionItem has been added. - -#### New Attribute: -* resource_version has been added to OmnichannelSubscription. -* resource_version has been added to OmnichannelTransaction. -* resource_version has been added to RecordedPurchase. - -#### New Input Parameters: -* limit has been added to OmnichannelSubscription#ListRequest. -* offset has been added to OmnichannelSubscription#ListRequest. -* customer_id has been added to OmnichannelSubscription#ListRequest. -* replace_coupon_list has been added to HostedPage#CheckoutExistingRequest. -* replace_coupon_list has been added to HostedPage#CheckoutExistingForItemsRequest. -* subscription[po_number] has been added to HostedPage#CheckoutNewForItemsRequest. - -#### Removed Subresource: -* OmnichannelSubscriptionItem subresource has been removed from OmnichannelSubscription and is now a standalone resource. - -#### Deprecated Attribute: -* metadata has been deprecated from subscription. - - -### v2.46.0 (2024-11-14) -* * * - -#### New Resource: -* OmnichannelTransaction has been added. -* OmnichannelSubscription has been added. -* RecordedPurchase has been added. - - -#### New Attributes: -* business_entity_id has been added to AttachedItem. -* business_entity_id has been added to DifferentialPrice. -* business_entity_id has been added to Items. -* business_entity_id has been added to ItemFamily. -* business_entity_id has been added to ItemPrice. -* business_entity_id has been added to PriceVariant. -* valid_from has been added to coupon. - -#### New Input Parameters: -* business_entity_id has been added to AttachedItem#CreateRequest. -* preferred_scheme has been added to Card#UpdateCardForCustomerRequest. -* valid_from has been added to Coupon#CreateForItem & Coupon#UpdateForItemsRequest. -* preferred_scheme has been added to Customer#CreateRequest & Customer#CollectPaymentRequest. -* business_entity_id has been added to DifferentialPrice#CreateRequest. -* preferred_scheme has been added to Invoice#CreateRequest & Invoice#CreateForChargeItemsAndChargesRequest. -* business_entity_id has been added to Items#CreateRequest. -* business_entity_id & include_site_level_resources have been added to Items#ListItemParams. -* business_entity_id has been added to ItemFamily#CreateRequest. -* business_entity_id & include_site_level_resources have been added to ItemFamily#ListItemFamilyParams. -* business_entity_id has been added to ItemPrice#CreateRequest. -* business_entity_id & include_site_level_resources have been added to ItemPrice#ListItemPriceParams. -* business_entity_id & include_site_level_resources have been added to PriceVariant#ListItemFamilyParams. -* business_entity_id has been added to PriceVariant#CreateRequest. -* business_entity_id & include_site_level_resources have been added to PriceVariant#ListPriceVariantParams. -* preferred_scheme has been added to Subscription#CreateRequest, Subscription#UpdateRequest. -* preferred_scheme Subscription#UpdateForItemsRequest, & Subscription#ImportSubscriptionRequest. -* business_entity_id & include_site_level_resources have been added to Export#ItemFamiliesRequest & Export#ItemsRequest. -* business_entity_id & include_site_level_resources have been added to Export#ItemPricesRequest Export#PriceVariantsRequest -* name & flexible_schedules[period] have been added to PaymentScheduleScheme#CreateRequest. - -#### New Enum Values: -* FUTURE has been added to Coupon#StatusEnum. -* EXISTING_CUSTOMER & NEW_CUSTOMER have been added to Coupon#TypeEnum. -* LATE_FAILURE has added to Transation#LinkedPaymentEnum & Transation#StatusEnum. -* OMNICHANNEL_SUBSCRIPTION, has been added to EntityTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM, has been added to EntityTypeEnum. -* OMNICHANNEL_TRANSACTION, has been added to EntityTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_RENEWED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_CREATED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_DOWNGRADE_SCHEDULED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_DOWNGRADE_REMOVED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_DOWNGRADED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_EXPIRED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_CANCELLATION_SCHEDULED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_CANCELLATION_REMOVED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_RESUBSCRIBED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_UPGRADED, has been added to EventTypeEnum. -* OMNICHANNEL_SUBSCRIPTION_ITEM_CANCELLED, has been added to EventTypeEnum. - - -### v2.45.0 (2024-10-17) -* * * - -#### New Resource: -* PaymentScheduleEstimate has been added. - -### New Attributes: -* payment_schedule_estimates has been added to Estimate. -* usage_accumulation_reset_frequency has been added to ItemPrice. -* name has been added to PaymentScheduleScheme. -* usage_accumulation_reset_frequency has been added to QuotedSubscription#SubscriptionItem. -* usage_accumulation_reset_frequency has been added to Subscription#SubscriptionItem. - -### New Endpoints: -* Estimate#PaymentSchedule has been added. - -### New Input Params: -* usage_accumulation_reset_frequency has been added to ItemPrice#CreateParams. -* usage_accumulation_reset_frequency has been added to ItemPrice#UpdateParams. -* discounts has been added to PricingPageSession#CreateForNewSubscriptionParams. -* discounts has been added to PricingPageSession#CreateForExistingSubscriptionParams. -* invoice_immediately has been added to Quote#ConvertParams. - ### v2.44.1 (2024-10-03) * * * diff --git a/LICENSE b/LICENSE index 8eef1eb..c3f3edf 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2011-2026 ChargeBee, Inc. +Copyright (c) 2011-2025 ChargeBee, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation diff --git a/Makefile b/Makefile deleted file mode 100644 index 951ed00..0000000 --- a/Makefile +++ /dev/null @@ -1,94 +0,0 @@ -.PHONY: update-version increment-major increment-minor increment-patch test build clean install lint format check publish - -# Version file location -VERSION_FILE := VERSION -VERSION_PY_FILE := chargebee/version.py -SETUP_PY_FILE := setup.py - -# Python command (use python3 if needed) -PYTHON := python3 -PIP := pip3 - -update-version: - @echo "$(VERSION)" > $(VERSION_FILE) - @perl -pi -e 's|VERSION = "[.\-\d\w]+"|VERSION = "$(VERSION)"|' $(VERSION_PY_FILE) - @if [ -f "$(SETUP_PY_FILE)" ]; then \ - perl -pi -e 's|version="[.\-\d\w]+"|version="$(VERSION)"|' $(SETUP_PY_FILE); \ - fi - @if [ -f "pyproject.toml" ]; then \ - perl -pi -e 's|^version = "[.\-\d\w]+"|version = "$(VERSION)"|' pyproject.toml; \ - fi - @echo "Updated version to $(VERSION)" - -increment-major: - $(eval CURRENT := $(shell cat $(VERSION_FILE))) - $(eval MAJOR := $(shell echo $(CURRENT) | cut -d. -f1)) - $(eval NEW_VERSION := $(shell echo $$(($(MAJOR) + 1)).0.0)) - @$(MAKE) update-version VERSION=$(NEW_VERSION) - @echo "Version bumped from $(CURRENT) to $(NEW_VERSION)" - -increment-minor: - $(eval CURRENT := $(shell cat $(VERSION_FILE))) - $(eval MAJOR := $(shell echo $(CURRENT) | cut -d. -f1)) - $(eval MINOR := $(shell echo $(CURRENT) | cut -d. -f2)) - $(eval NEW_VERSION := $(MAJOR).$(shell echo $$(($(MINOR) + 1))).0) - @$(MAKE) update-version VERSION=$(NEW_VERSION) - @echo "Version bumped from $(CURRENT) to $(NEW_VERSION)" - -increment-patch: - $(eval CURRENT := $(shell cat $(VERSION_FILE))) - $(eval MAJOR := $(shell echo $(CURRENT) | cut -d. -f1)) - $(eval MINOR := $(shell echo $(CURRENT) | cut -d. -f2)) - $(eval PATCH := $(shell echo $(CURRENT) | cut -d. -f3)) - $(eval NEW_VERSION := $(MAJOR).$(MINOR).$(shell echo $$(($(PATCH) + 1)))) - @$(MAKE) update-version VERSION=$(NEW_VERSION) - @echo "Version bumped from $(CURRENT) to $(NEW_VERSION)" - -install: - @echo "Installing package..." - @$(PIP) install -e . - -install-dev: - @echo "Installing development dependencies..." - @$(PIP) install -e ".[dev]" - @$(PIP) install pytest pytest-cov black flake8 pylint mypy - -test: install install-dev - @echo "Running tests..." - @$(PYTHON) -m pytest tests/ -v - -test-coverage: - @echo "Running tests with coverage..." - @$(PYTHON) -m pytest tests/ --cov=chargebee --cov-report=html --cov-report=term - @echo "Coverage report generated in htmlcov/index.html" - -format: - @echo "Formatting code with ruff.." - @uvx ruff format . - -typecheck: - @echo "Running mypy type checker..." - @mypy chargebee/ --ignore-missing-imports - -check: format-check lint test - @echo "All checks passed!" - -build: clean - @echo "Building distribution packages..." - @$(PYTHON) -m pip install -U build || $(PYTHON) -m pip install build - @$(PYTHON) -m build - -clean: - @echo "Cleaning build artifacts..." - @rm -rf build/ - @rm -rf dist/ - @rm -rf *.egg-info - @rm -rf chargebee.egg-info/ - @rm -rf .pytest_cache/ - @rm -rf .coverage - @rm -rf htmlcov/ - @rm -rf .mypy_cache/ - @find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true - @find . -type f -name '*.pyc' -delete - @find . -type f -name '*.pyo' -delete - diff --git a/README.md b/README.md index 673c66d..de5eda2 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,16 @@ -# Chargebee Python Client Library v3 +# Chargebee Python Client Library v3 (Beta) -> [!NOTE] -> [![Join Discord](https://img.shields.io/badge/Discord-Early%20Access-blue?logo=discord&logoColor=white)](https://discord.gg/S3SXDzXHAg) -> -> We are trialing a Discord server for developers building with Chargebee. Limited spots are open on a first-come basis. Join [here](https://discord.gg/gpsNqnhDm2) if interested. - - -This is the official Python library for integrating with Chargebee. -- 📘 For a complete reference of available APIs, check out our [API Documentation](https://apidocs.chargebee.com/docs/api/?lang=python). -- 🧪 To explore and test API capabilities interactively, head over to our [API Explorer](https://api-explorer.chargebee.com). - -If you're upgrading from an older version please refer to the [Migration Guide](https://github.com/chargebee/chargebee-python/wiki/Migration-guide-for-v3) +The Chargebee Python library streamlines integration with the Chargebee API in Python applications. It offers built-in type annotations and enhanced IDE autocompletion for API resources and responses, which improves the developer experience. To get started, please sign up for a Chargebee account [here](https://www.chargebee.com). ## Requirements - Python 3.11+ ## Installation -Install the latest version of the library with pip: +Install the latest beta version of the library with pip: ```sh -pip install chargebee +pip install chargebee --pre ``` Install from source with: @@ -86,33 +76,6 @@ customer = response.customer card = response.card ``` -### Async HTTP client - -Starting with version `3.9.0`, the Chargebee Python SDK can optionally be configured to use an asynchronous HTTP client which uses `asyncio` to perform non-blocking requests. This can be enabled by passing the `use_async_client=True` argument to the constructor: - -```python -cb_client = Chargebee(api_key="api_key", site="site", use_async_client=True) -``` - -When configured to use the async client, all model methods return a coroutine, which will have to be awaited to get the response: - -```python -async def get_customers(): - response = await cb_client.Customer.list( - cb_client.Customer.ListParams( - first_name=Filters.StringFilter(IS="John") - ) - ) - return response -``` - -Note: The async methods will have to be wrapped in an event loop during invocation. For example, the `asyncio.run` method can be used to run the above example: - -```python -import asyncio -response = asyncio.run(get_customers()) -``` - ### List API Request With Filter For pagination, `offset` is the parameter that is being used. The value used for this parameter must be the value returned in `next_offset` parameter from the previous API call. @@ -145,7 +108,7 @@ response = cb_client.Customer.create( auto_collection=chargebee.AutoCollection.ON, # global enum ) ) -print(response.customer) +print(response.customer.cf_host_url) ``` ```python # Resource Specific Enum @@ -156,7 +119,7 @@ response = cb_client.Customer.change_billing_date( billing_day_of_week=cb_client.Customer.BillingDayOfWeek.MONDAY, # resource specific enum ) ) -print(response.customer) +print(response.customer.cf_host_url) ``` ### Using custom fields @@ -224,61 +187,6 @@ response = cb_client.Export.customers( print(cb_client.Export.wait_for_export_completion(response.export)) ``` -### Retry Handling - -Chargebee's SDK includes built-in retry logic to handle temporary network issues and server-side errors. This feature is **disabled by default** but can be **enabled when needed**. - -#### Key features include: - -- **Automatic retries for specific HTTP status codes**: Retries are automatically triggered for status codes `500`, `502`, `503`, and `504`. -- **Exponential backoff**: Retry delays increase exponentially to prevent overwhelming the server. -- **Rate limit management**: If a `429 Too Many Requests` response is received with a `Retry-After` header, the SDK waits for the specified duration before retrying. - > *Note: Exponential backoff and max retries do not apply in this case.* -- **Customizable retry behavior**: Retry logic can be configured using the `retryConfig` parameter in the environment configuration. - -#### Example: Customizing Retry Logic - -You can enable and configure the retry logic by passing a `retryConfig` object when initializing the Chargebee environment: - -```python -from chargebee import Chargebee -from chargebee.retry_config import RetryConfig - -retry_config = RetryConfig( - enabled=True, - max_retries=5, - delay_ms=1000, - retry_on=[500] -) -cb_client = Chargebee(api_key="api_key", site="site") -cb_client.update_retry_config(retry_config) - -# ... your Chargebee API operations ... - -``` - -#### Example: Rate Limit retry logic - -You can enable and configure the retry logic for rate-limit by passing a `retryConfig` object when initializing the Chargebee environment: - -```python -from chargebee import Chargebee -from chargebee.retry_config import RetryConfig - -retry_config = RetryConfig( - enabled=True, - max_retries=5, - delay_ms=1000, - retry_on=[429] -) -cb_client = Chargebee(api_key="api_key", site="site") -cb_client.update_retry_config(retry_config) - -# ... your Chargebee API operations ... - -``` - - ## Feedback If you find any bugs or have any feedback, open an issue in this repository or email it to dx@chargebee.com diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index a3f8780..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,8 +0,0 @@ -# Security Policy - -At Chargebee, we take data integrity and security very seriously. Due to the nature of the product and service we provide, we are committed to working with individuals to stay updated on the latest security techniques and fix any security weakness in our application or infrastructure reported to us responsibly by external parties. - -https://www.chargebee.com/security/responsible-disclosure-policy/ - -## Reporting a vulnerability -Reach out to us at security@chargebee.com. Please do not open GitHub issues or pull requests as this makes the problem immediately visible to everyone, including malicious actors. Chargebee's security team will triage your report and respond according to its impact. diff --git a/VERSION b/VERSION deleted file mode 100644 index 4f6817b..0000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -3.19.1 diff --git a/chargebee/__init__.py b/chargebee/__init__.py index a1ea3ec..ea285ad 100644 --- a/chargebee/__init__.py +++ b/chargebee/__init__.py @@ -3,7 +3,6 @@ PaymentError, InvalidRequestError, OperationFailedError, - UbbBatchIngestionInvalidRequestError, ) from chargebee.filters import Filters from chargebee.main import Chargebee diff --git a/chargebee/api_error.py b/chargebee/api_error.py index aeabb3e..88ea802 100644 --- a/chargebee/api_error.py +++ b/chargebee/api_error.py @@ -1,4 +1,5 @@ class APIError(Exception): + def __init__(self, http_code, json_obj, headers=None): Exception.__init__(self, json_obj.get("message")) self.json_obj = json_obj @@ -9,9 +10,9 @@ def __init__(self, http_code, json_obj, headers=None): self.error_cause_id = json_obj.get("error_cause_id", None) self.http_headers = headers + self.error_code = json_obj["error_code"] self.http_code = http_code self.http_body = None - self.error_code = json_obj.get("error_code") class PaymentError(APIError): @@ -27,10 +28,3 @@ def __init__(self, http_code, json_obj, headers=None): class OperationFailedError(APIError): def __init__(self, http_code, json_obj, headers=None): APIError.__init__(self, http_code, json_obj, headers) - - -class UbbBatchIngestionInvalidRequestError(APIError): - def __init__(self, http_code, json_obj, headers=None): - APIError.__init__(self, http_code, json_obj, headers) - self.batch_id = json_obj.get("batch_id") - self.failed_events = json_obj.get("failed_events") diff --git a/chargebee/compat.py b/chargebee/compat.py index 3e9667a..f046dfb 100644 --- a/chargebee/compat.py +++ b/chargebee/compat.py @@ -10,9 +10,3 @@ if py_major_v >= 3: from urllib.parse import urlencode, urlparse - -# httpx supports trio and asyncio -try: - import trio as event_loop -except ImportError: - import asyncio as event_loop diff --git a/chargebee/environment.py b/chargebee/environment.py index be860d7..0515912 100644 --- a/chargebee/environment.py +++ b/chargebee/environment.py @@ -1,6 +1,3 @@ -from chargebee.retry_config import RetryConfig - - class Environment(object): chargebee_domain = "chargebee.com" protocol = "https" @@ -9,15 +6,10 @@ class Environment(object): read_timeout = 80 export_retry_delay_ms = 10000 time_travel_retry_delay_ms = 3000 - retry_config = RetryConfig() - enable_debug_logs = False - use_async_client = False def __init__(self, options): self.api_key = options["api_key"] self.site = options["site"] - - def set_api_endpoint(self): self.api_endpoint = "%s://%s.%s/api/%s" % ( self.protocol, self.site, @@ -25,28 +17,5 @@ def set_api_endpoint(self): self.API_VERSION, ) - def api_url(self, url, subDomain=None): - if subDomain is None: - return self.api_endpoint + url - else: - if self.chargebee_domain is None: - return ( - "%s://%s.%s.chargebee.com/api/%s" - % (self.protocol, self.site, subDomain, self.API_VERSION) - + url - ) - else: - return ( - "%s://%s.%s.%s/api/%s" - % ( - self.protocol, - self.site, - subDomain, - self.chargebee_domain, - self.API_VERSION, - ) - + url - ) - - def get_retry_config(self): - return self.retry_config + def api_url(self, url): + return self.api_endpoint + url diff --git a/chargebee/http_request.py b/chargebee/http_request.py index 37fdd1a..766089d 100644 --- a/chargebee/http_request.py +++ b/chargebee/http_request.py @@ -1,23 +1,18 @@ import base64 -import datetime import logging import platform -import random -import re -import time -import ssl -import httpx +import requests from chargebee import ( APIError, PaymentError, InvalidRequestError, OperationFailedError, - UbbBatchIngestionInvalidRequestError, ) -from chargebee import compat, util, environment +from chargebee import compat from chargebee.main import Chargebee +from chargebee.main import Environment from chargebee.version import VERSION _logger = logging.getLogger(__name__) @@ -29,327 +24,116 @@ def _basic_auth_str(username): ).strip().decode("latin1") -def request( - method, - url, - env: environment.Environment, - params=None, - headers=None, - subDomain=None, - isJsonRequest=False, - options={}, - use_async_client=False, -): +def request(method, url, env, params=None, headers=None): if not env: raise Exception("No environment configured.") + if headers is None: + headers = {} - headers = headers or {} - request_args = {"method": method.upper()} - - retry_config = env.get_retry_config() if hasattr(env, "get_retry_config") else None - url = env.api_url(url, subDomain) - if isJsonRequest: - params = util.convert_to_serializable(params) + url = env.api_url(url) + if method.lower() in ("get", "head", "delete"): + url = "%s?%s" % (url, compat.urlencode(params)) + payload = None + else: + payload = compat.urlencode(params) + headers["Content-type"] = "application/x-www-form-urlencoded" - match method.lower(), isJsonRequest: - case "get" | "head" | "delete", _: - request_args["params"] = params - case _, True: - headers["Content-Type"] = "application/json;charset=UTF-8" - request_args["json"] = params - case _, False: - headers["Content-Type"] = "application/x-www-form-urlencoded" - request_args["data"] = params headers.update( { - "User-Agent": f"Chargebee-Python-Client v{VERSION}", + "User-Agent": "Chargebee-Python-Client v%s" % VERSION, "Accept": "application/json", "Authorization": _basic_auth_str(env.api_key), - "Lang-Version": f"{compat.py_major_v}.{compat.py_minor_v}", + "Lang-Version": str(compat.py_major_v) + "." + str(compat.py_minor_v), "OS-Version": platform.platform(), } ) - idempotency_key = headers.get(Chargebee.idempotency_header) - if ( - idempotency_key is None - and retry_config.is_enabled() - and method.lower() == "post" - and options.get("isIdempotent") - ): - headers[Chargebee.idempotency_header] = util.generate_uuid_v4() - meta = compat.urlparse(url) - scheme = "https" if Chargebee.verify_ca_certs or env.protocol == "https" else "http" - base = f"{scheme}://{meta.netloc}{meta.path}" - full_url = f"{base}?{meta.query}" if meta.query else base - timeout = httpx.Timeout( - None, - connect=env.connect_timeout, - read=env.read_timeout, - ) - request_args = { - **request_args, - "timeout": timeout, + "method": method.upper(), + "timeout": (env.connect_timeout, env.read_timeout), + "data": payload, "headers": headers, - "url": full_url, } - if Chargebee.verify_ca_certs: - ctx = ssl.create_default_context(cafile=Chargebee.ca_cert_path) - request_args["verify"] = ctx + uri = meta.netloc + meta.path + "?" + meta.query - if use_async_client: - return _process_response_async( - full_url, request_args, retry_config, env.enable_debug_logs + if Chargebee.verify_ca_certs: + request_args.update( + { + "verify": Chargebee.ca_cert_path, + "url": "https://" + uri, + } ) else: - return _process_response( - full_url, request_args, retry_config, env.enable_debug_logs - ) - - -def _process_response(url, request_args, retry_config, enable_debug_logs): - retry_count = 0 - - while True: - try: - _logger.debug(f"{request_args['method']} Request: {url}") - _logger.debug( - "HEADERS: {0}".format( - { - k: v - for k, v in request_args["headers"].items() - if k.lower() != "authorization" - } - ) - ) - if payload := request_args.get("json", request_args.get("data")): - _logger.debug("PAYLOAD: {0}".format(payload)) - - if retry_count > 0: - headers = request_args.get("headers", {}) - headers["X-CB-Retry-Attempt"] = str(retry_count) - request_args["headers"] = headers - - return _make_request(request_args) - - except Exception as err: - status_code = extract_status_code(err) - - if not retry_config or not retry_config.is_enabled(): - raise err - - if status_code == 429: - delay_ms = parse_retry_after(err) or retry_config.get_delay_ms() - log( - f"Rate limit hit. Retrying in {delay_ms}ms", - "INFO", - enable_debug_logs, - ) - sleep(delay_ms) - retry_count += 1 - continue - - if not should_retry(status_code, retry_count, retry_config): - log( - f"Request failed after {retry_count} retries: {str(err)}", - "ERROR", - enable_debug_logs, - ) - raise err - - delay_ms = calculate_backoff_delay(retry_count, retry_config.get_delay_ms()) - log( - f"Retrying [{retry_count + 1}/{retry_config.get_max_retries()}] in {delay_ms}ms due to status {status_code}", - "INFO", - enable_debug_logs, - ) - sleep(delay_ms) - retry_count += 1 - - -async def _process_response_async(url, request_args, retry_config, enable_debug_logs): - retry_count = 0 - - while True: - try: - _logger.debug(f"{request_args['method']} Request: {url}") - _logger.debug( - "HEADERS: {0}".format( - { - k: v - for k, v in request_args["headers"].items() - if k.lower() != "authorization" - } - ) + if Environment.protocol == "https": + request_args.update( + { + "url": "https://" + uri, + } ) - if payload := request_args.get("json", request_args.get("data")): - _logger.debug("PAYLOAD: {0}".format(payload)) - - if retry_count > 0: - headers = request_args.get("headers", {}) - headers["X-CB-Retry-Attempt"] = str(retry_count) - request_args["headers"] = headers - - return await _make_request_async(request_args) - - except Exception as err: - status_code = extract_status_code(err) - - if not retry_config or not retry_config.is_enabled(): - raise err - - if status_code == 429: - delay_ms = parse_retry_after(err) or retry_config.get_delay_ms() - log( - f"Rate limit hit. Retrying in {delay_ms}ms", - "INFO", - enable_debug_logs, - ) - await sleep_async(delay_ms) - retry_count += 1 - continue - - if not should_retry(status_code, retry_count, retry_config): - log( - f"Request failed after {retry_count} retries: {str(err)}", - "ERROR", - enable_debug_logs, - ) - raise err - - delay_ms = calculate_backoff_delay(retry_count, retry_config.get_delay_ms()) - log( - f"Retrying [{retry_count + 1}/{retry_config.get_max_retries()}] in {delay_ms}ms due to status {status_code}", - "INFO", - enable_debug_logs, + else: + request_args.update( + { + "url": "http://" + uri, + } ) - await sleep_async(delay_ms) - retry_count += 1 - -def _handle_response(request_args: dict, response: httpx.Response): + _logger.debug("{method} Request: {url}".format(**request_args)) _logger.debug( - f"{request_args['method']} Response: {response.status_code} - {response.text}" - ) - - try: - resp_json = compat.json.loads(response.text) - except Exception: - raise map_plaintext_to_error(response) - - if response.status_code < 200 or response.status_code > 299: - handle_api_resp_error( - request_args["url"], response.status_code, resp_json, response.headers - ) - - return resp_json, response.headers, response.status_code - - -def _make_request(request_args): - """Make a synchronous HTTP request using httpx""" - verify = request_args.pop("verify", True) - with httpx.Client(verify=verify) as client: - response = client.request(**request_args) - return _handle_response(request_args, response) - - -async def _make_request_async(request_args): - """Make an asynchronous HTTP request using httpx""" - verify = request_args.pop("verify", True) - async with httpx.AsyncClient(verify=verify) as client: - response = await client.request(**request_args) - return _handle_response(request_args, response) - - -def map_plaintext_to_error(response): - text = response.text - if "503" in text: - return Exception( - "Sorry, the server is currently unable to handle the request due to a temporary overload or scheduled maintenance. " - "Please retry after sometime. \n type: internal_temporary_error, \n http_status_code: 503, \n error_code: internal_temporary_error,\n content:" - + text - ) - elif "504" in text: - return Exception( - "The server did not receive a timely response from an upstream server, request aborted. If this problem persists, " - "contact us at support@chargebee.com. \n type: gateway_timeout, \n http_status_code: 504, \n error_code: gateway_timeout,\n content:" - + text + "HEADERS: {0}".format( + {k: v for k, v in headers.items() if k.lower() != "authorization"} ) - return Exception( - "Sorry, something went wrong when trying to process the request. If this problem persists, contact us at support@chargebee.com. " - "\n type: internal_error, \n http_status_code: 500, \n error_code: internal_error,\n content:" - + text ) + if payload: + _logger.debug("PAYLOAD: {data}".format(**request_args)) + response = requests.request(**request_args) -def extract_status_code(err): - try: - # Structured errors - return getattr( - err, - "http_code", - getattr(err.json_obj, "status_code", int(getattr(err, "code", 0))), + if compat.py_major_v >= 3: + _logger.debug( + "{method} Response: {status_code} - {text}".format( + method=request_args["method"], + status_code=response.status_code, + text=response.text, + ) + ) + elif compat.py_major_v < 3: + _logger.debug( + "{method} Response: {status_code} - {text}".format( + method=request_args["method"], + status_code=response.status_code, + text=response.text.encode("utf 8"), + ) ) - except Exception: - pass - - # Fallback: Try extracting from string - try: - message = str(err) - match = re.search(r"http_status_code:\s*(\d{3})", message) - if match: - return int(match.group(1)) - except Exception: - pass - return 0 + return process_response(url, response.text, response.status_code, response.headers) -def parse_retry_after(err): - headers = getattr(err, "response_headers", {}) or {} - retry_after = headers.get("retry-after") or headers.get("Retry-After") - if not retry_after: - return None +def process_response(url, response, http_code, response_headers): try: - return int(retry_after) * 1000 - except ValueError: - try: - from email.utils import parsedate_to_datetime - - retry_time = parsedate_to_datetime(retry_after) - return max( - 0, int((retry_time - datetime.datetime.utcnow()).total_seconds() * 1000) + resp_json = compat.json.loads(response) + except Exception as ex: + if "503" in response: + raise Exception( + "Sorry, the server is currently unable to handle the request due to a temporary overload or scheduled maintenance. Please retry after sometime. \n type: internal_temporary_error, \n http_status_code: 503, \n error_code: internal_temporary_error,\n content:" + + response + ) + elif "504" in response: + raise Exception( + "The server did not receive a timely response from an upstream server, request aborted. If this problem persists, contact us at support@chargebee.com. \n type: gateway_timeout, \n http_status_code: 504, \n error_code: gateway_timeout,\n content:" + + response + ) + else: + raise Exception( + "Sorry, something went wrong when trying to process the request. If this problem persists, contact us at support@chargebee.com. \n type: internal_error, \n http_status_code: 500, \n error_code: internal_error,\n content:" + + response ) - except Exception: - return None - - -def calculate_backoff_delay(retry_count, base_delay_ms): - jitter = random.randint(0, 100) - return base_delay_ms * (2**retry_count) + jitter - - -def should_retry(status_code, retry_count, retry_config): - return ( - status_code in retry_config.get_retry_on() - and retry_count < retry_config.get_max_retries() - ) - - -def sleep(milliseconds): - time.sleep(milliseconds / 1000.0) - - -async def sleep_async(milliseconds): - await compat.event_loop.sleep(milliseconds / 1000.0) + if http_code < 200 or http_code > 299: + handle_api_resp_error(url, http_code, resp_json, response_headers) -def log(message, level="INFO", enable_debug_logs=False): - if enable_debug_logs: - print(f"[{level}] {message}") + return resp_json, response_headers def handle_api_resp_error(url, http_code, resp_json, response_headers=None): @@ -367,9 +151,5 @@ def handle_api_resp_error(url, http_code, resp_json, response_headers=None): raise OperationFailedError(http_code, resp_json, response_headers) elif "invalid_request" == resp_json.get("type"): raise InvalidRequestError(http_code, resp_json, response_headers) - elif "ubb_batch_ingestion_invalid_request" == resp_json.get("type"): - raise UbbBatchIngestionInvalidRequestError( - http_code, resp_json, response_headers - ) else: raise APIError(http_code, resp_json, response_headers) diff --git a/chargebee/main.py b/chargebee/main.py index 1e8a4e7..42a066d 100644 --- a/chargebee/main.py +++ b/chargebee/main.py @@ -7,8 +7,8 @@ @dataclass class Chargebee: + env: Environment = None - idempotency_header: str = "chargebee-idempotency-key" verify_ca_certs: bool = True ca_cert_path = os.path.join(os.path.dirname(__file__), "ssl", "ca-certs.crt") @@ -21,7 +21,6 @@ def __init__( protocol: str = None, connection_time_out: int = None, read_time_out: int = None, - use_async_client: bool = False, ): self.env = Environment({"api_key": api_key, "site": site}) if chargebee_domain is not None: @@ -32,17 +31,12 @@ def __init__( self.update_connect_timeout_secs(connection_time_out) if read_time_out is not None: self.update_read_timeout_secs(read_time_out) - if use_async_client: - self.env.use_async_client = True - self.env.set_api_endpoint() self.Addon = chargebee.Addon(self.env) self.Address = chargebee.Address(self.env) self.AdvanceInvoiceSchedule = chargebee.AdvanceInvoiceSchedule(self.env) self.AttachedItem = chargebee.AttachedItem(self.env) self.Attribute = chargebee.Attribute(self.env) - self.BillingConfiguration = chargebee.BillingConfiguration(self.env) - self.Brand = chargebee.Brand(self.env) self.BusinessEntity = chargebee.BusinessEntity(self.env) self.BusinessEntityTransfer = chargebee.BusinessEntityTransfer(self.env) self.Card = chargebee.Card(self.env) @@ -61,7 +55,6 @@ def __init__( self.DifferentialPrice = chargebee.DifferentialPrice(self.env) self.Discount = chargebee.Discount(self.env) self.Download = chargebee.Download(self.env) - self.Einvoice = chargebee.Einvoice(self.env) self.Entitlement = chargebee.Entitlement(self.env) self.EntitlementOverride = chargebee.EntitlementOverride(self.env) self.Estimate = chargebee.Estimate(self.env) @@ -72,7 +65,6 @@ def __init__( self.Gift = chargebee.Gift(self.env) self.Hierarchy = chargebee.Hierarchy(self.env) self.HostedPage = chargebee.HostedPage(self.env) - self.ImpactedCustomer = chargebee.ImpactedCustomer(self.env) self.ImpactedItem = chargebee.ImpactedItem(self.env) self.ImpactedItemPrice = chargebee.ImpactedItemPrice(self.env) self.ImpactedSubscription = chargebee.ImpactedSubscription(self.env) @@ -84,22 +76,10 @@ def __init__( self.ItemFamily = chargebee.ItemFamily(self.env) self.ItemPrice = chargebee.ItemPrice(self.env) self.Metadata = chargebee.Metadata(self.env) - self.OfferEvent = chargebee.OfferEvent(self.env) - self.OfferFulfillment = chargebee.OfferFulfillment(self.env) - self.OmnichannelOneTimeOrder = chargebee.OmnichannelOneTimeOrder(self.env) - self.OmnichannelOneTimeOrderItem = chargebee.OmnichannelOneTimeOrderItem( - self.env - ) self.OmnichannelSubscription = chargebee.OmnichannelSubscription(self.env) self.OmnichannelSubscriptionItem = chargebee.OmnichannelSubscriptionItem( self.env ) - self.OmnichannelSubscriptionItemOffer = ( - chargebee.OmnichannelSubscriptionItemOffer(self.env) - ) - self.OmnichannelSubscriptionItemScheduledChange = ( - chargebee.OmnichannelSubscriptionItemScheduledChange(self.env) - ) self.OmnichannelTransaction = chargebee.OmnichannelTransaction(self.env) self.Order = chargebee.Order(self.env) self.PaymentIntent = chargebee.PaymentIntent(self.env) @@ -109,7 +89,6 @@ def __init__( self.PaymentScheduleScheme = chargebee.PaymentScheduleScheme(self.env) self.PaymentSource = chargebee.PaymentSource(self.env) self.PaymentVoucher = chargebee.PaymentVoucher(self.env) - self.PersonalizedOffer = chargebee.PersonalizedOffer(self.env) self.Plan = chargebee.Plan(self.env) self.PortalSession = chargebee.PortalSession(self.env) self.PriceVariant = chargebee.PriceVariant(self.env) @@ -119,22 +98,13 @@ def __init__( self.Quote = chargebee.Quote(self.env) self.QuoteLineGroup = chargebee.QuoteLineGroup(self.env) self.QuotedCharge = chargebee.QuotedCharge(self.env) - self.QuotedDeltaRamp = chargebee.QuotedDeltaRamp(self.env) - self.QuotedRamp = chargebee.QuotedRamp(self.env) self.QuotedSubscription = chargebee.QuotedSubscription(self.env) self.Ramp = chargebee.Ramp(self.env) self.RecordedPurchase = chargebee.RecordedPurchase(self.env) self.ResourceMigration = chargebee.ResourceMigration(self.env) - self.Rule = chargebee.Rule(self.env) self.SiteMigrationDetail = chargebee.SiteMigrationDetail(self.env) self.Subscription = chargebee.Subscription(self.env) self.SubscriptionEntitlement = chargebee.SubscriptionEntitlement(self.env) - self.SubscriptionEntitlementsCreatedDetail = ( - chargebee.SubscriptionEntitlementsCreatedDetail(self.env) - ) - self.SubscriptionEntitlementsUpdatedDetail = ( - chargebee.SubscriptionEntitlementsUpdatedDetail(self.env) - ) self.SubscriptionEstimate = chargebee.SubscriptionEstimate(self.env) self.TaxWithheld = chargebee.TaxWithheld(self.env) self.ThirdPartyPaymentMethod = chargebee.ThirdPartyPaymentMethod(self.env) @@ -143,12 +113,7 @@ def __init__( self.Transaction = chargebee.Transaction(self.env) self.UnbilledCharge = chargebee.UnbilledCharge(self.env) self.Usage = chargebee.Usage(self.env) - self.UsageCharge = chargebee.UsageCharge(self.env) - self.UsageEvent = chargebee.UsageEvent(self.env) - self.UsageFile = chargebee.UsageFile(self.env) - self.UsageSummary = chargebee.UsageSummary(self.env) self.VirtualBankAccount = chargebee.VirtualBankAccount(self.env) - self.WebhookEndpoint = chargebee.WebhookEndpoint(self.env) def update_connect_timeout_secs(self, connect_timeout): self.env.connect_timeout = connect_timeout @@ -160,8 +125,6 @@ def update_chargebee_domain(self, domain): self.env.chargebee_domain = domain def update_protocol(self, protocol): - if protocol == "http": - self.verify_ca_certs = False self.env.protocol = protocol def update_export_retry_delay_ms(self, export_retry_delay_ms): @@ -169,9 +132,3 @@ def update_export_retry_delay_ms(self, export_retry_delay_ms): def update_time_travel_retry_delay_ms(self, time_travel_retry_delay_ms): self.env.time_travel_retry_delay_ms = time_travel_retry_delay_ms - - def update_retry_config(self, retry_config): - self.env.retry_config = retry_config - - def update_enable_debug_logs(self, enable_debug_logs): - self.env.enable_debug_logs = enable_debug_logs diff --git a/chargebee/model.py b/chargebee/model.py index 8b0af05..ea1f65a 100644 --- a/chargebee/model.py +++ b/chargebee/model.py @@ -1,11 +1,10 @@ from chargebee.compat import json -from typing import get_type_hints, get_origin, get_args class Model(object): + def __init__(self, values): self.raw_data = values - self._response_type = self.__class__ def __str__(self): return json.dumps(self.raw_data, indent=4) @@ -13,52 +12,23 @@ def __str__(self): def __getattr__(self, name): raise AttributeError("Attribute %s not found " % name) - def hydrate(self, depth=0): - if depth > 10: - return - - type_map = { - name: type_ for name, type_ in get_type_hints(self.__class__).items() - } + def hydrate(self): for k, v in list(self.raw_data.items()): val = None - field_type = type_map.get(k, None) if isinstance(v, dict): - if field_type and hasattr(field_type, "construct"): - val = field_type.construct(v, depth=depth + 1) - else: - val = v + val = self.construct(v) elif isinstance(v, (list, tuple)): - if field_type and get_origin(field_type) in (list, tuple): - item_type = ( - get_args(field_type)[0] if get_args(field_type) else None - ) - val = [] - for item in v: - if ( - isinstance(item, dict) - and item_type - and hasattr(item_type, "construct") - ): - val.append(item_type.construct(item, depth=depth + 1)) - else: - val.append(item) - else: - val = [ - ( - self.construct(item, depth=depth + 1) - if isinstance(item, dict) - else item - ) - for item in v - ] + val = [ + self.construct(item) if isinstance(item, dict) else item + for item in v + ] else: val = v setattr(self, k, val) @classmethod - def construct(cls, values, depth=0): + def construct(cls, values): obj = cls(values) - obj.hydrate(depth=depth + 1) + obj.hydrate() return obj diff --git a/chargebee/models/__init__.py b/chargebee/models/__init__.py index 7394b10..7e48126 100644 --- a/chargebee/models/__init__.py +++ b/chargebee/models/__init__.py @@ -10,16 +10,12 @@ BillingAlignmentMode, BillingDateMode, BillingDayOfWeekMode, - BillingPeriodUnit, - BillingStartOption, CancelOption, - Category, ChangeOption, Channel, ChargeModel, ChargeOnEvent, ChargeOnOption, - ChargebeeResponseSchemaType, ChargesHandling, ContractTermCancelOption, CreditOptionForCurrentTermCharges, @@ -27,7 +23,6 @@ CustomerType, DedupeOption, DirectDebitScheme, - DiscountType, DispositionType, DunningType, DurationType, @@ -38,7 +33,6 @@ EntityType, EventName, EventType, - ExcludeTaxType, ExportType, FreePeriodUnit, FriendOfferType, @@ -55,13 +49,11 @@ PauseOption, PaymentInitiator, PaymentMethod, - PaymentMethodSavePolicy, PaymentMethodType, PaymentVoucherType, PeriodUnit, PriceType, PricingModel, - PricingType, ProductCatalogVersion, ProrationType, ReferralSystem, @@ -69,7 +61,6 @@ RefundableCreditsHandling, ReportBy, ResumeOption, - RetryEngine, Role, ScheduleType, Source, @@ -86,7 +77,6 @@ UsageAccumulationResetFrequency, ValidationStatus, VoucherType, - WindowSize, ChargeOn, ) @@ -100,10 +90,6 @@ from chargebee.models.attribute.operations import Attribute -from chargebee.models.billing_configuration.operations import BillingConfiguration - -from chargebee.models.brand.operations import Brand - from chargebee.models.business_entity.operations import BusinessEntity from chargebee.models.business_entity_transfer.operations import BusinessEntityTransfer @@ -140,8 +126,6 @@ from chargebee.models.download.operations import Download -from chargebee.models.einvoice.operations import Einvoice - from chargebee.models.entitlement.operations import Entitlement from chargebee.models.entitlement_override.operations import EntitlementOverride @@ -162,8 +146,6 @@ from chargebee.models.hosted_page.operations import HostedPage -from chargebee.models.impacted_customer.operations import ImpactedCustomer - from chargebee.models.impacted_item.operations import ImpactedItem from chargebee.models.impacted_item_price.operations import ImpactedItemPrice @@ -186,32 +168,12 @@ from chargebee.models.metadata.operations import Metadata -from chargebee.models.offer_event.operations import OfferEvent - -from chargebee.models.offer_fulfillment.operations import OfferFulfillment - -from chargebee.models.omnichannel_one_time_order.operations import ( - OmnichannelOneTimeOrder, -) - -from chargebee.models.omnichannel_one_time_order_item.operations import ( - OmnichannelOneTimeOrderItem, -) - from chargebee.models.omnichannel_subscription.operations import OmnichannelSubscription from chargebee.models.omnichannel_subscription_item.operations import ( OmnichannelSubscriptionItem, ) -from chargebee.models.omnichannel_subscription_item_offer.operations import ( - OmnichannelSubscriptionItemOffer, -) - -from chargebee.models.omnichannel_subscription_item_scheduled_change.operations import ( - OmnichannelSubscriptionItemScheduledChange, -) - from chargebee.models.omnichannel_transaction.operations import OmnichannelTransaction from chargebee.models.order.operations import Order @@ -232,8 +194,6 @@ from chargebee.models.payment_voucher.operations import PaymentVoucher -from chargebee.models.personalized_offer.operations import PersonalizedOffer - from chargebee.models.plan.operations import Plan from chargebee.models.portal_session.operations import PortalSession @@ -252,10 +212,6 @@ from chargebee.models.quoted_charge.operations import QuotedCharge -from chargebee.models.quoted_delta_ramp.operations import QuotedDeltaRamp - -from chargebee.models.quoted_ramp.operations import QuotedRamp - from chargebee.models.quoted_subscription.operations import QuotedSubscription from chargebee.models.ramp.operations import Ramp @@ -264,22 +220,12 @@ from chargebee.models.resource_migration.operations import ResourceMigration -from chargebee.models.rule.operations import Rule - from chargebee.models.site_migration_detail.operations import SiteMigrationDetail from chargebee.models.subscription.operations import Subscription from chargebee.models.subscription_entitlement.operations import SubscriptionEntitlement -from chargebee.models.subscription_entitlements_created_detail.operations import ( - SubscriptionEntitlementsCreatedDetail, -) - -from chargebee.models.subscription_entitlements_updated_detail.operations import ( - SubscriptionEntitlementsUpdatedDetail, -) - from chargebee.models.subscription_estimate.operations import SubscriptionEstimate from chargebee.models.tax_withheld.operations import TaxWithheld @@ -298,14 +244,4 @@ from chargebee.models.usage.operations import Usage -from chargebee.models.usage_charge.operations import UsageCharge - -from chargebee.models.usage_event.operations import UsageEvent - -from chargebee.models.usage_file.operations import UsageFile - -from chargebee.models.usage_summary.operations import UsageSummary - from chargebee.models.virtual_bank_account.operations import VirtualBankAccount - -from chargebee.models.webhook_endpoint.operations import WebhookEndpoint diff --git a/chargebee/models/addon/operations.py b/chargebee/models/addon/operations.py index 54b5677..c7a61ba 100644 --- a/chargebee/models/addon/operations.py +++ b/chargebee/models/addon/operations.py @@ -8,6 +8,7 @@ @dataclass class Addon: + env: environment.Environment class Type(Enum): @@ -69,8 +70,6 @@ class Tier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class TaxProvidersField(TypedDict): provider_name: Required[str] @@ -209,12 +208,6 @@ class CopyParams(TypedDict): for_site_merging: NotRequired[bool] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("addons"), @@ -222,19 +215,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("addons", id), @@ -242,15 +225,9 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("addons"), @@ -258,15 +235,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("addons", id), @@ -274,17 +245,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("addons", id, "delete"), @@ -292,17 +255,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def copy(self, params: CopyParams, headers=None) -> CopyResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("addons", "copy"), @@ -310,17 +265,9 @@ def copy(self, params: CopyParams, headers=None) -> CopyResponse: cast(Dict[Any, Any], params), headers, CopyResponse, - None, - False, - jsonKeys, - options, ) def unarchive(self, id, headers=None) -> UnarchiveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("addons", id, "unarchive"), @@ -328,8 +275,4 @@ def unarchive(self, id, headers=None) -> UnarchiveResponse: None, headers, UnarchiveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/addon/responses.py b/chargebee/models/addon/responses.py index 2a5e75d..dabc881 100644 --- a/chargebee/models/addon/responses.py +++ b/chargebee/models/addon/responses.py @@ -6,20 +6,16 @@ @dataclass class TierResponse(Model): - raw_data: Dict[Any, Any] = None starting_unit: int = None ending_unit: int = None price: int = None starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None @dataclass class TaxProvidersFieldResponse(Model): - raw_data: Dict[Any, Any] = None provider_name: str = None field_id: str = None field_value: str = None @@ -76,14 +72,14 @@ class AddonResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool addon: AddonResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool addon: AddonResponse + headers: Dict[str, str] = None @dataclass @@ -92,29 +88,31 @@ class ListAddonResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListAddonResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: addon: AddonResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool addon: AddonResponse + headers: Dict[str, str] = None @dataclass class CopyResponse(Response): - is_idempotency_replayed: bool addon: AddonResponse + headers: Dict[str, str] = None @dataclass class UnarchiveResponse(Response): - is_idempotency_replayed: bool addon: AddonResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/address/operations.py b/chargebee/models/address/operations.py index 130b6d6..1c58d09 100644 --- a/chargebee/models/address/operations.py +++ b/chargebee/models/address/operations.py @@ -6,6 +6,7 @@ @dataclass class Address: + env: environment.Environment class RetrieveParams(TypedDict): @@ -31,8 +32,6 @@ class UpdateParams(TypedDict): validation_status: NotRequired[enums.ValidationStatus] def retrieve(self, params: RetrieveParams, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("addresses"), @@ -40,17 +39,9 @@ def retrieve(self, params: RetrieveParams, headers=None) -> RetrieveResponse: cast(Dict[Any, Any], params), headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("addresses"), @@ -58,8 +49,4 @@ def update(self, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/address/responses.py b/chargebee/models/address/responses.py index cd7ad5d..e980954 100644 --- a/chargebee/models/address/responses.py +++ b/chargebee/models/address/responses.py @@ -26,11 +26,12 @@ class AddressResponse(Model): @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: address: AddressResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool address: AddressResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/advance_invoice_schedule/operations.py b/chargebee/models/advance_invoice_schedule/operations.py index 2f60337..bf060be 100644 --- a/chargebee/models/advance_invoice_schedule/operations.py +++ b/chargebee/models/advance_invoice_schedule/operations.py @@ -7,6 +7,7 @@ @dataclass class AdvanceInvoiceSchedule: + env: environment.Environment class ScheduleType(Enum): diff --git a/chargebee/models/advance_invoice_schedule/responses.py b/chargebee/models/advance_invoice_schedule/responses.py index baeb385..e1e5918 100644 --- a/chargebee/models/advance_invoice_schedule/responses.py +++ b/chargebee/models/advance_invoice_schedule/responses.py @@ -5,7 +5,6 @@ @dataclass class FixedIntervalScheduleResponse(Model): - raw_data: Dict[Any, Any] = None end_schedule_on: str = None number_of_occurrences: int = None days_before_renewal: int = None @@ -16,7 +15,6 @@ class FixedIntervalScheduleResponse(Model): @dataclass class SpecificDatesScheduleResponse(Model): - raw_data: Dict[Any, Any] = None terms_to_charge: int = None date: int = None created_at: int = None diff --git a/chargebee/models/attached_item/operations.py b/chargebee/models/attached_item/operations.py index c15fc25..7504847 100644 --- a/chargebee/models/attached_item/operations.py +++ b/chargebee/models/attached_item/operations.py @@ -8,6 +8,7 @@ @dataclass class AttachedItem: + env: environment.Environment class Type(Enum): @@ -62,10 +63,6 @@ class ListParams(TypedDict): updated_at: NotRequired[Filters.TimestampFilter] def create(self, id, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("items", id, "attached_items"), @@ -73,17 +70,9 @@ def create(self, id, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("attached_items", id), @@ -91,15 +80,9 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, params: RetrieveParams, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("attached_items", id), @@ -107,17 +90,9 @@ def retrieve(self, id, params: RetrieveParams, headers=None) -> RetrieveResponse cast(Dict[Any, Any], params), headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, params: DeleteParams, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("attached_items", id, "delete"), @@ -125,15 +100,9 @@ def delete(self, id, params: DeleteParams, headers=None) -> DeleteResponse: cast(Dict[Any, Any], params), headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def list(self, id, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("items", id, "attached_items"), @@ -141,8 +110,4 @@ def list(self, id, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/attached_item/responses.py b/chargebee/models/attached_item/responses.py index fc1f57e..cd0cc1d 100644 --- a/chargebee/models/attached_item/responses.py +++ b/chargebee/models/attached_item/responses.py @@ -22,30 +22,30 @@ class AttachedItemResponse(Model): updated_at: int = None channel: str = None business_entity_id: str = None - deleted: bool = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool attached_item: AttachedItemResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool attached_item: AttachedItemResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: attached_item: AttachedItemResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool attached_item: AttachedItemResponse + headers: Dict[str, str] = None @dataclass @@ -54,6 +54,7 @@ class ListAttachedItemResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListAttachedItemResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/attribute/operations.py b/chargebee/models/attribute/operations.py index 609e561..4895d55 100644 --- a/chargebee/models/attribute/operations.py +++ b/chargebee/models/attribute/operations.py @@ -5,6 +5,7 @@ @dataclass class Attribute: + env: environment.Environment pass diff --git a/chargebee/models/billing_configuration/__init__.py b/chargebee/models/billing_configuration/__init__.py deleted file mode 100644 index 2f313c3..0000000 --- a/chargebee/models/billing_configuration/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import BillingConfiguration -from .responses import BillingConfigurationResponse diff --git a/chargebee/models/billing_configuration/operations.py b/chargebee/models/billing_configuration/operations.py deleted file mode 100644 index 9acd99b..0000000 --- a/chargebee/models/billing_configuration/operations.py +++ /dev/null @@ -1,14 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class BillingConfiguration: - env: environment.Environment - - class BillingDate(TypedDict): - start_date: NotRequired[int] - end_date: NotRequired[int] - - pass diff --git a/chargebee/models/billing_configuration/responses.py b/chargebee/models/billing_configuration/responses.py deleted file mode 100644 index 6d6e8f6..0000000 --- a/chargebee/models/billing_configuration/responses.py +++ /dev/null @@ -1,17 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class BillingDateResponse(Model): - raw_data: Dict[Any, Any] = None - start_date: int = None - end_date: int = None - - -@dataclass -class BillingConfigurationResponse(Model): - raw_data: Dict[Any, Any] = None - is_calendar_billing_enabled: bool = None - billing_dates: List[BillingDateResponse] = None diff --git a/chargebee/models/brand/__init__.py b/chargebee/models/brand/__init__.py deleted file mode 100644 index 69e681e..0000000 --- a/chargebee/models/brand/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import Brand -from .responses import BrandResponse diff --git a/chargebee/models/brand/operations.py b/chargebee/models/brand/operations.py deleted file mode 100644 index 04d9c94..0000000 --- a/chargebee/models/brand/operations.py +++ /dev/null @@ -1,10 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class Brand: - env: environment.Environment - - pass diff --git a/chargebee/models/brand/responses.py b/chargebee/models/brand/responses.py deleted file mode 100644 index 282b29a..0000000 --- a/chargebee/models/brand/responses.py +++ /dev/null @@ -1,10 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class BrandResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - name: str = None diff --git a/chargebee/models/business_entity/operations.py b/chargebee/models/business_entity/operations.py index 9ebb708..45b4bd6 100644 --- a/chargebee/models/business_entity/operations.py +++ b/chargebee/models/business_entity/operations.py @@ -7,6 +7,7 @@ @dataclass class BusinessEntity: + env: environment.Environment class Status(Enum): @@ -35,10 +36,6 @@ class GetTransfersParams(TypedDict): def create_transfers( self, params: CreateTransfersParams, headers=None ) -> CreateTransfersResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("business_entities", "transfers"), @@ -46,17 +43,11 @@ def create_transfers( cast(Dict[Any, Any], params), headers, CreateTransfersResponse, - None, - False, - jsonKeys, - options, ) def get_transfers( self, params: GetTransfersParams = None, headers=None ) -> GetTransfersResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("business_entities", "transfers"), @@ -64,8 +55,4 @@ def get_transfers( cast(Dict[Any, Any], params), headers, GetTransfersResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/business_entity/responses.py b/chargebee/models/business_entity/responses.py index 750af65..bbfd8c0 100644 --- a/chargebee/models/business_entity/responses.py +++ b/chargebee/models/business_entity/responses.py @@ -19,8 +19,8 @@ class BusinessEntityResponse(Model): @dataclass class CreateTransfersResponse(Response): - is_idempotency_replayed: bool business_entity_transfer: "business_entity_transfer.BusinessEntityTransferResponse" + headers: Dict[str, str] = None @dataclass @@ -29,6 +29,7 @@ class GetTransfersBusinessEntityResponse: @dataclass -class GetTransfersResponse(Response): +class GetTransfersResponse: list: List[GetTransfersBusinessEntityResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/business_entity_transfer/operations.py b/chargebee/models/business_entity_transfer/operations.py index 96cebe8..e0eb6a9 100644 --- a/chargebee/models/business_entity_transfer/operations.py +++ b/chargebee/models/business_entity_transfer/operations.py @@ -6,6 +6,7 @@ @dataclass class BusinessEntityTransfer: + env: environment.Environment class ResourceType(Enum): diff --git a/chargebee/models/card/operations.py b/chargebee/models/card/operations.py index 25d3e2e..e5887fb 100644 --- a/chargebee/models/card/operations.py +++ b/chargebee/models/card/operations.py @@ -7,6 +7,7 @@ @dataclass class Card: + env: environment.Environment class PreferredScheme(Enum): @@ -69,7 +70,6 @@ class PoweredBy(Enum): GIROPAY = "giropay" CARD = "card" LATAM_LOCAL_CARD = "latam_local_card" - PAYCONIQ = "payconiq" NOT_APPLICABLE = "not_applicable" def __str__(self): @@ -107,8 +107,6 @@ class CopyCardForCustomerParams(TypedDict): gateway_account_id: Required[str] def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("cards", id), @@ -116,19 +114,11 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update_card_for_customer( self, id, params: UpdateCardForCustomerParams, headers=None ) -> UpdateCardForCustomerResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "credit_card"), @@ -136,19 +126,11 @@ def update_card_for_customer( cast(Dict[Any, Any], params), headers, UpdateCardForCustomerResponse, - None, - False, - jsonKeys, - options, ) def switch_gateway_for_customer( self, id, params: SwitchGatewayForCustomerParams, headers=None ) -> SwitchGatewayForCustomerResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "switch_gateway"), @@ -156,19 +138,11 @@ def switch_gateway_for_customer( cast(Dict[Any, Any], params), headers, SwitchGatewayForCustomerResponse, - None, - False, - jsonKeys, - options, ) def copy_card_for_customer( self, id, params: CopyCardForCustomerParams, headers=None ) -> CopyCardForCustomerResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "copy_card"), @@ -176,19 +150,11 @@ def copy_card_for_customer( cast(Dict[Any, Any], params), headers, CopyCardForCustomerResponse, - None, - False, - jsonKeys, - options, ) def delete_card_for_customer( self, id, headers=None ) -> DeleteCardForCustomerResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "delete_card"), @@ -196,8 +162,4 @@ def delete_card_for_customer( None, headers, DeleteCardForCustomerResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/card/responses.py b/chargebee/models/card/responses.py index 2236b49..349824c 100644 --- a/chargebee/models/card/responses.py +++ b/chargebee/models/card/responses.py @@ -39,33 +39,34 @@ class CardResponse(Model): @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: card: CardResponse + headers: Dict[str, str] = None @dataclass class UpdateCardForCustomerResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" card: CardResponse + headers: Dict[str, str] = None @dataclass class SwitchGatewayForCustomerResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" card: CardResponse + headers: Dict[str, str] = None @dataclass class CopyCardForCustomerResponse(Response): - is_idempotency_replayed: bool third_party_payment_method: ( "third_party_payment_method.ThirdPartyPaymentMethodResponse" ) + headers: Dict[str, str] = None @dataclass class DeleteCardForCustomerResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" + headers: Dict[str, str] = None diff --git a/chargebee/models/comment/operations.py b/chargebee/models/comment/operations.py index 5cc1075..67b917f 100644 --- a/chargebee/models/comment/operations.py +++ b/chargebee/models/comment/operations.py @@ -8,6 +8,7 @@ @dataclass class Comment: + env: environment.Environment class Type(Enum): @@ -32,10 +33,6 @@ class ListParams(TypedDict): sort_by: NotRequired[Filters.SortFilter] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("comments"), @@ -43,15 +40,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("comments", id), @@ -59,15 +50,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("comments"), @@ -75,17 +60,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("comments", id, "delete"), @@ -93,8 +70,4 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/comment/responses.py b/chargebee/models/comment/responses.py index 5e9dd24..1b7c397 100644 --- a/chargebee/models/comment/responses.py +++ b/chargebee/models/comment/responses.py @@ -14,18 +14,18 @@ class CommentResponse(Model): created_at: int = None type: str = None entity_id: str = None - business_entity_id: str = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool comment: CommentResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: comment: CommentResponse + headers: Dict[str, str] = None @dataclass @@ -34,12 +34,13 @@ class ListCommentResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListCommentResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool comment: CommentResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/configuration/operations.py b/chargebee/models/configuration/operations.py index e79f871..fa83b0c 100644 --- a/chargebee/models/configuration/operations.py +++ b/chargebee/models/configuration/operations.py @@ -5,11 +5,10 @@ @dataclass class Configuration: + env: environment.Environment def list(self, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("configurations"), @@ -17,8 +16,4 @@ def list(self, headers=None) -> ListResponse: None, headers, ListResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/configuration/responses.py b/chargebee/models/configuration/responses.py index 13a183d..3c0c331 100644 --- a/chargebee/models/configuration/responses.py +++ b/chargebee/models/configuration/responses.py @@ -1,7 +1,6 @@ from dataclasses import dataclass from chargebee.model import Model from typing import Dict, List, Any -from chargebee.response import Response @dataclass @@ -9,9 +8,9 @@ class ConfigurationResponse(Model): raw_data: Dict[Any, Any] = None domain: str = None product_catalog_version: str = None - chargebee_response_schema_type: str = None @dataclass -class ListResponse(Response): +class ListResponse: configurations: List[ConfigurationResponse] + headers: Dict[str, str] = None diff --git a/chargebee/models/contact/operations.py b/chargebee/models/contact/operations.py index fef8a0e..9418aee 100644 --- a/chargebee/models/contact/operations.py +++ b/chargebee/models/contact/operations.py @@ -5,6 +5,7 @@ @dataclass class Contact: + env: environment.Environment pass diff --git a/chargebee/models/contract_term/operations.py b/chargebee/models/contract_term/operations.py index 34b78d9..17cb968 100644 --- a/chargebee/models/contract_term/operations.py +++ b/chargebee/models/contract_term/operations.py @@ -6,6 +6,7 @@ @dataclass class ContractTerm: + env: environment.Environment class Status(Enum): diff --git a/chargebee/models/coupon/operations.py b/chargebee/models/coupon/operations.py index 54eb348..fd3c05a 100644 --- a/chargebee/models/coupon/operations.py +++ b/chargebee/models/coupon/operations.py @@ -8,6 +8,7 @@ @dataclass class Coupon: + env: environment.Environment class DiscountType(Enum): @@ -252,7 +253,6 @@ class ListParams(TypedDict): updated_at: NotRequired[Filters.TimestampFilter] sort_by: NotRequired[Filters.SortFilter] currency_code: NotRequired[Filters.StringFilter] - applicable_item_price_ids: NotRequired[Filters.StringFilter] class UpdateParams(TypedDict): name: NotRequired[str] @@ -284,12 +284,6 @@ class CopyParams(TypedDict): for_site_merging: NotRequired[bool] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupons"), @@ -297,25 +291,11 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def create_for_items( self, params: CreateForItemsParams, headers=None ) -> CreateForItemsResponse: - jsonKeys = { - "meta_data": 0, - "item_price_ids": 1, - "item_family_ids": 1, - "currencies": 1, - "item_price_periods": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupons", "create_for_items"), @@ -323,25 +303,11 @@ def create_for_items( cast(Dict[Any, Any], params), headers, CreateForItemsResponse, - None, - False, - jsonKeys, - options, ) def update_for_items( self, id, params: UpdateForItemsParams, headers=None ) -> UpdateForItemsResponse: - jsonKeys = { - "meta_data": 0, - "item_price_ids": 1, - "item_family_ids": 1, - "currencies": 1, - "item_price_periods": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupons", id, "update_for_items"), @@ -349,15 +315,9 @@ def update_for_items( cast(Dict[Any, Any], params), headers, UpdateForItemsResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("coupons"), @@ -365,15 +325,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("coupons", id), @@ -381,19 +335,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupons", id), @@ -401,17 +345,9 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupons", id, "delete"), @@ -419,17 +355,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def copy(self, params: CopyParams, headers=None) -> CopyResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupons", "copy"), @@ -437,17 +365,9 @@ def copy(self, params: CopyParams, headers=None) -> CopyResponse: cast(Dict[Any, Any], params), headers, CopyResponse, - None, - False, - jsonKeys, - options, ) def unarchive(self, id, headers=None) -> UnarchiveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupons", id, "unarchive"), @@ -455,8 +375,4 @@ def unarchive(self, id, headers=None) -> UnarchiveResponse: None, headers, UnarchiveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/coupon/responses.py b/chargebee/models/coupon/responses.py index 6f413f8..fc4f899 100644 --- a/chargebee/models/coupon/responses.py +++ b/chargebee/models/coupon/responses.py @@ -6,7 +6,6 @@ @dataclass class ItemConstraintResponse(Model): - raw_data: Dict[Any, Any] = None item_type: str = None constraint: str = None item_price_ids: List[Dict[Any, Any]] = None @@ -14,7 +13,6 @@ class ItemConstraintResponse(Model): @dataclass class ItemConstraintCriteriaResponse(Model): - raw_data: Dict[Any, Any] = None item_type: str = None currencies: List[Dict[Any, Any]] = None item_family_ids: List[Dict[Any, Any]] = None @@ -23,7 +21,6 @@ class ItemConstraintCriteriaResponse(Model): @dataclass class CouponConstraintResponse(Model): - raw_data: Dict[Any, Any] = None entity_type: str = None type: str = None value: str = None @@ -65,25 +62,24 @@ class CouponResponse(Model): invoice_notes: str = None meta_data: Dict[Any, Any] = None coupon_constraints: List[CouponConstraintResponse] = None - deleted: bool = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool coupon: CouponResponse + headers: Dict[str, str] = None @dataclass class CreateForItemsResponse(Response): - is_idempotency_replayed: bool coupon: CouponResponse + headers: Dict[str, str] = None @dataclass class UpdateForItemsResponse(Response): - is_idempotency_replayed: bool coupon: CouponResponse + headers: Dict[str, str] = None @dataclass @@ -92,35 +88,37 @@ class ListCouponResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListCouponResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: coupon: CouponResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool coupon: CouponResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool coupon: CouponResponse + headers: Dict[str, str] = None @dataclass class CopyResponse(Response): - is_idempotency_replayed: bool coupon: CouponResponse + headers: Dict[str, str] = None @dataclass class UnarchiveResponse(Response): - is_idempotency_replayed: bool coupon: CouponResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/coupon_code/operations.py b/chargebee/models/coupon_code/operations.py index 1d48651..22d204b 100644 --- a/chargebee/models/coupon_code/operations.py +++ b/chargebee/models/coupon_code/operations.py @@ -7,6 +7,7 @@ @dataclass class CouponCode: + env: environment.Environment class Status(Enum): @@ -31,10 +32,6 @@ class ListParams(TypedDict): status: NotRequired[Filters.EnumFilter] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupon_codes"), @@ -42,15 +39,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("coupon_codes", id), @@ -58,15 +49,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("coupon_codes"), @@ -74,17 +59,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def archive(self, id, headers=None) -> ArchiveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupon_codes", id, "archive"), @@ -92,8 +69,4 @@ def archive(self, id, headers=None) -> ArchiveResponse: None, headers, ArchiveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/coupon_code/responses.py b/chargebee/models/coupon_code/responses.py index c0c962c..a7936e4 100644 --- a/chargebee/models/coupon_code/responses.py +++ b/chargebee/models/coupon_code/responses.py @@ -16,13 +16,14 @@ class CouponCodeResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool coupon_code: CouponCodeResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: coupon_code: CouponCodeResponse + headers: Dict[str, str] = None @dataclass @@ -31,12 +32,13 @@ class ListCouponCodeResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListCouponCodeResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class ArchiveResponse(Response): - is_idempotency_replayed: bool coupon_code: CouponCodeResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/coupon_set/operations.py b/chargebee/models/coupon_set/operations.py index 082522e..dbfb6c2 100644 --- a/chargebee/models/coupon_set/operations.py +++ b/chargebee/models/coupon_set/operations.py @@ -6,6 +6,7 @@ @dataclass class CouponSet: + env: environment.Environment class CreateParams(TypedDict): @@ -32,12 +33,6 @@ class UpdateParams(TypedDict): meta_data: NotRequired[Dict[Any, Any]] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupon_sets"), @@ -45,19 +40,11 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def add_coupon_codes( self, id, params: AddCouponCodesParams = None, headers=None ) -> AddCouponCodesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupon_sets", id, "add_coupon_codes"), @@ -65,15 +52,9 @@ def add_coupon_codes( cast(Dict[Any, Any], params), headers, AddCouponCodesResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("coupon_sets"), @@ -81,15 +62,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("coupon_sets", id), @@ -97,19 +72,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupon_sets", id, "update"), @@ -117,17 +82,9 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupon_sets", id, "delete"), @@ -135,19 +92,11 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def delete_unused_coupon_codes( self, id, headers=None ) -> DeleteUnusedCouponCodesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("coupon_sets", id, "delete_unused_coupon_codes"), @@ -155,8 +104,4 @@ def delete_unused_coupon_codes( None, headers, DeleteUnusedCouponCodesResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/coupon_set/responses.py b/chargebee/models/coupon_set/responses.py index 9c5a1f0..6f42360 100644 --- a/chargebee/models/coupon_set/responses.py +++ b/chargebee/models/coupon_set/responses.py @@ -18,14 +18,14 @@ class CouponSetResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool coupon_set: CouponSetResponse + headers: Dict[str, str] = None @dataclass class AddCouponCodesResponse(Response): - is_idempotency_replayed: bool coupon_set: CouponSetResponse + headers: Dict[str, str] = None @dataclass @@ -34,29 +34,31 @@ class ListCouponSetResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListCouponSetResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: coupon_set: CouponSetResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool coupon_set: CouponSetResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool coupon_set: CouponSetResponse + headers: Dict[str, str] = None @dataclass class DeleteUnusedCouponCodesResponse(Response): - is_idempotency_replayed: bool coupon_set: CouponSetResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/credit_note/operations.py b/chargebee/models/credit_note/operations.py index 7d5a38d..36affef 100644 --- a/chargebee/models/credit_note/operations.py +++ b/chargebee/models/credit_note/operations.py @@ -8,12 +8,12 @@ @dataclass class CreditNote: + env: environment.Environment class Type(Enum): ADJUSTMENT = "adjustment" REFUNDABLE = "refundable" - STORE = "store" def __str__(self): return self.value @@ -44,6 +44,17 @@ class Status(Enum): def __str__(self): return self.value + class EinvoiceStatus(Enum): + SCHEDULED = "scheduled" + SKIPPED = "skipped" + IN_PROGRESS = "in_progress" + SUCCESS = "success" + FAILED = "failed" + REGISTERED = "registered" + + def __str__(self): + return self.value + class LineItemEntityType(Enum): ADHOC = "adhoc" PLAN_ITEM_PRICE = "plan_item_price" @@ -56,17 +67,6 @@ class LineItemEntityType(Enum): def __str__(self): return self.value - class LineItemDiscountDiscountType(Enum): - ITEM_LEVEL_COUPON = "item_level_coupon" - DOCUMENT_LEVEL_COUPON = "document_level_coupon" - PROMOTIONAL_CREDITS = "promotional_credits" - PRORATED_CREDITS = "prorated_credits" - ITEM_LEVEL_DISCOUNT = "item_level_discount" - DOCUMENT_LEVEL_DISCOUNT = "document_level_discount" - - def __str__(self): - return self.value - class DiscountEntityType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" @@ -85,30 +85,22 @@ class DiscountDiscountType(Enum): def __str__(self): return self.value - class AppliedCreditTaxApplication(Enum): - PRE_TAX = "pre_tax" - POST_TAX = "post_tax" + class LineItemDiscountDiscountType(Enum): + ITEM_LEVEL_COUPON = "item_level_coupon" + DOCUMENT_LEVEL_COUPON = "document_level_coupon" + PROMOTIONAL_CREDITS = "promotional_credits" + PRORATED_CREDITS = "prorated_credits" + ITEM_LEVEL_DISCOUNT = "item_level_discount" + DOCUMENT_LEVEL_DISCOUNT = "document_level_discount" def __str__(self): return self.value - class EinvoiceStatus(Enum): - SCHEDULED = "scheduled" - SKIPPED = "skipped" - IN_PROGRESS = "in_progress" - SUCCESS = "success" - FAILED = "failed" - REGISTERED = "registered" - ACCEPTED = "accepted" - REJECTED = "rejected" - MESSAGE_ACKNOWLEDGEMENT = "message_acknowledgement" - IN_PROCESS = "in_process" - UNDER_QUERY = "under_query" - CONDITIONALLY_ACCEPTED = "conditionally_accepted" - PAID = "paid" - - def __str__(self): - return self.value + class Einvoice(TypedDict): + id: Required[str] + reference_number: NotRequired[str] + status: Required["CreditNote.EinvoiceStatus"] + message: NotRequired[str] class LineItem(TypedDict): id: NotRequired[str] @@ -127,8 +119,7 @@ class LineItem(TypedDict): amount_in_decimal: NotRequired[str] discount_amount: NotRequired[int] item_level_discount_amount: NotRequired[int] - metered: NotRequired[bool] - is_percentage_pricing: NotRequired[bool] + usage_percentage: NotRequired[str] reference_line_item_id: NotRequired[str] description: Required[str] entity_description: NotRequired[str] @@ -137,6 +128,21 @@ class LineItem(TypedDict): entity_id: NotRequired[str] customer_id: NotRequired[str] + class Discount(TypedDict): + amount: Required[int] + description: NotRequired[str] + entity_type: Required["CreditNote.DiscountEntityType"] + discount_type: NotRequired["CreditNote.DiscountDiscountType"] + entity_id: NotRequired[str] + coupon_set_code: NotRequired[str] + + class LineItemDiscount(TypedDict): + line_item_id: Required[str] + discount_type: Required["CreditNote.LineItemDiscountDiscountType"] + coupon_id: NotRequired[str] + entity_id: NotRequired[str] + discount_amount: Required[int] + class LineItemTier(TypedDict): line_item_id: NotRequired[str] starting_unit: Required[int] @@ -147,15 +153,11 @@ class LineItemTier(TypedDict): ending_unit_in_decimal: NotRequired[str] quantity_used_in_decimal: NotRequired[str] unit_amount_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - class LineItemDiscount(TypedDict): - line_item_id: Required[str] - discount_type: Required["CreditNote.LineItemDiscountDiscountType"] - coupon_id: NotRequired[str] - entity_id: NotRequired[str] - discount_amount: Required[int] + class Tax(TypedDict): + name: Required[str] + amount: Required[int] + description: NotRequired[str] class LineItemTax(TypedDict): line_item_id: NotRequired[str] @@ -174,41 +176,6 @@ class LineItemTax(TypedDict): tax_amount_in_local_currency: NotRequired[int] local_currency_code: NotRequired[str] - class LineItemAddress(TypedDict): - line_item_id: NotRequired[str] - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - country: NotRequired[str] - zip: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - - class Discount(TypedDict): - amount: Required[int] - description: NotRequired[str] - line_item_id: NotRequired[str] - entity_type: Required["CreditNote.DiscountEntityType"] - discount_type: NotRequired["CreditNote.DiscountDiscountType"] - entity_id: NotRequired[str] - coupon_set_code: NotRequired[str] - - class Tax(TypedDict): - name: Required[str] - amount: Required[int] - description: NotRequired[str] - - class TaxOrigin(TypedDict): - country: NotRequired[str] - registration_number: NotRequired[str] - class LinkedRefund(TypedDict): txn_id: Required[str] applied_amount: Required[int] @@ -224,7 +191,6 @@ class Allocation(TypedDict): allocated_at: Required[int] invoice_date: NotRequired[int] invoice_status: Required["invoice.Invoice.Status"] - tax_application: NotRequired["CreditNote.AppliedCreditTaxApplication"] class ShippingAddress(TypedDict): first_name: NotRequired[str] @@ -241,6 +207,7 @@ class ShippingAddress(TypedDict): country: NotRequired[str] zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] + index: Required[int] class BillingAddress(TypedDict): first_name: NotRequired[str] @@ -258,16 +225,14 @@ class BillingAddress(TypedDict): zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] - class Einvoice(TypedDict): - id: Required[str] - reference_number: NotRequired[str] - status: Required["CreditNote.EinvoiceStatus"] - message: NotRequired[str] - class SiteDetailsAtCreation(TypedDict): timezone: NotRequired[str] organization_address: NotRequired[Dict[Any, Any]] + class TaxOrigin(TypedDict): + country: NotRequired[str] + registration_number: NotRequired[str] + class CreateLineItemParams(TypedDict): reference_line_item_id: NotRequired[str] unit_amount: NotRequired[int] @@ -281,12 +246,7 @@ class CreateLineItemParams(TypedDict): entity_type: NotRequired["CreditNote.LineItemEntityType"] entity_id: NotRequired[str] - class RetrieveLineItemParams(TypedDict): - subscription_id: NotRequired[Filters.StringFilter] - customer_id: NotRequired[Filters.StringFilter] - class RecordRefundTransactionParams(TypedDict): - id: NotRequired[str] amount: NotRequired[int] payment_method: Required[enums.PaymentMethod] reference_number: NotRequired[str] @@ -351,7 +311,6 @@ class ImportCreditNoteLineItemTierParams(TypedDict): unit_amount_in_decimal: NotRequired[str] class ImportCreditNoteDiscountParams(TypedDict): - line_item_id: NotRequired[str] entity_type: Required["CreditNote.DiscountEntityType"] entity_id: NotRequired[str] description: NotRequired[str] @@ -372,7 +331,6 @@ class ImportCreditNoteAllocationParams(TypedDict): allocated_at: Required[int] class ImportCreditNoteLinkedRefundParams(TypedDict): - id: NotRequired[str] amount: Required[int] payment_method: Required[enums.PaymentMethod] date: Required[int] @@ -391,11 +349,6 @@ class CreateParams(TypedDict): line_items: NotRequired[List["CreditNote.CreateLineItemParams"]] comment: NotRequired[str] - class RetrieveParams(TypedDict): - line_item: NotRequired["CreditNote.RetrieveLineItemParams"] - line_items_limit: NotRequired[int] - line_items_offset: NotRequired[str] - class PdfParams(TypedDict): disposition_type: NotRequired[enums.DispositionType] @@ -471,10 +424,6 @@ class ImportCreditNoteParams(TypedDict): linked_refunds: Required[List["CreditNote.ImportCreditNoteLinkedRefundParams"]] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes"), @@ -482,35 +431,19 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) - def retrieve( - self, id, params: RetrieveParams = None, headers=None - ) -> RetrieveResponse: - jsonKeys = {} - options = {} + def retrieve(self, id, headers=None) -> RetrieveResponse: return request.send( "get", request.uri_path("credit_notes", id), self.env, - cast(Dict[Any, Any], params), + None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def pdf(self, id, params: PdfParams = None, headers=None) -> PdfResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "pdf"), @@ -518,15 +451,9 @@ def pdf(self, id, params: PdfParams = None, headers=None) -> PdfResponse: cast(Dict[Any, Any], params), headers, PdfResponse, - None, - False, - jsonKeys, - options, ) def download_einvoice(self, id, headers=None) -> DownloadEinvoiceResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("credit_notes", id, "download_einvoice"), @@ -534,17 +461,9 @@ def download_einvoice(self, id, headers=None) -> DownloadEinvoiceResponse: None, headers, DownloadEinvoiceResponse, - None, - False, - jsonKeys, - options, ) def refund(self, id, params: RefundParams = None, headers=None) -> RefundResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "refund"), @@ -552,19 +471,11 @@ def refund(self, id, params: RefundParams = None, headers=None) -> RefundRespons cast(Dict[Any, Any], params), headers, RefundResponse, - None, - False, - jsonKeys, - options, ) def record_refund( self, id, params: RecordRefundParams, headers=None ) -> RecordRefundResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "record_refund"), @@ -572,19 +483,11 @@ def record_refund( cast(Dict[Any, Any], params), headers, RecordRefundResponse, - None, - False, - jsonKeys, - options, ) def void_credit_note( self, id, params: VoidCreditNoteParams = None, headers=None ) -> VoidCreditNoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "void"), @@ -592,15 +495,9 @@ def void_credit_note( cast(Dict[Any, Any], params), headers, VoidCreditNoteResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("credit_notes"), @@ -608,17 +505,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def credit_notes_for_customer( self, id, params: CreditNotesForCustomerParams = None, headers=None ) -> CreditNotesForCustomerResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "credit_notes"), @@ -626,17 +517,9 @@ def credit_notes_for_customer( cast(Dict[Any, Any], params), headers, CreditNotesForCustomerResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "delete"), @@ -644,19 +527,11 @@ def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteRespons cast(Dict[Any, Any], params), headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def remove_tax_withheld_refund( self, id, params: RemoveTaxWithheldRefundParams, headers=None ) -> RemoveTaxWithheldRefundResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "remove_tax_withheld_refund"), @@ -664,17 +539,9 @@ def remove_tax_withheld_refund( cast(Dict[Any, Any], params), headers, RemoveTaxWithheldRefundResponse, - None, - False, - jsonKeys, - options, ) def resend_einvoice(self, id, headers=None) -> ResendEinvoiceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "resend_einvoice"), @@ -682,17 +549,9 @@ def resend_einvoice(self, id, headers=None) -> ResendEinvoiceResponse: None, headers, ResendEinvoiceResponse, - None, - False, - jsonKeys, - options, ) def send_einvoice(self, id, headers=None) -> SendEinvoiceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", id, "send_einvoice"), @@ -700,19 +559,11 @@ def send_einvoice(self, id, headers=None) -> SendEinvoiceResponse: None, headers, SendEinvoiceResponse, - None, - False, - jsonKeys, - options, ) def import_credit_note( self, params: ImportCreditNoteParams, headers=None ) -> ImportCreditNoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("credit_notes", "import_credit_note"), @@ -720,8 +571,4 @@ def import_credit_note( cast(Dict[Any, Any], params), headers, ImportCreditNoteResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/credit_note/responses.py b/chargebee/models/credit_note/responses.py index cd36417..afe6692 100644 --- a/chargebee/models/credit_note/responses.py +++ b/chargebee/models/credit_note/responses.py @@ -2,12 +2,19 @@ from chargebee.model import Model from typing import Dict, List, Any from chargebee.response import Response -from chargebee.models import invoice, transaction, transaction, download, invoice +from chargebee.models import invoice, transaction, transaction, invoice, download + + +@dataclass +class EinvoiceResponse(Model): + id: str = None + reference_number: str = None + status: str = None + message: str = None @dataclass class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None subscription_id: str = None date_from: int = None @@ -24,8 +31,7 @@ class LineItemResponse(Model): amount_in_decimal: str = None discount_amount: int = None item_level_discount_amount: int = None - metered: bool = None - is_percentage_pricing: bool = None + usage_percentage: str = None reference_line_item_id: str = None description: str = None entity_description: str = None @@ -35,9 +41,27 @@ class LineItemResponse(Model): customer_id: str = None +@dataclass +class DiscountResponse(Model): + amount: int = None + description: str = None + entity_type: str = None + discount_type: str = None + entity_id: str = None + coupon_set_code: str = None + + +@dataclass +class LineItemDiscountResponse(Model): + line_item_id: str = None + discount_type: str = None + coupon_id: str = None + entity_id: str = None + discount_amount: int = None + + @dataclass class LineItemTierResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None starting_unit: int = None ending_unit: int = None @@ -47,23 +71,17 @@ class LineItemTierResponse(Model): ending_unit_in_decimal: str = None quantity_used_in_decimal: str = None unit_amount_in_decimal: str = None - pricing_type: str = None - package_size: int = None @dataclass -class LineItemDiscountResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - discount_type: str = None - coupon_id: str = None - entity_id: str = None - discount_amount: int = None +class TaxResponse(Model): + name: str = None + amount: int = None + description: str = None @dataclass class LineItemTaxResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None tax_name: str = None tax_rate: float = None @@ -81,56 +99,8 @@ class LineItemTaxResponse(Model): local_currency_code: str = None -@dataclass -class LineItemAddressResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - first_name: str = None - last_name: str = None - email: str = None - company: str = None - phone: str = None - line1: str = None - line2: str = None - line3: str = None - city: str = None - state_code: str = None - state: str = None - country: str = None - zip: str = None - validation_status: str = None - - -@dataclass -class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None - amount: int = None - description: str = None - line_item_id: str = None - entity_type: str = None - discount_type: str = None - entity_id: str = None - coupon_set_code: str = None - - -@dataclass -class TaxResponse(Model): - raw_data: Dict[Any, Any] = None - name: str = None - amount: int = None - description: str = None - - -@dataclass -class TaxOriginResponse(Model): - raw_data: Dict[Any, Any] = None - country: str = None - registration_number: str = None - - @dataclass class LinkedRefundResponse(Model): - raw_data: Dict[Any, Any] = None txn_id: str = None applied_amount: int = None applied_at: int = None @@ -142,18 +112,15 @@ class LinkedRefundResponse(Model): @dataclass class AllocationResponse(Model): - raw_data: Dict[Any, Any] = None invoice_id: str = None allocated_amount: int = None allocated_at: int = None invoice_date: int = None invoice_status: str = None - tax_application: str = None @dataclass class ShippingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -168,11 +135,11 @@ class ShippingAddressResponse(Model): country: str = None zip: str = None validation_status: str = None + index: int = None @dataclass class BillingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -189,22 +156,18 @@ class BillingAddressResponse(Model): validation_status: str = None -@dataclass -class EinvoiceResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - reference_number: str = None - status: str = None - message: str = None - - @dataclass class SiteDetailsAtCreationResponse(Model): - raw_data: Dict[Any, Any] = None timezone: str = None organization_address: Dict[Any, Any] = None +@dataclass +class TaxOriginResponse(Model): + country: str = None + registration_number: str = None + + @dataclass class CreditNoteResponse(Model): raw_data: Dict[Any, Any] = None @@ -229,7 +192,7 @@ class CreditNoteResponse(Model): resource_version: int = None updated_at: int = None channel: str = None - line_items_next_offset: str = None + einvoice: EinvoiceResponse = None sub_total: int = None sub_total_in_local_currency: int = None total_in_local_currency: int = None @@ -237,13 +200,11 @@ class CreditNoteResponse(Model): round_off_amount: int = None fractional_correction: int = None line_items: List[LineItemResponse] = None - line_item_tiers: List[LineItemTierResponse] = None - line_item_discounts: List[LineItemDiscountResponse] = None - line_item_taxes: List[LineItemTaxResponse] = None - line_item_addresses: List[LineItemAddressResponse] = None discounts: List[DiscountResponse] = None + line_item_discounts: List[LineItemDiscountResponse] = None + line_item_tiers: List[LineItemTierResponse] = None taxes: List[TaxResponse] = None - tax_origin: TaxOriginResponse = None + line_item_taxes: List[LineItemTaxResponse] = None linked_refunds: List[LinkedRefundResponse] = None allocations: List[AllocationResponse] = None deleted: bool = None @@ -254,51 +215,53 @@ class CreditNoteResponse(Model): business_entity_id: str = None shipping_address: ShippingAddressResponse = None billing_address: BillingAddressResponse = None - einvoice: EinvoiceResponse = None site_details_at_creation: SiteDetailsAtCreationResponse = None + tax_origin: TaxOriginResponse = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse invoice: "invoice.InvoiceResponse" = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: credit_note: CreditNoteResponse + headers: Dict[str, str] = None @dataclass class PdfResponse(Response): - is_idempotency_replayed: bool download: "download.DownloadResponse" + headers: Dict[str, str] = None @dataclass -class DownloadEinvoiceResponse(Response): +class DownloadEinvoiceResponse: downloads: List["download.DownloadResponse"] + headers: Dict[str, str] = None @dataclass class RefundResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse transaction: "transaction.TransactionResponse" + headers: Dict[str, str] = None @dataclass class RecordRefundResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse transaction: "transaction.TransactionResponse" = None + headers: Dict[str, str] = None @dataclass class VoidCreditNoteResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse + headers: Dict[str, str] = None @dataclass @@ -307,9 +270,10 @@ class ListCreditNoteResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListCreditNoteResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -318,36 +282,37 @@ class CreditNotesForCustomerCreditNoteResponse: @dataclass -class CreditNotesForCustomerResponse(Response): +class CreditNotesForCustomerResponse: list: List[CreditNotesForCustomerCreditNoteResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse + headers: Dict[str, str] = None @dataclass class RemoveTaxWithheldRefundResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse + headers: Dict[str, str] = None @dataclass class ResendEinvoiceResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse + headers: Dict[str, str] = None @dataclass class SendEinvoiceResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse + headers: Dict[str, str] = None @dataclass class ImportCreditNoteResponse(Response): - is_idempotency_replayed: bool credit_note: CreditNoteResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/credit_note_estimate/operations.py b/chargebee/models/credit_note_estimate/operations.py index 4247cca..c1d6e0c 100644 --- a/chargebee/models/credit_note_estimate/operations.py +++ b/chargebee/models/credit_note_estimate/operations.py @@ -7,12 +7,12 @@ @dataclass class CreditNoteEstimate: + env: environment.Environment class Type(Enum): ADJUSTMENT = "adjustment" REFUNDABLE = "refundable" - STORE = "store" def __str__(self): return self.value @@ -29,7 +29,7 @@ class LineItemEntityType(Enum): def __str__(self): return self.value - class LineItemDiscountDiscountType(Enum): + class DiscountEntityType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -40,7 +40,14 @@ class LineItemDiscountDiscountType(Enum): def __str__(self): return self.value - class DiscountEntityType(Enum): + class DiscountDiscountType(Enum): + FIXED_AMOUNT = "fixed_amount" + PERCENTAGE = "percentage" + + def __str__(self): + return self.value + + class LineItemDiscountDiscountType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -51,13 +58,6 @@ class DiscountEntityType(Enum): def __str__(self): return self.value - class DiscountDiscountType(Enum): - FIXED_AMOUNT = "fixed_amount" - PERCENTAGE = "percentage" - - def __str__(self): - return self.value - class LineItem(TypedDict): id: NotRequired[str] subscription_id: NotRequired[str] @@ -75,8 +75,7 @@ class LineItem(TypedDict): amount_in_decimal: NotRequired[str] discount_amount: NotRequired[int] item_level_discount_amount: NotRequired[int] - metered: NotRequired[bool] - is_percentage_pricing: NotRequired[bool] + usage_percentage: NotRequired[str] reference_line_item_id: NotRequired[str] description: Required[str] entity_description: NotRequired[str] @@ -85,25 +84,18 @@ class LineItem(TypedDict): entity_id: NotRequired[str] customer_id: NotRequired[str] - class LineItemTier(TypedDict): - line_item_id: NotRequired[str] - starting_unit: Required[int] - ending_unit: NotRequired[int] - quantity_used: Required[int] - unit_amount: Required[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - quantity_used_in_decimal: NotRequired[str] - unit_amount_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - - class LineItemDiscount(TypedDict): - line_item_id: Required[str] - discount_type: Required["CreditNoteEstimate.LineItemDiscountDiscountType"] - coupon_id: NotRequired[str] + class Discount(TypedDict): + amount: Required[int] + description: NotRequired[str] + entity_type: Required["CreditNoteEstimate.DiscountEntityType"] + discount_type: NotRequired["CreditNoteEstimate.DiscountDiscountType"] entity_id: NotRequired[str] - discount_amount: Required[int] + coupon_set_code: NotRequired[str] + + class Tax(TypedDict): + name: Required[str] + amount: Required[int] + description: NotRequired[str] class LineItemTax(TypedDict): line_item_id: NotRequired[str] @@ -122,18 +114,22 @@ class LineItemTax(TypedDict): tax_amount_in_local_currency: NotRequired[int] local_currency_code: NotRequired[str] - class Discount(TypedDict): - amount: Required[int] - description: NotRequired[str] - line_item_id: NotRequired[str] - entity_type: Required["CreditNoteEstimate.DiscountEntityType"] - discount_type: NotRequired["CreditNoteEstimate.DiscountDiscountType"] + class LineItemDiscount(TypedDict): + line_item_id: Required[str] + discount_type: Required["CreditNoteEstimate.LineItemDiscountDiscountType"] + coupon_id: NotRequired[str] entity_id: NotRequired[str] - coupon_set_code: NotRequired[str] + discount_amount: Required[int] - class Tax(TypedDict): - name: Required[str] - amount: Required[int] - description: NotRequired[str] + class LineItemTier(TypedDict): + line_item_id: NotRequired[str] + starting_unit: Required[int] + ending_unit: NotRequired[int] + quantity_used: Required[int] + unit_amount: Required[int] + starting_unit_in_decimal: NotRequired[str] + ending_unit_in_decimal: NotRequired[str] + quantity_used_in_decimal: NotRequired[str] + unit_amount_in_decimal: NotRequired[str] pass diff --git a/chargebee/models/credit_note_estimate/responses.py b/chargebee/models/credit_note_estimate/responses.py index 15b5608..0f68c8d 100644 --- a/chargebee/models/credit_note_estimate/responses.py +++ b/chargebee/models/credit_note_estimate/responses.py @@ -5,7 +5,6 @@ @dataclass class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None subscription_id: str = None date_from: int = None @@ -22,8 +21,7 @@ class LineItemResponse(Model): amount_in_decimal: str = None discount_amount: int = None item_level_discount_amount: int = None - metered: bool = None - is_percentage_pricing: bool = None + usage_percentage: str = None reference_line_item_id: str = None description: str = None entity_description: str = None @@ -34,34 +32,24 @@ class LineItemResponse(Model): @dataclass -class LineItemTierResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - starting_unit: int = None - ending_unit: int = None - quantity_used: int = None - unit_amount: int = None - starting_unit_in_decimal: str = None - ending_unit_in_decimal: str = None - quantity_used_in_decimal: str = None - unit_amount_in_decimal: str = None - pricing_type: str = None - package_size: int = None +class DiscountResponse(Model): + amount: int = None + description: str = None + entity_type: str = None + discount_type: str = None + entity_id: str = None + coupon_set_code: str = None @dataclass -class LineItemDiscountResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - discount_type: str = None - coupon_id: str = None - entity_id: str = None - discount_amount: int = None +class TaxResponse(Model): + name: str = None + amount: int = None + description: str = None @dataclass class LineItemTaxResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None tax_name: str = None tax_rate: float = None @@ -80,23 +68,25 @@ class LineItemTaxResponse(Model): @dataclass -class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None - amount: int = None - description: str = None +class LineItemDiscountResponse(Model): line_item_id: str = None - entity_type: str = None discount_type: str = None + coupon_id: str = None entity_id: str = None - coupon_set_code: str = None + discount_amount: int = None @dataclass -class TaxResponse(Model): - raw_data: Dict[Any, Any] = None - name: str = None - amount: int = None - description: str = None +class LineItemTierResponse(Model): + line_item_id: str = None + starting_unit: int = None + ending_unit: int = None + quantity_used: int = None + unit_amount: int = None + starting_unit_in_decimal: str = None + ending_unit_in_decimal: str = None + quantity_used_in_decimal: str = None + unit_amount_in_decimal: str = None @dataclass @@ -111,10 +101,10 @@ class CreditNoteEstimateResponse(Model): amount_allocated: int = None amount_available: int = None line_items: List[LineItemResponse] = None - line_item_tiers: List[LineItemTierResponse] = None - line_item_discounts: List[LineItemDiscountResponse] = None - line_item_taxes: List[LineItemTaxResponse] = None discounts: List[DiscountResponse] = None taxes: List[TaxResponse] = None + line_item_taxes: List[LineItemTaxResponse] = None + line_item_discounts: List[LineItemDiscountResponse] = None + line_item_tiers: List[LineItemTierResponse] = None round_off_amount: int = None customer_id: str = None diff --git a/chargebee/models/currency/operations.py b/chargebee/models/currency/operations.py index d417511..828137a 100644 --- a/chargebee/models/currency/operations.py +++ b/chargebee/models/currency/operations.py @@ -6,6 +6,7 @@ @dataclass class Currency: + env: environment.Environment class ForexType(Enum): @@ -15,10 +16,6 @@ class ForexType(Enum): def __str__(self): return self.value - class ListParams(TypedDict): - limit: NotRequired[int] - offset: NotRequired[str] - class CreateParams(TypedDict): currency_code: Required[str] forex_type: Required["Currency.ForexType"] @@ -32,25 +29,17 @@ class AddScheduleParams(TypedDict): manual_exchange_rate: Required[str] schedule_at: Required[int] - def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} + def list(self, headers=None) -> ListResponse: return request.send_list_request( "get", request.uri_path("currencies", "list"), self.env, - cast(Dict[Any, Any], params), + None, headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("currencies", id), @@ -58,17 +47,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("currencies"), @@ -76,17 +57,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("currencies", id), @@ -94,19 +67,11 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def add_schedule( self, id, params: AddScheduleParams, headers=None ) -> AddScheduleResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("currencies", id, "add_schedule"), @@ -114,17 +79,9 @@ def add_schedule( cast(Dict[Any, Any], params), headers, AddScheduleResponse, - None, - False, - jsonKeys, - options, ) def remove_schedule(self, id, headers=None) -> RemoveScheduleResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("currencies", id, "remove_schedule"), @@ -132,8 +89,4 @@ def remove_schedule(self, id, headers=None) -> RemoveScheduleResponse: None, headers, RemoveScheduleResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/currency/responses.py b/chargebee/models/currency/responses.py index 35d30f9..624af04 100644 --- a/chargebee/models/currency/responses.py +++ b/chargebee/models/currency/responses.py @@ -16,42 +16,38 @@ class CurrencyResponse(Model): @dataclass -class ListCurrencyResponse: +class ListResponse: currency: CurrencyResponse + headers: Dict[str, str] = None @dataclass -class ListResponse(Response): - list: List[ListCurrencyResponse] - next_offset: str = None - - -@dataclass -class RetrieveResponse(Response): +class RetrieveResponse: currency: CurrencyResponse + headers: Dict[str, str] = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool currency: CurrencyResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool currency: CurrencyResponse + headers: Dict[str, str] = None @dataclass class AddScheduleResponse(Response): - is_idempotency_replayed: bool scheduled_at: int currency: CurrencyResponse + headers: Dict[str, str] = None @dataclass class RemoveScheduleResponse(Response): - is_idempotency_replayed: bool scheduled_at: int currency: CurrencyResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/customer/operations.py b/chargebee/models/customer/operations.py index 0459a01..d296508 100644 --- a/chargebee/models/customer/operations.py +++ b/chargebee/models/customer/operations.py @@ -8,6 +8,7 @@ @dataclass class Customer: + env: environment.Environment class VatNumberStatus(Enum): @@ -150,7 +151,6 @@ class Balance(TypedDict): unbilled_charges: Required[int] currency_code: Required[str] balance_currency_code: Required[str] - business_entity_id: NotRequired[str] class EntityIdentifier(TypedDict): id: Required[str] @@ -350,7 +350,6 @@ class DeleteContactContactParams(TypedDict): id: Required[str] class RecordExcessPaymentTransactionParams(TypedDict): - id: NotRequired[str] amount: Required[int] currency_code: NotRequired[str] date: Required[int] @@ -398,6 +397,16 @@ class CollectPaymentPaymentIntentParams(TypedDict): reference_id: NotRequired[str] additional_information: NotRequired[Dict[Any, Any]] + class MoveTaxProvidersFieldParams(TypedDict): + provider_name: NotRequired[str] + field_id: NotRequired[str] + field_value: NotRequired[str] + + class MergeTaxProvidersFieldParams(TypedDict): + provider_name: NotRequired[str] + field_id: NotRequired[str] + field_value: NotRequired[str] + class RelationshipsParentAccountAccessParams(TypedDict): portal_edit_child_subscriptions: NotRequired[ "Customer.ParentAccountAccessPortalEditChildSubscriptions" @@ -618,6 +627,7 @@ class DeleteParams(TypedDict): class MoveParams(TypedDict): id_at_from_site: Required[str] from_site: Required[str] + tax_providers_fields: NotRequired[List["Customer.MoveTaxProvidersFieldParams"]] class ChangeBillingDateParams(TypedDict): billing_date: NotRequired[int] @@ -629,6 +639,7 @@ class ChangeBillingDateParams(TypedDict): class MergeParams(TypedDict): from_customer_id: Required[str] to_customer_id: Required[str] + tax_providers_fields: NotRequired[List["Customer.MergeTaxProvidersFieldParams"]] class RelationshipsParams(TypedDict): parent_id: NotRequired[str] @@ -645,11 +656,6 @@ class RelationshipsParams(TypedDict): class HierarchyParams(TypedDict): hierarchy_operation_type: Required[enums.HierarchyOperationType] - class ListHierarchyDetailParams(TypedDict): - limit: NotRequired[int] - offset: NotRequired[str] - hierarchy_operation_type: Required[enums.HierarchyOperationType] - class UpdateHierarchySettingsParams(TypedDict): use_default_hierarchy_settings: NotRequired[bool] parent_account_access: NotRequired[ @@ -660,15 +666,6 @@ class UpdateHierarchySettingsParams(TypedDict): ] def create(self, params: CreateParams = None, headers=None) -> CreateResponse: - jsonKeys = { - "exemption_details": 0, - "meta_data": 0, - "additional_information": 1, - "billing_address": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers"), @@ -676,15 +673,9 @@ def create(self, params: CreateParams = None, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("customers"), @@ -692,15 +683,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id), @@ -708,20 +693,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = { - "exemption_details": 0, - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id), @@ -729,21 +703,11 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def update_payment_method( self, id, params: UpdatePaymentMethodParams, headers=None ) -> UpdatePaymentMethodResponse: - jsonKeys = { - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "update_payment_method"), @@ -751,19 +715,11 @@ def update_payment_method( cast(Dict[Any, Any], params), headers, UpdatePaymentMethodResponse, - None, - False, - jsonKeys, - options, ) def update_billing_info( self, id, params: UpdateBillingInfoParams = None, headers=None ) -> UpdateBillingInfoResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "update_billing_info"), @@ -771,17 +727,11 @@ def update_billing_info( cast(Dict[Any, Any], params), headers, UpdateBillingInfoResponse, - None, - False, - jsonKeys, - options, ) def contacts_for_customer( self, id, params: ContactsForCustomerParams = None, headers=None ) -> ContactsForCustomerResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "contacts"), @@ -789,19 +739,11 @@ def contacts_for_customer( cast(Dict[Any, Any], params), headers, ContactsForCustomerResponse, - None, - False, - jsonKeys, - options, ) def assign_payment_role( self, id, params: AssignPaymentRoleParams, headers=None ) -> AssignPaymentRoleResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "assign_payment_role"), @@ -809,19 +751,11 @@ def assign_payment_role( cast(Dict[Any, Any], params), headers, AssignPaymentRoleResponse, - None, - False, - jsonKeys, - options, ) def add_contact( self, id, params: AddContactParams, headers=None ) -> AddContactResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "add_contact"), @@ -829,19 +763,11 @@ def add_contact( cast(Dict[Any, Any], params), headers, AddContactResponse, - None, - False, - jsonKeys, - options, ) def update_contact( self, id, params: UpdateContactParams, headers=None ) -> UpdateContactResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "update_contact"), @@ -849,19 +775,11 @@ def update_contact( cast(Dict[Any, Any], params), headers, UpdateContactResponse, - None, - False, - jsonKeys, - options, ) def delete_contact( self, id, params: DeleteContactParams, headers=None ) -> DeleteContactResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "delete_contact"), @@ -869,19 +787,11 @@ def delete_contact( cast(Dict[Any, Any], params), headers, DeleteContactResponse, - None, - False, - jsonKeys, - options, ) def add_promotional_credits( self, id, params: AddPromotionalCreditsParams, headers=None ) -> AddPromotionalCreditsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "add_promotional_credits"), @@ -889,19 +799,11 @@ def add_promotional_credits( cast(Dict[Any, Any], params), headers, AddPromotionalCreditsResponse, - None, - False, - jsonKeys, - options, ) def deduct_promotional_credits( self, id, params: DeductPromotionalCreditsParams, headers=None ) -> DeductPromotionalCreditsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "deduct_promotional_credits"), @@ -909,19 +811,11 @@ def deduct_promotional_credits( cast(Dict[Any, Any], params), headers, DeductPromotionalCreditsResponse, - None, - False, - jsonKeys, - options, ) def set_promotional_credits( self, id, params: SetPromotionalCreditsParams, headers=None ) -> SetPromotionalCreditsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "set_promotional_credits"), @@ -929,19 +823,11 @@ def set_promotional_credits( cast(Dict[Any, Any], params), headers, SetPromotionalCreditsResponse, - None, - False, - jsonKeys, - options, ) def record_excess_payment( self, id, params: RecordExcessPaymentParams, headers=None ) -> RecordExcessPaymentResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "record_excess_payment"), @@ -949,21 +835,11 @@ def record_excess_payment( cast(Dict[Any, Any], params), headers, RecordExcessPaymentResponse, - None, - False, - jsonKeys, - options, ) def collect_payment( self, id, params: CollectPaymentParams, headers=None ) -> CollectPaymentResponse: - jsonKeys = { - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "collect_payment"), @@ -971,17 +847,9 @@ def collect_payment( cast(Dict[Any, Any], params), headers, CollectPaymentResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "delete"), @@ -989,17 +857,9 @@ def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteRespons cast(Dict[Any, Any], params), headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def move(self, params: MoveParams, headers=None) -> MoveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", "move"), @@ -1007,19 +867,11 @@ def move(self, params: MoveParams, headers=None) -> MoveResponse: cast(Dict[Any, Any], params), headers, MoveResponse, - None, - False, - jsonKeys, - options, ) def change_billing_date( self, id, params: ChangeBillingDateParams = None, headers=None ) -> ChangeBillingDateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "change_billing_date"), @@ -1027,17 +879,9 @@ def change_billing_date( cast(Dict[Any, Any], params), headers, ChangeBillingDateResponse, - None, - False, - jsonKeys, - options, ) def merge(self, params: MergeParams, headers=None) -> MergeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", "merge"), @@ -1045,17 +889,9 @@ def merge(self, params: MergeParams, headers=None) -> MergeResponse: cast(Dict[Any, Any], params), headers, MergeResponse, - None, - False, - jsonKeys, - options, ) def clear_personal_data(self, id, headers=None) -> ClearPersonalDataResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "clear_personal_data"), @@ -1063,19 +899,11 @@ def clear_personal_data(self, id, headers=None) -> ClearPersonalDataResponse: None, headers, ClearPersonalDataResponse, - None, - False, - jsonKeys, - options, ) def relationships( self, id, params: RelationshipsParams = None, headers=None ) -> RelationshipsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "relationships"), @@ -1083,17 +911,9 @@ def relationships( cast(Dict[Any, Any], params), headers, RelationshipsResponse, - None, - False, - jsonKeys, - options, ) def delete_relationship(self, id, headers=None) -> DeleteRelationshipResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "delete_relationship"), @@ -1101,15 +921,9 @@ def delete_relationship(self, id, headers=None) -> DeleteRelationshipResponse: None, headers, DeleteRelationshipResponse, - None, - False, - jsonKeys, - options, ) def hierarchy(self, id, params: HierarchyParams, headers=None) -> HierarchyResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "hierarchy"), @@ -1117,37 +931,11 @@ def hierarchy(self, id, params: HierarchyParams, headers=None) -> HierarchyRespo cast(Dict[Any, Any], params), headers, HierarchyResponse, - None, - False, - jsonKeys, - options, - ) - - def list_hierarchy_detail( - self, id, params: ListHierarchyDetailParams, headers=None - ) -> ListHierarchyDetailResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("customers", id, "hierarchy_detail"), - self.env, - cast(Dict[Any, Any], params), - headers, - ListHierarchyDetailResponse, - None, - False, - jsonKeys, - options, ) def update_hierarchy_settings( self, id, params: UpdateHierarchySettingsParams = None, headers=None ) -> UpdateHierarchySettingsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "update_hierarchy_settings"), @@ -1155,8 +943,4 @@ def update_hierarchy_settings( cast(Dict[Any, Any], params), headers, UpdateHierarchySettingsResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/customer/responses.py b/chargebee/models/customer/responses.py index 800e075..234ddc1 100644 --- a/chargebee/models/customer/responses.py +++ b/chargebee/models/customer/responses.py @@ -16,7 +16,6 @@ @dataclass class BillingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -35,7 +34,6 @@ class BillingAddressResponse(Model): @dataclass class ReferralUrlResponse(Model): - raw_data: Dict[Any, Any] = None external_customer_id: str = None referral_sharing_url: str = None created_at: int = None @@ -48,7 +46,6 @@ class ReferralUrlResponse(Model): @dataclass class ContactResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None first_name: str = None last_name: str = None @@ -62,7 +59,6 @@ class ContactResponse(Model): @dataclass class PaymentMethodResponse(Model): - raw_data: Dict[Any, Any] = None type: str = None gateway: str = None gateway_account_id: str = None @@ -72,19 +68,16 @@ class PaymentMethodResponse(Model): @dataclass class BalanceResponse(Model): - raw_data: Dict[Any, Any] = None promotional_credits: int = None excess_payments: int = None refundable_credits: int = None unbilled_charges: int = None currency_code: str = None balance_currency_code: str = None - business_entity_id: str = None @dataclass class EntityIdentifierResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None value: str = None scheme: str = None @@ -93,7 +86,6 @@ class EntityIdentifierResponse(Model): @dataclass class TaxProvidersFieldResponse(Model): - raw_data: Dict[Any, Any] = None provider_name: str = None field_id: str = None field_value: str = None @@ -101,7 +93,6 @@ class TaxProvidersFieldResponse(Model): @dataclass class RelationshipResponse(Model): - raw_data: Dict[Any, Any] = None parent_id: str = None payment_owner_id: str = None invoice_owner_id: str = None @@ -109,7 +100,6 @@ class RelationshipResponse(Model): @dataclass class ParentAccountAccessResponse(Model): - raw_data: Dict[Any, Any] = None portal_edit_child_subscriptions: str = None portal_download_child_invoices: str = None send_subscription_emails: bool = None @@ -119,7 +109,6 @@ class ParentAccountAccessResponse(Model): @dataclass class ChildAccountAccessResponse(Model): - raw_data: Dict[Any, Any] = None portal_edit_subscriptions: str = None portal_download_invoices: str = None send_subscription_emails: bool = None @@ -200,9 +189,9 @@ class CustomerResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass @@ -212,36 +201,38 @@ class ListCustomerResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListCustomerResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class UpdatePaymentMethodResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class UpdateBillingInfoResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass @@ -250,131 +241,122 @@ class ContactsForCustomerCustomerResponse: @dataclass -class ContactsForCustomerResponse(Response): +class ContactsForCustomerResponse: list: List[ContactsForCustomerCustomerResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class AssignPaymentRoleResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse payment_source: "payment_source.PaymentSourceResponse" + headers: Dict[str, str] = None @dataclass class AddContactResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class UpdateContactResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class DeleteContactResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class AddPromotionalCreditsResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass class DeductPromotionalCreditsResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass class SetPromotionalCreditsResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass class RecordExcessPaymentResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse transaction: "transaction.TransactionResponse" + headers: Dict[str, str] = None @dataclass class CollectPaymentResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse transaction: "transaction.TransactionResponse" + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class MoveResponse(Response): - is_idempotency_replayed: bool resource_migration: "resource_migration.ResourceMigrationResponse" + headers: Dict[str, str] = None @dataclass class ChangeBillingDateResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass class MergeResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass class ClearPersonalDataResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass class RelationshipsResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass class DeleteRelationshipResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None @dataclass -class HierarchyResponse(Response): +class HierarchyResponse: hierarchies: List["hierarchy.HierarchyResponse"] - - -@dataclass -class ListHierarchyDetailCustomerResponse: - hierarchy: "hierarchy.HierarchyResponse" - - -@dataclass -class ListHierarchyDetailResponse(Response): - list: List[ListHierarchyDetailCustomerResponse] - next_offset: str = None + headers: Dict[str, str] = None @dataclass class UpdateHierarchySettingsResponse(Response): - is_idempotency_replayed: bool customer: CustomerResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/customer_entitlement/operations.py b/chargebee/models/customer_entitlement/operations.py index 86dd52e..a9b9a01 100644 --- a/chargebee/models/customer_entitlement/operations.py +++ b/chargebee/models/customer_entitlement/operations.py @@ -5,18 +5,16 @@ @dataclass class CustomerEntitlement: + env: environment.Environment class EntitlementsForCustomerParams(TypedDict): limit: NotRequired[int] offset: NotRequired[str] - consolidate_entitlements: NotRequired[bool] def entitlements_for_customer( self, id, params: EntitlementsForCustomerParams = None, headers=None ) -> EntitlementsForCustomerResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "customer_entitlements"), @@ -24,8 +22,4 @@ def entitlements_for_customer( cast(Dict[Any, Any], params), headers, EntitlementsForCustomerResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/customer_entitlement/responses.py b/chargebee/models/customer_entitlement/responses.py index 0a18b92..7eb3619 100644 --- a/chargebee/models/customer_entitlement/responses.py +++ b/chargebee/models/customer_entitlement/responses.py @@ -1,7 +1,6 @@ from dataclasses import dataclass from chargebee.model import Model from typing import Dict, List, Any -from chargebee.response import Response @dataclass @@ -21,6 +20,7 @@ class EntitlementsForCustomerCustomerEntitlementResponse: @dataclass -class EntitlementsForCustomerResponse(Response): +class EntitlementsForCustomerResponse: list: List[EntitlementsForCustomerCustomerEntitlementResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/differential_price/operations.py b/chargebee/models/differential_price/operations.py index d40fd6c..6fb85f4 100644 --- a/chargebee/models/differential_price/operations.py +++ b/chargebee/models/differential_price/operations.py @@ -3,11 +3,11 @@ from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast from enum import Enum from chargebee.filters import Filters -from chargebee.models import enums @dataclass class DifferentialPrice: + env: environment.Environment class Status(Enum): @@ -33,8 +33,6 @@ class Tier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class ParentPeriod(TypedDict): period_unit: Required["DifferentialPrice.ParentPeriodPeriodUnit"] @@ -51,8 +49,6 @@ class CreateTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class UpdateParentPeriodParams(TypedDict): period_unit: Required["DifferentialPrice.ParentPeriodPeriodUnit"] @@ -65,8 +61,6 @@ class UpdateTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateParams(TypedDict): parent_item_id: Required[str] @@ -98,12 +92,6 @@ class ListParams(TypedDict): parent_item_id: NotRequired[Filters.StringFilter] def create(self, id, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "period": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("item_prices", id, "differential_prices"), @@ -111,15 +99,9 @@ def create(self, id, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, params: RetrieveParams, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("differential_prices", id), @@ -127,19 +109,9 @@ def retrieve(self, id, params: RetrieveParams, headers=None) -> RetrieveResponse cast(Dict[Any, Any], params), headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = { - "period": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("differential_prices", id), @@ -147,17 +119,9 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, params: DeleteParams, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("differential_prices", id, "delete"), @@ -165,15 +129,9 @@ def delete(self, id, params: DeleteParams, headers=None) -> DeleteResponse: cast(Dict[Any, Any], params), headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("differential_prices"), @@ -181,8 +139,4 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/differential_price/responses.py b/chargebee/models/differential_price/responses.py index f9aacce..49bfcd1 100644 --- a/chargebee/models/differential_price/responses.py +++ b/chargebee/models/differential_price/responses.py @@ -6,20 +6,16 @@ @dataclass class TierResponse(Model): - raw_data: Dict[Any, Any] = None starting_unit: int = None ending_unit: int = None price: int = None starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None @dataclass class ParentPeriodResponse(Model): - raw_data: Dict[Any, Any] = None period_unit: str = None period: List[Dict[Any, Any]] = None @@ -41,30 +37,30 @@ class DifferentialPriceResponse(Model): currency_code: str = None parent_periods: List[ParentPeriodResponse] = None business_entity_id: str = None - deleted: bool = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool differential_price: DifferentialPriceResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: differential_price: DifferentialPriceResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool differential_price: DifferentialPriceResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool differential_price: DifferentialPriceResponse + headers: Dict[str, str] = None @dataclass @@ -73,6 +69,7 @@ class ListDifferentialPriceResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListDifferentialPriceResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/discount/operations.py b/chargebee/models/discount/operations.py index 3ded8c7..f663515 100644 --- a/chargebee/models/discount/operations.py +++ b/chargebee/models/discount/operations.py @@ -6,12 +6,12 @@ @dataclass class Discount: + env: environment.Environment class Type(Enum): FIXED_AMOUNT = "fixed_amount" PERCENTAGE = "percentage" - OFFER_QUANTITY = "offer_quantity" def __str__(self): return self.value diff --git a/chargebee/models/discount/responses.py b/chargebee/models/discount/responses.py index 69ee464..b68b120 100644 --- a/chargebee/models/discount/responses.py +++ b/chargebee/models/discount/responses.py @@ -11,7 +11,6 @@ class DiscountResponse(Model): type: str = None percentage: float = None amount: int = None - quantity: int = None currency_code: str = None duration_type: str = None period: int = None diff --git a/chargebee/models/download/operations.py b/chargebee/models/download/operations.py index b5d2a17..f0ecbf0 100644 --- a/chargebee/models/download/operations.py +++ b/chargebee/models/download/operations.py @@ -5,6 +5,7 @@ @dataclass class Download: + env: environment.Environment pass diff --git a/chargebee/models/einvoice/__init__.py b/chargebee/models/einvoice/__init__.py deleted file mode 100644 index d22147c..0000000 --- a/chargebee/models/einvoice/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import Einvoice -from .responses import EinvoiceResponse diff --git a/chargebee/models/einvoice/operations.py b/chargebee/models/einvoice/operations.py deleted file mode 100644 index 758101f..0000000 --- a/chargebee/models/einvoice/operations.py +++ /dev/null @@ -1,29 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class Einvoice: - env: environment.Environment - - class Status(Enum): - SCHEDULED = "scheduled" - SKIPPED = "skipped" - IN_PROGRESS = "in_progress" - SUCCESS = "success" - FAILED = "failed" - REGISTERED = "registered" - ACCEPTED = "accepted" - REJECTED = "rejected" - MESSAGE_ACKNOWLEDGEMENT = "message_acknowledgement" - IN_PROCESS = "in_process" - UNDER_QUERY = "under_query" - CONDITIONALLY_ACCEPTED = "conditionally_accepted" - PAID = "paid" - - def __str__(self): - return self.value - - pass diff --git a/chargebee/models/einvoice/responses.py b/chargebee/models/einvoice/responses.py deleted file mode 100644 index ceb34a1..0000000 --- a/chargebee/models/einvoice/responses.py +++ /dev/null @@ -1,12 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class EinvoiceResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - reference_number: str = None - status: str = None - message: str = None diff --git a/chargebee/models/entitlement/operations.py b/chargebee/models/entitlement/operations.py index 3a7740e..b72ceca 100644 --- a/chargebee/models/entitlement/operations.py +++ b/chargebee/models/entitlement/operations.py @@ -8,6 +8,7 @@ @dataclass class Entitlement: + env: environment.Environment class EntityType(Enum): @@ -25,7 +26,6 @@ class CreateEntitlementParams(TypedDict): feature_id: Required[str] entity_type: NotRequired["Entitlement.EntityType"] value: NotRequired[str] - apply_grandfathering: NotRequired[bool] class ListParams(TypedDict): limit: NotRequired[int] @@ -38,12 +38,9 @@ class ListParams(TypedDict): class CreateParams(TypedDict): action: Required[enums.Action] - change_reason: NotRequired[str] entitlements: Required[List["Entitlement.CreateEntitlementParams"]] def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("entitlements"), @@ -51,17 +48,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("entitlements"), @@ -69,8 +58,4 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/entitlement/responses.py b/chargebee/models/entitlement/responses.py index d65040e..46f42ff 100644 --- a/chargebee/models/entitlement/responses.py +++ b/chargebee/models/entitlement/responses.py @@ -22,17 +22,13 @@ class ListEntitlementResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListEntitlementResponse] next_offset: str = None - - -@dataclass -class CreateEntitlementResponse: - entitlement: EntitlementResponse + headers: Dict[str, str] = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool - list: List[CreateEntitlementResponse] + entitlement: EntitlementResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/entitlement_override/operations.py b/chargebee/models/entitlement_override/operations.py index 1bd759d..c4be8ab 100644 --- a/chargebee/models/entitlement_override/operations.py +++ b/chargebee/models/entitlement_override/operations.py @@ -7,6 +7,7 @@ @dataclass class EntitlementOverride: + env: environment.Environment class ScheduleStatus(Enum): @@ -19,12 +20,9 @@ def __str__(self): class AddEntitlementOverrideForSubscriptionEntitlementOverrideParams(TypedDict): feature_id: Required[str] - entity_id: NotRequired[str] - entity_type: NotRequired[enums.EntityType] value: NotRequired[str] expires_at: NotRequired[int] effective_from: NotRequired[int] - is_enabled: NotRequired[bool] class AddEntitlementOverrideForSubscriptionParams(TypedDict): action: NotRequired[enums.Action] @@ -44,10 +42,6 @@ class ListEntitlementOverrideForSubscriptionParams(TypedDict): def add_entitlement_override_for_subscription( self, id, params: AddEntitlementOverrideForSubscriptionParams, headers=None ) -> AddEntitlementOverrideForSubscriptionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "entitlement_overrides"), @@ -55,10 +49,6 @@ def add_entitlement_override_for_subscription( cast(Dict[Any, Any], params), headers, AddEntitlementOverrideForSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def list_entitlement_override_for_subscription( @@ -67,8 +57,6 @@ def list_entitlement_override_for_subscription( params: ListEntitlementOverrideForSubscriptionParams = None, headers=None, ) -> ListEntitlementOverrideForSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "entitlement_overrides"), @@ -76,8 +64,4 @@ def list_entitlement_override_for_subscription( cast(Dict[Any, Any], params), headers, ListEntitlementOverrideForSubscriptionResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/entitlement_override/responses.py b/chargebee/models/entitlement_override/responses.py index 1957ad9..f80c81b 100644 --- a/chargebee/models/entitlement_override/responses.py +++ b/chargebee/models/entitlement_override/responses.py @@ -8,7 +8,6 @@ class EntitlementOverrideResponse(Model): raw_data: Dict[Any, Any] = None id: str = None - subscription_id: str = None entity_id: str = None entity_type: str = None feature_id: str = None @@ -17,19 +16,13 @@ class EntitlementOverrideResponse(Model): name: str = None expires_at: int = None effective_from: int = None - is_enabled: bool = None schedule_status: str = None -@dataclass -class AddEntitlementOverrideForSubscriptionEntitlementOverrideResponse: - entitlement_override: EntitlementOverrideResponse - - @dataclass class AddEntitlementOverrideForSubscriptionResponse(Response): - is_idempotency_replayed: bool - list: List[AddEntitlementOverrideForSubscriptionEntitlementOverrideResponse] + entitlement_override: EntitlementOverrideResponse + headers: Dict[str, str] = None @dataclass @@ -38,6 +31,7 @@ class ListEntitlementOverrideForSubscriptionEntitlementOverrideResponse: @dataclass -class ListEntitlementOverrideForSubscriptionResponse(Response): +class ListEntitlementOverrideForSubscriptionResponse: list: List[ListEntitlementOverrideForSubscriptionEntitlementOverrideResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/enums.py b/chargebee/models/enums.py index 735f79e..43a1d53 100644 --- a/chargebee/models/enums.py +++ b/chargebee/models/enums.py @@ -94,24 +94,6 @@ def __str__(self): return self.value -class BillingPeriodUnit(Enum): - DAY = "day" - WEEK = "week" - MONTH = "month" - YEAR = "year" - - def __str__(self): - return self.value - - -class BillingStartOption(Enum): - IMMEDIATELY = "immediately" - ON_SPECIFIC_DATE = "on_specific_date" - - def __str__(self): - return self.value - - class CancelOption(Enum): IMMEDIATELY = "immediately" END_OF_TERM = "end_of_term" @@ -122,15 +104,6 @@ def __str__(self): return self.value -class Category(Enum): - INTRODUCTORY = "introductory" - PROMOTIONAL = "promotional" - DEVELOPER_DETERMINED = "developer_determined" - - def __str__(self): - return self.value - - class ChangeOption(Enum): IMMEDIATELY = "immediately" END_OF_TERM = "end_of_term" @@ -185,15 +158,6 @@ def __str__(self): return self.value -class ChargebeeResponseSchemaType(Enum): - PLANS_ADDONS = "plans_addons" - ITEMS = "items" - COMPAT = "compat" - - def __str__(self): - return self.value - - class ChargesHandling(Enum): INVOICE_IMMEDIATELY = "invoice_immediately" ADD_TO_UNBILLED_CHARGES = "add_to_unbilled_charges" @@ -205,8 +169,6 @@ def __str__(self): class ContractTermCancelOption(Enum): TERMINATE_IMMEDIATELY = "terminate_immediately" END_OF_CONTRACT_TERM = "end_of_contract_term" - SPECIFIC_DATE = "specific_date" - END_OF_SUBSCRIPTION_BILLING_TERM = "end_of_subscription_billing_term" def __str__(self): return self.value @@ -262,15 +224,6 @@ def __str__(self): return self.value -class DiscountType(Enum): - FIXED_AMOUNT = "fixed_amount" - PERCENTAGE = "percentage" - PRICE = "price" - - def __str__(self): - return self.value - - class DispositionType(Enum): ATTACHMENT = "attachment" INLINE = "inline" @@ -382,17 +335,6 @@ class EntityType(Enum): OMNICHANNEL_SUBSCRIPTION = "omnichannel_subscription" OMNICHANNEL_SUBSCRIPTION_ITEM = "omnichannel_subscription_item" OMNICHANNEL_TRANSACTION = "omnichannel_transaction" - RECORDED_PURCHASE = "recorded_purchase" - OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_CHANGE = ( - "omnichannel_subscription_item_scheduled_change" - ) - SALES_ORDER = "sales_order" - OMNICHANNEL_ONE_TIME_ORDER = "omnichannel_one_time_order" - OMNICHANNEL_ONE_TIME_ORDER_ITEM = "omnichannel_one_time_order_item" - USAGE_FILE = "usage_file" - BUSINESS_RULE = "business_rule" - RULESET = "ruleset" - CHARGE = "charge" def __str__(self): return self.value @@ -482,13 +424,11 @@ class EventType(Enum): PAYMENT_SCHEDULE_SCHEME_DELETED = "payment_schedule_scheme_deleted" SUBSCRIPTION_RENEWAL_REMINDER = "subscription_renewal_reminder" ADD_USAGES_REMINDER = "add_usages_reminder" - PAYMENT_DUE_REMINDER = "payment_due_reminder" TRANSACTION_CREATED = "transaction_created" TRANSACTION_UPDATED = "transaction_updated" TRANSACTION_DELETED = "transaction_deleted" PAYMENT_SUCCEEDED = "payment_succeeded" PAYMENT_FAILED = "payment_failed" - DUNNING_UPDATED = "dunning_updated" PAYMENT_REFUNDED = "payment_refunded" PAYMENT_INITIATED = "payment_initiated" REFUND_INITIATED = "refund_initiated" @@ -572,7 +512,6 @@ class EventType(Enum): ITEM_ENTITLEMENTS_REMOVED = "item_entitlements_removed" ENTITLEMENT_OVERRIDES_AUTO_REMOVED = "entitlement_overrides_auto_removed" SUBSCRIPTION_ENTITLEMENTS_CREATED = "subscription_entitlements_created" - SUBSCRIPTION_ENTITLEMENTS_UPDATED = "subscription_entitlements_updated" BUSINESS_ENTITY_CREATED = "business_entity_created" BUSINESS_ENTITY_UPDATED = "business_entity_updated" BUSINESS_ENTITY_DELETED = "business_entity_deleted" @@ -598,6 +537,12 @@ class EventType(Enum): SUBSCRIPTION_MOVEMENT_FAILED = "subscription_movement_failed" OMNICHANNEL_SUBSCRIPTION_CREATED = "omnichannel_subscription_created" OMNICHANNEL_SUBSCRIPTION_ITEM_RENEWED = "omnichannel_subscription_item_renewed" + OMNICHANNEL_SUBSCRIPTION_ITEM_DOWNGRADE_SCHEDULED = ( + "omnichannel_subscription_item_downgrade_scheduled" + ) + OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_DOWNGRADE_REMOVED = ( + "omnichannel_subscription_item_scheduled_downgrade_removed" + ) OMNICHANNEL_SUBSCRIPTION_ITEM_DOWNGRADED = ( "omnichannel_subscription_item_downgraded" ) @@ -626,34 +571,6 @@ class EventType(Enum): OMNICHANNEL_SUBSCRIPTION_ITEM_DUNNING_EXPIRED = ( "omnichannel_subscription_item_dunning_expired" ) - RULE_CREATED = "rule_created" - RULE_UPDATED = "rule_updated" - RULE_DELETED = "rule_deleted" - RECORD_PURCHASE_FAILED = "record_purchase_failed" - OMNICHANNEL_SUBSCRIPTION_ITEM_CHANGE_SCHEDULED = ( - "omnichannel_subscription_item_change_scheduled" - ) - OMNICHANNEL_SUBSCRIPTION_ITEM_SCHEDULED_CHANGE_REMOVED = ( - "omnichannel_subscription_item_scheduled_change_removed" - ) - OMNICHANNEL_SUBSCRIPTION_ITEM_REACTIVATED = ( - "omnichannel_subscription_item_reactivated" - ) - SALES_ORDER_CREATED = "sales_order_created" - SALES_ORDER_UPDATED = "sales_order_updated" - OMNICHANNEL_SUBSCRIPTION_ITEM_CHANGED = "omnichannel_subscription_item_changed" - OMNICHANNEL_SUBSCRIPTION_ITEM_PAUSED = "omnichannel_subscription_item_paused" - OMNICHANNEL_SUBSCRIPTION_ITEM_RESUMED = "omnichannel_subscription_item_resumed" - OMNICHANNEL_ONE_TIME_ORDER_CREATED = "omnichannel_one_time_order_created" - OMNICHANNEL_ONE_TIME_ORDER_ITEM_CANCELLED = ( - "omnichannel_one_time_order_item_cancelled" - ) - USAGE_FILE_INGESTED = "usage_file_ingested" - OMNICHANNEL_SUBSCRIPTION_ITEM_PAUSE_SCHEDULED = ( - "omnichannel_subscription_item_pause_scheduled" - ) - OMNICHANNEL_SUBSCRIPTION_MOVED_IN = "omnichannel_subscription_moved_in" - OMNICHANNEL_TRANSACTION_CREATED = "omnichannel_transaction_created" PLAN_CREATED = "plan_created" PLAN_UPDATED = "plan_updated" PLAN_DELETED = "plan_deleted" @@ -665,14 +582,6 @@ def __str__(self): return self.value -class ExcludeTaxType(Enum): - EXCLUSIVE = "exclusive" - NONE = "none" - - def __str__(self): - return self.value - - class ExportType(Enum): DATA = "data" IMPORT_FRIENDLY_DATA = "import_friendly_data" @@ -703,7 +612,6 @@ def __str__(self): class Gateway(Enum): CHARGEBEE = "chargebee" CHARGEBEE_PAYMENTS = "chargebee_payments" - ADYEN = "adyen" STRIPE = "stripe" WEPAY = "wepay" BRAINTREE = "braintree" @@ -729,6 +637,7 @@ class Gateway(Enum): WIRECARD = "wirecard" AMAZON_PAYMENTS = "amazon_payments" PAYPAL_EXPRESS_CHECKOUT = "paypal_express_checkout" + ADYEN = "adyen" ORBITAL = "orbital" MONERIS_US = "moneris_us" MONERIS = "moneris" @@ -751,13 +660,6 @@ class Gateway(Enum): EBANX = "ebanx" DLOCAL = "dlocal" NUVEI = "nuvei" - SOLIDGATE = "solidgate" - PAYSTACK = "paystack" - JP_MORGAN = "jp_morgan" - DEUTSCHE_BANK = "deutsche_bank" - EZIDEBIT = "ezidebit" - TWIKEY = "twikey" - TEMPUS = "tempus" GOCARDLESS = "gocardless" NOT_APPLICABLE = "not_applicable" @@ -906,25 +808,6 @@ class PaymentMethod(Enum): AUTOMATED_BANK_TRANSFER = "automated_bank_transfer" KLARNA_PAY_NOW = "klarna_pay_now" ONLINE_BANKING_POLAND = "online_banking_poland" - PAYCONIQ_BY_BANCONTACT = "payconiq_by_bancontact" - ELECTRONIC_PAYMENT_STANDARD = "electronic_payment_standard" - KBC_PAYMENT_BUTTON = "kbc_payment_button" - PAY_BY_BANK = "pay_by_bank" - TRUSTLY = "trustly" - STABLECOIN = "stablecoin" - KAKAO_PAY = "kakao_pay" - NAVER_PAY = "naver_pay" - REVOLUT_PAY = "revolut_pay" - CASH_APP_PAY = "cash_app_pay" - - def __str__(self): - return self.value - - -class PaymentMethodSavePolicy(Enum): - ALWAYS = "always" - ASK = "ask" - NEVER = "never" def __str__(self): return self.value @@ -955,16 +838,6 @@ class PaymentMethodType(Enum): AUTOMATED_BANK_TRANSFER = "automated_bank_transfer" KLARNA_PAY_NOW = "klarna_pay_now" ONLINE_BANKING_POLAND = "online_banking_poland" - PAYCONIQ_BY_BANCONTACT = "payconiq_by_bancontact" - ELECTRONIC_PAYMENT_STANDARD = "electronic_payment_standard" - KBC_PAYMENT_BUTTON = "kbc_payment_button" - PAY_BY_BANK = "pay_by_bank" - TRUSTLY = "trustly" - STABLECOIN = "stablecoin" - KAKAO_PAY = "kakao_pay" - NAVER_PAY = "naver_pay" - REVOLUT_PAY = "revolut_pay" - CASH_APP_PAY = "cash_app_pay" def __str__(self): return self.value @@ -1006,15 +879,6 @@ def __str__(self): return self.value -class PricingType(Enum): - PER_UNIT = "per_unit" - FLAT_FEE = "flat_fee" - PACKAGE = "package" - - def __str__(self): - return self.value - - class ProductCatalogVersion(Enum): V1 = "v1" V2 = "v2" @@ -1077,15 +941,6 @@ def __str__(self): return self.value -class RetryEngine(Enum): - CHARGEBEE = "chargebee" - FLEXPAY = "flexpay" - SUCCESSPLUS = "successplus" - - def __str__(self): - return self.value - - class Role(Enum): PRIMARY = "primary" BACKUP = "backup" @@ -1212,19 +1067,6 @@ class Type(Enum): AUTOMATED_BANK_TRANSFER = "automated_bank_transfer" KLARNA_PAY_NOW = "klarna_pay_now" ONLINE_BANKING_POLAND = "online_banking_poland" - PAYCONIQ_BY_BANCONTACT = "payconiq_by_bancontact" - ELECTRONIC_PAYMENT_STANDARD = "electronic_payment_standard" - KBC_PAYMENT_BUTTON = "kbc_payment_button" - PAY_BY_BANK = "pay_by_bank" - TRUSTLY = "trustly" - STABLECOIN = "stablecoin" - KAKAO_PAY = "kakao_pay" - NAVER_PAY = "naver_pay" - REVOLUT_PAY = "revolut_pay" - CASH_APP_PAY = "cash_app_pay" - FREE_TRIAL = "free_trial" - PAY_UP_FRONT = "pay_up_front" - PAY_AS_YOU_GO = "pay_as_you_go" def __str__(self): return self.value @@ -1277,14 +1119,3 @@ class VoucherType(Enum): def __str__(self): return self.value - - -class WindowSize(Enum): - MONTH = "month" - WEEK = "week" - DAY = "day" - HOUR = "hour" - MINUTE = "minute" - - def __str__(self): - return self.value diff --git a/chargebee/models/estimate/operations.py b/chargebee/models/estimate/operations.py index 219c681..27a2165 100644 --- a/chargebee/models/estimate/operations.py +++ b/chargebee/models/estimate/operations.py @@ -16,6 +16,7 @@ @dataclass class Estimate: + env: environment.Environment class PaymentScheduleEstimateEntityType(Enum): @@ -118,7 +119,6 @@ class CreateSubItemEstimateSubscriptionParams(TypedDict): setup_fee: NotRequired[int] start_date: NotRequired[int] coupon: NotRequired[str] - offline_payment_method: NotRequired[enums.OfflinePaymentMethod] free_period: NotRequired[int] free_period_unit: NotRequired[enums.FreePeriodUnit] contract_term_billing_cycle_on_renewal: NotRequired[int] @@ -139,7 +139,7 @@ class CreateSubItemEstimateSubscriptionItemParams(TypedDict): charge_on_option: NotRequired[enums.ChargeOnOption] class CreateSubItemEstimateDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -147,7 +147,6 @@ class CreateSubItemEstimateDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] class CreateSubItemEstimateItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -157,8 +156,6 @@ class CreateSubItemEstimateItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateSubItemEstimateBillingAddressParams(TypedDict): line1: NotRequired[str] @@ -255,7 +252,6 @@ class CreateSubItemForCustomerEstimateSubscriptionParams(TypedDict): trial_end: NotRequired[int] setup_fee: NotRequired[int] start_date: NotRequired[int] - offline_payment_method: NotRequired[enums.OfflinePaymentMethod] free_period: NotRequired[int] free_period_unit: NotRequired[enums.FreePeriodUnit] contract_term_billing_cycle_on_renewal: NotRequired[int] @@ -276,7 +272,7 @@ class CreateSubItemForCustomerEstimateSubscriptionItemParams(TypedDict): charge_on_option: NotRequired[enums.ChargeOnOption] class CreateSubItemForCustomerEstimateDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -284,7 +280,6 @@ class CreateSubItemForCustomerEstimateDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] class CreateSubItemForCustomerEstimateItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -294,8 +289,6 @@ class CreateSubItemForCustomerEstimateItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateSubItemForCustomerEstimateShippingAddressParams(TypedDict): line1: NotRequired[str] @@ -322,10 +315,6 @@ class CreateSubItemForCustomerEstimateContractTermParams(TypedDict): contract_start: NotRequired[int] cancellation_cutoff_period: NotRequired[int] - class CreateSubItemForCustomerEstimateBillingOverrideParams(TypedDict): - max_excess_payment_usage: NotRequired[int] - max_refundable_credits_usage: NotRequired[int] - class UpdateSubscriptionSubscriptionParams(TypedDict): id: Required[str] plan_id: NotRequired[str] @@ -418,7 +407,7 @@ class UpdateSubscriptionForItemsSubscriptionItemParams(TypedDict): proration_type: NotRequired[enums.ProrationType] class UpdateSubscriptionForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -426,7 +415,6 @@ class UpdateSubscriptionForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] operation_type: Required[enums.OperationType] id: NotRequired[str] @@ -438,8 +426,6 @@ class UpdateSubscriptionForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class UpdateSubscriptionForItemsBillingAddressParams(TypedDict): line1: NotRequired[str] @@ -467,10 +453,6 @@ class UpdateSubscriptionForItemsCustomerParams(TypedDict): registered_for_gst: NotRequired[bool] taxability: NotRequired[enums.Taxability] - class UpdateSubscriptionForItemsBillingOverrideParams(TypedDict): - max_excess_payment_usage: NotRequired[int] - max_refundable_credits_usage: NotRequired[int] - class AdvanceInvoiceEstimateSpecificDatesScheduleParams(TypedDict): terms_to_charge: NotRequired[int] date: NotRequired[int] @@ -607,17 +589,6 @@ class GiftSubscriptionForItemsSubscriptionItemParams(TypedDict): item_price_id: NotRequired[str] quantity: NotRequired[int] quantity_in_decimal: NotRequired[str] - unit_price: NotRequired[int] - unit_price_in_decimal: NotRequired[str] - - class GiftSubscriptionForItemsItemTierParams(TypedDict): - item_price_id: NotRequired[str] - starting_unit: NotRequired[int] - ending_unit: NotRequired[int] - price: NotRequired[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - price_in_decimal: NotRequired[str] class CreateInvoiceInvoiceParams(TypedDict): customer_id: NotRequired[str] @@ -695,8 +666,6 @@ class CreateInvoiceForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateInvoiceForItemsChargeParams(TypedDict): amount: NotRequired[int] @@ -720,7 +689,6 @@ class CreateInvoiceForItemsNotesToRemoveParams(TypedDict): class CreateInvoiceForItemsDiscountParams(TypedDict): percentage: NotRequired[float] amount: NotRequired[int] - quantity: NotRequired[int] apply_on: Required[enums.ApplyOn] item_price_id: NotRequired[str] @@ -745,16 +713,6 @@ class CreateInvoiceForItemsTaxProvidersFieldParams(TypedDict): field_id: NotRequired[str] field_value: NotRequired[str] - class CreateInvoiceForItemsBillingAddressParams(TypedDict): - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - zip: NotRequired[str] - country: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - class CreateSubscriptionParams(TypedDict): subscription: Required["Estimate.CreateSubscriptionSubscriptionParams"] billing_cycles: NotRequired[int] @@ -859,9 +817,6 @@ class CreateSubItemForCustomerEstimateParams(TypedDict): contract_term: NotRequired[ "Estimate.CreateSubItemForCustomerEstimateContractTermParams" ] - billing_override: NotRequired[ - "Estimate.CreateSubItemForCustomerEstimateBillingOverrideParams" - ] class UpdateSubscriptionParams(TypedDict): subscription: Required["Estimate.UpdateSubscriptionSubscriptionParams"] @@ -928,16 +883,12 @@ class UpdateSubscriptionForItemsParams(TypedDict): customer: NotRequired["Estimate.UpdateSubscriptionForItemsCustomerParams"] invoice_immediately: NotRequired[bool] invoice_usages: NotRequired[bool] - billing_override: NotRequired[ - "Estimate.UpdateSubscriptionForItemsBillingOverrideParams" - ] class RenewalEstimateParams(TypedDict): include_delayed_charges: NotRequired[bool] use_existing_balances: NotRequired[bool] ignore_scheduled_cancellation: NotRequired[bool] ignore_scheduled_changes: NotRequired[bool] - exclude_tax_type: NotRequired[enums.ExcludeTaxType] class AdvanceInvoiceEstimateParams(TypedDict): terms_to_charge: NotRequired[int] @@ -1029,7 +980,6 @@ class GiftSubscriptionForItemsParams(TypedDict): subscription_items: NotRequired[ List["Estimate.GiftSubscriptionForItemsSubscriptionItemParams"] ] - item_tiers: NotRequired[List["Estimate.GiftSubscriptionForItemsItemTierParams"]] class CreateInvoiceParams(TypedDict): invoice: NotRequired["Estimate.CreateInvoiceInvoiceParams"] @@ -1074,9 +1024,6 @@ class CreateInvoiceForItemsParams(TypedDict): List["Estimate.CreateInvoiceForItemsTaxProvidersFieldParams"] ] invoice_date: NotRequired[int] - billing_address: NotRequired[ - "Estimate.CreateInvoiceForItemsBillingAddressParams" - ] class PaymentSchedulesParams(TypedDict): scheme_id: Required[str] @@ -1087,10 +1034,6 @@ class PaymentSchedulesParams(TypedDict): def create_subscription( self, params: CreateSubscriptionParams, headers=None ) -> CreateSubscriptionResponse: - jsonKeys = { - "exemption_details": 1, - } - options = {} return request.send( "post", request.uri_path("estimates", "create_subscription"), @@ -1098,19 +1041,11 @@ def create_subscription( cast(Dict[Any, Any], params), headers, CreateSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def create_sub_item_estimate( self, params: CreateSubItemEstimateParams, headers=None ) -> CreateSubItemEstimateResponse: - jsonKeys = { - "exemption_details": 1, - } - options = {} return request.send( "post", request.uri_path("estimates", "create_subscription_for_items"), @@ -1118,17 +1053,11 @@ def create_sub_item_estimate( cast(Dict[Any, Any], params), headers, CreateSubItemEstimateResponse, - None, - False, - jsonKeys, - options, ) def create_sub_for_customer_estimate( self, id, params: CreateSubForCustomerEstimateParams, headers=None ) -> CreateSubForCustomerEstimateResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "create_subscription_estimate"), @@ -1136,17 +1065,11 @@ def create_sub_for_customer_estimate( cast(Dict[Any, Any], params), headers, CreateSubForCustomerEstimateResponse, - None, - False, - jsonKeys, - options, ) def create_sub_item_for_customer_estimate( self, id, params: CreateSubItemForCustomerEstimateParams, headers=None ) -> CreateSubItemForCustomerEstimateResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("customers", id, "create_subscription_for_items_estimate"), @@ -1154,17 +1077,11 @@ def create_sub_item_for_customer_estimate( cast(Dict[Any, Any], params), headers, CreateSubItemForCustomerEstimateResponse, - None, - False, - jsonKeys, - options, ) def update_subscription( self, params: UpdateSubscriptionParams, headers=None ) -> UpdateSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("estimates", "update_subscription"), @@ -1172,17 +1089,11 @@ def update_subscription( cast(Dict[Any, Any], params), headers, UpdateSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def update_subscription_for_items( self, params: UpdateSubscriptionForItemsParams, headers=None ) -> UpdateSubscriptionForItemsResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("estimates", "update_subscription_for_items"), @@ -1190,17 +1101,11 @@ def update_subscription_for_items( cast(Dict[Any, Any], params), headers, UpdateSubscriptionForItemsResponse, - None, - False, - jsonKeys, - options, ) def renewal_estimate( self, id, params: RenewalEstimateParams = None, headers=None ) -> RenewalEstimateResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "renewal_estimate"), @@ -1208,17 +1113,11 @@ def renewal_estimate( cast(Dict[Any, Any], params), headers, RenewalEstimateResponse, - None, - False, - jsonKeys, - options, ) def advance_invoice_estimate( self, id, params: AdvanceInvoiceEstimateParams = None, headers=None ) -> AdvanceInvoiceEstimateResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("subscriptions", id, "advance_invoice_estimate"), @@ -1226,17 +1125,11 @@ def advance_invoice_estimate( cast(Dict[Any, Any], params), headers, AdvanceInvoiceEstimateResponse, - None, - False, - jsonKeys, - options, ) def regenerate_invoice_estimate( self, id, params: RegenerateInvoiceEstimateParams = None, headers=None ) -> RegenerateInvoiceEstimateResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("subscriptions", id, "regenerate_invoice_estimate"), @@ -1244,17 +1137,11 @@ def regenerate_invoice_estimate( cast(Dict[Any, Any], params), headers, RegenerateInvoiceEstimateResponse, - None, - False, - jsonKeys, - options, ) def upcoming_invoices_estimate( self, id, headers=None ) -> UpcomingInvoicesEstimateResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "upcoming_invoices_estimate"), @@ -1262,17 +1149,11 @@ def upcoming_invoices_estimate( None, headers, UpcomingInvoicesEstimateResponse, - None, - False, - jsonKeys, - options, ) def change_term_end( self, id, params: ChangeTermEndParams, headers=None ) -> ChangeTermEndResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("subscriptions", id, "change_term_end_estimate"), @@ -1280,17 +1161,11 @@ def change_term_end( cast(Dict[Any, Any], params), headers, ChangeTermEndResponse, - None, - False, - jsonKeys, - options, ) def cancel_subscription( self, id, params: CancelSubscriptionParams = None, headers=None ) -> CancelSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("subscriptions", id, "cancel_subscription_estimate"), @@ -1298,17 +1173,11 @@ def cancel_subscription( cast(Dict[Any, Any], params), headers, CancelSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def cancel_subscription_for_items( self, id, params: CancelSubscriptionForItemsParams = None, headers=None ) -> CancelSubscriptionForItemsResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path( @@ -1318,17 +1187,11 @@ def cancel_subscription_for_items( cast(Dict[Any, Any], params), headers, CancelSubscriptionForItemsResponse, - None, - False, - jsonKeys, - options, ) def pause_subscription( self, id, params: PauseSubscriptionParams = None, headers=None ) -> PauseSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("subscriptions", id, "pause_subscription_estimate"), @@ -1336,17 +1199,11 @@ def pause_subscription( cast(Dict[Any, Any], params), headers, PauseSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def resume_subscription( self, id, params: ResumeSubscriptionParams = None, headers=None ) -> ResumeSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("subscriptions", id, "resume_subscription_estimate"), @@ -1354,19 +1211,11 @@ def resume_subscription( cast(Dict[Any, Any], params), headers, ResumeSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def gift_subscription( self, params: GiftSubscriptionParams, headers=None ) -> GiftSubscriptionResponse: - jsonKeys = { - "additional_information": 1, - } - options = {} return request.send( "post", request.uri_path("estimates", "gift_subscription"), @@ -1374,19 +1223,11 @@ def gift_subscription( cast(Dict[Any, Any], params), headers, GiftSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def gift_subscription_for_items( self, params: GiftSubscriptionForItemsParams, headers=None ) -> GiftSubscriptionForItemsResponse: - jsonKeys = { - "additional_information": 1, - } - options = {} return request.send( "post", request.uri_path("estimates", "gift_subscription_for_items"), @@ -1394,17 +1235,11 @@ def gift_subscription_for_items( cast(Dict[Any, Any], params), headers, GiftSubscriptionForItemsResponse, - None, - False, - jsonKeys, - options, ) def create_invoice( self, params: CreateInvoiceParams = None, headers=None ) -> CreateInvoiceResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("estimates", "create_invoice"), @@ -1412,17 +1247,11 @@ def create_invoice( cast(Dict[Any, Any], params), headers, CreateInvoiceResponse, - None, - False, - jsonKeys, - options, ) def create_invoice_for_items( self, params: CreateInvoiceForItemsParams, headers=None ) -> CreateInvoiceForItemsResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("estimates", "create_invoice_for_items"), @@ -1430,19 +1259,11 @@ def create_invoice_for_items( cast(Dict[Any, Any], params), headers, CreateInvoiceForItemsResponse, - None, - False, - jsonKeys, - options, ) def payment_schedules( self, params: PaymentSchedulesParams, headers=None ) -> PaymentSchedulesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("estimates", "payment_schedules"), @@ -1450,8 +1271,4 @@ def payment_schedules( cast(Dict[Any, Any], params), headers, PaymentSchedulesResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/estimate/responses.py b/chargebee/models/estimate/responses.py index d7e0337..a54f4a1 100644 --- a/chargebee/models/estimate/responses.py +++ b/chargebee/models/estimate/responses.py @@ -35,116 +35,119 @@ class EstimateResponse(Model): @dataclass class CreateSubscriptionResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class CreateSubItemEstimateResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass -class CreateSubForCustomerEstimateResponse(Response): +class CreateSubForCustomerEstimateResponse: estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class CreateSubItemForCustomerEstimateResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class UpdateSubscriptionResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class UpdateSubscriptionForItemsResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass -class RenewalEstimateResponse(Response): +class RenewalEstimateResponse: estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class AdvanceInvoiceEstimateResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class RegenerateInvoiceEstimateResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass -class UpcomingInvoicesEstimateResponse(Response): +class UpcomingInvoicesEstimateResponse: estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class ChangeTermEndResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class CancelSubscriptionResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class CancelSubscriptionForItemsResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class PauseSubscriptionResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class ResumeSubscriptionResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class GiftSubscriptionResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class GiftSubscriptionForItemsResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class CreateInvoiceResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class CreateInvoiceForItemsResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None @dataclass class PaymentSchedulesResponse(Response): - is_idempotency_replayed: bool estimate: EstimateResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/event/operations.py b/chargebee/models/event/operations.py index c5c2e35..bd2478f 100644 --- a/chargebee/models/event/operations.py +++ b/chargebee/models/event/operations.py @@ -9,6 +9,7 @@ @dataclass class Event: + env: environment.Environment class WebhookStatus(Enum): @@ -75,8 +76,6 @@ class ListParams(TypedDict): sort_by: NotRequired[Filters.SortFilter] def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("events"), @@ -84,15 +83,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("events", id), @@ -100,8 +93,4 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/event/responses.py b/chargebee/models/event/responses.py index 704c117..1047ba5 100644 --- a/chargebee/models/event/responses.py +++ b/chargebee/models/event/responses.py @@ -1,12 +1,10 @@ from dataclasses import dataclass from chargebee.model import Model from typing import Dict, List, Any -from chargebee.response import Response @dataclass class WebhookResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None webhook_status: str = None @@ -33,11 +31,13 @@ class ListEventResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListEventResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: event: EventResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/export/operations.py b/chargebee/models/export/operations.py index 5263828..4d79f25 100644 --- a/chargebee/models/export/operations.py +++ b/chargebee/models/export/operations.py @@ -8,6 +8,7 @@ @dataclass class Export: + env: environment.Environment class MimeType(Enum): @@ -402,7 +403,6 @@ class AddonsParams(TypedDict): class CouponsParams(TypedDict): coupon: NotRequired["Export.CouponsCouponParams"] currency_code: NotRequired[Filters.StringFilter] - applicable_item_price_ids: NotRequired[Filters.StringFilter] class CustomersParams(TypedDict): customer: NotRequired["Export.CustomersCustomerParams"] @@ -465,8 +465,6 @@ class PriceVariantsParams(TypedDict): include_site_level_resources: NotRequired[Filters.BooleanFilter] def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("exports", id), @@ -474,19 +472,11 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def revenue_recognition( self, params: RevenueRecognitionParams, headers=None ) -> RevenueRecognitionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "revenue_recognition"), @@ -494,19 +484,11 @@ def revenue_recognition( cast(Dict[Any, Any], params), headers, RevenueRecognitionResponse, - None, - False, - jsonKeys, - options, ) def deferred_revenue( self, params: DeferredRevenueParams, headers=None ) -> DeferredRevenueResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "deferred_revenue"), @@ -514,17 +496,9 @@ def deferred_revenue( cast(Dict[Any, Any], params), headers, DeferredRevenueResponse, - None, - False, - jsonKeys, - options, ) def plans(self, params: PlansParams = None, headers=None) -> PlansResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "plans"), @@ -532,17 +506,9 @@ def plans(self, params: PlansParams = None, headers=None) -> PlansResponse: cast(Dict[Any, Any], params), headers, PlansResponse, - None, - False, - jsonKeys, - options, ) def addons(self, params: AddonsParams = None, headers=None) -> AddonsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "addons"), @@ -550,17 +516,9 @@ def addons(self, params: AddonsParams = None, headers=None) -> AddonsResponse: cast(Dict[Any, Any], params), headers, AddonsResponse, - None, - False, - jsonKeys, - options, ) def coupons(self, params: CouponsParams = None, headers=None) -> CouponsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "coupons"), @@ -568,19 +526,11 @@ def coupons(self, params: CouponsParams = None, headers=None) -> CouponsResponse cast(Dict[Any, Any], params), headers, CouponsResponse, - None, - False, - jsonKeys, - options, ) def customers( self, params: CustomersParams = None, headers=None ) -> CustomersResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "customers"), @@ -588,19 +538,11 @@ def customers( cast(Dict[Any, Any], params), headers, CustomersResponse, - None, - False, - jsonKeys, - options, ) def subscriptions( self, params: SubscriptionsParams = None, headers=None ) -> SubscriptionsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "subscriptions"), @@ -608,17 +550,9 @@ def subscriptions( cast(Dict[Any, Any], params), headers, SubscriptionsResponse, - None, - False, - jsonKeys, - options, ) def invoices(self, params: InvoicesParams = None, headers=None) -> InvoicesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "invoices"), @@ -626,19 +560,11 @@ def invoices(self, params: InvoicesParams = None, headers=None) -> InvoicesRespo cast(Dict[Any, Any], params), headers, InvoicesResponse, - None, - False, - jsonKeys, - options, ) def credit_notes( self, params: CreditNotesParams = None, headers=None ) -> CreditNotesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "credit_notes"), @@ -646,19 +572,11 @@ def credit_notes( cast(Dict[Any, Any], params), headers, CreditNotesResponse, - None, - False, - jsonKeys, - options, ) def transactions( self, params: TransactionsParams = None, headers=None ) -> TransactionsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "transactions"), @@ -666,17 +584,9 @@ def transactions( cast(Dict[Any, Any], params), headers, TransactionsResponse, - None, - False, - jsonKeys, - options, ) def orders(self, params: OrdersParams = None, headers=None) -> OrdersResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "orders"), @@ -684,19 +594,11 @@ def orders(self, params: OrdersParams = None, headers=None) -> OrdersResponse: cast(Dict[Any, Any], params), headers, OrdersResponse, - None, - False, - jsonKeys, - options, ) def item_families( self, params: ItemFamiliesParams = None, headers=None ) -> ItemFamiliesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "item_families"), @@ -704,17 +606,9 @@ def item_families( cast(Dict[Any, Any], params), headers, ItemFamiliesResponse, - None, - False, - jsonKeys, - options, ) def items(self, params: ItemsParams = None, headers=None) -> ItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "items"), @@ -722,19 +616,11 @@ def items(self, params: ItemsParams = None, headers=None) -> ItemsResponse: cast(Dict[Any, Any], params), headers, ItemsResponse, - None, - False, - jsonKeys, - options, ) def item_prices( self, params: ItemPricesParams = None, headers=None ) -> ItemPricesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "item_prices"), @@ -742,19 +628,11 @@ def item_prices( cast(Dict[Any, Any], params), headers, ItemPricesResponse, - None, - False, - jsonKeys, - options, ) def attached_items( self, params: AttachedItemsParams = None, headers=None ) -> AttachedItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "attached_items"), @@ -762,19 +640,11 @@ def attached_items( cast(Dict[Any, Any], params), headers, AttachedItemsResponse, - None, - False, - jsonKeys, - options, ) def differential_prices( self, params: DifferentialPricesParams = None, headers=None ) -> DifferentialPricesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "differential_prices"), @@ -782,19 +652,11 @@ def differential_prices( cast(Dict[Any, Any], params), headers, DifferentialPricesResponse, - None, - False, - jsonKeys, - options, ) def price_variants( self, params: PriceVariantsParams = None, headers=None ) -> PriceVariantsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("exports", "price_variants"), @@ -802,8 +664,4 @@ def price_variants( cast(Dict[Any, Any], params), headers, PriceVariantsResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/export/responses.py b/chargebee/models/export/responses.py index 1571eca..72ec576 100644 --- a/chargebee/models/export/responses.py +++ b/chargebee/models/export/responses.py @@ -6,7 +6,6 @@ @dataclass class DownloadResponse(Model): - raw_data: Dict[Any, Any] = None download_url: str = None valid_till: int = None mime_type: str = None @@ -24,107 +23,108 @@ class ExportResponse(Model): @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: export: ExportResponse + headers: Dict[str, str] = None @dataclass class RevenueRecognitionResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class DeferredRevenueResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class PlansResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class AddonsResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class CouponsResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class CustomersResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class SubscriptionsResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class InvoicesResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class CreditNotesResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class TransactionsResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class OrdersResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class ItemFamiliesResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class ItemsResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class ItemPricesResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class AttachedItemsResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class DifferentialPricesResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None @dataclass class PriceVariantsResponse(Response): - is_idempotency_replayed: bool export: ExportResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/feature/operations.py b/chargebee/models/feature/operations.py index 0d0e88b..484d2af 100644 --- a/chargebee/models/feature/operations.py +++ b/chargebee/models/feature/operations.py @@ -7,6 +7,7 @@ @dataclass class Feature: + env: environment.Environment class Status(Enum): @@ -67,8 +68,6 @@ class UpdateParams(TypedDict): levels: NotRequired[List["Feature.UpdateLevelParams"]] def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("features"), @@ -76,17 +75,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("features"), @@ -94,17 +85,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("features", id), @@ -112,15 +95,9 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("features", id), @@ -128,17 +105,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("features", id, "delete"), @@ -146,17 +115,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def activate(self, id, headers=None) -> ActivateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("features", id, "activate_command"), @@ -164,17 +125,9 @@ def activate(self, id, headers=None) -> ActivateResponse: None, headers, ActivateResponse, - None, - False, - jsonKeys, - options, ) def archive(self, id, headers=None) -> ArchiveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("features", id, "archive_command"), @@ -182,17 +135,9 @@ def archive(self, id, headers=None) -> ArchiveResponse: None, headers, ArchiveResponse, - None, - False, - jsonKeys, - options, ) def reactivate(self, id, headers=None) -> ReactivateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("features", id, "reactivate_command"), @@ -200,8 +145,4 @@ def reactivate(self, id, headers=None) -> ReactivateResponse: None, headers, ReactivateResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/feature/responses.py b/chargebee/models/feature/responses.py index c88a26a..522c74c 100644 --- a/chargebee/models/feature/responses.py +++ b/chargebee/models/feature/responses.py @@ -6,7 +6,6 @@ @dataclass class LevelResponse(Model): - raw_data: Dict[Any, Any] = None name: str = None value: str = None level: int = None @@ -34,47 +33,49 @@ class ListFeatureResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListFeatureResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool feature: FeatureResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool feature: FeatureResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: feature: FeatureResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool feature: FeatureResponse + headers: Dict[str, str] = None @dataclass class ActivateResponse(Response): - is_idempotency_replayed: bool feature: FeatureResponse + headers: Dict[str, str] = None @dataclass class ArchiveResponse(Response): - is_idempotency_replayed: bool feature: FeatureResponse + headers: Dict[str, str] = None @dataclass class ReactivateResponse(Response): - is_idempotency_replayed: bool feature: FeatureResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/gateway_error_detail/operations.py b/chargebee/models/gateway_error_detail/operations.py index 50afed5..19370ac 100644 --- a/chargebee/models/gateway_error_detail/operations.py +++ b/chargebee/models/gateway_error_detail/operations.py @@ -5,6 +5,7 @@ @dataclass class GatewayErrorDetail: + env: environment.Environment pass diff --git a/chargebee/models/gateway_error_detail/responses.py b/chargebee/models/gateway_error_detail/responses.py index c7ee593..beae84c 100644 --- a/chargebee/models/gateway_error_detail/responses.py +++ b/chargebee/models/gateway_error_detail/responses.py @@ -20,4 +20,3 @@ class GatewayErrorDetailResponse(Model): processor_error_code: str = None processor_error_message: str = None error_cause_id: str = None - processor_advice_code: str = None diff --git a/chargebee/models/gift/operations.py b/chargebee/models/gift/operations.py index 76ded5b..c0371c4 100644 --- a/chargebee/models/gift/operations.py +++ b/chargebee/models/gift/operations.py @@ -8,6 +8,7 @@ @dataclass class Gift: + env: environment.Environment class Status(Enum): @@ -129,17 +130,6 @@ class CreateForItemsSubscriptionItemParams(TypedDict): item_price_id: NotRequired[str] quantity: NotRequired[int] quantity_in_decimal: NotRequired[str] - unit_price: NotRequired[int] - unit_price_in_decimal: NotRequired[str] - - class CreateForItemsItemTierParams(TypedDict): - item_price_id: NotRequired[str] - starting_unit: NotRequired[int] - ending_unit: NotRequired[int] - price: NotRequired[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - price_in_decimal: NotRequired[str] class ListGiftReceiverParams(TypedDict): email: NotRequired[Filters.StringFilter] @@ -174,8 +164,6 @@ class CreateForItemsParams(TypedDict): subscription_items: NotRequired[ List["Gift.CreateForItemsSubscriptionItemParams"] ] - meta_data: NotRequired[Dict[Any, Any]] - item_tiers: NotRequired[List["Gift.CreateForItemsItemTierParams"]] class ListParams(TypedDict): limit: NotRequired[int] @@ -189,12 +177,6 @@ class UpdateGiftParams(TypedDict): comment: NotRequired[str] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("gifts"), @@ -202,22 +184,11 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def create_for_items( self, params: CreateForItemsParams, headers=None ) -> CreateForItemsResponse: - jsonKeys = { - "meta_data": 0, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("gifts", "create_for_items"), @@ -225,15 +196,9 @@ def create_for_items( cast(Dict[Any, Any], params), headers, CreateForItemsResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("gifts", id), @@ -241,15 +206,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("gifts"), @@ -257,17 +216,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def claim(self, id, headers=None) -> ClaimResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("gifts", id, "claim"), @@ -275,17 +226,9 @@ def claim(self, id, headers=None) -> ClaimResponse: None, headers, ClaimResponse, - None, - False, - jsonKeys, - options, ) def cancel(self, id, headers=None) -> CancelResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("gifts", id, "cancel"), @@ -293,19 +236,11 @@ def cancel(self, id, headers=None) -> CancelResponse: None, headers, CancelResponse, - None, - False, - jsonKeys, - options, ) def update_gift( self, id, params: UpdateGiftParams, headers=None ) -> UpdateGiftResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("gifts", id, "update_gift"), @@ -313,8 +248,4 @@ def update_gift( cast(Dict[Any, Any], params), headers, UpdateGiftResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/gift/responses.py b/chargebee/models/gift/responses.py index 4c83997..13b55dd 100644 --- a/chargebee/models/gift/responses.py +++ b/chargebee/models/gift/responses.py @@ -7,7 +7,6 @@ @dataclass class GifterResponse(Model): - raw_data: Dict[Any, Any] = None customer_id: str = None invoice_id: str = None signature: str = None @@ -16,7 +15,6 @@ class GifterResponse(Model): @dataclass class GiftReceiverResponse(Model): - raw_data: Dict[Any, Any] = None customer_id: str = None subscription_id: str = None first_name: str = None @@ -26,7 +24,6 @@ class GiftReceiverResponse(Model): @dataclass class GiftTimelineResponse(Model): - raw_data: Dict[Any, Any] = None status: str = None occurred_at: int = None @@ -49,24 +46,25 @@ class GiftResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool gift: GiftResponse subscription: "subscription.SubscriptionResponse" invoice: "invoice.InvoiceResponse" = None + headers: Dict[str, str] = None @dataclass class CreateForItemsResponse(Response): - is_idempotency_replayed: bool gift: GiftResponse subscription: "subscription.SubscriptionResponse" invoice: "invoice.InvoiceResponse" = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: gift: GiftResponse subscription: "subscription.SubscriptionResponse" + headers: Dict[str, str] = None @dataclass @@ -76,27 +74,28 @@ class ListGiftResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListGiftResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class ClaimResponse(Response): - is_idempotency_replayed: bool gift: GiftResponse subscription: "subscription.SubscriptionResponse" + headers: Dict[str, str] = None @dataclass class CancelResponse(Response): - is_idempotency_replayed: bool gift: GiftResponse subscription: "subscription.SubscriptionResponse" + headers: Dict[str, str] = None @dataclass class UpdateGiftResponse(Response): - is_idempotency_replayed: bool gift: GiftResponse subscription: "subscription.SubscriptionResponse" + headers: Dict[str, str] = None diff --git a/chargebee/models/hierarchy/operations.py b/chargebee/models/hierarchy/operations.py index 851bb0d..84f2904 100644 --- a/chargebee/models/hierarchy/operations.py +++ b/chargebee/models/hierarchy/operations.py @@ -5,6 +5,7 @@ @dataclass class Hierarchy: + env: environment.Environment pass diff --git a/chargebee/models/hierarchy/responses.py b/chargebee/models/hierarchy/responses.py index 5cb24b9..8313167 100644 --- a/chargebee/models/hierarchy/responses.py +++ b/chargebee/models/hierarchy/responses.py @@ -10,5 +10,4 @@ class HierarchyResponse(Model): parent_id: str = None payment_owner_id: str = None invoice_owner_id: str = None - has_children: bool = None children_ids: List[str] = None diff --git a/chargebee/models/hosted_page/operations.py b/chargebee/models/hosted_page/operations.py index 5343590..a54642e 100644 --- a/chargebee/models/hosted_page/operations.py +++ b/chargebee/models/hosted_page/operations.py @@ -8,6 +8,7 @@ @dataclass class HostedPage: + env: environment.Environment class Type(Enum): @@ -20,7 +21,6 @@ class Type(Enum): CHECKOUT_ONE_TIME = "checkout_one_time" PRE_CANCEL = "pre_cancel" VIEW_VOUCHER = "view_voucher" - ACCEPT_QUOTE = "accept_quote" CHECKOUT_GIFT = "checkout_gift" CLAIM_GIFT = "claim_gift" @@ -243,8 +243,6 @@ class CheckoutOneTimeForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CheckoutOneTimeForItemsChargeParams(TypedDict): amount: NotRequired[int] @@ -264,7 +262,6 @@ class CheckoutOneTimeForItemsChargeParams(TypedDict): class CheckoutOneTimeForItemsDiscountParams(TypedDict): percentage: NotRequired[float] amount: NotRequired[int] - quantity: NotRequired[int] apply_on: Required[enums.ApplyOn] item_price_id: NotRequired[str] @@ -321,7 +318,6 @@ class CheckoutNewForItemsSubscriptionParams(TypedDict): start_date: NotRequired[int] coupon: NotRequired[str] auto_collection: NotRequired[enums.AutoCollection] - offline_payment_method: NotRequired[enums.OfflinePaymentMethod] invoice_notes: NotRequired[str] po_number: NotRequired[str] contract_term_billing_cycle_on_renewal: NotRequired[int] @@ -357,7 +353,7 @@ class CheckoutNewForItemsSubscriptionItemParams(TypedDict): charge_on_option: NotRequired[enums.ChargeOnOption] class CheckoutNewForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -365,7 +361,6 @@ class CheckoutNewForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] class CheckoutNewForItemsItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -375,8 +370,6 @@ class CheckoutNewForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CheckoutNewForItemsCardParams(TypedDict): gateway: NotRequired[enums.Gateway] @@ -498,7 +491,7 @@ class CheckoutExistingForItemsSubscriptionItemParams(TypedDict): item_type: NotRequired[enums.ItemType] class CheckoutExistingForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -506,7 +499,6 @@ class CheckoutExistingForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] operation_type: Required[enums.OperationType] id: NotRequired[str] @@ -518,8 +510,6 @@ class CheckoutExistingForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CheckoutExistingForItemsCustomerParams(TypedDict): vat_number: NotRequired[str] @@ -602,17 +592,6 @@ class CheckoutGiftForItemsSubscriptionItemParams(TypedDict): item_price_id: NotRequired[str] quantity: NotRequired[int] quantity_in_decimal: NotRequired[str] - unit_price: NotRequired[int] - unit_price_in_decimal: NotRequired[str] - - class CheckoutGiftForItemsItemTierParams(TypedDict): - item_price_id: NotRequired[str] - starting_unit: NotRequired[int] - ending_unit: NotRequired[int] - price: NotRequired[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - price_in_decimal: NotRequired[str] class ClaimGiftGiftParams(TypedDict): id: Required[str] @@ -704,8 +683,8 @@ class CheckoutOneTimeForItemsParams(TypedDict): class CheckoutNewForItemsParams(TypedDict): subscription: NotRequired["HostedPage.CheckoutNewForItemsSubscriptionParams"] layout: NotRequired[enums.Layout] - business_entity_id: NotRequired[str] customer: NotRequired["HostedPage.CheckoutNewForItemsCustomerParams"] + business_entity_id: NotRequired[str] billing_cycles: NotRequired[int] subscription_items: Required[ List["HostedPage.CheckoutNewForItemsSubscriptionItemParams"] @@ -783,7 +762,6 @@ class CheckoutExistingForItemsParams(TypedDict): change_option: NotRequired[enums.ChangeOption] changes_scheduled_at: NotRequired[int] customer: NotRequired["HostedPage.CheckoutExistingForItemsCustomerParams"] - invoice_usages: NotRequired[bool] entity_identifiers: NotRequired[ List["HostedPage.CheckoutExistingForItemsEntityIdentifierParams"] ] @@ -824,7 +802,6 @@ class CollectNowParams(TypedDict): redirect_url: NotRequired[str] card: NotRequired["HostedPage.CollectNowCardParams"] currency_code: NotRequired[str] - payment_method_save_policy: NotRequired[enums.PaymentMethodSavePolicy] class AcceptQuoteParams(TypedDict): quote: Required["HostedPage.AcceptQuoteQuoteParams"] @@ -850,7 +827,6 @@ class CheckoutGiftForItemsParams(TypedDict): subscription_items: NotRequired[ List["HostedPage.CheckoutGiftForItemsSubscriptionItemParams"] ] - item_tiers: NotRequired[List["HostedPage.CheckoutGiftForItemsItemTierParams"]] coupon_ids: NotRequired[List[str]] class ClaimGiftParams(TypedDict): @@ -887,10 +863,6 @@ class ViewVoucherParams(TypedDict): def checkout_new( self, params: CheckoutNewParams, headers=None ) -> CheckoutNewResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_new"), @@ -898,19 +870,11 @@ def checkout_new( cast(Dict[Any, Any], params), headers, CheckoutNewResponse, - None, - False, - jsonKeys, - options, ) def checkout_one_time( self, params: CheckoutOneTimeParams = None, headers=None ) -> CheckoutOneTimeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_one_time"), @@ -918,19 +882,11 @@ def checkout_one_time( cast(Dict[Any, Any], params), headers, CheckoutOneTimeResponse, - None, - False, - jsonKeys, - options, ) def checkout_one_time_for_items( self, params: CheckoutOneTimeForItemsParams, headers=None ) -> CheckoutOneTimeForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_one_time_for_items"), @@ -938,19 +894,11 @@ def checkout_one_time_for_items( cast(Dict[Any, Any], params), headers, CheckoutOneTimeForItemsResponse, - None, - False, - jsonKeys, - options, ) def checkout_new_for_items( self, params: CheckoutNewForItemsParams, headers=None ) -> CheckoutNewForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_new_for_items"), @@ -958,19 +906,11 @@ def checkout_new_for_items( cast(Dict[Any, Any], params), headers, CheckoutNewForItemsResponse, - None, - False, - jsonKeys, - options, ) def checkout_existing( self, params: CheckoutExistingParams, headers=None ) -> CheckoutExistingResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_existing"), @@ -978,19 +918,11 @@ def checkout_existing( cast(Dict[Any, Any], params), headers, CheckoutExistingResponse, - None, - False, - jsonKeys, - options, ) def checkout_existing_for_items( self, params: CheckoutExistingForItemsParams, headers=None ) -> CheckoutExistingForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_existing_for_items"), @@ -998,17 +930,9 @@ def checkout_existing_for_items( cast(Dict[Any, Any], params), headers, CheckoutExistingForItemsResponse, - None, - False, - jsonKeys, - options, ) def update_card(self, params: UpdateCardParams, headers=None) -> UpdateCardResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "update_card"), @@ -1016,19 +940,11 @@ def update_card(self, params: UpdateCardParams, headers=None) -> UpdateCardRespo cast(Dict[Any, Any], params), headers, UpdateCardResponse, - None, - False, - jsonKeys, - options, ) def update_payment_method( self, params: UpdatePaymentMethodParams, headers=None ) -> UpdatePaymentMethodResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "update_payment_method"), @@ -1036,19 +952,11 @@ def update_payment_method( cast(Dict[Any, Any], params), headers, UpdatePaymentMethodResponse, - None, - False, - jsonKeys, - options, ) def manage_payment_sources( self, params: ManagePaymentSourcesParams, headers=None ) -> ManagePaymentSourcesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "manage_payment_sources"), @@ -1056,17 +964,9 @@ def manage_payment_sources( cast(Dict[Any, Any], params), headers, ManagePaymentSourcesResponse, - None, - False, - jsonKeys, - options, ) def collect_now(self, params: CollectNowParams, headers=None) -> CollectNowResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "collect_now"), @@ -1074,19 +974,11 @@ def collect_now(self, params: CollectNowParams, headers=None) -> CollectNowRespo cast(Dict[Any, Any], params), headers, CollectNowResponse, - None, - False, - jsonKeys, - options, ) def accept_quote( self, params: AcceptQuoteParams, headers=None ) -> AcceptQuoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "accept_quote"), @@ -1094,19 +986,11 @@ def accept_quote( cast(Dict[Any, Any], params), headers, AcceptQuoteResponse, - None, - False, - jsonKeys, - options, ) def extend_subscription( self, params: ExtendSubscriptionParams, headers=None ) -> ExtendSubscriptionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "extend_subscription"), @@ -1114,19 +998,11 @@ def extend_subscription( cast(Dict[Any, Any], params), headers, ExtendSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def checkout_gift( self, params: CheckoutGiftParams, headers=None ) -> CheckoutGiftResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_gift"), @@ -1134,19 +1010,11 @@ def checkout_gift( cast(Dict[Any, Any], params), headers, CheckoutGiftResponse, - None, - False, - jsonKeys, - options, ) def checkout_gift_for_items( self, params: CheckoutGiftForItemsParams = None, headers=None ) -> CheckoutGiftForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "checkout_gift_for_items"), @@ -1154,17 +1022,9 @@ def checkout_gift_for_items( cast(Dict[Any, Any], params), headers, CheckoutGiftForItemsResponse, - None, - False, - jsonKeys, - options, ) def claim_gift(self, params: ClaimGiftParams, headers=None) -> ClaimGiftResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "claim_gift"), @@ -1172,19 +1032,11 @@ def claim_gift(self, params: ClaimGiftParams, headers=None) -> ClaimGiftResponse cast(Dict[Any, Any], params), headers, ClaimGiftResponse, - None, - False, - jsonKeys, - options, ) def retrieve_agreement_pdf( self, params: RetrieveAgreementPdfParams, headers=None ) -> RetrieveAgreementPdfResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "retrieve_agreement_pdf"), @@ -1192,17 +1044,9 @@ def retrieve_agreement_pdf( cast(Dict[Any, Any], params), headers, RetrieveAgreementPdfResponse, - None, - False, - jsonKeys, - options, ) def acknowledge(self, id, headers=None) -> AcknowledgeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", id, "acknowledge"), @@ -1210,15 +1054,9 @@ def acknowledge(self, id, headers=None) -> AcknowledgeResponse: None, headers, AcknowledgeResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("hosted_pages", id), @@ -1226,15 +1064,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("hosted_pages"), @@ -1242,17 +1074,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def pre_cancel(self, params: PreCancelParams, headers=None) -> PreCancelResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "pre_cancel"), @@ -1260,19 +1084,9 @@ def pre_cancel(self, params: PreCancelParams, headers=None) -> PreCancelResponse cast(Dict[Any, Any], params), headers, PreCancelResponse, - None, - False, - jsonKeys, - options, ) def events(self, params: EventsParams, headers=None) -> EventsResponse: - jsonKeys = { - "event_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "events"), @@ -1280,19 +1094,11 @@ def events(self, params: EventsParams, headers=None) -> EventsResponse: cast(Dict[Any, Any], params), headers, EventsResponse, - None, - False, - jsonKeys, - options, ) def view_voucher( self, params: ViewVoucherParams, headers=None ) -> ViewVoucherResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("hosted_pages", "view_voucher"), @@ -1300,8 +1106,4 @@ def view_voucher( cast(Dict[Any, Any], params), headers, ViewVoucherResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/hosted_page/responses.py b/chargebee/models/hosted_page/responses.py index dcc075e..ed11799 100644 --- a/chargebee/models/hosted_page/responses.py +++ b/chargebee/models/hosted_page/responses.py @@ -26,109 +26,110 @@ class HostedPageResponse(Model): @dataclass class CheckoutNewResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CheckoutOneTimeResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CheckoutOneTimeForItemsResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CheckoutNewForItemsResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CheckoutExistingResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CheckoutExistingForItemsResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class UpdateCardResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class UpdatePaymentMethodResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class ManagePaymentSourcesResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CollectNowResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class AcceptQuoteResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class ExtendSubscriptionResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CheckoutGiftResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class CheckoutGiftForItemsResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class ClaimGiftResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class RetrieveAgreementPdfResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class AcknowledgeResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass @@ -137,24 +138,25 @@ class ListHostedPageResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListHostedPageResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class PreCancelResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None @dataclass class EventsResponse(Response): - is_idempotency_replayed: bool success: bool + headers: Dict[str, str] = None @dataclass class ViewVoucherResponse(Response): - is_idempotency_replayed: bool hosted_page: HostedPageResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/impacted_customer/__init__.py b/chargebee/models/impacted_customer/__init__.py deleted file mode 100644 index 868cf60..0000000 --- a/chargebee/models/impacted_customer/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import ImpactedCustomer -from .responses import ImpactedCustomerResponse diff --git a/chargebee/models/impacted_customer/operations.py b/chargebee/models/impacted_customer/operations.py deleted file mode 100644 index 93b89cb..0000000 --- a/chargebee/models/impacted_customer/operations.py +++ /dev/null @@ -1,15 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class ImpactedCustomer: - env: environment.Environment - - class Download(TypedDict): - download_url: Required[str] - valid_till: Required[int] - mime_type: NotRequired[str] - - pass diff --git a/chargebee/models/impacted_customer/responses.py b/chargebee/models/impacted_customer/responses.py deleted file mode 100644 index bd3d6b5..0000000 --- a/chargebee/models/impacted_customer/responses.py +++ /dev/null @@ -1,18 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class DownloadResponse(Model): - raw_data: Dict[Any, Any] = None - download_url: str = None - valid_till: int = None - mime_type: str = None - - -@dataclass -class ImpactedCustomerResponse(Model): - raw_data: Dict[Any, Any] = None - action_type: str = None - download: DownloadResponse = None diff --git a/chargebee/models/impacted_item/operations.py b/chargebee/models/impacted_item/operations.py index 6c2f0f7..5dc7978 100644 --- a/chargebee/models/impacted_item/operations.py +++ b/chargebee/models/impacted_item/operations.py @@ -5,6 +5,7 @@ @dataclass class ImpactedItem: + env: environment.Environment class Download(TypedDict): diff --git a/chargebee/models/impacted_item/responses.py b/chargebee/models/impacted_item/responses.py index a25d920..428af3f 100644 --- a/chargebee/models/impacted_item/responses.py +++ b/chargebee/models/impacted_item/responses.py @@ -5,7 +5,6 @@ @dataclass class DownloadResponse(Model): - raw_data: Dict[Any, Any] = None download_url: str = None valid_till: int = None mime_type: str = None diff --git a/chargebee/models/impacted_item_price/operations.py b/chargebee/models/impacted_item_price/operations.py index a093598..a8029ae 100644 --- a/chargebee/models/impacted_item_price/operations.py +++ b/chargebee/models/impacted_item_price/operations.py @@ -5,6 +5,7 @@ @dataclass class ImpactedItemPrice: + env: environment.Environment class Download(TypedDict): diff --git a/chargebee/models/impacted_item_price/responses.py b/chargebee/models/impacted_item_price/responses.py index 850af93..cb27cd5 100644 --- a/chargebee/models/impacted_item_price/responses.py +++ b/chargebee/models/impacted_item_price/responses.py @@ -5,7 +5,6 @@ @dataclass class DownloadResponse(Model): - raw_data: Dict[Any, Any] = None download_url: str = None valid_till: int = None mime_type: str = None diff --git a/chargebee/models/impacted_subscription/operations.py b/chargebee/models/impacted_subscription/operations.py index ec2804a..b671361 100644 --- a/chargebee/models/impacted_subscription/operations.py +++ b/chargebee/models/impacted_subscription/operations.py @@ -5,6 +5,7 @@ @dataclass class ImpactedSubscription: + env: environment.Environment class Download(TypedDict): diff --git a/chargebee/models/impacted_subscription/responses.py b/chargebee/models/impacted_subscription/responses.py index 6bb1b91..12c26f1 100644 --- a/chargebee/models/impacted_subscription/responses.py +++ b/chargebee/models/impacted_subscription/responses.py @@ -5,7 +5,6 @@ @dataclass class DownloadResponse(Model): - raw_data: Dict[Any, Any] = None download_url: str = None valid_till: int = None mime_type: str = None diff --git a/chargebee/models/in_app_subscription/operations.py b/chargebee/models/in_app_subscription/operations.py index d8ecb34..5992a6b 100644 --- a/chargebee/models/in_app_subscription/operations.py +++ b/chargebee/models/in_app_subscription/operations.py @@ -6,6 +6,7 @@ @dataclass class InAppSubscription: + env: environment.Environment class StoreStatus(Enum): @@ -73,10 +74,6 @@ class RetrieveStoreSubsParams(TypedDict): def process_receipt( self, id, params: ProcessReceiptParams, headers=None ) -> ProcessReceiptResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("in_app_subscriptions", id, "process_purchase_command"), @@ -84,19 +81,11 @@ def process_receipt( cast(Dict[Any, Any], params), headers, ProcessReceiptResponse, - None, - False, - jsonKeys, - options, ) def import_receipt( self, id, params: ImportReceiptParams, headers=None ) -> ImportReceiptResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("in_app_subscriptions", id, "import_receipt"), @@ -104,19 +93,11 @@ def import_receipt( cast(Dict[Any, Any], params), headers, ImportReceiptResponse, - None, - False, - jsonKeys, - options, ) def import_subscription( self, id, params: ImportSubscriptionParams, headers=None ) -> ImportSubscriptionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("in_app_subscriptions", id, "import_subscription"), @@ -124,19 +105,11 @@ def import_subscription( cast(Dict[Any, Any], params), headers, ImportSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def retrieve_store_subs( self, id, params: RetrieveStoreSubsParams, headers=None ) -> RetrieveStoreSubsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("in_app_subscriptions", id, "retrieve"), @@ -144,8 +117,4 @@ def retrieve_store_subs( cast(Dict[Any, Any], params), headers, RetrieveStoreSubsResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/in_app_subscription/responses.py b/chargebee/models/in_app_subscription/responses.py index fa651b4..461b5a4 100644 --- a/chargebee/models/in_app_subscription/responses.py +++ b/chargebee/models/in_app_subscription/responses.py @@ -17,23 +17,23 @@ class InAppSubscriptionResponse(Model): @dataclass class ProcessReceiptResponse(Response): - is_idempotency_replayed: bool in_app_subscription: InAppSubscriptionResponse + headers: Dict[str, str] = None @dataclass class ImportReceiptResponse(Response): - is_idempotency_replayed: bool in_app_subscriptions: List[InAppSubscriptionResponse] + headers: Dict[str, str] = None @dataclass class ImportSubscriptionResponse(Response): - is_idempotency_replayed: bool in_app_subscription: InAppSubscriptionResponse + headers: Dict[str, str] = None @dataclass class RetrieveStoreSubsResponse(Response): - is_idempotency_replayed: bool in_app_subscriptions: List[InAppSubscriptionResponse] + headers: Dict[str, str] = None diff --git a/chargebee/models/invoice/operations.py b/chargebee/models/invoice/operations.py index 903db7e..e67f4f4 100644 --- a/chargebee/models/invoice/operations.py +++ b/chargebee/models/invoice/operations.py @@ -15,6 +15,7 @@ @dataclass class Invoice: + env: environment.Environment class Status(Enum): @@ -49,17 +50,6 @@ class LineItemEntityType(Enum): def __str__(self): return self.value - class LineItemDiscountDiscountType(Enum): - ITEM_LEVEL_COUPON = "item_level_coupon" - DOCUMENT_LEVEL_COUPON = "document_level_coupon" - PROMOTIONAL_CREDITS = "promotional_credits" - PRORATED_CREDITS = "prorated_credits" - ITEM_LEVEL_DISCOUNT = "item_level_discount" - DOCUMENT_LEVEL_DISCOUNT = "document_level_discount" - - def __str__(self): - return self.value - class DiscountEntityType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" @@ -78,9 +68,13 @@ class DiscountDiscountType(Enum): def __str__(self): return self.value - class AppliedCreditTaxApplication(Enum): - PRE_TAX = "pre_tax" - POST_TAX = "post_tax" + class LineItemDiscountDiscountType(Enum): + ITEM_LEVEL_COUPON = "item_level_coupon" + DOCUMENT_LEVEL_COUPON = "document_level_coupon" + PROMOTIONAL_CREDITS = "promotional_credits" + PRORATED_CREDITS = "prorated_credits" + ITEM_LEVEL_DISCOUNT = "item_level_discount" + DOCUMENT_LEVEL_DISCOUNT = "document_level_discount" def __str__(self): return self.value @@ -130,13 +124,6 @@ class EinvoiceStatus(Enum): SUCCESS = "success" FAILED = "failed" REGISTERED = "registered" - ACCEPTED = "accepted" - REJECTED = "rejected" - MESSAGE_ACKNOWLEDGEMENT = "message_acknowledgement" - IN_PROCESS = "in_process" - UNDER_QUERY = "under_query" - CONDITIONALLY_ACCEPTED = "conditionally_accepted" - PAID = "paid" def __str__(self): return self.value @@ -158,8 +145,7 @@ class LineItem(TypedDict): amount_in_decimal: NotRequired[str] discount_amount: NotRequired[int] item_level_discount_amount: NotRequired[int] - metered: NotRequired[bool] - is_percentage_pricing: NotRequired[bool] + usage_percentage: NotRequired[str] reference_line_item_id: NotRequired[str] description: Required[str] entity_description: NotRequired[str] @@ -168,18 +154,13 @@ class LineItem(TypedDict): entity_id: NotRequired[str] customer_id: NotRequired[str] - class LineItemTier(TypedDict): - line_item_id: NotRequired[str] - starting_unit: Required[int] - ending_unit: NotRequired[int] - quantity_used: Required[int] - unit_amount: Required[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - quantity_used_in_decimal: NotRequired[str] - unit_amount_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] + class Discount(TypedDict): + amount: Required[int] + description: NotRequired[str] + entity_type: Required["Invoice.DiscountEntityType"] + discount_type: NotRequired["Invoice.DiscountDiscountType"] + entity_id: NotRequired[str] + coupon_set_code: NotRequired[str] class LineItemDiscount(TypedDict): line_item_id: Required[str] @@ -188,6 +169,11 @@ class LineItemDiscount(TypedDict): entity_id: NotRequired[str] discount_amount: Required[int] + class Tax(TypedDict): + name: Required[str] + amount: Required[int] + description: NotRequired[str] + class LineItemTax(TypedDict): line_item_id: NotRequired[str] tax_name: Required[str] @@ -205,45 +191,16 @@ class LineItemTax(TypedDict): tax_amount_in_local_currency: NotRequired[int] local_currency_code: NotRequired[str] - class LineItemCredit(TypedDict): - cn_id: Required[str] - applied_amount: Required[float] - line_item_id: NotRequired[str] - - class LineItemAddress(TypedDict): - line_item_id: NotRequired[str] - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - country: NotRequired[str] - zip: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - - class Discount(TypedDict): - amount: Required[int] - description: NotRequired[str] + class LineItemTier(TypedDict): line_item_id: NotRequired[str] - entity_type: Required["Invoice.DiscountEntityType"] - discount_type: NotRequired["Invoice.DiscountDiscountType"] - entity_id: NotRequired[str] - coupon_set_code: NotRequired[str] - - class Tax(TypedDict): - name: Required[str] - amount: Required[int] - description: NotRequired[str] - - class TaxOrigin(TypedDict): - country: NotRequired[str] - registration_number: NotRequired[str] + starting_unit: Required[int] + ending_unit: NotRequired[int] + quantity_used: Required[int] + unit_amount: Required[int] + starting_unit_in_decimal: NotRequired[str] + ending_unit_in_decimal: NotRequired[str] + quantity_used_in_decimal: NotRequired[str] + unit_amount_in_decimal: NotRequired[str] class LinkedPayment(TypedDict): txn_id: Required[str] @@ -253,17 +210,6 @@ class LinkedPayment(TypedDict): txn_date: NotRequired[int] txn_amount: NotRequired[int] - class ReferenceTransaction(TypedDict): - applied_amount: Required[int] - applied_at: Required[int] - txn_id: Required[str] - txn_status: NotRequired["transaction.Transaction.Status"] - txn_date: NotRequired[int] - txn_amount: NotRequired[int] - txn_type: Required["Invoice.TxnType"] - amount_capturable: Required[int] - authorization_reason: NotRequired["Invoice.AuthorizationReason"] - class DunningAttempt(TypedDict): attempt: Required[int] transaction_id: NotRequired[str] @@ -271,7 +217,6 @@ class DunningAttempt(TypedDict): created_at: NotRequired[int] txn_status: NotRequired["transaction.Transaction.Status"] txn_amount: NotRequired[int] - retry_engine: NotRequired[enums.RetryEngine] class AppliedCredit(TypedDict): cn_id: Required[str] @@ -281,7 +226,6 @@ class AppliedCredit(TypedDict): cn_create_reason_code: NotRequired[str] cn_date: NotRequired[int] cn_status: Required["credit_note.CreditNote.Status"] - tax_application: NotRequired["Invoice.AppliedCreditTaxApplication"] class AdjustmentCreditNote(TypedDict): cn_id: Required[str] @@ -310,9 +254,9 @@ class LinkedOrder(TypedDict): created_at: Required[int] class Note(TypedDict): + entity_type: Required["Invoice.NoteEntityType"] note: Required[str] entity_id: NotRequired[str] - entity_type: NotRequired["Invoice.NoteEntityType"] class ShippingAddress(TypedDict): first_name: NotRequired[str] @@ -329,6 +273,11 @@ class ShippingAddress(TypedDict): country: NotRequired[str] zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] + index: Required[int] + + class StatementDescriptor(TypedDict): + id: Required[str] + descriptor: NotRequired[str] class BillingAddress(TypedDict): first_name: NotRequired[str] @@ -346,10 +295,6 @@ class BillingAddress(TypedDict): zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] - class StatementDescriptor(TypedDict): - id: Required[str] - descriptor: NotRequired[str] - class Einvoice(TypedDict): id: Required[str] reference_number: NotRequired[str] @@ -360,6 +305,10 @@ class SiteDetailsAtCreation(TypedDict): timezone: NotRequired[str] organization_address: NotRequired[Dict[Any, Any]] + class TaxOrigin(TypedDict): + country: NotRequired[str] + registration_number: NotRequired[str] + class CreateAddonParams(TypedDict): id: NotRequired[str] quantity: NotRequired[int] @@ -489,8 +438,6 @@ class CreateForChargeItemsAndChargesItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateForChargeItemsAndChargesChargeParams(TypedDict): amount: NotRequired[int] @@ -519,7 +466,6 @@ class CreateForChargeItemsAndChargesTaxProvidersFieldParams(TypedDict): class CreateForChargeItemsAndChargesDiscountParams(TypedDict): percentage: NotRequired[float] amount: NotRequired[int] - quantity: NotRequired[int] apply_on: Required[enums.ApplyOn] item_price_id: NotRequired[str] @@ -623,8 +569,6 @@ class CreateForChargeItemItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class ImportInvoiceLineItemParams(TypedDict): id: NotRequired[str] @@ -664,7 +608,6 @@ class ImportInvoiceLineItemParams(TypedDict): tax9_amount: NotRequired[int] tax10_name: NotRequired[str] tax10_amount: NotRequired[int] - created_at: NotRequired[int] class ImportInvoicePaymentReferenceNumberParams(TypedDict): id: NotRequired[str] @@ -683,7 +626,6 @@ class ImportInvoiceLineItemTierParams(TypedDict): unit_amount_in_decimal: NotRequired[str] class ImportInvoiceDiscountParams(TypedDict): - line_item_id: NotRequired[str] entity_type: Required["Invoice.DiscountEntityType"] entity_id: NotRequired[str] description: NotRequired[str] @@ -702,7 +644,6 @@ class ImportInvoiceCreditNoteParams(TypedDict): id: NotRequired[str] class ImportInvoicePaymentParams(TypedDict): - id: NotRequired[str] amount: Required[int] payment_method: Required[enums.PaymentMethod] date: NotRequired[int] @@ -745,23 +686,6 @@ class ImportInvoiceShippingAddressParams(TypedDict): country: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] - class ImportInvoiceLineItemAddressParams(TypedDict): - line_item_id: NotRequired[str] - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - zip: NotRequired[str] - country: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - class ApplyPaymentsTransactionParams(TypedDict): id: NotRequired[str] amount: NotRequired[int] @@ -775,10 +699,6 @@ class ApplyCreditsCreditNoteParams(TypedDict): class ListEinvoiceParams(TypedDict): status: NotRequired[Filters.EnumFilter] - class RetrieveLineItemParams(TypedDict): - subscription_id: NotRequired[Filters.StringFilter] - customer_id: NotRequired[Filters.StringFilter] - class ListPaymentReferenceNumbersPaymentReferenceNumberParams(TypedDict): number: NotRequired[Filters.StringFilter] @@ -806,8 +726,6 @@ class AddChargeItemItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CloseNotesToRemoveParams(TypedDict): entity_type: NotRequired[enums.EntityType] @@ -939,7 +857,6 @@ class CreateForChargeItemsAndChargesParams(TypedDict): authorization_transaction_id: NotRequired[str] payment_source_id: NotRequired[str] auto_collection: NotRequired[enums.AutoCollection] - net_term_days: NotRequired[int] tax_providers_fields: NotRequired[ List["Invoice.CreateForChargeItemsAndChargesTaxProvidersFieldParams"] ] @@ -1019,13 +936,6 @@ class CreateForChargeItemParams(TypedDict): class StopDunningParams(TypedDict): comment: NotRequired[str] - class PauseDunningParams(TypedDict): - expected_payment_date: Required[int] - comment: NotRequired[str] - - class ResumeDunningParams(TypedDict): - comment: NotRequired[str] - class ImportInvoiceParams(TypedDict): id: Required[str] currency_code: NotRequired[str] @@ -1061,9 +971,6 @@ class ImportInvoiceParams(TypedDict): notes: NotRequired[List["Invoice.ImportInvoiceNoteParams"]] billing_address: NotRequired["Invoice.ImportInvoiceBillingAddressParams"] shipping_address: NotRequired["Invoice.ImportInvoiceShippingAddressParams"] - line_item_addresses: NotRequired[ - List["Invoice.ImportInvoiceLineItemAddressParams"] - ] class ApplyPaymentsParams(TypedDict): transactions: NotRequired[List["Invoice.ApplyPaymentsTransactionParams"]] @@ -1111,11 +1018,6 @@ class InvoicesForSubscriptionParams(TypedDict): limit: NotRequired[int] offset: NotRequired[str] - class RetrieveParams(TypedDict): - line_item: NotRequired["Invoice.RetrieveLineItemParams"] - line_items_limit: NotRequired[int] - line_items_offset: NotRequired[str] - class PdfParams(TypedDict): disposition_type: NotRequired[enums.DispositionType] @@ -1224,13 +1126,6 @@ class ApplyPaymentScheduleSchemeParams(TypedDict): amount: NotRequired[int] def create(self, params: CreateParams = None, headers=None) -> CreateResponse: - jsonKeys = { - "additional_information": 1, - "billing_address": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices"), @@ -1238,22 +1133,11 @@ def create(self, params: CreateParams = None, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def create_for_charge_items_and_charges( self, params: CreateForChargeItemsAndChargesParams, headers=None ) -> CreateForChargeItemsAndChargesResponse: - jsonKeys = { - "additional_information": 1, - "billing_address": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", "create_for_charge_items_and_charges"), @@ -1261,17 +1145,9 @@ def create_for_charge_items_and_charges( cast(Dict[Any, Any], params), headers, CreateForChargeItemsAndChargesResponse, - None, - False, - jsonKeys, - options, ) def charge(self, params: ChargeParams, headers=None) -> ChargeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", "charge"), @@ -1279,19 +1155,11 @@ def charge(self, params: ChargeParams, headers=None) -> ChargeResponse: cast(Dict[Any, Any], params), headers, ChargeResponse, - None, - False, - jsonKeys, - options, ) def charge_addon( self, params: ChargeAddonParams, headers=None ) -> ChargeAddonResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", "charge_addon"), @@ -1299,19 +1167,11 @@ def charge_addon( cast(Dict[Any, Any], params), headers, ChargeAddonResponse, - None, - False, - jsonKeys, - options, ) def create_for_charge_item( self, params: CreateForChargeItemParams, headers=None ) -> CreateForChargeItemResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", "create_for_charge_item"), @@ -1319,19 +1179,11 @@ def create_for_charge_item( cast(Dict[Any, Any], params), headers, CreateForChargeItemResponse, - None, - False, - jsonKeys, - options, ) def stop_dunning( self, id, params: StopDunningParams = None, headers=None ) -> StopDunningResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "stop_dunning"), @@ -1339,59 +1191,11 @@ def stop_dunning( cast(Dict[Any, Any], params), headers, StopDunningResponse, - None, - False, - jsonKeys, - options, - ) - - def pause_dunning( - self, id, params: PauseDunningParams, headers=None - ) -> PauseDunningResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } - return request.send( - "post", - request.uri_path("invoices", id, "pause_dunning"), - self.env, - cast(Dict[Any, Any], params), - headers, - PauseDunningResponse, - None, - False, - jsonKeys, - options, - ) - - def resume_dunning( - self, id, params: ResumeDunningParams = None, headers=None - ) -> ResumeDunningResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } - return request.send( - "post", - request.uri_path("invoices", id, "resume_dunning"), - self.env, - cast(Dict[Any, Any], params), - headers, - ResumeDunningResponse, - None, - False, - jsonKeys, - options, ) def import_invoice( self, params: ImportInvoiceParams, headers=None ) -> ImportInvoiceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", "import_invoice"), @@ -1399,19 +1203,11 @@ def import_invoice( cast(Dict[Any, Any], params), headers, ImportInvoiceResponse, - None, - False, - jsonKeys, - options, ) def apply_payments( self, id, params: ApplyPaymentsParams = None, headers=None ) -> ApplyPaymentsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "apply_payments"), @@ -1419,17 +1215,9 @@ def apply_payments( cast(Dict[Any, Any], params), headers, ApplyPaymentsResponse, - None, - False, - jsonKeys, - options, ) def sync_usages(self, id, headers=None) -> SyncUsagesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "sync_usages"), @@ -1437,19 +1225,11 @@ def sync_usages(self, id, headers=None) -> SyncUsagesResponse: None, headers, SyncUsagesResponse, - None, - False, - jsonKeys, - options, ) def delete_line_items( self, id, params: DeleteLineItemsParams = None, headers=None ) -> DeleteLineItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "delete_line_items"), @@ -1457,19 +1237,11 @@ def delete_line_items( cast(Dict[Any, Any], params), headers, DeleteLineItemsResponse, - None, - False, - jsonKeys, - options, ) def apply_credits( self, id, params: ApplyCreditsParams = None, headers=None ) -> ApplyCreditsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "apply_credits"), @@ -1477,15 +1249,9 @@ def apply_credits( cast(Dict[Any, Any], params), headers, ApplyCreditsResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("invoices"), @@ -1493,17 +1259,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def invoices_for_customer( self, id, params: InvoicesForCustomerParams = None, headers=None ) -> InvoicesForCustomerResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "invoices"), @@ -1511,17 +1271,11 @@ def invoices_for_customer( cast(Dict[Any, Any], params), headers, InvoicesForCustomerResponse, - None, - False, - jsonKeys, - options, ) def invoices_for_subscription( self, id, params: InvoicesForSubscriptionParams = None, headers=None ) -> InvoicesForSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "invoices"), @@ -1529,35 +1283,19 @@ def invoices_for_subscription( cast(Dict[Any, Any], params), headers, InvoicesForSubscriptionResponse, - None, - False, - jsonKeys, - options, ) - def retrieve( - self, id, params: RetrieveParams = None, headers=None - ) -> RetrieveResponse: - jsonKeys = {} - options = {} + def retrieve(self, id, headers=None) -> RetrieveResponse: return request.send( "get", request.uri_path("invoices", id), self.env, - cast(Dict[Any, Any], params), + None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def pdf(self, id, params: PdfParams = None, headers=None) -> PdfResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "pdf"), @@ -1565,15 +1303,9 @@ def pdf(self, id, params: PdfParams = None, headers=None) -> PdfResponse: cast(Dict[Any, Any], params), headers, PdfResponse, - None, - False, - jsonKeys, - options, ) def download_einvoice(self, id, headers=None) -> DownloadEinvoiceResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("invoices", id, "download_einvoice"), @@ -1581,17 +1313,11 @@ def download_einvoice(self, id, headers=None) -> DownloadEinvoiceResponse: None, headers, DownloadEinvoiceResponse, - None, - False, - jsonKeys, - options, ) def list_payment_reference_numbers( self, params: ListPaymentReferenceNumbersParams = None, headers=None ) -> ListPaymentReferenceNumbersResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("invoices", "payment_reference_numbers"), @@ -1599,19 +1325,11 @@ def list_payment_reference_numbers( cast(Dict[Any, Any], params), headers, ListPaymentReferenceNumbersResponse, - None, - False, - jsonKeys, - options, ) def add_charge( self, id, params: AddChargeParams, headers=None ) -> AddChargeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "add_charge"), @@ -1619,19 +1337,11 @@ def add_charge( cast(Dict[Any, Any], params), headers, AddChargeResponse, - None, - False, - jsonKeys, - options, ) def add_addon_charge( self, id, params: AddAddonChargeParams, headers=None ) -> AddAddonChargeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "add_addon_charge"), @@ -1639,19 +1349,11 @@ def add_addon_charge( cast(Dict[Any, Any], params), headers, AddAddonChargeResponse, - None, - False, - jsonKeys, - options, ) def add_charge_item( self, id, params: AddChargeItemParams, headers=None ) -> AddChargeItemResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "add_charge_item"), @@ -1659,17 +1361,9 @@ def add_charge_item( cast(Dict[Any, Any], params), headers, AddChargeItemResponse, - None, - False, - jsonKeys, - options, ) def close(self, id, params: CloseParams = None, headers=None) -> CloseResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "close"), @@ -1677,19 +1371,11 @@ def close(self, id, params: CloseParams = None, headers=None) -> CloseResponse: cast(Dict[Any, Any], params), headers, CloseResponse, - None, - False, - jsonKeys, - options, ) def collect_payment( self, id, params: CollectPaymentParams = None, headers=None ) -> CollectPaymentResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "collect_payment"), @@ -1697,19 +1383,11 @@ def collect_payment( cast(Dict[Any, Any], params), headers, CollectPaymentResponse, - None, - False, - jsonKeys, - options, ) def record_payment( self, id, params: RecordPaymentParams, headers=None ) -> RecordPaymentResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "record_payment"), @@ -1717,19 +1395,11 @@ def record_payment( cast(Dict[Any, Any], params), headers, RecordPaymentResponse, - None, - False, - jsonKeys, - options, ) def record_tax_withheld( self, id, params: RecordTaxWithheldParams, headers=None ) -> RecordTaxWithheldResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "record_tax_withheld"), @@ -1737,19 +1407,11 @@ def record_tax_withheld( cast(Dict[Any, Any], params), headers, RecordTaxWithheldResponse, - None, - False, - jsonKeys, - options, ) def remove_tax_withheld( self, id, params: RemoveTaxWithheldParams, headers=None ) -> RemoveTaxWithheldResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "remove_tax_withheld"), @@ -1757,17 +1419,9 @@ def remove_tax_withheld( cast(Dict[Any, Any], params), headers, RemoveTaxWithheldResponse, - None, - False, - jsonKeys, - options, ) def refund(self, id, params: RefundParams = None, headers=None) -> RefundResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "refund"), @@ -1775,19 +1429,11 @@ def refund(self, id, params: RefundParams = None, headers=None) -> RefundRespons cast(Dict[Any, Any], params), headers, RefundResponse, - None, - False, - jsonKeys, - options, ) def record_refund( self, id, params: RecordRefundParams, headers=None ) -> RecordRefundResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "record_refund"), @@ -1795,19 +1441,11 @@ def record_refund( cast(Dict[Any, Any], params), headers, RecordRefundResponse, - None, - False, - jsonKeys, - options, ) def remove_payment( self, id, params: RemovePaymentParams, headers=None ) -> RemovePaymentResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "remove_payment"), @@ -1815,19 +1453,11 @@ def remove_payment( cast(Dict[Any, Any], params), headers, RemovePaymentResponse, - None, - False, - jsonKeys, - options, ) def remove_credit_note( self, id, params: RemoveCreditNoteParams, headers=None ) -> RemoveCreditNoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "remove_credit_note"), @@ -1835,19 +1465,11 @@ def remove_credit_note( cast(Dict[Any, Any], params), headers, RemoveCreditNoteResponse, - None, - False, - jsonKeys, - options, ) def void_invoice( self, id, params: VoidInvoiceParams = None, headers=None ) -> VoidInvoiceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "void"), @@ -1855,19 +1477,11 @@ def void_invoice( cast(Dict[Any, Any], params), headers, VoidInvoiceResponse, - None, - False, - jsonKeys, - options, ) def write_off( self, id, params: WriteOffParams = None, headers=None ) -> WriteOffResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "write_off"), @@ -1875,17 +1489,9 @@ def write_off( cast(Dict[Any, Any], params), headers, WriteOffResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "delete"), @@ -1893,19 +1499,11 @@ def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteRespons cast(Dict[Any, Any], params), headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def update_details( self, id, params: UpdateDetailsParams = None, headers=None ) -> UpdateDetailsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "update_details"), @@ -1913,19 +1511,11 @@ def update_details( cast(Dict[Any, Any], params), headers, UpdateDetailsResponse, - None, - False, - jsonKeys, - options, ) def apply_payment_schedule_scheme( self, id, params: ApplyPaymentScheduleSchemeParams, headers=None ) -> ApplyPaymentScheduleSchemeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "apply_payment_schedule_scheme"), @@ -1933,15 +1523,9 @@ def apply_payment_schedule_scheme( cast(Dict[Any, Any], params), headers, ApplyPaymentScheduleSchemeResponse, - None, - False, - jsonKeys, - options, ) def payment_schedules(self, id, headers=None) -> PaymentSchedulesResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("invoices", id, "payment_schedules"), @@ -1949,17 +1533,9 @@ def payment_schedules(self, id, headers=None) -> PaymentSchedulesResponse: None, headers, PaymentSchedulesResponse, - None, - False, - jsonKeys, - options, ) def resend_einvoice(self, id, headers=None) -> ResendEinvoiceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "resend_einvoice"), @@ -1967,17 +1543,9 @@ def resend_einvoice(self, id, headers=None) -> ResendEinvoiceResponse: None, headers, ResendEinvoiceResponse, - None, - False, - jsonKeys, - options, ) def send_einvoice(self, id, headers=None) -> SendEinvoiceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("invoices", id, "send_einvoice"), @@ -1985,8 +1553,4 @@ def send_einvoice(self, id, headers=None) -> SendEinvoiceResponse: None, headers, SendEinvoiceResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/invoice/responses.py b/chargebee/models/invoice/responses.py index d081d43..4cd66c1 100644 --- a/chargebee/models/invoice/responses.py +++ b/chargebee/models/invoice/responses.py @@ -18,7 +18,6 @@ @dataclass class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None subscription_id: str = None date_from: int = None @@ -35,8 +34,7 @@ class LineItemResponse(Model): amount_in_decimal: str = None discount_amount: int = None item_level_discount_amount: int = None - metered: bool = None - is_percentage_pricing: bool = None + usage_percentage: str = None reference_line_item_id: str = None description: str = None entity_description: str = None @@ -47,24 +45,17 @@ class LineItemResponse(Model): @dataclass -class LineItemTierResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - starting_unit: int = None - ending_unit: int = None - quantity_used: int = None - unit_amount: int = None - starting_unit_in_decimal: str = None - ending_unit_in_decimal: str = None - quantity_used_in_decimal: str = None - unit_amount_in_decimal: str = None - pricing_type: str = None - package_size: int = None +class DiscountResponse(Model): + amount: int = None + description: str = None + entity_type: str = None + discount_type: str = None + entity_id: str = None + coupon_set_code: str = None @dataclass class LineItemDiscountResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None discount_type: str = None coupon_id: str = None @@ -72,9 +63,15 @@ class LineItemDiscountResponse(Model): discount_amount: int = None +@dataclass +class TaxResponse(Model): + name: str = None + amount: int = None + description: str = None + + @dataclass class LineItemTaxResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None tax_name: str = None tax_rate: float = None @@ -93,63 +90,20 @@ class LineItemTaxResponse(Model): @dataclass -class LineItemCreditResponse(Model): - raw_data: Dict[Any, Any] = None - cn_id: str = None - applied_amount: float = None - line_item_id: str = None - - -@dataclass -class LineItemAddressResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - first_name: str = None - last_name: str = None - email: str = None - company: str = None - phone: str = None - line1: str = None - line2: str = None - line3: str = None - city: str = None - state_code: str = None - state: str = None - country: str = None - zip: str = None - validation_status: str = None - - -@dataclass -class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None - amount: int = None - description: str = None +class LineItemTierResponse(Model): line_item_id: str = None - entity_type: str = None - discount_type: str = None - entity_id: str = None - coupon_set_code: str = None - - -@dataclass -class TaxResponse(Model): - raw_data: Dict[Any, Any] = None - name: str = None - amount: int = None - description: str = None - - -@dataclass -class TaxOriginResponse(Model): - raw_data: Dict[Any, Any] = None - country: str = None - registration_number: str = None + starting_unit: int = None + ending_unit: int = None + quantity_used: int = None + unit_amount: int = None + starting_unit_in_decimal: str = None + ending_unit_in_decimal: str = None + quantity_used_in_decimal: str = None + unit_amount_in_decimal: str = None @dataclass class LinkedPaymentResponse(Model): - raw_data: Dict[Any, Any] = None txn_id: str = None applied_amount: int = None applied_at: int = None @@ -158,35 +112,18 @@ class LinkedPaymentResponse(Model): txn_amount: int = None -@dataclass -class ReferenceTransactionResponse(Model): - raw_data: Dict[Any, Any] = None - applied_amount: int = None - applied_at: int = None - txn_id: str = None - txn_status: str = None - txn_date: int = None - txn_amount: int = None - txn_type: str = None - amount_capturable: int = None - authorization_reason: str = None - - @dataclass class DunningAttemptResponse(Model): - raw_data: Dict[Any, Any] = None attempt: int = None transaction_id: str = None dunning_type: str = None created_at: int = None txn_status: str = None txn_amount: int = None - retry_engine: str = None @dataclass class AppliedCreditResponse(Model): - raw_data: Dict[Any, Any] = None cn_id: str = None applied_amount: int = None applied_at: int = None @@ -194,12 +131,10 @@ class AppliedCreditResponse(Model): cn_create_reason_code: str = None cn_date: int = None cn_status: str = None - tax_application: str = None @dataclass class AdjustmentCreditNoteResponse(Model): - raw_data: Dict[Any, Any] = None cn_id: str = None cn_reason_code: str = None cn_create_reason_code: str = None @@ -210,7 +145,6 @@ class AdjustmentCreditNoteResponse(Model): @dataclass class IssuedCreditNoteResponse(Model): - raw_data: Dict[Any, Any] = None cn_id: str = None cn_reason_code: str = None cn_create_reason_code: str = None @@ -221,7 +155,6 @@ class IssuedCreditNoteResponse(Model): @dataclass class LinkedOrderResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None document_number: str = None status: str = None @@ -234,15 +167,13 @@ class LinkedOrderResponse(Model): @dataclass class NoteResponse(Model): - raw_data: Dict[Any, Any] = None + entity_type: str = None note: str = None entity_id: str = None - entity_type: str = None @dataclass class ShippingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -257,11 +188,17 @@ class ShippingAddressResponse(Model): country: str = None zip: str = None validation_status: str = None + index: int = None + + +@dataclass +class StatementDescriptorResponse(Model): + id: str = None + descriptor: str = None @dataclass class BillingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -278,16 +215,8 @@ class BillingAddressResponse(Model): validation_status: str = None -@dataclass -class StatementDescriptorResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - descriptor: str = None - - @dataclass class EinvoiceResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None reference_number: str = None status: str = None @@ -296,47 +225,50 @@ class EinvoiceResponse(Model): @dataclass class SiteDetailsAtCreationResponse(Model): - raw_data: Dict[Any, Any] = None timezone: str = None organization_address: Dict[Any, Any] = None +@dataclass +class TaxOriginResponse(Model): + country: str = None + registration_number: str = None + + @dataclass class InvoiceResponse(Model): raw_data: Dict[Any, Any] = None id: str = None + po_number: str = None customer_id: str = None - payment_owner: str = None subscription_id: str = None recurring: bool = None status: str = None + vat_number: str = None + price_type: str = None date: int = None due_date: int = None net_term_days: int = None - po_number: str = None - vat_number: str = None - price_type: str = None exchange_rate: float = None - local_currency_exchange_rate: float = None currency_code: str = None - local_currency_code: str = None - tax: int = None - sub_total: int = None - sub_total_in_local_currency: int = None total: int = None - total_in_local_currency: int = None - amount_due: int = None - amount_adjusted: int = None amount_paid: int = None - paid_at: int = None + amount_adjusted: int = None write_off_amount: int = None credits_applied: int = None + amount_due: int = None + paid_at: int = None dunning_status: str = None next_retry_at: int = None voided_at: int = None resource_version: int = None updated_at: int = None - line_items_next_offset: str = None + sub_total: int = None + sub_total_in_local_currency: int = None + total_in_local_currency: int = None + local_currency_code: str = None + tax: int = None + local_currency_exchange_rate: float = None first_invoice: bool = None new_sales_amount: int = None has_advance_charges: bool = None @@ -347,16 +279,12 @@ class InvoiceResponse(Model): amount_to_collect: int = None round_off_amount: int = None line_items: List[LineItemResponse] = None - line_item_tiers: List[LineItemTierResponse] = None - line_item_discounts: List[LineItemDiscountResponse] = None - line_item_taxes: List[LineItemTaxResponse] = None - line_item_credits: List[LineItemCreditResponse] = None - line_item_addresses: List[LineItemAddressResponse] = None discounts: List[DiscountResponse] = None + line_item_discounts: List[LineItemDiscountResponse] = None taxes: List[TaxResponse] = None - tax_origin: TaxOriginResponse = None + line_item_taxes: List[LineItemTaxResponse] = None + line_item_tiers: List[LineItemTierResponse] = None linked_payments: List[LinkedPaymentResponse] = None - reference_transactions: List[ReferenceTransactionResponse] = None dunning_attempts: List[DunningAttemptResponse] = None applied_credits: List[AppliedCreditResponse] = None adjustment_credit_notes: List[AdjustmentCreditNoteResponse] = None @@ -364,9 +292,10 @@ class InvoiceResponse(Model): linked_orders: List[LinkedOrderResponse] = None notes: List[NoteResponse] = None shipping_address: ShippingAddressResponse = None - billing_address: BillingAddressResponse = None statement_descriptor: StatementDescriptorResponse = None + billing_address: BillingAddressResponse = None einvoice: EinvoiceResponse = None + payment_owner: str = None void_reason_code: str = None deleted: bool = None tax_category: str = None @@ -374,85 +303,74 @@ class InvoiceResponse(Model): channel: str = None business_entity_id: str = None site_details_at_creation: SiteDetailsAtCreationResponse = None + tax_origin: TaxOriginResponse = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class CreateForChargeItemsAndChargesResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class ChargeResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class ChargeAddonResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class CreateForChargeItemResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class StopDunningResponse(Response): - is_idempotency_replayed: bool - invoice: InvoiceResponse - - -@dataclass -class PauseDunningResponse(Response): - is_idempotency_replayed: bool - invoice: InvoiceResponse - - -@dataclass -class ResumeDunningResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class ImportInvoiceResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse credit_note: "credit_note.CreditNoteResponse" = None + headers: Dict[str, str] = None @dataclass class ApplyPaymentsResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class SyncUsagesResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class DeleteLineItemsResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class ApplyCreditsResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass @@ -461,9 +379,10 @@ class ListInvoiceResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListInvoiceResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -472,9 +391,10 @@ class InvoicesForCustomerInvoiceResponse: @dataclass -class InvoicesForCustomerResponse(Response): +class InvoicesForCustomerResponse: list: List[InvoicesForCustomerInvoiceResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -483,25 +403,28 @@ class InvoicesForSubscriptionInvoiceResponse: @dataclass -class InvoicesForSubscriptionResponse(Response): +class InvoicesForSubscriptionResponse: list: List[InvoicesForSubscriptionInvoiceResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class PdfResponse(Response): - is_idempotency_replayed: bool download: "download.DownloadResponse" + headers: Dict[str, str] = None @dataclass -class DownloadEinvoiceResponse(Response): +class DownloadEinvoiceResponse: downloads: List["download.DownloadResponse"] + headers: Dict[str, str] = None @dataclass @@ -510,135 +433,137 @@ class ListPaymentReferenceNumbersInvoiceResponse: @dataclass -class ListPaymentReferenceNumbersResponse(Response): +class ListPaymentReferenceNumbersResponse: list: List[ListPaymentReferenceNumbersInvoiceResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class AddChargeResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class AddAddonChargeResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class AddChargeItemResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class CloseResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class CollectPaymentResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse transaction: "transaction.TransactionResponse" + headers: Dict[str, str] = None @dataclass class RecordPaymentResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse transaction: "transaction.TransactionResponse" + headers: Dict[str, str] = None @dataclass class RecordTaxWithheldResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class RemoveTaxWithheldResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class RefundResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse transaction: "transaction.TransactionResponse" credit_note: "credit_note.CreditNoteResponse" = None + headers: Dict[str, str] = None @dataclass class RecordRefundResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse transaction: "transaction.TransactionResponse" = None credit_note: "credit_note.CreditNoteResponse" = None + headers: Dict[str, str] = None @dataclass class RemovePaymentResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse transaction: "transaction.TransactionResponse" + headers: Dict[str, str] = None @dataclass class RemoveCreditNoteResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse credit_note: "credit_note.CreditNoteResponse" + headers: Dict[str, str] = None @dataclass class VoidInvoiceResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse credit_note: "credit_note.CreditNoteResponse" = None + headers: Dict[str, str] = None @dataclass class WriteOffResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse credit_note: "credit_note.CreditNoteResponse" + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class UpdateDetailsResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class ApplyPaymentScheduleSchemeResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass -class PaymentSchedulesResponse(Response): +class PaymentSchedulesResponse: payment_schedules: List["payment_schedule.PaymentScheduleResponse"] + headers: Dict[str, str] = None @dataclass class ResendEinvoiceResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None @dataclass class SendEinvoiceResponse(Response): - is_idempotency_replayed: bool invoice: InvoiceResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/invoice_estimate/operations.py b/chargebee/models/invoice_estimate/operations.py index f022134..41152b8 100644 --- a/chargebee/models/invoice_estimate/operations.py +++ b/chargebee/models/invoice_estimate/operations.py @@ -7,6 +7,7 @@ @dataclass class InvoiceEstimate: + env: environment.Environment class LineItemEntityType(Enum): @@ -21,7 +22,7 @@ class LineItemEntityType(Enum): def __str__(self): return self.value - class LineItemDiscountDiscountType(Enum): + class DiscountEntityType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -32,7 +33,14 @@ class LineItemDiscountDiscountType(Enum): def __str__(self): return self.value - class DiscountEntityType(Enum): + class DiscountDiscountType(Enum): + FIXED_AMOUNT = "fixed_amount" + PERCENTAGE = "percentage" + + def __str__(self): + return self.value + + class LineItemDiscountDiscountType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -43,13 +51,6 @@ class DiscountEntityType(Enum): def __str__(self): return self.value - class DiscountDiscountType(Enum): - FIXED_AMOUNT = "fixed_amount" - PERCENTAGE = "percentage" - - def __str__(self): - return self.value - class LineItem(TypedDict): id: NotRequired[str] subscription_id: NotRequired[str] @@ -67,8 +68,7 @@ class LineItem(TypedDict): amount_in_decimal: NotRequired[str] discount_amount: NotRequired[int] item_level_discount_amount: NotRequired[int] - metered: NotRequired[bool] - is_percentage_pricing: NotRequired[bool] + usage_percentage: NotRequired[str] reference_line_item_id: NotRequired[str] description: Required[str] entity_description: NotRequired[str] @@ -77,25 +77,18 @@ class LineItem(TypedDict): entity_id: NotRequired[str] customer_id: NotRequired[str] - class LineItemTier(TypedDict): - line_item_id: NotRequired[str] - starting_unit: Required[int] - ending_unit: NotRequired[int] - quantity_used: Required[int] - unit_amount: Required[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - quantity_used_in_decimal: NotRequired[str] - unit_amount_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - - class LineItemDiscount(TypedDict): - line_item_id: Required[str] - discount_type: Required["InvoiceEstimate.LineItemDiscountDiscountType"] - coupon_id: NotRequired[str] + class Discount(TypedDict): + amount: Required[int] + description: NotRequired[str] + entity_type: Required["InvoiceEstimate.DiscountEntityType"] + discount_type: NotRequired["InvoiceEstimate.DiscountDiscountType"] entity_id: NotRequired[str] - discount_amount: Required[int] + coupon_set_code: NotRequired[str] + + class Tax(TypedDict): + name: Required[str] + amount: Required[int] + description: NotRequired[str] class LineItemTax(TypedDict): line_item_id: NotRequired[str] @@ -114,40 +107,22 @@ class LineItemTax(TypedDict): tax_amount_in_local_currency: NotRequired[int] local_currency_code: NotRequired[str] - class LineItemCredit(TypedDict): - cn_id: Required[str] - applied_amount: Required[float] - line_item_id: NotRequired[str] - - class LineItemAddress(TypedDict): + class LineItemTier(TypedDict): line_item_id: NotRequired[str] - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - country: NotRequired[str] - zip: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] + starting_unit: Required[int] + ending_unit: NotRequired[int] + quantity_used: Required[int] + unit_amount: Required[int] + starting_unit_in_decimal: NotRequired[str] + ending_unit_in_decimal: NotRequired[str] + quantity_used_in_decimal: NotRequired[str] + unit_amount_in_decimal: NotRequired[str] - class Discount(TypedDict): - amount: Required[int] - description: NotRequired[str] - line_item_id: NotRequired[str] - entity_type: Required["InvoiceEstimate.DiscountEntityType"] - discount_type: NotRequired["InvoiceEstimate.DiscountDiscountType"] + class LineItemDiscount(TypedDict): + line_item_id: Required[str] + discount_type: Required["InvoiceEstimate.LineItemDiscountDiscountType"] + coupon_id: NotRequired[str] entity_id: NotRequired[str] - coupon_set_code: NotRequired[str] - - class Tax(TypedDict): - name: Required[str] - amount: Required[int] - description: NotRequired[str] + discount_amount: Required[int] pass diff --git a/chargebee/models/invoice_estimate/responses.py b/chargebee/models/invoice_estimate/responses.py index fdcb203..773793e 100644 --- a/chargebee/models/invoice_estimate/responses.py +++ b/chargebee/models/invoice_estimate/responses.py @@ -5,7 +5,6 @@ @dataclass class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None subscription_id: str = None date_from: int = None @@ -22,8 +21,7 @@ class LineItemResponse(Model): amount_in_decimal: str = None discount_amount: int = None item_level_discount_amount: int = None - metered: bool = None - is_percentage_pricing: bool = None + usage_percentage: str = None reference_line_item_id: str = None description: str = None entity_description: str = None @@ -34,34 +32,24 @@ class LineItemResponse(Model): @dataclass -class LineItemTierResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - starting_unit: int = None - ending_unit: int = None - quantity_used: int = None - unit_amount: int = None - starting_unit_in_decimal: str = None - ending_unit_in_decimal: str = None - quantity_used_in_decimal: str = None - unit_amount_in_decimal: str = None - pricing_type: str = None - package_size: int = None +class DiscountResponse(Model): + amount: int = None + description: str = None + entity_type: str = None + discount_type: str = None + entity_id: str = None + coupon_set_code: str = None @dataclass -class LineItemDiscountResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - discount_type: str = None - coupon_id: str = None - entity_id: str = None - discount_amount: int = None +class TaxResponse(Model): + name: str = None + amount: int = None + description: str = None @dataclass class LineItemTaxResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None tax_name: str = None tax_rate: float = None @@ -80,51 +68,25 @@ class LineItemTaxResponse(Model): @dataclass -class LineItemCreditResponse(Model): - raw_data: Dict[Any, Any] = None - cn_id: str = None - applied_amount: float = None - line_item_id: str = None - - -@dataclass -class LineItemAddressResponse(Model): - raw_data: Dict[Any, Any] = None +class LineItemTierResponse(Model): line_item_id: str = None - first_name: str = None - last_name: str = None - email: str = None - company: str = None - phone: str = None - line1: str = None - line2: str = None - line3: str = None - city: str = None - state_code: str = None - state: str = None - country: str = None - zip: str = None - validation_status: str = None + starting_unit: int = None + ending_unit: int = None + quantity_used: int = None + unit_amount: int = None + starting_unit_in_decimal: str = None + ending_unit_in_decimal: str = None + quantity_used_in_decimal: str = None + unit_amount_in_decimal: str = None @dataclass -class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None - amount: int = None - description: str = None +class LineItemDiscountResponse(Model): line_item_id: str = None - entity_type: str = None discount_type: str = None + coupon_id: str = None entity_id: str = None - coupon_set_code: str = None - - -@dataclass -class TaxResponse(Model): - raw_data: Dict[Any, Any] = None - name: str = None - amount: int = None - description: str = None + discount_amount: int = None @dataclass @@ -139,12 +101,10 @@ class InvoiceEstimateResponse(Model): amount_paid: int = None amount_due: int = None line_items: List[LineItemResponse] = None - line_item_tiers: List[LineItemTierResponse] = None - line_item_discounts: List[LineItemDiscountResponse] = None - line_item_taxes: List[LineItemTaxResponse] = None - line_item_credits: List[LineItemCreditResponse] = None - line_item_addresses: List[LineItemAddressResponse] = None discounts: List[DiscountResponse] = None taxes: List[TaxResponse] = None + line_item_taxes: List[LineItemTaxResponse] = None + line_item_tiers: List[LineItemTierResponse] = None + line_item_discounts: List[LineItemDiscountResponse] = None round_off_amount: int = None customer_id: str = None diff --git a/chargebee/models/item/operations.py b/chargebee/models/item/operations.py index 7ddc6e6..3108e6d 100644 --- a/chargebee/models/item/operations.py +++ b/chargebee/models/item/operations.py @@ -8,6 +8,7 @@ @dataclass class Item: + env: environment.Environment class Status(Enum): @@ -110,7 +111,6 @@ class CreateParams(TypedDict): included_in_mrr: NotRequired[bool] metered: NotRequired[bool] usage_calculation: NotRequired["Item.UsageCalculation"] - is_percentage_pricing: NotRequired[bool] metadata: NotRequired[Dict[Any, Any]] business_entity_id: NotRequired[str] bundle_items_to_add: NotRequired[List["Item.CreateBundleItemsToAddParams"]] @@ -133,7 +133,6 @@ class UpdateParams(TypedDict): metadata: NotRequired[Dict[Any, Any]] included_in_mrr: NotRequired[bool] status: NotRequired["Item.Status"] - is_percentage_pricing: NotRequired[bool] bundle_items_to_add: NotRequired[List["Item.UpdateBundleItemsToAddParams"]] bundle_items_to_update: NotRequired[ List["Item.UpdateBundleItemsToUpdateParams"] @@ -164,12 +163,6 @@ class ListParams(TypedDict): sort_by: NotRequired[Filters.SortFilter] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "metadata": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("items"), @@ -177,15 +170,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("items", id), @@ -193,19 +180,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = { - "metadata": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("items", id), @@ -213,15 +190,9 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("items"), @@ -229,17 +200,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("items", id, "delete"), @@ -247,8 +210,4 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/item/responses.py b/chargebee/models/item/responses.py index 0049dae..9cb680a 100644 --- a/chargebee/models/item/responses.py +++ b/chargebee/models/item/responses.py @@ -6,13 +6,11 @@ @dataclass class ApplicableItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None @dataclass class BundleItemResponse(Model): - raw_data: Dict[Any, Any] = None item_id: str = None item_type: str = None quantity: int = None @@ -21,7 +19,6 @@ class BundleItemResponse(Model): @dataclass class BundleConfigurationResponse(Model): - raw_data: Dict[Any, Any] = None type: str = None @@ -48,32 +45,31 @@ class ItemResponse(Model): unit: str = None metered: bool = None usage_calculation: str = None - is_percentage_pricing: bool = None archived_at: int = None channel: str = None applicable_items: List[ApplicableItemResponse] = None bundle_items: List[BundleItemResponse] = None bundle_configuration: BundleConfigurationResponse = None metadata: Dict[Any, Any] = None - deleted: bool = None business_entity_id: str = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool item: ItemResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: item: ItemResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool item: ItemResponse + headers: Dict[str, str] = None @dataclass @@ -82,12 +78,13 @@ class ListItemResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListItemResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool item: ItemResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/item_entitlement/operations.py b/chargebee/models/item_entitlement/operations.py index 9aef846..60d100c 100644 --- a/chargebee/models/item_entitlement/operations.py +++ b/chargebee/models/item_entitlement/operations.py @@ -7,6 +7,7 @@ @dataclass class ItemEntitlement: + env: environment.Environment class ItemType(Enum): @@ -56,8 +57,6 @@ class UpsertOrRemoveItemEntitlementsForItemParams(TypedDict): def item_entitlements_for_item( self, id, params: ItemEntitlementsForItemParams = None, headers=None ) -> ItemEntitlementsForItemResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("items", id, "item_entitlements"), @@ -65,17 +64,11 @@ def item_entitlements_for_item( cast(Dict[Any, Any], params), headers, ItemEntitlementsForItemResponse, - None, - False, - jsonKeys, - options, ) def item_entitlements_for_feature( self, id, params: ItemEntitlementsForFeatureParams = None, headers=None ) -> ItemEntitlementsForFeatureResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("features", id, "item_entitlements"), @@ -83,19 +76,11 @@ def item_entitlements_for_feature( cast(Dict[Any, Any], params), headers, ItemEntitlementsForFeatureResponse, - None, - False, - jsonKeys, - options, ) def add_item_entitlements( self, id, params: AddItemEntitlementsParams, headers=None ) -> AddItemEntitlementsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("features", id, "item_entitlements"), @@ -103,19 +88,11 @@ def add_item_entitlements( cast(Dict[Any, Any], params), headers, AddItemEntitlementsResponse, - None, - False, - jsonKeys, - options, ) def upsert_or_remove_item_entitlements_for_item( self, id, params: UpsertOrRemoveItemEntitlementsForItemParams, headers=None ) -> UpsertOrRemoveItemEntitlementsForItemResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("items", id, "item_entitlements"), @@ -123,8 +100,4 @@ def upsert_or_remove_item_entitlements_for_item( cast(Dict[Any, Any], params), headers, UpsertOrRemoveItemEntitlementsForItemResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/item_entitlement/responses.py b/chargebee/models/item_entitlement/responses.py index d74e4db..e0603d6 100644 --- a/chargebee/models/item_entitlement/responses.py +++ b/chargebee/models/item_entitlement/responses.py @@ -22,9 +22,10 @@ class ItemEntitlementsForItemItemEntitlementResponse: @dataclass -class ItemEntitlementsForItemResponse(Response): +class ItemEntitlementsForItemResponse: list: List[ItemEntitlementsForItemItemEntitlementResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -33,28 +34,19 @@ class ItemEntitlementsForFeatureItemEntitlementResponse: @dataclass -class ItemEntitlementsForFeatureResponse(Response): +class ItemEntitlementsForFeatureResponse: list: List[ItemEntitlementsForFeatureItemEntitlementResponse] next_offset: str = None - - -@dataclass -class AddItemEntitlementsItemEntitlementResponse: - item_entitlement: ItemEntitlementResponse + headers: Dict[str, str] = None @dataclass class AddItemEntitlementsResponse(Response): - is_idempotency_replayed: bool - list: List[AddItemEntitlementsItemEntitlementResponse] - - -@dataclass -class UpsertOrRemoveItemEntitlementsForItemItemEntitlementResponse: item_entitlement: ItemEntitlementResponse + headers: Dict[str, str] = None @dataclass class UpsertOrRemoveItemEntitlementsForItemResponse(Response): - is_idempotency_replayed: bool - list: List[UpsertOrRemoveItemEntitlementsForItemItemEntitlementResponse] + item_entitlement: ItemEntitlementResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/item_family/operations.py b/chargebee/models/item_family/operations.py index 1bb8b4c..fd08def 100644 --- a/chargebee/models/item_family/operations.py +++ b/chargebee/models/item_family/operations.py @@ -7,6 +7,7 @@ @dataclass class ItemFamily: + env: environment.Environment class Status(Enum): @@ -36,10 +37,6 @@ class UpdateParams(TypedDict): description: NotRequired[str] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("item_families"), @@ -47,15 +44,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("item_families", id), @@ -63,15 +54,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("item_families"), @@ -79,17 +64,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("item_families", id), @@ -97,17 +74,9 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("item_families", id, "delete"), @@ -115,8 +84,4 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/item_family/responses.py b/chargebee/models/item_family/responses.py index 0f7de0d..7e916db 100644 --- a/chargebee/models/item_family/responses.py +++ b/chargebee/models/item_family/responses.py @@ -15,18 +15,18 @@ class ItemFamilyResponse(Model): updated_at: int = None channel: str = None business_entity_id: str = None - deleted: bool = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool item_family: ItemFamilyResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: item_family: ItemFamilyResponse + headers: Dict[str, str] = None @dataclass @@ -35,18 +35,19 @@ class ListItemFamilyResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListItemFamilyResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool item_family: ItemFamilyResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool item_family: ItemFamilyResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/item_price/operations.py b/chargebee/models/item_price/operations.py index 9733854..e8116d7 100644 --- a/chargebee/models/item_price/operations.py +++ b/chargebee/models/item_price/operations.py @@ -8,6 +8,7 @@ @dataclass class ItemPrice: + env: environment.Environment class Status(Enum): @@ -66,8 +67,6 @@ class Tier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class TaxDetail(TypedDict): tax_profile_id: NotRequired[str] @@ -98,8 +97,6 @@ class CreateTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateTaxDetailParams(TypedDict): tax_profile_id: NotRequired[str] @@ -130,8 +127,6 @@ class UpdateTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class UpdateTaxDetailParams(TypedDict): tax_profile_id: NotRequired[str] @@ -259,12 +254,6 @@ class FindApplicableItemPricesParams(TypedDict): sort_by: NotRequired[Filters.SortFilter] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "metadata": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("item_prices"), @@ -272,15 +261,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("item_prices", id), @@ -288,19 +271,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = { - "metadata": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("item_prices", id), @@ -308,15 +281,9 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("item_prices"), @@ -324,17 +291,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("item_prices", id, "delete"), @@ -342,17 +301,11 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def find_applicable_items( self, id, params: FindApplicableItemsParams = None, headers=None ) -> FindApplicableItemsResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("item_prices", id, "applicable_items"), @@ -360,17 +313,11 @@ def find_applicable_items( cast(Dict[Any, Any], params), headers, FindApplicableItemsResponse, - None, - False, - jsonKeys, - options, ) def find_applicable_item_prices( self, id, params: FindApplicableItemPricesParams = None, headers=None ) -> FindApplicableItemPricesResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("item_prices", id, "applicable_item_prices"), @@ -378,8 +325,4 @@ def find_applicable_item_prices( cast(Dict[Any, Any], params), headers, FindApplicableItemPricesResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/item_price/responses.py b/chargebee/models/item_price/responses.py index 790b717..0807d23 100644 --- a/chargebee/models/item_price/responses.py +++ b/chargebee/models/item_price/responses.py @@ -7,20 +7,16 @@ @dataclass class TierResponse(Model): - raw_data: Dict[Any, Any] = None starting_unit: int = None ending_unit: int = None price: int = None starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None @dataclass class TaxDetailResponse(Model): - raw_data: Dict[Any, Any] = None tax_profile_id: str = None avalara_sale_type: str = None avalara_transaction_type: int = None @@ -32,7 +28,6 @@ class TaxDetailResponse(Model): @dataclass class TaxProvidersFieldResponse(Model): - raw_data: Dict[Any, Any] = None provider_name: str = None field_id: str = None field_value: str = None @@ -40,7 +35,6 @@ class TaxProvidersFieldResponse(Model): @dataclass class AccountingDetailResponse(Model): - raw_data: Dict[Any, Any] = None sku: str = None accounting_code: str = None accounting_category1: str = None @@ -93,25 +87,25 @@ class ItemPriceResponse(Model): parent_item_id: str = None show_description_in_invoices: bool = None show_description_in_quotes: bool = None - deleted: bool = None business_entity_id: str = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool item_price: ItemPriceResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: item_price: ItemPriceResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool item_price: ItemPriceResponse + headers: Dict[str, str] = None @dataclass @@ -120,15 +114,16 @@ class ListItemPriceResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListItemPriceResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool item_price: ItemPriceResponse + headers: Dict[str, str] = None @dataclass @@ -137,9 +132,10 @@ class FindApplicableItemsItemPriceResponse: @dataclass -class FindApplicableItemsResponse(Response): +class FindApplicableItemsResponse: list: List[FindApplicableItemsItemPriceResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -148,6 +144,7 @@ class FindApplicableItemPricesItemPriceResponse: @dataclass -class FindApplicableItemPricesResponse(Response): +class FindApplicableItemPricesResponse: list: List[FindApplicableItemPricesItemPriceResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/metadata/operations.py b/chargebee/models/metadata/operations.py index 29094b7..1762be9 100644 --- a/chargebee/models/metadata/operations.py +++ b/chargebee/models/metadata/operations.py @@ -5,6 +5,7 @@ @dataclass class Metadata: + env: environment.Environment pass diff --git a/chargebee/models/offer_event/__init__.py b/chargebee/models/offer_event/__init__.py deleted file mode 100644 index 74c33e3..0000000 --- a/chargebee/models/offer_event/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import OfferEvent -from .responses import OfferEventResponse diff --git a/chargebee/models/offer_event/operations.py b/chargebee/models/offer_event/operations.py deleted file mode 100644 index 210702c..0000000 --- a/chargebee/models/offer_event/operations.py +++ /dev/null @@ -1,38 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class OfferEvent: - env: environment.Environment - - class Type(Enum): - VIEWED = "viewed" - DISMISSED = "dismissed" - - def __str__(self): - return self.value - - class OfferEventsParams(TypedDict): - personalized_offer_id: Required[str] - type: Required["OfferEvent.Type"] - - def offer_events( - self, params: OfferEventsParams, headers=None - ) -> OfferEventsResponse: - jsonKeys = {} - options = {} - return request.send( - "post", - request.uri_path("offer_events"), - self.env, - cast(Dict[Any, Any], params), - headers, - OfferEventsResponse, - "grow", - True, - jsonKeys, - options, - ) diff --git a/chargebee/models/offer_event/responses.py b/chargebee/models/offer_event/responses.py deleted file mode 100644 index ce2f872..0000000 --- a/chargebee/models/offer_event/responses.py +++ /dev/null @@ -1,14 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response - - -@dataclass -class OfferEventResponse(Model): - raw_data: Dict[Any, Any] = None - - -@dataclass -class OfferEventsResponse(Response): - is_idempotency_replayed: bool diff --git a/chargebee/models/offer_fulfillment/__init__.py b/chargebee/models/offer_fulfillment/__init__.py deleted file mode 100644 index 7f4f8b5..0000000 --- a/chargebee/models/offer_fulfillment/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import OfferFulfillment -from .responses import OfferFulfillmentResponse diff --git a/chargebee/models/offer_fulfillment/operations.py b/chargebee/models/offer_fulfillment/operations.py deleted file mode 100644 index d6f42b5..0000000 --- a/chargebee/models/offer_fulfillment/operations.py +++ /dev/null @@ -1,102 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class OfferFulfillment: - env: environment.Environment - - class ProcessingType(Enum): - BILLING_UPDATE = "billing_update" - CHECKOUT = "checkout" - URL_REDIRECT = "url_redirect" - WEBHOOK = "webhook" - EMAIL = "email" - - def __str__(self): - return self.value - - class Status(Enum): - IN_PROGRESS = "in_progress" - COMPLETED = "completed" - FAILED = "failed" - - def __str__(self): - return self.value - - class ErrorCode(Enum): - BILLING_UPDATE_FAILED = "billing_update_failed" - CHECKOUT_ABANDONED = "checkout_abandoned" - EXTERNAL_FULFILLMENT_FAILED = "external_fulfillment_failed" - INTERNAL_ERROR = "internal_error" - FULFILLMENT_EXPIRED = "fulfillment_expired" - - def __str__(self): - return self.value - - class Error(TypedDict): - code: Required["OfferFulfillment.ErrorCode"] - message: Required[str] - - class OfferFulfillmentsParams(TypedDict): - personalized_offer_id: Required[str] - option_id: Required[str] - - class OfferFulfillmentsUpdateParams(TypedDict): - id: Required[str] - status: Required["OfferFulfillment.Status"] - failure_reason: NotRequired[str] - - def offer_fulfillments( - self, params: OfferFulfillmentsParams, headers=None - ) -> OfferFulfillmentsResponse: - jsonKeys = {} - options = {} - return request.send( - "post", - request.uri_path("offer_fulfillments"), - self.env, - cast(Dict[Any, Any], params), - headers, - OfferFulfillmentsResponse, - "grow", - True, - jsonKeys, - options, - ) - - def offer_fulfillments_get(self, id, headers=None) -> OfferFulfillmentsGetResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("offer_fulfillments", id), - self.env, - None, - headers, - OfferFulfillmentsGetResponse, - "grow", - True, - jsonKeys, - options, - ) - - def offer_fulfillments_update( - self, id, params: OfferFulfillmentsUpdateParams, headers=None - ) -> OfferFulfillmentsUpdateResponse: - jsonKeys = {} - options = {} - return request.send( - "post", - request.uri_path("offer_fulfillments", id), - self.env, - cast(Dict[Any, Any], params), - headers, - OfferFulfillmentsUpdateResponse, - "grow", - True, - jsonKeys, - options, - ) diff --git a/chargebee/models/offer_fulfillment/responses.py b/chargebee/models/offer_fulfillment/responses.py deleted file mode 100644 index abd1c8a..0000000 --- a/chargebee/models/offer_fulfillment/responses.py +++ /dev/null @@ -1,45 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response -from chargebee.models import hosted_page - - -@dataclass -class ErrorResponse(Model): - raw_data: Dict[Any, Any] = None - code: str = None - message: str = None - - -@dataclass -class OfferFulfillmentResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - personalized_offer_id: str = None - option_id: str = None - processing_type: str = None - status: str = None - redirect_url: str = None - failed_at: int = None - created_at: int = None - completed_at: int = None - error: ErrorResponse = None - - -@dataclass -class OfferFulfillmentsResponse(Response): - is_idempotency_replayed: bool - offer_fulfillment: OfferFulfillmentResponse - hosted_page: "hosted_page.HostedPageResponse" = None - - -@dataclass -class OfferFulfillmentsGetResponse(Response): - offer_fulfillment: OfferFulfillmentResponse - - -@dataclass -class OfferFulfillmentsUpdateResponse(Response): - is_idempotency_replayed: bool - offer_fulfillment: OfferFulfillmentResponse diff --git a/chargebee/models/omnichannel_one_time_order/__init__.py b/chargebee/models/omnichannel_one_time_order/__init__.py deleted file mode 100644 index a92dae7..0000000 --- a/chargebee/models/omnichannel_one_time_order/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import OmnichannelOneTimeOrder -from .responses import OmnichannelOneTimeOrderResponse diff --git a/chargebee/models/omnichannel_one_time_order/operations.py b/chargebee/models/omnichannel_one_time_order/operations.py deleted file mode 100644 index b2df08b..0000000 --- a/chargebee/models/omnichannel_one_time_order/operations.py +++ /dev/null @@ -1,75 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum -from chargebee.filters import Filters -from chargebee.models import omnichannel_one_time_order_item, omnichannel_transaction - - -@dataclass -class OmnichannelOneTimeOrder: - env: environment.Environment - - class Source(Enum): - APPLE_APP_STORE = "apple_app_store" - GOOGLE_PLAY_STORE = "google_play_store" - - def __str__(self): - return self.value - - class OmnichannelOneTimeOrderItemCancellationReason(Enum): - CUSTOMER_CANCELLED = "customer_cancelled" - CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = ( - "customer_did_not_consent_to_price_increase" - ) - REFUNDED_DUE_TO_APP_ISSUE = "refunded_due_to_app_issue" - REFUNDED_FOR_OTHER_REASON = "refunded_for_other_reason" - MERCHANT_REVOKED = "merchant_revoked" - - def __str__(self): - return self.value - - class OmnichannelTransactionType(Enum): - PURCHASE = "purchase" - RENEWAL = "renewal" - - def __str__(self): - return self.value - - class ListParams(TypedDict): - limit: NotRequired[int] - offset: NotRequired[str] - source: NotRequired[Filters.EnumFilter] - customer_id: NotRequired[Filters.StringFilter] - - def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("omnichannel_one_time_orders", id), - self.env, - None, - headers, - RetrieveResponse, - None, - False, - jsonKeys, - options, - ) - - def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} - return request.send_list_request( - "get", - request.uri_path("omnichannel_one_time_orders"), - self.env, - cast(Dict[Any, Any], params), - headers, - ListResponse, - None, - False, - jsonKeys, - options, - ) diff --git a/chargebee/models/omnichannel_one_time_order/responses.py b/chargebee/models/omnichannel_one_time_order/responses.py deleted file mode 100644 index b9936d8..0000000 --- a/chargebee/models/omnichannel_one_time_order/responses.py +++ /dev/null @@ -1,40 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response -from chargebee.models import omnichannel_one_time_order_item, omnichannel_transaction - - -@dataclass -class OmnichannelOneTimeOrderResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - app_id: str = None - customer_id: str = None - id_at_source: str = None - origin: str = None - source: str = None - created_at: int = None - resource_version: int = None - omnichannel_one_time_order_items: List[ - "omnichannel_one_time_order_item.OmnichannelOneTimeOrderItemResponse" - ] = None - purchase_transaction: "omnichannel_transaction.OmnichannelTransactionResponse" = ( - None - ) - - -@dataclass -class RetrieveResponse(Response): - omnichannel_one_time_order: OmnichannelOneTimeOrderResponse - - -@dataclass -class ListOmnichannelOneTimeOrderResponse: - omnichannel_one_time_order: OmnichannelOneTimeOrderResponse - - -@dataclass -class ListResponse(Response): - list: List[ListOmnichannelOneTimeOrderResponse] - next_offset: str = None diff --git a/chargebee/models/omnichannel_one_time_order_item/__init__.py b/chargebee/models/omnichannel_one_time_order_item/__init__.py deleted file mode 100644 index 04ed50c..0000000 --- a/chargebee/models/omnichannel_one_time_order_item/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import OmnichannelOneTimeOrderItem -from .responses import OmnichannelOneTimeOrderItemResponse diff --git a/chargebee/models/omnichannel_one_time_order_item/operations.py b/chargebee/models/omnichannel_one_time_order_item/operations.py deleted file mode 100644 index 14bfc7d..0000000 --- a/chargebee/models/omnichannel_one_time_order_item/operations.py +++ /dev/null @@ -1,23 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class OmnichannelOneTimeOrderItem: - env: environment.Environment - - class CancellationReason(Enum): - CUSTOMER_CANCELLED = "customer_cancelled" - CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = ( - "customer_did_not_consent_to_price_increase" - ) - REFUNDED_DUE_TO_APP_ISSUE = "refunded_due_to_app_issue" - REFUNDED_FOR_OTHER_REASON = "refunded_for_other_reason" - MERCHANT_REVOKED = "merchant_revoked" - - def __str__(self): - return self.value - - pass diff --git a/chargebee/models/omnichannel_one_time_order_item/responses.py b/chargebee/models/omnichannel_one_time_order_item/responses.py deleted file mode 100644 index 63cd8ff..0000000 --- a/chargebee/models/omnichannel_one_time_order_item/responses.py +++ /dev/null @@ -1,16 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class OmnichannelOneTimeOrderItemResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - item_id_at_source: str = None - item_type_at_source: str = None - quantity: int = None - cancelled_at: int = None - cancellation_reason: str = None - created_at: int = None - resource_version: int = None diff --git a/chargebee/models/omnichannel_subscription/operations.py b/chargebee/models/omnichannel_subscription/operations.py index 2d02839..1e7907e 100644 --- a/chargebee/models/omnichannel_subscription/operations.py +++ b/chargebee/models/omnichannel_subscription/operations.py @@ -3,16 +3,16 @@ from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast from enum import Enum from chargebee.filters import Filters -from chargebee.models import omnichannel_subscription_item, omnichannel_transaction +from chargebee.models import omnichannel_subscription_item @dataclass class OmnichannelSubscription: + env: environment.Environment class Source(Enum): APPLE_APP_STORE = "apple_app_store" - GOOGLE_PLAY_STORE = "google_play_store" def __str__(self): return self.value @@ -23,14 +23,6 @@ class OmnichannelSubscriptionItemStatus(Enum): CANCELLED = "cancelled" IN_DUNNING = "in_dunning" IN_GRACE_PERIOD = "in_grace_period" - PAUSED = "paused" - - def __str__(self): - return self.value - - class OmnichannelSubscriptionItemAutoRenewStatus(Enum): - OFF = "off" - ON = "on" def __str__(self): return self.value @@ -48,9 +40,6 @@ class OmnichannelSubscriptionItemCancellationReason(Enum): CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = ( "customer_did_not_consent_to_price_increase" ) - REFUNDED_DUE_TO_APP_ISSUE = "refunded_due_to_app_issue" - REFUNDED_FOR_OTHER_REASON = "refunded_for_other_reason" - MERCHANT_REVOKED = "merchant_revoked" def __str__(self): return self.value @@ -62,29 +51,28 @@ class OmnichannelTransactionType(Enum): def __str__(self): return self.value - class ListOmnichannelSubscriptionItemParams(TypedDict): - status: NotRequired[Filters.EnumFilter] - item_id_at_source: NotRequired[Filters.StringFilter] + class OmnichannelTransaction(TypedDict): + id: Required[str] + id_at_source: Required[str] + app_id: Required[str] + price_currency: Required[str] + price_units: Required[int] + price_nanos: Required[int] + type: Required["OmnichannelSubscription.OmnichannelTransactionType"] + transacted_at: Required[int] + created_at: Required[int] + resource_version: NotRequired[int] class ListParams(TypedDict): limit: NotRequired[int] offset: NotRequired[str] - omnichannel_subscription_item: NotRequired[ - "OmnichannelSubscription.ListOmnichannelSubscriptionItemParams" - ] - source: NotRequired[Filters.EnumFilter] customer_id: NotRequired[Filters.StringFilter] class OmnichannelTransactionsForOmnichannelSubscriptionParams(TypedDict): limit: NotRequired[int] offset: NotRequired[str] - class MoveParams(TypedDict): - to_customer_id: Required[str] - def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("omnichannel_subscriptions", id), @@ -92,15 +80,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("omnichannel_subscriptions"), @@ -108,10 +90,6 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def omnichannel_transactions_for_omnichannel_subscription( @@ -120,8 +98,6 @@ def omnichannel_transactions_for_omnichannel_subscription( params: OmnichannelTransactionsForOmnichannelSubscriptionParams = None, headers=None, ) -> OmnichannelTransactionsForOmnichannelSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path( @@ -131,26 +107,4 @@ def omnichannel_transactions_for_omnichannel_subscription( cast(Dict[Any, Any], params), headers, OmnichannelTransactionsForOmnichannelSubscriptionResponse, - None, - False, - jsonKeys, - options, - ) - - def move(self, id, params: MoveParams, headers=None) -> MoveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } - return request.send( - "post", - request.uri_path("omnichannel_subscriptions", id, "move"), - self.env, - cast(Dict[Any, Any], params), - headers, - MoveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/omnichannel_subscription/responses.py b/chargebee/models/omnichannel_subscription/responses.py index 9587179..075fcde 100644 --- a/chargebee/models/omnichannel_subscription/responses.py +++ b/chargebee/models/omnichannel_subscription/responses.py @@ -1,12 +1,21 @@ from dataclasses import dataclass from chargebee.model import Model from typing import Dict, List, Any -from chargebee.response import Response -from chargebee.models import ( - omnichannel_subscription_item, - omnichannel_transaction, - omnichannel_transaction, -) +from chargebee.models import omnichannel_subscription_item, omnichannel_transaction + + +@dataclass +class OmnichannelTransactionResponse(Model): + id: str = None + id_at_source: str = None + app_id: str = None + price_currency: str = None + price_units: int = None + price_nanos: int = None + type: str = None + transacted_at: int = None + created_at: int = None + resource_version: int = None @dataclass @@ -22,12 +31,15 @@ class OmnichannelSubscriptionResponse(Model): omnichannel_subscription_items: List[ "omnichannel_subscription_item.OmnichannelSubscriptionItemResponse" ] = None - initial_purchase_transaction: "omnichannel_transaction.OmnichannelTransactionResponse" = None + initial_purchase_transaction: ( + "omnichannel_transaction.OmnichannelTransactionResponse" + ) = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: omnichannel_subscription: OmnichannelSubscriptionResponse + headers: Dict[str, str] = None @dataclass @@ -36,9 +48,10 @@ class ListOmnichannelSubscriptionResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListOmnichannelSubscriptionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -47,14 +60,9 @@ class OmnichannelTransactionsForOmnichannelSubscriptionOmnichannelSubscriptionRe @dataclass -class OmnichannelTransactionsForOmnichannelSubscriptionResponse(Response): +class OmnichannelTransactionsForOmnichannelSubscriptionResponse: list: List[ OmnichannelTransactionsForOmnichannelSubscriptionOmnichannelSubscriptionResponse ] next_offset: str = None - - -@dataclass -class MoveResponse(Response): - is_idempotency_replayed: bool - omnichannel_subscription: OmnichannelSubscriptionResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/omnichannel_subscription_item/operations.py b/chargebee/models/omnichannel_subscription_item/operations.py index 2870922..1648882 100644 --- a/chargebee/models/omnichannel_subscription_item/operations.py +++ b/chargebee/models/omnichannel_subscription_item/operations.py @@ -2,11 +2,11 @@ from chargebee import request, environment from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast from enum import Enum -from chargebee.models import omnichannel_subscription_item_offer @dataclass class OmnichannelSubscriptionItem: + env: environment.Environment class Status(Enum): @@ -15,14 +15,6 @@ class Status(Enum): CANCELLED = "cancelled" IN_DUNNING = "in_dunning" IN_GRACE_PERIOD = "in_grace_period" - PAUSED = "paused" - - def __str__(self): - return self.value - - class AutoRenewStatus(Enum): - OFF = "off" - ON = "on" def __str__(self): return self.value @@ -40,40 +32,8 @@ class CancellationReason(Enum): CUSTOMER_DID_NOT_CONSENT_TO_PRICE_INCREASE = ( "customer_did_not_consent_to_price_increase" ) - REFUNDED_DUE_TO_APP_ISSUE = "refunded_due_to_app_issue" - REFUNDED_FOR_OTHER_REASON = "refunded_for_other_reason" - MERCHANT_REVOKED = "merchant_revoked" def __str__(self): return self.value - class UpcomingRenewal(TypedDict): - price_currency: NotRequired[str] - price_units: NotRequired[int] - price_nanos: NotRequired[int] - - class LinkedItem(TypedDict): - id: Required[str] - linked_at: NotRequired[int] - - class ListOmniSubItemScheduleChangesParams(TypedDict): - limit: NotRequired[int] - offset: NotRequired[str] - - def list_omni_sub_item_schedule_changes( - self, id, params: ListOmniSubItemScheduleChangesParams = None, headers=None - ) -> ListOmniSubItemScheduleChangesResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("omnichannel_subscription_items", id, "scheduled_changes"), - self.env, - cast(Dict[Any, Any], params), - headers, - ListOmniSubItemScheduleChangesResponse, - None, - False, - jsonKeys, - options, - ) + pass diff --git a/chargebee/models/omnichannel_subscription_item/responses.py b/chargebee/models/omnichannel_subscription_item/responses.py index 25935e0..bbd3fac 100644 --- a/chargebee/models/omnichannel_subscription_item/responses.py +++ b/chargebee/models/omnichannel_subscription_item/responses.py @@ -1,26 +1,6 @@ from dataclasses import dataclass from chargebee.model import Model from typing import Dict, List, Any -from chargebee.response import Response -from chargebee.models import ( - omnichannel_subscription_item_offer, - omnichannel_subscription_item_scheduled_change, -) - - -@dataclass -class UpcomingRenewalResponse(Model): - raw_data: Dict[Any, Any] = None - price_currency: str = None - price_units: int = None - price_nanos: int = None - - -@dataclass -class LinkedItemResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - linked_at: int = None @dataclass @@ -28,9 +8,7 @@ class OmnichannelSubscriptionItemResponse(Model): raw_data: Dict[Any, Any] = None id: str = None item_id_at_source: str = None - item_parent_id_at_source: str = None status: str = None - auto_renew_status: str = None current_term_start: int = None current_term_end: int = None expired_at: int = None @@ -38,22 +16,4 @@ class OmnichannelSubscriptionItemResponse(Model): cancelled_at: int = None cancellation_reason: str = None grace_period_expires_at: int = None - resumes_at: int = None - has_scheduled_changes: bool = None resource_version: int = None - omnichannel_subscription_item_offers: List[ - "omnichannel_subscription_item_offer.OmnichannelSubscriptionItemOfferResponse" - ] = None - upcoming_renewal: UpcomingRenewalResponse = None - linked_item: LinkedItemResponse = None - - -@dataclass -class ListOmniSubItemScheduleChangesOmnichannelSubscriptionItemResponse: - omnichannel_subscription_item_scheduled_change: "omnichannel_subscription_item_scheduled_change.OmnichannelSubscriptionItemScheduledChangeResponse" - - -@dataclass -class ListOmniSubItemScheduleChangesResponse(Response): - list: List[ListOmniSubItemScheduleChangesOmnichannelSubscriptionItemResponse] - next_offset: str = None diff --git a/chargebee/models/omnichannel_subscription_item_offer/__init__.py b/chargebee/models/omnichannel_subscription_item_offer/__init__.py deleted file mode 100644 index 2aadfb1..0000000 --- a/chargebee/models/omnichannel_subscription_item_offer/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import OmnichannelSubscriptionItemOffer -from .responses import OmnichannelSubscriptionItemOfferResponse diff --git a/chargebee/models/omnichannel_subscription_item_offer/operations.py b/chargebee/models/omnichannel_subscription_item_offer/operations.py deleted file mode 100644 index 87d0186..0000000 --- a/chargebee/models/omnichannel_subscription_item_offer/operations.py +++ /dev/null @@ -1,10 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class OmnichannelSubscriptionItemOffer: - env: environment.Environment - - pass diff --git a/chargebee/models/omnichannel_subscription_item_offer/responses.py b/chargebee/models/omnichannel_subscription_item_offer/responses.py deleted file mode 100644 index ffc7872..0000000 --- a/chargebee/models/omnichannel_subscription_item_offer/responses.py +++ /dev/null @@ -1,23 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class OmnichannelSubscriptionItemOfferResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - offer_id_at_source: str = None - category: str = None - category_at_source: str = None - type: str = None - type_at_source: str = None - discount_type: str = None - duration: str = None - percentage: float = None - price_currency: str = None - price_units: int = None - price_nanos: int = None - offer_term_start: int = None - offer_term_end: int = None - resource_version: int = None diff --git a/chargebee/models/omnichannel_subscription_item_scheduled_change/__init__.py b/chargebee/models/omnichannel_subscription_item_scheduled_change/__init__.py deleted file mode 100644 index 094a6fd..0000000 --- a/chargebee/models/omnichannel_subscription_item_scheduled_change/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import OmnichannelSubscriptionItemScheduledChange -from .responses import OmnichannelSubscriptionItemScheduledChangeResponse diff --git a/chargebee/models/omnichannel_subscription_item_scheduled_change/operations.py b/chargebee/models/omnichannel_subscription_item_scheduled_change/operations.py deleted file mode 100644 index 2f73f4d..0000000 --- a/chargebee/models/omnichannel_subscription_item_scheduled_change/operations.py +++ /dev/null @@ -1,24 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class OmnichannelSubscriptionItemScheduledChange: - env: environment.Environment - - class ChangeType(Enum): - DOWNGRADE = "downgrade" - PAUSE = "pause" - - def __str__(self): - return self.value - - class CurrentState(TypedDict): - item_id_at_source: NotRequired[str] - - class ScheduledState(TypedDict): - item_id_at_source: NotRequired[str] - - pass diff --git a/chargebee/models/omnichannel_subscription_item_scheduled_change/responses.py b/chargebee/models/omnichannel_subscription_item_scheduled_change/responses.py deleted file mode 100644 index 7c4cf25..0000000 --- a/chargebee/models/omnichannel_subscription_item_scheduled_change/responses.py +++ /dev/null @@ -1,29 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class CurrentStateResponse(Model): - raw_data: Dict[Any, Any] = None - item_id_at_source: str = None - - -@dataclass -class ScheduledStateResponse(Model): - raw_data: Dict[Any, Any] = None - item_id_at_source: str = None - - -@dataclass -class OmnichannelSubscriptionItemScheduledChangeResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - omnichannel_subscription_item_id: str = None - scheduled_at: int = None - change_type: str = None - created_at: int = None - modified_at: int = None - resource_version: int = None - current_state: CurrentStateResponse = None - scheduled_state: ScheduledStateResponse = None diff --git a/chargebee/models/omnichannel_transaction/operations.py b/chargebee/models/omnichannel_transaction/operations.py index 5eb9657..0eb6657 100644 --- a/chargebee/models/omnichannel_transaction/operations.py +++ b/chargebee/models/omnichannel_transaction/operations.py @@ -6,6 +6,7 @@ @dataclass class OmnichannelTransaction: + env: environment.Environment class Type(Enum): @@ -15,10 +16,4 @@ class Type(Enum): def __str__(self): return self.value - class LinkedOmnichannelSubscription(TypedDict): - omnichannel_subscription_id: NotRequired[str] - - class LinkedOmnichannelOneTimeOrder(TypedDict): - omnichannel_one_time_order_id: NotRequired[str] - pass diff --git a/chargebee/models/omnichannel_transaction/responses.py b/chargebee/models/omnichannel_transaction/responses.py index 268a45a..8b5149e 100644 --- a/chargebee/models/omnichannel_transaction/responses.py +++ b/chargebee/models/omnichannel_transaction/responses.py @@ -3,18 +3,6 @@ from typing import Dict, List, Any -@dataclass -class LinkedOmnichannelSubscriptionResponse(Model): - raw_data: Dict[Any, Any] = None - omnichannel_subscription_id: str = None - - -@dataclass -class LinkedOmnichannelOneTimeOrderResponse(Model): - raw_data: Dict[Any, Any] = None - omnichannel_one_time_order_id: str = None - - @dataclass class OmnichannelTransactionResponse(Model): raw_data: Dict[Any, Any] = None @@ -28,7 +16,3 @@ class OmnichannelTransactionResponse(Model): transacted_at: int = None created_at: int = None resource_version: int = None - linked_omnichannel_subscriptions: List[LinkedOmnichannelSubscriptionResponse] = None - linked_omnichannel_one_time_orders: List[LinkedOmnichannelOneTimeOrderResponse] = ( - None - ) diff --git a/chargebee/models/order/operations.py b/chargebee/models/order/operations.py index 0d7d5aa..1824f48 100644 --- a/chargebee/models/order/operations.py +++ b/chargebee/models/order/operations.py @@ -8,6 +8,7 @@ @dataclass class Order: + env: environment.Environment class Status(Enum): @@ -107,7 +108,6 @@ def __str__(self): class OrderLineItemLinkedCreditType(Enum): ADJUSTMENT = "adjustment" REFUNDABLE = "refundable" - STORE = "store" def __str__(self): return self.value @@ -158,6 +158,7 @@ class ShippingAddress(TypedDict): country: NotRequired[str] zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] + index: Required[int] class BillingAddress(TypedDict): first_name: NotRequired[str] @@ -377,10 +378,6 @@ class ResendParams(TypedDict): order_line_items: NotRequired[List["Order.ResendOrderLineItemParams"]] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders"), @@ -388,17 +385,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", id), @@ -406,19 +395,11 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def import_order( self, params: ImportOrderParams, headers=None ) -> ImportOrderResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", "import_order"), @@ -426,17 +407,9 @@ def import_order( cast(Dict[Any, Any], params), headers, ImportOrderResponse, - None, - False, - jsonKeys, - options, ) def assign_order_number(self, id, headers=None) -> AssignOrderNumberResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", id, "assign_order_number"), @@ -444,17 +417,9 @@ def assign_order_number(self, id, headers=None) -> AssignOrderNumberResponse: None, headers, AssignOrderNumberResponse, - None, - False, - jsonKeys, - options, ) def cancel(self, id, params: CancelParams, headers=None) -> CancelResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", id, "cancel"), @@ -462,19 +427,11 @@ def cancel(self, id, params: CancelParams, headers=None) -> CancelResponse: cast(Dict[Any, Any], params), headers, CancelResponse, - None, - False, - jsonKeys, - options, ) def create_refundable_credit_note( self, id, params: CreateRefundableCreditNoteParams, headers=None ) -> CreateRefundableCreditNoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", id, "create_refundable_credit_note"), @@ -482,17 +439,9 @@ def create_refundable_credit_note( cast(Dict[Any, Any], params), headers, CreateRefundableCreditNoteResponse, - None, - False, - jsonKeys, - options, ) def reopen(self, id, params: ReopenParams = None, headers=None) -> ReopenResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", id, "reopen"), @@ -500,15 +449,9 @@ def reopen(self, id, params: ReopenParams = None, headers=None) -> ReopenRespons cast(Dict[Any, Any], params), headers, ReopenResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("orders", id), @@ -516,17 +459,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", id, "delete"), @@ -534,15 +469,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("orders"), @@ -550,17 +479,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def orders_for_invoice( self, id, params: OrdersForInvoiceParams = None, headers=None ) -> OrdersForInvoiceResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("invoices", id, "orders"), @@ -568,17 +491,9 @@ def orders_for_invoice( cast(Dict[Any, Any], params), headers, OrdersForInvoiceResponse, - None, - False, - jsonKeys, - options, ) def resend(self, id, params: ResendParams = None, headers=None) -> ResendResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("orders", id, "resend"), @@ -586,8 +501,4 @@ def resend(self, id, params: ResendParams = None, headers=None) -> ResendRespons cast(Dict[Any, Any], params), headers, ResendResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/order/responses.py b/chargebee/models/order/responses.py index f91a682..3741447 100644 --- a/chargebee/models/order/responses.py +++ b/chargebee/models/order/responses.py @@ -7,7 +7,6 @@ @dataclass class OrderLineItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None invoice_id: str = None invoice_line_item_id: str = None @@ -32,7 +31,6 @@ class OrderLineItemResponse(Model): @dataclass class ShippingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -47,11 +45,11 @@ class ShippingAddressResponse(Model): country: str = None zip: str = None validation_status: str = None + index: int = None @dataclass class BillingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -70,7 +68,6 @@ class BillingAddressResponse(Model): @dataclass class LineItemTaxResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None tax_name: str = None tax_rate: float = None @@ -90,7 +87,6 @@ class LineItemTaxResponse(Model): @dataclass class LineItemDiscountResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None discount_type: str = None coupon_id: str = None @@ -100,7 +96,6 @@ class LineItemDiscountResponse(Model): @dataclass class LinkedCreditNoteResponse(Model): - raw_data: Dict[Any, Any] = None amount: int = None type: str = None id: str = None @@ -111,7 +106,6 @@ class LinkedCreditNoteResponse(Model): @dataclass class ResentOrderResponse(Model): - raw_data: Dict[Any, Any] = None order_id: str = None reason: str = None amount: int = None @@ -180,55 +174,56 @@ class OrderResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass class ImportOrderResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass class AssignOrderNumberResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass class CancelResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass class CreateRefundableCreditNoteResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass class ReopenResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: order: OrderResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None @dataclass @@ -237,9 +232,10 @@ class ListOrderResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListOrderResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -248,12 +244,13 @@ class OrdersForInvoiceOrderResponse: @dataclass -class OrdersForInvoiceResponse(Response): +class OrdersForInvoiceResponse: list: List[OrdersForInvoiceOrderResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class ResendResponse(Response): - is_idempotency_replayed: bool order: OrderResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/payment_intent/operations.py b/chargebee/models/payment_intent/operations.py index b9036f7..03552fe 100644 --- a/chargebee/models/payment_intent/operations.py +++ b/chargebee/models/payment_intent/operations.py @@ -7,6 +7,7 @@ @dataclass class PaymentIntent: + env: environment.Environment class Status(Enum): @@ -40,30 +41,6 @@ class PaymentMethodType(Enum): SEPA_INSTANT_TRANSFER = "sepa_instant_transfer" KLARNA_PAY_NOW = "klarna_pay_now" ONLINE_BANKING_POLAND = "online_banking_poland" - PAYCONIQ_BY_BANCONTACT = "payconiq_by_bancontact" - ELECTRONIC_PAYMENT_STANDARD = "electronic_payment_standard" - KBC_PAYMENT_BUTTON = "kbc_payment_button" - PAY_BY_BANK = "pay_by_bank" - TRUSTLY = "trustly" - STABLECOIN = "stablecoin" - KAKAO_PAY = "kakao_pay" - NAVER_PAY = "naver_pay" - REVOLUT_PAY = "revolut_pay" - CASH_APP_PAY = "cash_app_pay" - WECHAT_PAY = "wechat_pay" - ALIPAY = "alipay" - - def __str__(self): - return self.value - - class PaymentAttemptStatus(Enum): - INITED = "inited" - REQUIRES_IDENTIFICATION = "requires_identification" - REQUIRES_CHALLENGE = "requires_challenge" - REQUIRES_REDIRECTION = "requires_redirection" - AUTHORIZED = "authorized" - REFUSED = "refused" - PENDING_AUTHORIZATION = "pending_authorization" def __str__(self): return self.value @@ -87,19 +64,6 @@ class PaymentAttempt(TypedDict): id_at_gateway: NotRequired[str] error_code: NotRequired[str] error_text: NotRequired[str] - checkout_details: NotRequired[str] - created_at: Required[int] - modified_at: Required[int] - error_detail: NotRequired[gateway_error_detail.GatewayErrorDetailResponse] - - class PaymentAttempt(TypedDict): - id: NotRequired[str] - status: Required["PaymentIntent.PaymentAttemptStatus"] - payment_method_type: NotRequired["PaymentIntent.PaymentMethodType"] - id_at_gateway: NotRequired[str] - error_code: NotRequired[str] - error_text: NotRequired[str] - checkout_details: NotRequired[str] created_at: Required[int] modified_at: Required[int] error_detail: NotRequired[gateway_error_detail.GatewayErrorDetailResponse] @@ -124,10 +88,6 @@ class UpdateParams(TypedDict): failure_url: NotRequired[str] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_intents"), @@ -135,17 +95,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_intents", id), @@ -153,15 +105,9 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("payment_intents", id), @@ -169,8 +115,4 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/payment_intent/responses.py b/chargebee/models/payment_intent/responses.py index 4f9e2f6..2877448 100644 --- a/chargebee/models/payment_intent/responses.py +++ b/chargebee/models/payment_intent/responses.py @@ -7,29 +7,12 @@ @dataclass class PaymentAttemptResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - status: str = None - payment_method_type: str = None - id_at_gateway: str = None - error_code: str = None - error_text: str = None - checkout_details: str = None - created_at: int = None - modified_at: int = None - error_detail: gateway_error_detail.GatewayErrorDetailResponse = None - - -@dataclass -class PaymentAttemptResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None status: str = None payment_method_type: str = None id_at_gateway: str = None error_code: str = None error_text: str = None - checkout_details: str = None created_at: int = None modified_at: int = None error_detail: gateway_error_detail.GatewayErrorDetailResponse = None @@ -55,22 +38,22 @@ class PaymentIntentResponse(Model): customer_id: str = None gateway: str = None active_payment_attempt: PaymentAttemptResponse = None - payment_attempts: List[PaymentAttemptResponse] = None business_entity_id: str = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool payment_intent: PaymentIntentResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool payment_intent: PaymentIntentResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: payment_intent: PaymentIntentResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/payment_reference_number/operations.py b/chargebee/models/payment_reference_number/operations.py index f98e57b..57370be 100644 --- a/chargebee/models/payment_reference_number/operations.py +++ b/chargebee/models/payment_reference_number/operations.py @@ -6,6 +6,7 @@ @dataclass class PaymentReferenceNumber: + env: environment.Environment class Type(Enum): diff --git a/chargebee/models/payment_schedule/operations.py b/chargebee/models/payment_schedule/operations.py index 3397ee5..24a37e8 100644 --- a/chargebee/models/payment_schedule/operations.py +++ b/chargebee/models/payment_schedule/operations.py @@ -6,6 +6,7 @@ @dataclass class PaymentSchedule: + env: environment.Environment class EntityType(Enum): diff --git a/chargebee/models/payment_schedule/responses.py b/chargebee/models/payment_schedule/responses.py index c8bd9e7..ee989a3 100644 --- a/chargebee/models/payment_schedule/responses.py +++ b/chargebee/models/payment_schedule/responses.py @@ -5,7 +5,6 @@ @dataclass class ScheduleEntryResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None date: int = None amount: int = None diff --git a/chargebee/models/payment_schedule_estimate/operations.py b/chargebee/models/payment_schedule_estimate/operations.py index 881353b..ea86597 100644 --- a/chargebee/models/payment_schedule_estimate/operations.py +++ b/chargebee/models/payment_schedule_estimate/operations.py @@ -6,6 +6,7 @@ @dataclass class PaymentScheduleEstimate: + env: environment.Environment class EntityType(Enum): diff --git a/chargebee/models/payment_schedule_estimate/responses.py b/chargebee/models/payment_schedule_estimate/responses.py index 0250bc4..fd661c6 100644 --- a/chargebee/models/payment_schedule_estimate/responses.py +++ b/chargebee/models/payment_schedule_estimate/responses.py @@ -5,7 +5,6 @@ @dataclass class ScheduleEntryResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None date: int = None amount: int = None diff --git a/chargebee/models/payment_schedule_scheme/operations.py b/chargebee/models/payment_schedule_scheme/operations.py index 5d83c55..1cce062 100644 --- a/chargebee/models/payment_schedule_scheme/operations.py +++ b/chargebee/models/payment_schedule_scheme/operations.py @@ -6,6 +6,7 @@ @dataclass class PaymentScheduleScheme: + env: environment.Environment class PeriodUnit(Enum): @@ -34,10 +35,6 @@ class CreateParams(TypedDict): ] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_schedule_schemes"), @@ -45,15 +42,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("payment_schedule_schemes", id), @@ -61,17 +52,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_schedule_schemes", id, "delete"), @@ -79,8 +62,4 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/payment_schedule_scheme/responses.py b/chargebee/models/payment_schedule_scheme/responses.py index 2433065..87becdd 100644 --- a/chargebee/models/payment_schedule_scheme/responses.py +++ b/chargebee/models/payment_schedule_scheme/responses.py @@ -6,7 +6,6 @@ @dataclass class PreferredScheduleResponse(Model): - raw_data: Dict[Any, Any] = None period: int = None amount_percentage: float = None @@ -28,16 +27,17 @@ class PaymentScheduleSchemeResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool payment_schedule_scheme: PaymentScheduleSchemeResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: payment_schedule_scheme: PaymentScheduleSchemeResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool payment_schedule_scheme: PaymentScheduleSchemeResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/payment_source/operations.py b/chargebee/models/payment_source/operations.py index bd78782..51c57d8 100644 --- a/chargebee/models/payment_source/operations.py +++ b/chargebee/models/payment_source/operations.py @@ -8,6 +8,7 @@ @dataclass class PaymentSource: + env: environment.Environment class Status(Enum): @@ -298,7 +299,6 @@ class ListParams(TypedDict): limit: NotRequired[int] offset: NotRequired[str] subscription_id: NotRequired[str] - include_deleted: NotRequired[bool] customer_id: NotRequired[Filters.StringFilter] type: NotRequired[Filters.EnumFilter] status: NotRequired[Filters.EnumFilter] @@ -315,12 +315,6 @@ class ExportPaymentSourceParams(TypedDict): def create_using_temp_token( self, params: CreateUsingTempTokenParams, headers=None ) -> CreateUsingTempTokenResponse: - jsonKeys = { - "additional_information": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", "create_using_temp_token"), @@ -328,21 +322,11 @@ def create_using_temp_token( cast(Dict[Any, Any], params), headers, CreateUsingTempTokenResponse, - None, - False, - jsonKeys, - options, ) def create_using_permanent_token( self, params: CreateUsingPermanentTokenParams, headers=None ) -> CreateUsingPermanentTokenResponse: - jsonKeys = { - "additional_information": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", "create_using_permanent_token"), @@ -350,19 +334,11 @@ def create_using_permanent_token( cast(Dict[Any, Any], params), headers, CreateUsingPermanentTokenResponse, - None, - False, - jsonKeys, - options, ) def create_using_token( self, params: CreateUsingTokenParams, headers=None ) -> CreateUsingTokenResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", "create_using_token"), @@ -370,22 +346,11 @@ def create_using_token( cast(Dict[Any, Any], params), headers, CreateUsingTokenResponse, - None, - False, - jsonKeys, - options, ) def create_using_payment_intent( self, params: CreateUsingPaymentIntentParams, headers=None ) -> CreateUsingPaymentIntentResponse: - jsonKeys = { - "additional_info": 1, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", "create_using_payment_intent"), @@ -393,21 +358,11 @@ def create_using_payment_intent( cast(Dict[Any, Any], params), headers, CreateUsingPaymentIntentResponse, - None, - False, - jsonKeys, - options, ) def create_voucher_payment_source( self, params: CreateVoucherPaymentSourceParams, headers=None ) -> CreateVoucherPaymentSourceResponse: - jsonKeys = { - "billing_address": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", "create_voucher_payment_source"), @@ -415,19 +370,9 @@ def create_voucher_payment_source( cast(Dict[Any, Any], params), headers, CreateVoucherPaymentSourceResponse, - None, - False, - jsonKeys, - options, ) def create_card(self, params: CreateCardParams, headers=None) -> CreateCardResponse: - jsonKeys = { - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", "create_card"), @@ -435,21 +380,11 @@ def create_card(self, params: CreateCardParams, headers=None) -> CreateCardRespo cast(Dict[Any, Any], params), headers, CreateCardResponse, - None, - False, - jsonKeys, - options, ) def create_bank_account( self, params: CreateBankAccountParams, headers=None ) -> CreateBankAccountResponse: - jsonKeys = { - "billing_address": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", "create_bank_account"), @@ -457,22 +392,11 @@ def create_bank_account( cast(Dict[Any, Any], params), headers, CreateBankAccountResponse, - None, - False, - jsonKeys, - options, ) def update_card( self, id, params: UpdateCardParams = None, headers=None ) -> UpdateCardResponse: - jsonKeys = { - "gateway_meta_data": 0, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", id, "update_card"), @@ -480,19 +404,11 @@ def update_card( cast(Dict[Any, Any], params), headers, UpdateCardResponse, - None, - False, - jsonKeys, - options, ) def update_bank_account( self, id, params: UpdateBankAccountParams = None, headers=None ) -> UpdateBankAccountResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", id, "update_bank_account"), @@ -500,19 +416,11 @@ def update_bank_account( cast(Dict[Any, Any], params), headers, UpdateBankAccountResponse, - None, - False, - jsonKeys, - options, ) def verify_bank_account( self, id, params: VerifyBankAccountParams, headers=None ) -> VerifyBankAccountResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", id, "verify_bank_account"), @@ -520,15 +428,9 @@ def verify_bank_account( cast(Dict[Any, Any], params), headers, VerifyBankAccountResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("payment_sources", id), @@ -536,15 +438,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("payment_sources"), @@ -552,19 +448,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def switch_gateway_account( self, id, params: SwitchGatewayAccountParams, headers=None ) -> SwitchGatewayAccountResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", id, "switch_gateway_account"), @@ -572,19 +460,11 @@ def switch_gateway_account( cast(Dict[Any, Any], params), headers, SwitchGatewayAccountResponse, - None, - False, - jsonKeys, - options, ) def export_payment_source( self, id, params: ExportPaymentSourceParams, headers=None ) -> ExportPaymentSourceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", id, "export_payment_source"), @@ -592,17 +472,9 @@ def export_payment_source( cast(Dict[Any, Any], params), headers, ExportPaymentSourceResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", id, "delete"), @@ -610,17 +482,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def delete_local(self, id, headers=None) -> DeleteLocalResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_sources", id, "delete_local"), @@ -628,8 +492,4 @@ def delete_local(self, id, headers=None) -> DeleteLocalResponse: None, headers, DeleteLocalResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/payment_source/responses.py b/chargebee/models/payment_source/responses.py index ff8eb93..2c0895a 100644 --- a/chargebee/models/payment_source/responses.py +++ b/chargebee/models/payment_source/responses.py @@ -13,7 +13,6 @@ @dataclass class CardResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None iin: str = None @@ -34,7 +33,6 @@ class CardResponse(Model): @dataclass class BankAccountResponse(Model): - raw_data: Dict[Any, Any] = None last4: str = None name_on_account: str = None first_name: str = None @@ -50,7 +48,6 @@ class BankAccountResponse(Model): @dataclass class CustVoucherSourceResponse(Model): - raw_data: Dict[Any, Any] = None last4: str = None first_name: str = None last_name: str = None @@ -59,7 +56,6 @@ class CustVoucherSourceResponse(Model): @dataclass class BillingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -78,39 +74,33 @@ class BillingAddressResponse(Model): @dataclass class AmazonPaymentResponse(Model): - raw_data: Dict[Any, Any] = None email: str = None agreement_id: str = None @dataclass class UpiResponse(Model): - raw_data: Dict[Any, Any] = None vpa: str = None @dataclass class PaypalResponse(Model): - raw_data: Dict[Any, Any] = None email: str = None agreement_id: str = None @dataclass class VenmoResponse(Model): - raw_data: Dict[Any, Any] = None user_name: str = None @dataclass class KlarnaPayNowResponse(Model): - raw_data: Dict[Any, Any] = None email: str = None @dataclass class MandateResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None subscription_id: str = None created_at: int = None @@ -147,76 +137,77 @@ class PaymentSourceResponse(Model): @dataclass class CreateUsingTempTokenResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class CreateUsingPermanentTokenResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class CreateUsingTokenResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class CreateUsingPaymentIntentResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class CreateVoucherPaymentSourceResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class CreateCardResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class CreateBankAccountResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class UpdateCardResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class UpdateBankAccountResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class VerifyBankAccountResponse(Response): - is_idempotency_replayed: bool payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass @@ -225,35 +216,36 @@ class ListPaymentSourceResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListPaymentSourceResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class SwitchGatewayAccountResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class ExportPaymentSourceResponse(Response): - is_idempotency_replayed: bool third_party_payment_method: ( "third_party_payment_method.ThirdPartyPaymentMethodResponse" ) + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None @dataclass class DeleteLocalResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" payment_source: PaymentSourceResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/payment_voucher/operations.py b/chargebee/models/payment_voucher/operations.py index a288bf2..4fdbcc5 100644 --- a/chargebee/models/payment_voucher/operations.py +++ b/chargebee/models/payment_voucher/operations.py @@ -8,6 +8,7 @@ @dataclass class PaymentVoucher: + env: environment.Environment class Status(Enum): @@ -53,10 +54,6 @@ class PaymentVouchersForCustomerParams(TypedDict): sort_by: NotRequired[Filters.SortFilter] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("payment_vouchers"), @@ -64,15 +61,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("payment_vouchers", id), @@ -80,17 +71,11 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def payment_vouchers_for_invoice( self, id, params: PaymentVouchersForInvoiceParams = None, headers=None ) -> PaymentVouchersForInvoiceResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("invoices", id, "payment_vouchers"), @@ -98,17 +83,11 @@ def payment_vouchers_for_invoice( cast(Dict[Any, Any], params), headers, PaymentVouchersForInvoiceResponse, - None, - False, - jsonKeys, - options, ) def payment_vouchers_for_customer( self, id, params: PaymentVouchersForCustomerParams = None, headers=None ) -> PaymentVouchersForCustomerResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "payment_vouchers"), @@ -116,8 +95,4 @@ def payment_vouchers_for_customer( cast(Dict[Any, Any], params), headers, PaymentVouchersForCustomerResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/payment_voucher/responses.py b/chargebee/models/payment_voucher/responses.py index 6a7637a..884c796 100644 --- a/chargebee/models/payment_voucher/responses.py +++ b/chargebee/models/payment_voucher/responses.py @@ -6,7 +6,6 @@ @dataclass class LinkedInvoiceResponse(Model): - raw_data: Dict[Any, Any] = None invoice_id: str = None txn_id: str = None applied_at: int = None @@ -39,13 +38,14 @@ class PaymentVoucherResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool payment_voucher: PaymentVoucherResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: payment_voucher: PaymentVoucherResponse + headers: Dict[str, str] = None @dataclass @@ -54,9 +54,10 @@ class PaymentVouchersForInvoicePaymentVoucherResponse: @dataclass -class PaymentVouchersForInvoiceResponse(Response): +class PaymentVouchersForInvoiceResponse: list: List[PaymentVouchersForInvoicePaymentVoucherResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -65,6 +66,7 @@ class PaymentVouchersForCustomerPaymentVoucherResponse: @dataclass -class PaymentVouchersForCustomerResponse(Response): +class PaymentVouchersForCustomerResponse: list: List[PaymentVouchersForCustomerPaymentVoucherResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/personalized_offer/__init__.py b/chargebee/models/personalized_offer/__init__.py deleted file mode 100644 index e80818c..0000000 --- a/chargebee/models/personalized_offer/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import PersonalizedOffer -from .responses import PersonalizedOfferResponse diff --git a/chargebee/models/personalized_offer/operations.py b/chargebee/models/personalized_offer/operations.py deleted file mode 100644 index 9371265..0000000 --- a/chargebee/models/personalized_offer/operations.py +++ /dev/null @@ -1,77 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class PersonalizedOffer: - env: environment.Environment - - class OptionProcessingType(Enum): - BILLING_UPDATE = "billing_update" - CHECKOUT = "checkout" - URL_REDIRECT = "url_redirect" - WEBHOOK = "webhook" - EMAIL = "email" - - def __str__(self): - return self.value - - class OptionProcessingLayout(Enum): - IN_APP = "in_app" - FULL_PAGE = "full_page" - - def __str__(self): - return self.value - - class Content(TypedDict): - title: Required[str] - description: Required[str] - - class Option(TypedDict): - id: Required[str] - label: Required[str] - processing_type: Required["PersonalizedOffer.OptionProcessingType"] - processing_layout: Required["PersonalizedOffer.OptionProcessingLayout"] - redirect_url: Required[str] - - class PersonalizedOffersRequestContextParams(TypedDict): - user_agent: NotRequired[str] - locale: NotRequired[str] - timezone: NotRequired[str] - url: NotRequired[str] - referrer_url: NotRequired[str] - - class PersonalizedOffersParams(TypedDict): - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - roles: NotRequired[List[str]] - external_user_id: NotRequired[str] - subscription_id: NotRequired[str] - customer_id: Required[str] - custom: NotRequired[Dict[Any, Any]] - request_context: NotRequired[ - "PersonalizedOffer.PersonalizedOffersRequestContextParams" - ] - - def personalized_offers( - self, params: PersonalizedOffersParams, headers=None - ) -> PersonalizedOffersResponse: - jsonKeys = { - "custom": 0, - } - options = {} - return request.send( - "post", - request.uri_path("personalized_offers"), - self.env, - cast(Dict[Any, Any], params), - headers, - PersonalizedOffersResponse, - "grow", - True, - jsonKeys, - options, - ) diff --git a/chargebee/models/personalized_offer/responses.py b/chargebee/models/personalized_offer/responses.py deleted file mode 100644 index 511749e..0000000 --- a/chargebee/models/personalized_offer/responses.py +++ /dev/null @@ -1,39 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response -from chargebee.models import brand - - -@dataclass -class ContentResponse(Model): - raw_data: Dict[Any, Any] = None - title: str = None - description: str = None - - -@dataclass -class OptionResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - label: str = None - processing_type: str = None - processing_layout: str = None - redirect_url: str = None - - -@dataclass -class PersonalizedOfferResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - offer_id: str = None - content: ContentResponse = None - options: List[OptionResponse] = None - - -@dataclass -class PersonalizedOffersResponse(Response): - is_idempotency_replayed: bool - personalized_offers: List[PersonalizedOfferResponse] - expires_at: int - brand: "brand.BrandResponse" = None diff --git a/chargebee/models/plan/operations.py b/chargebee/models/plan/operations.py index 8558e5e..f979e2a 100644 --- a/chargebee/models/plan/operations.py +++ b/chargebee/models/plan/operations.py @@ -8,6 +8,7 @@ @dataclass class Plan: + env: environment.Environment class PeriodUnit(Enum): @@ -82,8 +83,6 @@ class Tier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class TaxProvidersField(TypedDict): provider_name: Required[str] @@ -298,12 +297,6 @@ class CopyParams(TypedDict): for_site_merging: NotRequired[bool] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("plans"), @@ -311,19 +304,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("plans", id), @@ -331,15 +314,9 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("plans"), @@ -347,15 +324,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("plans", id), @@ -363,17 +334,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("plans", id, "delete"), @@ -381,17 +344,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def copy(self, params: CopyParams, headers=None) -> CopyResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("plans", "copy"), @@ -399,17 +354,9 @@ def copy(self, params: CopyParams, headers=None) -> CopyResponse: cast(Dict[Any, Any], params), headers, CopyResponse, - None, - False, - jsonKeys, - options, ) def unarchive(self, id, headers=None) -> UnarchiveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("plans", id, "unarchive"), @@ -417,8 +364,4 @@ def unarchive(self, id, headers=None) -> UnarchiveResponse: None, headers, UnarchiveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/plan/responses.py b/chargebee/models/plan/responses.py index 8f036ab..8c939b2 100644 --- a/chargebee/models/plan/responses.py +++ b/chargebee/models/plan/responses.py @@ -6,20 +6,16 @@ @dataclass class TierResponse(Model): - raw_data: Dict[Any, Any] = None starting_unit: int = None ending_unit: int = None price: int = None starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None @dataclass class TaxProvidersFieldResponse(Model): - raw_data: Dict[Any, Any] = None provider_name: str = None field_id: str = None field_value: str = None @@ -27,13 +23,11 @@ class TaxProvidersFieldResponse(Model): @dataclass class ApplicableAddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None @dataclass class AttachedAddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None quantity: int = None billing_cycles: int = None @@ -43,7 +37,6 @@ class AttachedAddonResponse(Model): @dataclass class EventBasedAddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None quantity: int = None on_event: str = None @@ -114,14 +107,14 @@ class PlanResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool plan: PlanResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool plan: PlanResponse + headers: Dict[str, str] = None @dataclass @@ -130,29 +123,31 @@ class ListPlanResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListPlanResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: plan: PlanResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool plan: PlanResponse + headers: Dict[str, str] = None @dataclass class CopyResponse(Response): - is_idempotency_replayed: bool plan: PlanResponse + headers: Dict[str, str] = None @dataclass class UnarchiveResponse(Response): - is_idempotency_replayed: bool plan: PlanResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/portal_session/operations.py b/chargebee/models/portal_session/operations.py index 21ef4ec..9f11f52 100644 --- a/chargebee/models/portal_session/operations.py +++ b/chargebee/models/portal_session/operations.py @@ -6,6 +6,7 @@ @dataclass class PortalSession: + env: environment.Environment class Status(Enum): @@ -37,10 +38,6 @@ class ActivateParams(TypedDict): token: Required[str] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("portal_sessions"), @@ -48,15 +45,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("portal_sessions", id), @@ -64,17 +55,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def logout(self, id, headers=None) -> LogoutResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("portal_sessions", id, "logout"), @@ -82,17 +65,9 @@ def logout(self, id, headers=None) -> LogoutResponse: None, headers, LogoutResponse, - None, - False, - jsonKeys, - options, ) def activate(self, id, params: ActivateParams, headers=None) -> ActivateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("portal_sessions", id, "activate"), @@ -100,8 +75,4 @@ def activate(self, id, params: ActivateParams, headers=None) -> ActivateResponse cast(Dict[Any, Any], params), headers, ActivateResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/portal_session/responses.py b/chargebee/models/portal_session/responses.py index 2597000..ed6791d 100644 --- a/chargebee/models/portal_session/responses.py +++ b/chargebee/models/portal_session/responses.py @@ -6,7 +6,6 @@ @dataclass class LinkedCustomerResponse(Model): - raw_data: Dict[Any, Any] = None customer_id: str = None email: str = None has_billing_address: bool = None @@ -34,22 +33,23 @@ class PortalSessionResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool portal_session: PortalSessionResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: portal_session: PortalSessionResponse + headers: Dict[str, str] = None @dataclass class LogoutResponse(Response): - is_idempotency_replayed: bool portal_session: PortalSessionResponse + headers: Dict[str, str] = None @dataclass class ActivateResponse(Response): - is_idempotency_replayed: bool portal_session: PortalSessionResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/price_variant/operations.py b/chargebee/models/price_variant/operations.py index bdc42e4..b445c43 100644 --- a/chargebee/models/price_variant/operations.py +++ b/chargebee/models/price_variant/operations.py @@ -7,6 +7,7 @@ @dataclass class PriceVariant: + env: environment.Environment class Status(Enum): @@ -59,10 +60,6 @@ class ListParams(TypedDict): sort_by: NotRequired[Filters.SortFilter] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("price_variants"), @@ -70,15 +67,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("price_variants", id), @@ -86,17 +77,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("price_variants", id), @@ -104,17 +87,9 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("price_variants", id, "delete"), @@ -122,15 +97,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("price_variants"), @@ -138,8 +107,4 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/price_variant/responses.py b/chargebee/models/price_variant/responses.py index 7bdc1d5..7a19da2 100644 --- a/chargebee/models/price_variant/responses.py +++ b/chargebee/models/price_variant/responses.py @@ -6,7 +6,6 @@ @dataclass class AttributeResponse(Model): - raw_data: Dict[Any, Any] = None name: str = None value: str = None @@ -26,30 +25,30 @@ class PriceVariantResponse(Model): archived_at: int = None attributes: List[AttributeResponse] = None business_entity_id: str = None - deleted: bool = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool price_variant: PriceVariantResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: price_variant: PriceVariantResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool price_variant: PriceVariantResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool price_variant: PriceVariantResponse + headers: Dict[str, str] = None @dataclass @@ -58,6 +57,7 @@ class ListPriceVariantResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListPriceVariantResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/pricing_page_session/operations.py b/chargebee/models/pricing_page_session/operations.py index e3ec0c1..2c6d52c 100644 --- a/chargebee/models/pricing_page_session/operations.py +++ b/chargebee/models/pricing_page_session/operations.py @@ -1,11 +1,12 @@ from .responses import * from chargebee import request, environment from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from chargebee.models import enums, contract_term +from chargebee.models import enums @dataclass class PricingPageSession: + env: environment.Environment class CreateForNewSubscriptionPricingPageParams(TypedDict): @@ -24,7 +25,7 @@ class CreateForNewSubscriptionCustomerParams(TypedDict): locale: NotRequired[str] class CreateForNewSubscriptionDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -32,7 +33,6 @@ class CreateForNewSubscriptionDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] label: NotRequired[str] class CreateForNewSubscriptionBillingAddressParams(TypedDict): @@ -67,18 +67,14 @@ class CreateForNewSubscriptionShippingAddressParams(TypedDict): country: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] - class CreateForNewSubscriptionContractTermParams(TypedDict): - action_at_term_end: NotRequired["contract_term.ContractTerm.ActionAtTermEnd"] - cancellation_cutoff_period: NotRequired[int] - class CreateForExistingSubscriptionPricingPageParams(TypedDict): - id: NotRequired[str] + id: Required[str] class CreateForExistingSubscriptionSubscriptionParams(TypedDict): id: Required[str] class CreateForExistingSubscriptionDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -86,13 +82,8 @@ class CreateForExistingSubscriptionDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] label: NotRequired[str] - class CreateForExistingSubscriptionContractTermParams(TypedDict): - action_at_term_end: NotRequired["contract_term.ContractTerm.ActionAtTermEnd"] - cancellation_cutoff_period: NotRequired[int] - class CreateForNewSubscriptionParams(TypedDict): redirect_url: NotRequired[str] pricing_page: Required[ @@ -102,8 +93,6 @@ class CreateForNewSubscriptionParams(TypedDict): "PricingPageSession.CreateForNewSubscriptionSubscriptionParams" ] business_entity_id: NotRequired[str] - auto_select_local_currency: NotRequired[bool] - custom: NotRequired[Dict[Any, Any]] customer: NotRequired[ "PricingPageSession.CreateForNewSubscriptionCustomerParams" ] @@ -116,35 +105,22 @@ class CreateForNewSubscriptionParams(TypedDict): shipping_address: NotRequired[ "PricingPageSession.CreateForNewSubscriptionShippingAddressParams" ] - contract_term: NotRequired[ - "PricingPageSession.CreateForNewSubscriptionContractTermParams" - ] class CreateForExistingSubscriptionParams(TypedDict): redirect_url: NotRequired[str] - pricing_page: NotRequired[ + pricing_page: Required[ "PricingPageSession.CreateForExistingSubscriptionPricingPageParams" ] subscription: Required[ "PricingPageSession.CreateForExistingSubscriptionSubscriptionParams" ] - custom: NotRequired[Dict[Any, Any]] discounts: Required[ List["PricingPageSession.CreateForExistingSubscriptionDiscountParams"] ] - contract_term: NotRequired[ - "PricingPageSession.CreateForExistingSubscriptionContractTermParams" - ] def create_for_new_subscription( self, params: CreateForNewSubscriptionParams, headers=None ) -> CreateForNewSubscriptionResponse: - jsonKeys = { - "custom": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("pricing_page_sessions", "create_for_new_subscription"), @@ -152,21 +128,11 @@ def create_for_new_subscription( cast(Dict[Any, Any], params), headers, CreateForNewSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def create_for_existing_subscription( self, params: CreateForExistingSubscriptionParams, headers=None ) -> CreateForExistingSubscriptionResponse: - jsonKeys = { - "custom": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path( @@ -176,8 +142,4 @@ def create_for_existing_subscription( cast(Dict[Any, Any], params), headers, CreateForExistingSubscriptionResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/pricing_page_session/responses.py b/chargebee/models/pricing_page_session/responses.py index d52748e..df41bda 100644 --- a/chargebee/models/pricing_page_session/responses.py +++ b/chargebee/models/pricing_page_session/responses.py @@ -2,7 +2,6 @@ from chargebee.model import Model from typing import Dict, List, Any from chargebee.response import Response -from chargebee.models import contract_term @dataclass @@ -16,11 +15,11 @@ class PricingPageSessionResponse(Model): @dataclass class CreateForNewSubscriptionResponse(Response): - is_idempotency_replayed: bool pricing_page_session: PricingPageSessionResponse + headers: Dict[str, str] = None @dataclass class CreateForExistingSubscriptionResponse(Response): - is_idempotency_replayed: bool pricing_page_session: PricingPageSessionResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/promotional_credit/operations.py b/chargebee/models/promotional_credit/operations.py index 7c05654..3d178d4 100644 --- a/chargebee/models/promotional_credit/operations.py +++ b/chargebee/models/promotional_credit/operations.py @@ -8,6 +8,7 @@ @dataclass class PromotionalCredit: + env: environment.Environment class Type(Enum): @@ -53,10 +54,6 @@ class ListParams(TypedDict): customer_id: NotRequired[Filters.StringFilter] def add(self, params: AddParams, headers=None) -> AddResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("promotional_credits", "add"), @@ -64,17 +61,9 @@ def add(self, params: AddParams, headers=None) -> AddResponse: cast(Dict[Any, Any], params), headers, AddResponse, - None, - False, - jsonKeys, - options, ) def deduct(self, params: DeductParams, headers=None) -> DeductResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("promotional_credits", "deduct"), @@ -82,17 +71,9 @@ def deduct(self, params: DeductParams, headers=None) -> DeductResponse: cast(Dict[Any, Any], params), headers, DeductResponse, - None, - False, - jsonKeys, - options, ) def set(self, params: SetParams, headers=None) -> SetResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("promotional_credits", "set"), @@ -100,15 +81,9 @@ def set(self, params: SetParams, headers=None) -> SetResponse: cast(Dict[Any, Any], params), headers, SetResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("promotional_credits"), @@ -116,15 +91,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("promotional_credits", id), @@ -132,8 +101,4 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/promotional_credit/responses.py b/chargebee/models/promotional_credit/responses.py index 27f8f87..91303fd 100644 --- a/chargebee/models/promotional_credit/responses.py +++ b/chargebee/models/promotional_credit/responses.py @@ -20,28 +20,27 @@ class PromotionalCreditResponse(Model): closing_balance: int = None done_by: str = None created_at: int = None - business_entity_id: str = None @dataclass class AddResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" promotional_credit: PromotionalCreditResponse + headers: Dict[str, str] = None @dataclass class DeductResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" promotional_credit: PromotionalCreditResponse + headers: Dict[str, str] = None @dataclass class SetResponse(Response): - is_idempotency_replayed: bool customer: "customer.CustomerResponse" promotional_credit: PromotionalCreditResponse + headers: Dict[str, str] = None @dataclass @@ -50,11 +49,13 @@ class ListPromotionalCreditResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListPromotionalCreditResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: promotional_credit: PromotionalCreditResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/purchase/operations.py b/chargebee/models/purchase/operations.py index 18f6d62..90f4ae1 100644 --- a/chargebee/models/purchase/operations.py +++ b/chargebee/models/purchase/operations.py @@ -1,11 +1,12 @@ from .responses import * from chargebee import request, environment from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from chargebee.models import enums, payment_intent, contract_term +from chargebee.models import enums, contract_term @dataclass class Purchase: + env: environment.Environment class CreatePurchaseItemParams(TypedDict): @@ -46,7 +47,6 @@ class CreateDiscountParams(TypedDict): index: NotRequired[int] coupon_id: NotRequired[str] percentage: NotRequired[float] - quantity: NotRequired[int] amount: NotRequired[int] included_in_mrr: NotRequired[bool] @@ -73,17 +73,6 @@ class CreatePaymentScheduleParams(TypedDict): class CreateStatementDescriptorParams(TypedDict): descriptor: NotRequired[str] - class CreatePaymentIntentParams(TypedDict): - id: NotRequired[str] - gateway_account_id: NotRequired[str] - gw_token: NotRequired[str] - payment_method_type: NotRequired[ - "payment_intent.PaymentIntent.PaymentMethodType" - ] - reference_id: NotRequired[str] - gw_payment_method_id: NotRequired[str] - additional_information: NotRequired[Dict[Any, Any]] - class EstimatePurchaseItemParams(TypedDict): index: Required[int] item_price_id: Required[str] @@ -122,7 +111,6 @@ class EstimateDiscountParams(TypedDict): index: NotRequired[int] coupon_id: NotRequired[str] percentage: NotRequired[float] - quantity: NotRequired[int] amount: NotRequired[int] included_in_mrr: NotRequired[bool] @@ -169,8 +157,6 @@ class CreateParams(TypedDict): statement_descriptor: NotRequired["Purchase.CreateStatementDescriptorParams"] customer_id: Required[str] payment_source_id: NotRequired[str] - payment_intent: NotRequired["Purchase.CreatePaymentIntentParams"] - replace_primary_payment_source: NotRequired[bool] class EstimateParams(TypedDict): purchase_items: Required[List["Purchase.EstimatePurchaseItemParams"]] @@ -185,13 +171,6 @@ class EstimateParams(TypedDict): customer_id: NotRequired[str] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "additional_information": 1, - "meta_data": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("purchases"), @@ -199,17 +178,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def estimate(self, params: EstimateParams, headers=None) -> EstimateResponse: - jsonKeys = { - "exemption_details": 1, - } - options = {} return request.send( "post", request.uri_path("purchases", "estimate"), @@ -217,8 +188,4 @@ def estimate(self, params: EstimateParams, headers=None) -> EstimateResponse: cast(Dict[Any, Any], params), headers, EstimateResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/purchase/responses.py b/chargebee/models/purchase/responses.py index 894d8a0..7a21e9f 100644 --- a/chargebee/models/purchase/responses.py +++ b/chargebee/models/purchase/responses.py @@ -2,7 +2,7 @@ from chargebee.model import Model from typing import Dict, List, Any from chargebee.response import Response -from chargebee.models import payment_intent, contract_term, estimate +from chargebee.models import contract_term, estimate @dataclass @@ -18,11 +18,11 @@ class PurchaseResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool purchase: PurchaseResponse + headers: Dict[str, str] = None @dataclass class EstimateResponse(Response): - is_idempotency_replayed: bool estimate: "estimate.EstimateResponse" + headers: Dict[str, str] = None diff --git a/chargebee/models/quote/operations.py b/chargebee/models/quote/operations.py index 7201290..8f359dc 100644 --- a/chargebee/models/quote/operations.py +++ b/chargebee/models/quote/operations.py @@ -8,6 +8,7 @@ @dataclass class Quote: + env: environment.Environment class Status(Enum): @@ -16,11 +17,6 @@ class Status(Enum): DECLINED = "declined" INVOICED = "invoiced" CLOSED = "closed" - PENDING_APPROVAL = "pending_approval" - APPROVAL_REJECTED = "approval_rejected" - PROPOSED = "proposed" - VOIDED = "voided" - EXPIRED = "expired" def __str__(self): return self.value @@ -29,7 +25,6 @@ class OperationType(Enum): CREATE_SUBSCRIPTION_FOR_CUSTOMER = "create_subscription_for_customer" CHANGE_SUBSCRIPTION = "change_subscription" ONETIME_INVOICE = "onetime_invoice" - RENEW_SUBSCRIPTION = "renew_subscription" def __str__(self): return self.value @@ -46,7 +41,7 @@ class LineItemEntityType(Enum): def __str__(self): return self.value - class LineItemDiscountDiscountType(Enum): + class DiscountEntityType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -57,7 +52,14 @@ class LineItemDiscountDiscountType(Enum): def __str__(self): return self.value - class DiscountEntityType(Enum): + class DiscountDiscountType(Enum): + FIXED_AMOUNT = "fixed_amount" + PERCENTAGE = "percentage" + + def __str__(self): + return self.value + + class LineItemDiscountDiscountType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -68,13 +70,6 @@ class DiscountEntityType(Enum): def __str__(self): return self.value - class DiscountDiscountType(Enum): - FIXED_AMOUNT = "fixed_amount" - PERCENTAGE = "percentage" - - def __str__(self): - return self.value - class LineItem(TypedDict): id: NotRequired[str] subscription_id: NotRequired[str] @@ -92,8 +87,7 @@ class LineItem(TypedDict): amount_in_decimal: NotRequired[str] discount_amount: NotRequired[int] item_level_discount_amount: NotRequired[int] - metered: NotRequired[bool] - is_percentage_pricing: NotRequired[bool] + usage_percentage: NotRequired[str] reference_line_item_id: NotRequired[str] description: Required[str] entity_description: NotRequired[str] @@ -102,18 +96,13 @@ class LineItem(TypedDict): entity_id: NotRequired[str] customer_id: NotRequired[str] - class LineItemTier(TypedDict): - line_item_id: NotRequired[str] - starting_unit: Required[int] - ending_unit: NotRequired[int] - quantity_used: Required[int] - unit_amount: Required[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - quantity_used_in_decimal: NotRequired[str] - unit_amount_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] + class Discount(TypedDict): + amount: Required[int] + description: NotRequired[str] + entity_type: Required["Quote.DiscountEntityType"] + discount_type: NotRequired["Quote.DiscountDiscountType"] + entity_id: NotRequired[str] + coupon_set_code: NotRequired[str] class LineItemDiscount(TypedDict): line_item_id: Required[str] @@ -122,6 +111,11 @@ class LineItemDiscount(TypedDict): entity_id: NotRequired[str] discount_amount: Required[int] + class Tax(TypedDict): + name: Required[str] + amount: Required[int] + description: NotRequired[str] + class LineItemTax(TypedDict): line_item_id: NotRequired[str] tax_name: Required[str] @@ -139,19 +133,16 @@ class LineItemTax(TypedDict): tax_amount_in_local_currency: NotRequired[int] local_currency_code: NotRequired[str] - class Discount(TypedDict): - amount: Required[int] - description: NotRequired[str] + class LineItemTier(TypedDict): line_item_id: NotRequired[str] - entity_type: Required["Quote.DiscountEntityType"] - discount_type: NotRequired["Quote.DiscountDiscountType"] - entity_id: NotRequired[str] - coupon_set_code: NotRequired[str] - - class Tax(TypedDict): - name: Required[str] - amount: Required[int] - description: NotRequired[str] + starting_unit: Required[int] + ending_unit: NotRequired[int] + quantity_used: Required[int] + unit_amount: Required[int] + starting_unit_in_decimal: NotRequired[str] + ending_unit_in_decimal: NotRequired[str] + quantity_used_in_decimal: NotRequired[str] + unit_amount_in_decimal: NotRequired[str] class ShippingAddress(TypedDict): first_name: NotRequired[str] @@ -168,6 +159,7 @@ class ShippingAddress(TypedDict): country: NotRequired[str] zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] + index: Required[int] class BillingAddress(TypedDict): first_name: NotRequired[str] @@ -526,10 +518,7 @@ class CreateSubItemsForCustomerQuoteSubscriptionParams(TypedDict): trial_end: NotRequired[int] setup_fee: NotRequired[int] start_date: NotRequired[int] - offline_payment_method: NotRequired[enums.OfflinePaymentMethod] contract_term_billing_cycle_on_renewal: NotRequired[int] - free_period: NotRequired[int] - free_period_unit: NotRequired[enums.FreePeriodUnit] class CreateSubItemsForCustomerQuoteSubscriptionItemParams(TypedDict): item_price_id: Required[str] @@ -544,12 +533,9 @@ class CreateSubItemsForCustomerQuoteSubscriptionItemParams(TypedDict): charge_once: NotRequired[bool] item_type: NotRequired[enums.ItemType] charge_on_option: NotRequired[enums.ChargeOnOption] - start_date: NotRequired[int] - end_date: NotRequired[int] - ramp_tier_id: NotRequired[str] class CreateSubItemsForCustomerQuoteDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -557,9 +543,6 @@ class CreateSubItemsForCustomerQuoteDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] - start_date: NotRequired[int] - end_date: NotRequired[int] class CreateSubItemsForCustomerQuoteItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -569,9 +552,6 @@ class CreateSubItemsForCustomerQuoteItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - ramp_tier_id: NotRequired[str] class CreateSubItemsForCustomerQuoteShippingAddressParams(TypedDict): first_name: NotRequired[str] @@ -593,37 +573,13 @@ class CreateSubItemsForCustomerQuoteContractTermParams(TypedDict): action_at_term_end: NotRequired["contract_term.ContractTerm.ActionAtTermEnd"] cancellation_cutoff_period: NotRequired[int] - class CreateSubItemsForCustomerQuoteBillingAddressParams(TypedDict): - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - zip: NotRequired[str] - country: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - - class CreateSubItemsForCustomerQuoteCouponParams(TypedDict): - id: NotRequired[str] - start_date: NotRequired[int] - end_date: NotRequired[int] - class EditCreateSubCustomerQuoteForItemsSubscriptionParams(TypedDict): id: NotRequired[str] po_number: NotRequired[str] trial_end: NotRequired[int] setup_fee: NotRequired[int] start_date: NotRequired[int] - offline_payment_method: NotRequired[enums.OfflinePaymentMethod] contract_term_billing_cycle_on_renewal: NotRequired[int] - free_period: NotRequired[int] - free_period_unit: NotRequired[enums.FreePeriodUnit] class EditCreateSubCustomerQuoteForItemsSubscriptionItemParams(TypedDict): item_price_id: Required[str] @@ -638,12 +594,9 @@ class EditCreateSubCustomerQuoteForItemsSubscriptionItemParams(TypedDict): charge_once: NotRequired[bool] item_type: NotRequired[enums.ItemType] charge_on_option: NotRequired[enums.ChargeOnOption] - start_date: NotRequired[int] - end_date: NotRequired[int] - ramp_tier_id: NotRequired[str] class EditCreateSubCustomerQuoteForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -651,9 +604,6 @@ class EditCreateSubCustomerQuoteForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] - start_date: NotRequired[int] - end_date: NotRequired[int] class EditCreateSubCustomerQuoteForItemsItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -663,9 +613,6 @@ class EditCreateSubCustomerQuoteForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - ramp_tier_id: NotRequired[str] class EditCreateSubCustomerQuoteForItemsShippingAddressParams(TypedDict): first_name: NotRequired[str] @@ -687,27 +634,6 @@ class EditCreateSubCustomerQuoteForItemsContractTermParams(TypedDict): action_at_term_end: NotRequired["contract_term.ContractTerm.ActionAtTermEnd"] cancellation_cutoff_period: NotRequired[int] - class EditCreateSubCustomerQuoteForItemsBillingAddressParams(TypedDict): - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - zip: NotRequired[str] - country: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - - class EditCreateSubCustomerQuoteForItemsCouponParams(TypedDict): - id: NotRequired[str] - start_date: NotRequired[int] - end_date: NotRequired[int] - class UpdateSubscriptionQuoteForItemsSubscriptionParams(TypedDict): id: Required[str] setup_fee: NotRequired[int] @@ -731,12 +657,9 @@ class UpdateSubscriptionQuoteForItemsSubscriptionItemParams(TypedDict): charge_once: NotRequired[bool] charge_on_option: NotRequired[enums.ChargeOnOption] item_type: NotRequired[enums.ItemType] - start_date: NotRequired[int] - end_date: NotRequired[int] - ramp_tier_id: NotRequired[str] class UpdateSubscriptionQuoteForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -744,11 +667,8 @@ class UpdateSubscriptionQuoteForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] operation_type: Required[enums.OperationType] id: NotRequired[str] - start_date: NotRequired[int] - end_date: NotRequired[int] class UpdateSubscriptionQuoteForItemsItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -758,9 +678,6 @@ class UpdateSubscriptionQuoteForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - ramp_tier_id: NotRequired[str] class UpdateSubscriptionQuoteForItemsBillingAddressParams(TypedDict): first_name: NotRequired[str] @@ -803,11 +720,6 @@ class UpdateSubscriptionQuoteForItemsContractTermParams(TypedDict): action_at_term_end: NotRequired["contract_term.ContractTerm.ActionAtTermEnd"] cancellation_cutoff_period: NotRequired[int] - class UpdateSubscriptionQuoteForItemsCouponParams(TypedDict): - id: NotRequired[str] - start_date: NotRequired[int] - end_date: NotRequired[int] - class EditUpdateSubscriptionQuoteForItemsSubscriptionItemParams(TypedDict): item_price_id: Required[str] quantity: NotRequired[int] @@ -821,9 +733,6 @@ class EditUpdateSubscriptionQuoteForItemsSubscriptionItemParams(TypedDict): charge_once: NotRequired[bool] charge_on_option: NotRequired[enums.ChargeOnOption] item_type: NotRequired[enums.ItemType] - start_date: NotRequired[int] - end_date: NotRequired[int] - ramp_tier_id: NotRequired[str] class EditUpdateSubscriptionQuoteForItemsSubscriptionParams(TypedDict): setup_fee: NotRequired[int] @@ -835,7 +744,7 @@ class EditUpdateSubscriptionQuoteForItemsSubscriptionParams(TypedDict): contract_term_billing_cycle_on_renewal: NotRequired[int] class EditUpdateSubscriptionQuoteForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -843,11 +752,8 @@ class EditUpdateSubscriptionQuoteForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] operation_type: Required[enums.OperationType] id: NotRequired[str] - start_date: NotRequired[int] - end_date: NotRequired[int] class EditUpdateSubscriptionQuoteForItemsItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -857,9 +763,6 @@ class EditUpdateSubscriptionQuoteForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - ramp_tier_id: NotRequired[str] class EditUpdateSubscriptionQuoteForItemsBillingAddressParams(TypedDict): first_name: NotRequired[str] @@ -902,11 +805,6 @@ class EditUpdateSubscriptionQuoteForItemsContractTermParams(TypedDict): action_at_term_end: NotRequired["contract_term.ContractTerm.ActionAtTermEnd"] cancellation_cutoff_period: NotRequired[int] - class EditUpdateSubscriptionQuoteForItemsCouponParams(TypedDict): - id: NotRequired[str] - start_date: NotRequired[int] - end_date: NotRequired[int] - class CreateForChargeItemsAndChargesItemPriceParams(TypedDict): item_price_id: NotRequired[str] quantity: NotRequired[int] @@ -923,8 +821,6 @@ class CreateForChargeItemsAndChargesItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateForChargeItemsAndChargesChargeParams(TypedDict): amount: NotRequired[int] @@ -935,22 +831,6 @@ class CreateForChargeItemsAndChargesChargeParams(TypedDict): avalara_service_type: NotRequired[int] service_period: NotRequired[int] - class CreateForChargeItemsAndChargesBillingAddressParams(TypedDict): - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - zip: NotRequired[str] - country: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - class CreateForChargeItemsAndChargesShippingAddressParams(TypedDict): first_name: NotRequired[str] last_name: NotRequired[str] @@ -969,7 +849,6 @@ class CreateForChargeItemsAndChargesShippingAddressParams(TypedDict): class CreateForChargeItemsAndChargesDiscountParams(TypedDict): percentage: NotRequired[float] - quantity: NotRequired[int] amount: NotRequired[int] apply_on: Required[enums.ApplyOn] item_price_id: NotRequired[str] @@ -995,8 +874,6 @@ class EditForChargeItemsAndChargesItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class EditForChargeItemsAndChargesChargeParams(TypedDict): amount: NotRequired[int] @@ -1007,22 +884,6 @@ class EditForChargeItemsAndChargesChargeParams(TypedDict): avalara_service_type: NotRequired[int] service_period: NotRequired[int] - class EditForChargeItemsAndChargesBillingAddressParams(TypedDict): - first_name: NotRequired[str] - last_name: NotRequired[str] - email: NotRequired[str] - company: NotRequired[str] - phone: NotRequired[str] - line1: NotRequired[str] - line2: NotRequired[str] - line3: NotRequired[str] - city: NotRequired[str] - state_code: NotRequired[str] - state: NotRequired[str] - zip: NotRequired[str] - country: NotRequired[str] - validation_status: NotRequired[enums.ValidationStatus] - class EditForChargeItemsAndChargesShippingAddressParams(TypedDict): first_name: NotRequired[str] last_name: NotRequired[str] @@ -1041,7 +902,6 @@ class EditForChargeItemsAndChargesShippingAddressParams(TypedDict): class EditForChargeItemsAndChargesDiscountParams(TypedDict): percentage: NotRequired[float] - quantity: NotRequired[int] amount: NotRequired[int] apply_on: Required[enums.ApplyOn] item_price_id: NotRequired[str] @@ -1214,12 +1074,6 @@ class CreateSubItemsForCustomerQuoteParams(TypedDict): "Quote.CreateSubItemsForCustomerQuoteContractTermParams" ] coupon_ids: NotRequired[List[str]] - billing_start_option: NotRequired[enums.BillingStartOption] - billing_address: NotRequired[ - "Quote.CreateSubItemsForCustomerQuoteBillingAddressParams" - ] - net_term_days: NotRequired[int] - coupons: NotRequired[List["Quote.CreateSubItemsForCustomerQuoteCouponParams"]] class EditCreateSubCustomerQuoteForItemsParams(TypedDict): notes: NotRequired[str] @@ -1247,14 +1101,6 @@ class EditCreateSubCustomerQuoteForItemsParams(TypedDict): "Quote.EditCreateSubCustomerQuoteForItemsContractTermParams" ] coupon_ids: NotRequired[List[str]] - billing_start_option: NotRequired[enums.BillingStartOption] - billing_address: NotRequired[ - "Quote.EditCreateSubCustomerQuoteForItemsBillingAddressParams" - ] - net_term_days: NotRequired[int] - coupons: NotRequired[ - List["Quote.EditCreateSubCustomerQuoteForItemsCouponParams"] - ] class UpdateSubscriptionQuoteForItemsParams(TypedDict): name: NotRequired[str] @@ -1292,8 +1138,6 @@ class UpdateSubscriptionQuoteForItemsParams(TypedDict): contract_term: NotRequired[ "Quote.UpdateSubscriptionQuoteForItemsContractTermParams" ] - net_term_days: NotRequired[int] - coupons: NotRequired[List["Quote.UpdateSubscriptionQuoteForItemsCouponParams"]] class EditUpdateSubscriptionQuoteForItemsParams(TypedDict): notes: NotRequired[str] @@ -1332,10 +1176,6 @@ class EditUpdateSubscriptionQuoteForItemsParams(TypedDict): contract_term: NotRequired[ "Quote.EditUpdateSubscriptionQuoteForItemsContractTermParams" ] - net_term_days: NotRequired[int] - coupons: NotRequired[ - List["Quote.EditUpdateSubscriptionQuoteForItemsCouponParams"] - ] class CreateForChargeItemsAndChargesParams(TypedDict): name: NotRequired[str] @@ -1353,9 +1193,6 @@ class CreateForChargeItemsAndChargesParams(TypedDict): charges: NotRequired[List["Quote.CreateForChargeItemsAndChargesChargeParams"]] coupon: NotRequired[str] coupon_ids: NotRequired[List[str]] - billing_address: NotRequired[ - "Quote.CreateForChargeItemsAndChargesBillingAddressParams" - ] shipping_address: NotRequired[ "Quote.CreateForChargeItemsAndChargesShippingAddressParams" ] @@ -1378,9 +1215,6 @@ class EditForChargeItemsAndChargesParams(TypedDict): charges: NotRequired[List["Quote.EditForChargeItemsAndChargesChargeParams"]] coupon: NotRequired[str] coupon_ids: NotRequired[List[str]] - billing_address: NotRequired[ - "Quote.EditForChargeItemsAndChargesBillingAddressParams" - ] shipping_address: NotRequired[ "Quote.EditForChargeItemsAndChargesShippingAddressParams" ] @@ -1427,8 +1261,6 @@ class PdfParams(TypedDict): disposition_type: NotRequired[enums.DispositionType] def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("quotes", id), @@ -1436,19 +1268,11 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def create_sub_for_customer_quote( self, id, params: CreateSubForCustomerQuoteParams, headers=None ) -> CreateSubForCustomerQuoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "create_subscription_quote"), @@ -1456,19 +1280,11 @@ def create_sub_for_customer_quote( cast(Dict[Any, Any], params), headers, CreateSubForCustomerQuoteResponse, - None, - False, - jsonKeys, - options, ) def edit_create_sub_for_customer_quote( self, id, params: EditCreateSubForCustomerQuoteParams, headers=None ) -> EditCreateSubForCustomerQuoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "edit_create_subscription_quote"), @@ -1476,19 +1292,11 @@ def edit_create_sub_for_customer_quote( cast(Dict[Any, Any], params), headers, EditCreateSubForCustomerQuoteResponse, - None, - False, - jsonKeys, - options, ) def update_subscription_quote( self, params: UpdateSubscriptionQuoteParams, headers=None ) -> UpdateSubscriptionQuoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", "update_subscription_quote"), @@ -1496,19 +1304,11 @@ def update_subscription_quote( cast(Dict[Any, Any], params), headers, UpdateSubscriptionQuoteResponse, - None, - False, - jsonKeys, - options, ) def edit_update_subscription_quote( self, id, params: EditUpdateSubscriptionQuoteParams = None, headers=None ) -> EditUpdateSubscriptionQuoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "edit_update_subscription_quote"), @@ -1516,19 +1316,11 @@ def edit_update_subscription_quote( cast(Dict[Any, Any], params), headers, EditUpdateSubscriptionQuoteResponse, - None, - False, - jsonKeys, - options, ) def create_for_onetime_charges( self, params: CreateForOnetimeChargesParams, headers=None ) -> CreateForOnetimeChargesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", "create_for_onetime_charges"), @@ -1536,19 +1328,11 @@ def create_for_onetime_charges( cast(Dict[Any, Any], params), headers, CreateForOnetimeChargesResponse, - None, - False, - jsonKeys, - options, ) def edit_one_time_quote( self, id, params: EditOneTimeQuoteParams = None, headers=None ) -> EditOneTimeQuoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "edit_one_time_quote"), @@ -1556,19 +1340,11 @@ def edit_one_time_quote( cast(Dict[Any, Any], params), headers, EditOneTimeQuoteResponse, - None, - False, - jsonKeys, - options, ) def create_sub_items_for_customer_quote( self, id, params: CreateSubItemsForCustomerQuoteParams, headers=None ) -> CreateSubItemsForCustomerQuoteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "create_subscription_quote_for_items"), @@ -1576,19 +1352,11 @@ def create_sub_items_for_customer_quote( cast(Dict[Any, Any], params), headers, CreateSubItemsForCustomerQuoteResponse, - None, - False, - jsonKeys, - options, ) def edit_create_sub_customer_quote_for_items( self, id, params: EditCreateSubCustomerQuoteForItemsParams, headers=None ) -> EditCreateSubCustomerQuoteForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "edit_create_subscription_quote_for_items"), @@ -1596,19 +1364,11 @@ def edit_create_sub_customer_quote_for_items( cast(Dict[Any, Any], params), headers, EditCreateSubCustomerQuoteForItemsResponse, - None, - False, - jsonKeys, - options, ) def update_subscription_quote_for_items( self, params: UpdateSubscriptionQuoteForItemsParams, headers=None ) -> UpdateSubscriptionQuoteForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", "update_subscription_quote_for_items"), @@ -1616,19 +1376,11 @@ def update_subscription_quote_for_items( cast(Dict[Any, Any], params), headers, UpdateSubscriptionQuoteForItemsResponse, - None, - False, - jsonKeys, - options, ) def edit_update_subscription_quote_for_items( self, id, params: EditUpdateSubscriptionQuoteForItemsParams, headers=None ) -> EditUpdateSubscriptionQuoteForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "edit_update_subscription_quote_for_items"), @@ -1636,19 +1388,11 @@ def edit_update_subscription_quote_for_items( cast(Dict[Any, Any], params), headers, EditUpdateSubscriptionQuoteForItemsResponse, - None, - False, - jsonKeys, - options, ) def create_for_charge_items_and_charges( self, params: CreateForChargeItemsAndChargesParams, headers=None ) -> CreateForChargeItemsAndChargesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", "create_for_charge_items_and_charges"), @@ -1656,19 +1400,11 @@ def create_for_charge_items_and_charges( cast(Dict[Any, Any], params), headers, CreateForChargeItemsAndChargesResponse, - None, - False, - jsonKeys, - options, ) def edit_for_charge_items_and_charges( self, id, params: EditForChargeItemsAndChargesParams, headers=None ) -> EditForChargeItemsAndChargesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "edit_for_charge_items_and_charges"), @@ -1676,15 +1412,9 @@ def edit_for_charge_items_and_charges( cast(Dict[Any, Any], params), headers, EditForChargeItemsAndChargesResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("quotes"), @@ -1692,17 +1422,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def quote_line_groups_for_quote( self, id, params: QuoteLineGroupsForQuoteParams = None, headers=None ) -> QuoteLineGroupsForQuoteResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("quotes", id, "quote_line_groups"), @@ -1710,19 +1434,11 @@ def quote_line_groups_for_quote( cast(Dict[Any, Any], params), headers, QuoteLineGroupsForQuoteResponse, - None, - False, - jsonKeys, - options, ) def convert( self, id, params: ConvertParams = None, headers=None ) -> ConvertResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "convert"), @@ -1730,19 +1446,11 @@ def convert( cast(Dict[Any, Any], params), headers, ConvertResponse, - None, - False, - jsonKeys, - options, ) def update_status( self, id, params: UpdateStatusParams, headers=None ) -> UpdateStatusResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "update_status"), @@ -1750,19 +1458,11 @@ def update_status( cast(Dict[Any, Any], params), headers, UpdateStatusResponse, - None, - False, - jsonKeys, - options, ) def extend_expiry_date( self, id, params: ExtendExpiryDateParams, headers=None ) -> ExtendExpiryDateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "extend_expiry_date"), @@ -1770,17 +1470,9 @@ def extend_expiry_date( cast(Dict[Any, Any], params), headers, ExtendExpiryDateResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "delete"), @@ -1788,17 +1480,9 @@ def delete(self, id, params: DeleteParams = None, headers=None) -> DeleteRespons cast(Dict[Any, Any], params), headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def pdf(self, id, params: PdfParams = None, headers=None) -> PdfResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("quotes", id, "pdf"), @@ -1806,8 +1490,4 @@ def pdf(self, id, params: PdfParams = None, headers=None) -> PdfResponse: cast(Dict[Any, Any], params), headers, PdfResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/quote/responses.py b/chargebee/models/quote/responses.py index ed130bb..74ef35b 100644 --- a/chargebee/models/quote/responses.py +++ b/chargebee/models/quote/responses.py @@ -5,7 +5,6 @@ from chargebee.models import ( contract_term, quoted_subscription, - quoted_ramp, quoted_charge, quote_line_group, download, @@ -19,7 +18,6 @@ @dataclass class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None subscription_id: str = None date_from: int = None @@ -36,8 +34,7 @@ class LineItemResponse(Model): amount_in_decimal: str = None discount_amount: int = None item_level_discount_amount: int = None - metered: bool = None - is_percentage_pricing: bool = None + usage_percentage: str = None reference_line_item_id: str = None description: str = None entity_description: str = None @@ -48,24 +45,17 @@ class LineItemResponse(Model): @dataclass -class LineItemTierResponse(Model): - raw_data: Dict[Any, Any] = None - line_item_id: str = None - starting_unit: int = None - ending_unit: int = None - quantity_used: int = None - unit_amount: int = None - starting_unit_in_decimal: str = None - ending_unit_in_decimal: str = None - quantity_used_in_decimal: str = None - unit_amount_in_decimal: str = None - pricing_type: str = None - package_size: int = None +class DiscountResponse(Model): + amount: int = None + description: str = None + entity_type: str = None + discount_type: str = None + entity_id: str = None + coupon_set_code: str = None @dataclass class LineItemDiscountResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None discount_type: str = None coupon_id: str = None @@ -73,9 +63,15 @@ class LineItemDiscountResponse(Model): discount_amount: int = None +@dataclass +class TaxResponse(Model): + name: str = None + amount: int = None + description: str = None + + @dataclass class LineItemTaxResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None tax_name: str = None tax_rate: float = None @@ -94,28 +90,20 @@ class LineItemTaxResponse(Model): @dataclass -class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None - amount: int = None - description: str = None +class LineItemTierResponse(Model): line_item_id: str = None - entity_type: str = None - discount_type: str = None - entity_id: str = None - coupon_set_code: str = None - - -@dataclass -class TaxResponse(Model): - raw_data: Dict[Any, Any] = None - name: str = None - amount: int = None - description: str = None + starting_unit: int = None + ending_unit: int = None + quantity_used: int = None + unit_amount: int = None + starting_unit_in_decimal: str = None + ending_unit_in_decimal: str = None + quantity_used_in_decimal: str = None + unit_amount_in_decimal: str = None @dataclass class ShippingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -130,11 +118,11 @@ class ShippingAddressResponse(Model): country: str = None zip: str = None validation_status: str = None + index: int = None @dataclass class BillingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -178,11 +166,11 @@ class QuoteResponse(Model): updated_at: int = None vat_number_prefix: str = None line_items: List[LineItemResponse] = None - line_item_tiers: List[LineItemTierResponse] = None - line_item_discounts: List[LineItemDiscountResponse] = None - line_item_taxes: List[LineItemTaxResponse] = None discounts: List[DiscountResponse] = None + line_item_discounts: List[LineItemDiscountResponse] = None taxes: List[TaxResponse] = None + line_item_taxes: List[LineItemTaxResponse] = None + line_item_tiers: List[LineItemTierResponse] = None tax_category: str = None currency_code: str = None notes: List[Dict[Any, Any]] = None @@ -193,117 +181,111 @@ class QuoteResponse(Model): contract_term_termination_fee: int = None business_entity_id: str = None deleted: bool = None - total_contract_value: int = None - total_discount: int = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None quoted_charge: "quoted_charge.QuotedChargeResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class CreateSubForCustomerQuoteResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None + headers: Dict[str, str] = None @dataclass class EditCreateSubForCustomerQuoteResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None + headers: Dict[str, str] = None @dataclass class UpdateSubscriptionQuoteResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None + headers: Dict[str, str] = None @dataclass class EditUpdateSubscriptionQuoteResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None + headers: Dict[str, str] = None @dataclass class CreateForOnetimeChargesResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_charge: "quoted_charge.QuotedChargeResponse" = None + headers: Dict[str, str] = None @dataclass class EditOneTimeQuoteResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_charge: "quoted_charge.QuotedChargeResponse" = None + headers: Dict[str, str] = None @dataclass class CreateSubItemsForCustomerQuoteResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class EditCreateSubCustomerQuoteForItemsResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class UpdateSubscriptionQuoteForItemsResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class EditUpdateSubscriptionQuoteForItemsResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class CreateForChargeItemsAndChargesResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_charge: "quoted_charge.QuotedChargeResponse" = None + headers: Dict[str, str] = None @dataclass class EditForChargeItemsAndChargesResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_charge: "quoted_charge.QuotedChargeResponse" = None + headers: Dict[str, str] = None @dataclass class ListQuoteResponse: quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListQuoteResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -312,53 +294,50 @@ class QuoteLineGroupsForQuoteQuoteResponse: @dataclass -class QuoteLineGroupsForQuoteResponse(Response): +class QuoteLineGroupsForQuoteResponse: list: List[QuoteLineGroupsForQuoteQuoteResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class ConvertResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse customer: "customer.CustomerResponse" quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None quoted_charge: "quoted_charge.QuotedChargeResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None subscription: "subscription.SubscriptionResponse" = None invoice: "invoice.InvoiceResponse" = None credit_note: "credit_note.CreditNoteResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None + headers: Dict[str, str] = None @dataclass class UpdateStatusResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None quoted_charge: "quoted_charge.QuotedChargeResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class ExtendExpiryDateResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None quoted_charge: "quoted_charge.QuotedChargeResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool quote: QuoteResponse quoted_subscription: "quoted_subscription.QuotedSubscriptionResponse" = None quoted_charge: "quoted_charge.QuotedChargeResponse" = None - quoted_ramp: "quoted_ramp.QuotedRampResponse" = None + headers: Dict[str, str] = None @dataclass class PdfResponse(Response): - is_idempotency_replayed: bool download: "download.DownloadResponse" + headers: Dict[str, str] = None diff --git a/chargebee/models/quote_line_group/operations.py b/chargebee/models/quote_line_group/operations.py index c0bfbac..56ea5ff 100644 --- a/chargebee/models/quote_line_group/operations.py +++ b/chargebee/models/quote_line_group/operations.py @@ -7,6 +7,7 @@ @dataclass class QuoteLineGroup: + env: environment.Environment class ChargeEvent(Enum): @@ -32,7 +33,7 @@ class LineItemEntityType(Enum): def __str__(self): return self.value - class LineItemDiscountDiscountType(Enum): + class DiscountEntityType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -43,7 +44,14 @@ class LineItemDiscountDiscountType(Enum): def __str__(self): return self.value - class DiscountEntityType(Enum): + class DiscountDiscountType(Enum): + FIXED_AMOUNT = "fixed_amount" + PERCENTAGE = "percentage" + + def __str__(self): + return self.value + + class LineItemDiscountDiscountType(Enum): ITEM_LEVEL_COUPON = "item_level_coupon" DOCUMENT_LEVEL_COUPON = "document_level_coupon" PROMOTIONAL_CREDITS = "promotional_credits" @@ -54,13 +62,6 @@ class DiscountEntityType(Enum): def __str__(self): return self.value - class DiscountDiscountType(Enum): - FIXED_AMOUNT = "fixed_amount" - PERCENTAGE = "percentage" - - def __str__(self): - return self.value - class LineItem(TypedDict): id: NotRequired[str] subscription_id: NotRequired[str] @@ -78,8 +79,7 @@ class LineItem(TypedDict): amount_in_decimal: NotRequired[str] discount_amount: NotRequired[int] item_level_discount_amount: NotRequired[int] - metered: NotRequired[bool] - is_percentage_pricing: NotRequired[bool] + usage_percentage: NotRequired[str] reference_line_item_id: NotRequired[str] description: Required[str] entity_description: NotRequired[str] @@ -88,6 +88,14 @@ class LineItem(TypedDict): entity_id: NotRequired[str] customer_id: NotRequired[str] + class Discount(TypedDict): + amount: Required[int] + description: NotRequired[str] + entity_type: Required["QuoteLineGroup.DiscountEntityType"] + discount_type: NotRequired["QuoteLineGroup.DiscountDiscountType"] + entity_id: NotRequired[str] + coupon_set_code: NotRequired[str] + class LineItemDiscount(TypedDict): line_item_id: Required[str] discount_type: Required["QuoteLineGroup.LineItemDiscountDiscountType"] @@ -95,6 +103,11 @@ class LineItemDiscount(TypedDict): entity_id: NotRequired[str] discount_amount: Required[int] + class Tax(TypedDict): + name: Required[str] + amount: Required[int] + description: NotRequired[str] + class LineItemTax(TypedDict): line_item_id: NotRequired[str] tax_name: Required[str] @@ -112,18 +125,4 @@ class LineItemTax(TypedDict): tax_amount_in_local_currency: NotRequired[int] local_currency_code: NotRequired[str] - class Discount(TypedDict): - amount: Required[int] - description: NotRequired[str] - line_item_id: NotRequired[str] - entity_type: Required["QuoteLineGroup.DiscountEntityType"] - discount_type: NotRequired["QuoteLineGroup.DiscountDiscountType"] - entity_id: NotRequired[str] - coupon_set_code: NotRequired[str] - - class Tax(TypedDict): - name: Required[str] - amount: Required[int] - description: NotRequired[str] - pass diff --git a/chargebee/models/quote_line_group/responses.py b/chargebee/models/quote_line_group/responses.py index 8d2e46d..844bceb 100644 --- a/chargebee/models/quote_line_group/responses.py +++ b/chargebee/models/quote_line_group/responses.py @@ -5,7 +5,6 @@ @dataclass class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None subscription_id: str = None date_from: int = None @@ -22,8 +21,7 @@ class LineItemResponse(Model): amount_in_decimal: str = None discount_amount: int = None item_level_discount_amount: int = None - metered: bool = None - is_percentage_pricing: bool = None + usage_percentage: str = None reference_line_item_id: str = None description: str = None entity_description: str = None @@ -33,9 +31,18 @@ class LineItemResponse(Model): customer_id: str = None +@dataclass +class DiscountResponse(Model): + amount: int = None + description: str = None + entity_type: str = None + discount_type: str = None + entity_id: str = None + coupon_set_code: str = None + + @dataclass class LineItemDiscountResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None discount_type: str = None coupon_id: str = None @@ -43,9 +50,15 @@ class LineItemDiscountResponse(Model): discount_amount: int = None +@dataclass +class TaxResponse(Model): + name: str = None + amount: int = None + description: str = None + + @dataclass class LineItemTaxResponse(Model): - raw_data: Dict[Any, Any] = None line_item_id: str = None tax_name: str = None tax_rate: float = None @@ -63,26 +76,6 @@ class LineItemTaxResponse(Model): local_currency_code: str = None -@dataclass -class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None - amount: int = None - description: str = None - line_item_id: str = None - entity_type: str = None - discount_type: str = None - entity_id: str = None - coupon_set_code: str = None - - -@dataclass -class TaxResponse(Model): - raw_data: Dict[Any, Any] = None - name: str = None - amount: int = None - description: str = None - - @dataclass class QuoteLineGroupResponse(Model): raw_data: Dict[Any, Any] = None @@ -96,7 +89,7 @@ class QuoteLineGroupResponse(Model): charge_event: str = None billing_cycle_number: int = None line_items: List[LineItemResponse] = None - line_item_discounts: List[LineItemDiscountResponse] = None - line_item_taxes: List[LineItemTaxResponse] = None discounts: List[DiscountResponse] = None + line_item_discounts: List[LineItemDiscountResponse] = None taxes: List[TaxResponse] = None + line_item_taxes: List[LineItemTaxResponse] = None diff --git a/chargebee/models/quoted_charge/operations.py b/chargebee/models/quoted_charge/operations.py index 291d3b5..99cf8d6 100644 --- a/chargebee/models/quoted_charge/operations.py +++ b/chargebee/models/quoted_charge/operations.py @@ -6,6 +6,7 @@ @dataclass class QuotedCharge: + env: environment.Environment class Charge(TypedDict): @@ -33,17 +34,11 @@ class ItemTier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] index: Required[int] class Coupon(TypedDict): coupon_id: Required[str] - class CouponApplicabilityMapping(TypedDict): - coupon_id: NotRequired[str] - applicable_item_price_ids: NotRequired[List[str]] - class Addon(TypedDict): id: Required[str] quantity: NotRequired[int] diff --git a/chargebee/models/quoted_charge/responses.py b/chargebee/models/quoted_charge/responses.py index 1801272..0657f9e 100644 --- a/chargebee/models/quoted_charge/responses.py +++ b/chargebee/models/quoted_charge/responses.py @@ -5,7 +5,6 @@ @dataclass class ChargeResponse(Model): - raw_data: Dict[Any, Any] = None amount: int = None amount_in_decimal: str = None description: str = None @@ -17,7 +16,6 @@ class ChargeResponse(Model): @dataclass class InvoiceItemResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None quantity: int = None quantity_in_decimal: str = None @@ -28,7 +26,6 @@ class InvoiceItemResponse(Model): @dataclass class ItemTierResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None starting_unit: int = None ending_unit: int = None @@ -36,27 +33,16 @@ class ItemTierResponse(Model): starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None index: int = None @dataclass class CouponResponse(Model): - raw_data: Dict[Any, Any] = None - coupon_id: str = None - - -@dataclass -class CouponApplicabilityMappingResponse(Model): - raw_data: Dict[Any, Any] = None coupon_id: str = None - applicable_item_price_ids: List[str] = None @dataclass class AddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None quantity: int = None unit_price: int = None @@ -74,4 +60,3 @@ class QuotedChargeResponse(Model): invoice_items: List[InvoiceItemResponse] = None item_tiers: List[ItemTierResponse] = None coupons: List[CouponResponse] = None - coupon_applicability_mappings: List[CouponApplicabilityMappingResponse] = None diff --git a/chargebee/models/quoted_delta_ramp/__init__.py b/chargebee/models/quoted_delta_ramp/__init__.py deleted file mode 100644 index 2bc8764..0000000 --- a/chargebee/models/quoted_delta_ramp/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import QuotedDeltaRamp -from .responses import QuotedDeltaRampResponse diff --git a/chargebee/models/quoted_delta_ramp/operations.py b/chargebee/models/quoted_delta_ramp/operations.py deleted file mode 100644 index df203e1..0000000 --- a/chargebee/models/quoted_delta_ramp/operations.py +++ /dev/null @@ -1,13 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class QuotedDeltaRamp: - env: environment.Environment - - class LineItem(TypedDict): - item_level_discount_per_billing_cycle_in_decimal: NotRequired[str] - - pass diff --git a/chargebee/models/quoted_delta_ramp/responses.py b/chargebee/models/quoted_delta_ramp/responses.py deleted file mode 100644 index 35183f5..0000000 --- a/chargebee/models/quoted_delta_ramp/responses.py +++ /dev/null @@ -1,15 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None - item_level_discount_per_billing_cycle_in_decimal: str = None - - -@dataclass -class QuotedDeltaRampResponse(Model): - raw_data: Dict[Any, Any] = None - line_items: List[LineItemResponse] = None diff --git a/chargebee/models/quoted_ramp/__init__.py b/chargebee/models/quoted_ramp/__init__.py deleted file mode 100644 index 67aa04d..0000000 --- a/chargebee/models/quoted_ramp/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import QuotedRamp -from .responses import QuotedRampResponse diff --git a/chargebee/models/quoted_ramp/operations.py b/chargebee/models/quoted_ramp/operations.py deleted file mode 100644 index 3dabc42..0000000 --- a/chargebee/models/quoted_ramp/operations.py +++ /dev/null @@ -1,94 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum -from chargebee.models import enums - - -@dataclass -class QuotedRamp: - env: environment.Environment - - class DiscountType(Enum): - FIXED_AMOUNT = "fixed_amount" - PERCENTAGE = "percentage" - - def __str__(self): - return self.value - - class DiscountEntityType(Enum): - ITEM_LEVEL_COUPON = "item_level_coupon" - DOCUMENT_LEVEL_COUPON = "document_level_coupon" - ITEM_LEVEL_DISCOUNT = "item_level_discount" - DOCUMENT_LEVEL_DISCOUNT = "document_level_discount" - - def __str__(self): - return self.value - - class LineItem(TypedDict): - item_price_id: Required[str] - item_type: Required[enums.ItemType] - quantity: NotRequired[int] - quantity_in_decimal: NotRequired[str] - metered_quantity: NotRequired[str] - unit_price: NotRequired[int] - unit_price_in_decimal: NotRequired[str] - amount: NotRequired[int] - amount_in_decimal: NotRequired[str] - billing_period: NotRequired[int] - billing_period_unit: NotRequired["QuotedRamp.BillingPeriodUnit"] - free_quantity: NotRequired[int] - free_quantity_in_decimal: NotRequired[str] - billing_cycles: NotRequired[int] - service_period_days: NotRequired[int] - charge_on_event: NotRequired[enums.ChargeOnEvent] - charge_once: NotRequired[bool] - charge_on_option: NotRequired[enums.ChargeOnOption] - start_date: NotRequired[int] - end_date: NotRequired[int] - ramp_tier_id: NotRequired[str] - discount_per_billing_cycle: NotRequired[int] - discount_per_billing_cycle_in_decimal: NotRequired[str] - item_level_discount_per_billing_cycle: NotRequired[int] - item_level_discount_per_billing_cycle_in_decimal: NotRequired[str] - amount_per_billing_cycle: NotRequired[int] - amount_per_billing_cycle_in_decimal: NotRequired[str] - net_amount_per_billing_cycle: NotRequired[int] - net_amount_per_billing_cycle_in_decimal: NotRequired[str] - - class Discount(TypedDict): - id: Required[str] - invoice_name: NotRequired[str] - type: Required["QuotedRamp.DiscountType"] - percentage: NotRequired[float] - amount: NotRequired[int] - duration_type: Required[enums.DurationType] - entity_type: Required["QuotedRamp.DiscountEntityType"] - entity_id: NotRequired[str] - period: NotRequired[int] - period_unit: NotRequired[enums.PeriodUnit] - included_in_mrr: Required[bool] - apply_on: Required[enums.ApplyOn] - item_price_id: NotRequired[str] - created_at: Required[int] - updated_at: NotRequired[int] - start_date: NotRequired[int] - end_date: NotRequired[int] - - class ItemTier(TypedDict): - item_price_id: Required[str] - starting_unit: Required[int] - ending_unit: NotRequired[int] - price: Required[int] - starting_unit_in_decimal: NotRequired[str] - ending_unit_in_decimal: NotRequired[str] - price_in_decimal: NotRequired[str] - ramp_tier_id: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] - - class CouponApplicabilityMapping(TypedDict): - coupon_id: NotRequired[str] - applicable_item_price_ids: NotRequired[List[str]] - - pass diff --git a/chargebee/models/quoted_ramp/responses.py b/chargebee/models/quoted_ramp/responses.py deleted file mode 100644 index 0a329ed..0000000 --- a/chargebee/models/quoted_ramp/responses.py +++ /dev/null @@ -1,91 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class LineItemResponse(Model): - raw_data: Dict[Any, Any] = None - item_price_id: str = None - item_type: str = None - quantity: int = None - quantity_in_decimal: str = None - metered_quantity: str = None - unit_price: int = None - unit_price_in_decimal: str = None - amount: int = None - amount_in_decimal: str = None - billing_period: int = None - billing_period_unit: str = None - free_quantity: int = None - free_quantity_in_decimal: str = None - billing_cycles: int = None - service_period_days: int = None - charge_on_event: str = None - charge_once: bool = None - charge_on_option: str = None - start_date: int = None - end_date: int = None - ramp_tier_id: str = None - discount_per_billing_cycle: int = None - discount_per_billing_cycle_in_decimal: str = None - item_level_discount_per_billing_cycle: int = None - item_level_discount_per_billing_cycle_in_decimal: str = None - amount_per_billing_cycle: int = None - amount_per_billing_cycle_in_decimal: str = None - net_amount_per_billing_cycle: int = None - net_amount_per_billing_cycle_in_decimal: str = None - - -@dataclass -class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - invoice_name: str = None - type: str = None - percentage: float = None - amount: int = None - duration_type: str = None - entity_type: str = None - entity_id: str = None - period: int = None - period_unit: str = None - included_in_mrr: bool = None - apply_on: str = None - item_price_id: str = None - created_at: int = None - updated_at: int = None - start_date: int = None - end_date: int = None - - -@dataclass -class ItemTierResponse(Model): - raw_data: Dict[Any, Any] = None - item_price_id: str = None - starting_unit: int = None - ending_unit: int = None - price: int = None - starting_unit_in_decimal: str = None - ending_unit_in_decimal: str = None - price_in_decimal: str = None - ramp_tier_id: str = None - pricing_type: str = None - package_size: int = None - - -@dataclass -class CouponApplicabilityMappingResponse(Model): - raw_data: Dict[Any, Any] = None - coupon_id: str = None - applicable_item_price_ids: List[str] = None - - -@dataclass -class QuotedRampResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - line_items: List[LineItemResponse] = None - discounts: List[DiscountResponse] = None - item_tiers: List[ItemTierResponse] = None - coupon_applicability_mappings: List[CouponApplicabilityMappingResponse] = None diff --git a/chargebee/models/quoted_subscription/operations.py b/chargebee/models/quoted_subscription/operations.py index 2f7d814..fda45c3 100644 --- a/chargebee/models/quoted_subscription/operations.py +++ b/chargebee/models/quoted_subscription/operations.py @@ -7,8 +7,17 @@ @dataclass class QuotedSubscription: + env: environment.Environment + class ChangeOption(Enum): + END_OF_TERM = "end_of_term" + SPECIFIC_DATE = "specific_date" + IMMEDIATELY = "immediately" + + def __str__(self): + return self.value + class BillingPeriodUnit(Enum): DAY = "day" WEEK = "week" @@ -18,14 +27,6 @@ class BillingPeriodUnit(Enum): def __str__(self): return self.value - class ChangeOption(Enum): - END_OF_TERM = "end_of_term" - SPECIFIC_DATE = "specific_date" - IMMEDIATELY = "immediately" - - def __str__(self): - return self.value - class QuotedContractTermActionAtTermEnd(Enum): RENEW = "renew" EVERGREEN = "evergreen" @@ -53,7 +54,7 @@ class SubscriptionItem(TypedDict): next_billing_at: NotRequired[int] amount_in_decimal: NotRequired[str] billing_period: NotRequired[int] - billing_period_unit: NotRequired[enums.BillingPeriodUnit] + billing_period_unit: NotRequired["QuotedSubscription.BillingPeriodUnit"] free_quantity: NotRequired[int] free_quantity_in_decimal: NotRequired[str] trial_end: NotRequired[int] @@ -75,8 +76,6 @@ class ItemTier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] index: Required[int] class QuotedContractTerm(TypedDict): diff --git a/chargebee/models/quoted_subscription/responses.py b/chargebee/models/quoted_subscription/responses.py index 2ec5ba7..ab5e564 100644 --- a/chargebee/models/quoted_subscription/responses.py +++ b/chargebee/models/quoted_subscription/responses.py @@ -5,13 +5,11 @@ @dataclass class CouponResponse(Model): - raw_data: Dict[Any, Any] = None coupon_id: str = None @dataclass class SubscriptionItemResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None item_type: str = None quantity: int = None @@ -41,7 +39,6 @@ class SubscriptionItemResponse(Model): @dataclass class ItemTierResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None starting_unit: int = None ending_unit: int = None @@ -49,14 +46,11 @@ class ItemTierResponse(Model): starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None index: int = None @dataclass class QuotedContractTermResponse(Model): - raw_data: Dict[Any, Any] = None contract_start: int = None contract_end: int = None billing_cycle: int = None @@ -67,7 +61,6 @@ class QuotedContractTermResponse(Model): @dataclass class EventBasedAddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None quantity: int = None unit_price: int = None @@ -80,7 +73,6 @@ class EventBasedAddonResponse(Model): @dataclass class AddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None quantity: int = None unit_price: int = None @@ -112,8 +104,6 @@ class QuotedSubscriptionResponse(Model): plan_unit_price_in_decimal: str = None changes_scheduled_at: int = None change_option: str = None - free_period: int = None - free_period_unit: str = None contract_term_billing_cycle_on_renewal: int = None addons: List[AddonResponse] = None event_based_addons: List[EventBasedAddonResponse] = None diff --git a/chargebee/models/ramp/operations.py b/chargebee/models/ramp/operations.py index a1efe5b..c82aa51 100644 --- a/chargebee/models/ramp/operations.py +++ b/chargebee/models/ramp/operations.py @@ -8,6 +8,7 @@ @dataclass class Ramp: + env: environment.Environment class Status(Enum): @@ -26,15 +27,6 @@ class DiscountsToAddType(Enum): def __str__(self): return self.value - class ContractTermActionAtTermEnd(Enum): - RENEW = "renew" - EVERGREEN = "evergreen" - CANCEL = "cancel" - RENEW_ONCE = "renew_once" - - def __str__(self): - return self.value - class ItemsToAdd(TypedDict): item_price_id: Required[str] item_type: Required[enums.ItemType] @@ -49,9 +41,6 @@ class ItemsToAdd(TypedDict): billing_cycles: NotRequired[int] service_period_days: NotRequired[int] metered_quantity: NotRequired[str] - charge_once: NotRequired[bool] - charge_on_option: NotRequired[enums.ChargeOnOption] - charge_on_event: NotRequired[enums.ChargeOnEvent] class ItemsToUpdate(TypedDict): item_price_id: Required[str] @@ -67,9 +56,6 @@ class ItemsToUpdate(TypedDict): billing_cycles: NotRequired[int] service_period_days: NotRequired[int] metered_quantity: NotRequired[str] - charge_once: NotRequired[bool] - charge_on_option: NotRequired[enums.ChargeOnOption] - charge_on_event: NotRequired[enums.ChargeOnEvent] class CouponsToAdd(TypedDict): coupon_id: Required[str] @@ -97,15 +83,8 @@ class ItemTier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] index: Required[int] - class ContractTerm(TypedDict): - cancellation_cutoff_period: NotRequired[int] - renewal_billing_cycles: NotRequired[int] - action_at_term_end: Required["Ramp.ContractTermActionAtTermEnd"] - class StatusTransitionReason(TypedDict): code: NotRequired[str] message: NotRequired[str] @@ -118,9 +97,6 @@ class CreateForSubscriptionItemsToAddParams(TypedDict): unit_price_in_decimal: NotRequired[str] billing_cycles: NotRequired[int] service_period_days: NotRequired[int] - charge_on_event: NotRequired[enums.ChargeOnEvent] - charge_once: NotRequired[bool] - charge_on_option: NotRequired[enums.ChargeOnOption] class CreateForSubscriptionItemsToUpdateParams(TypedDict): item_price_id: Required[str] @@ -130,9 +106,6 @@ class CreateForSubscriptionItemsToUpdateParams(TypedDict): unit_price_in_decimal: NotRequired[str] billing_cycles: NotRequired[int] service_period_days: NotRequired[int] - charge_on_event: NotRequired[enums.ChargeOnEvent] - charge_once: NotRequired[bool] - charge_on_option: NotRequired[enums.ChargeOnOption] class CreateForSubscriptionItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -142,8 +115,6 @@ class CreateForSubscriptionItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateForSubscriptionCouponsToAddParams(TypedDict): coupon_id: NotRequired[str] @@ -159,11 +130,6 @@ class CreateForSubscriptionDiscountsToAddParams(TypedDict): included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - class CreateForSubscriptionContractTermParams(TypedDict): - action_at_term_end: NotRequired["Ramp.ContractTermActionAtTermEnd"] - cancellation_cutoff_period: NotRequired[int] - renewal_billing_cycles: NotRequired[int] - class UpdateItemsToAddParams(TypedDict): item_price_id: Required[str] quantity: NotRequired[int] @@ -172,9 +138,6 @@ class UpdateItemsToAddParams(TypedDict): unit_price_in_decimal: NotRequired[str] billing_cycles: NotRequired[int] service_period_days: NotRequired[int] - charge_on_event: NotRequired[enums.ChargeOnEvent] - charge_once: NotRequired[bool] - charge_on_option: NotRequired[enums.ChargeOnOption] class UpdateItemsToUpdateParams(TypedDict): item_price_id: Required[str] @@ -184,9 +147,6 @@ class UpdateItemsToUpdateParams(TypedDict): unit_price_in_decimal: NotRequired[str] billing_cycles: NotRequired[int] service_period_days: NotRequired[int] - charge_on_event: NotRequired[enums.ChargeOnEvent] - charge_once: NotRequired[bool] - charge_on_option: NotRequired[enums.ChargeOnOption] class UpdateItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -196,8 +156,6 @@ class UpdateItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class UpdateCouponsToAddParams(TypedDict): coupon_id: NotRequired[str] @@ -213,11 +171,6 @@ class UpdateDiscountsToAddParams(TypedDict): included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - class UpdateContractTermParams(TypedDict): - action_at_term_end: NotRequired["Ramp.ContractTermActionAtTermEnd"] - cancellation_cutoff_period: NotRequired[int] - renewal_billing_cycles: NotRequired[int] - class CreateForSubscriptionParams(TypedDict): effective_from: Required[int] description: NotRequired[str] @@ -233,7 +186,6 @@ class CreateForSubscriptionParams(TypedDict): discounts_to_add: Required[ List["Ramp.CreateForSubscriptionDiscountsToAddParams"] ] - contract_term: NotRequired["Ramp.CreateForSubscriptionContractTermParams"] class UpdateParams(TypedDict): effective_from: Required[int] @@ -246,7 +198,6 @@ class UpdateParams(TypedDict): item_tiers: NotRequired[List["Ramp.UpdateItemTierParams"]] coupons_to_add: NotRequired[List["Ramp.UpdateCouponsToAddParams"]] discounts_to_add: Required[List["Ramp.UpdateDiscountsToAddParams"]] - contract_term: NotRequired["Ramp.UpdateContractTermParams"] class ListParams(TypedDict): limit: NotRequired[int] @@ -261,10 +212,6 @@ class ListParams(TypedDict): def create_for_subscription( self, id, params: CreateForSubscriptionParams, headers=None ) -> CreateForSubscriptionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "create_ramp"), @@ -272,17 +219,9 @@ def create_for_subscription( cast(Dict[Any, Any], params), headers, CreateForSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("ramps", id, "update"), @@ -290,15 +229,9 @@ def update(self, id, params: UpdateParams, headers=None) -> UpdateResponse: cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("ramps", id), @@ -306,17 +239,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("ramps", id, "delete"), @@ -324,15 +249,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("ramps"), @@ -340,8 +259,4 @@ def list(self, params: ListParams, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/ramp/responses.py b/chargebee/models/ramp/responses.py index 582cbbd..09b04a9 100644 --- a/chargebee/models/ramp/responses.py +++ b/chargebee/models/ramp/responses.py @@ -6,7 +6,6 @@ @dataclass class ItemsToAddResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None item_type: str = None quantity: int = None @@ -20,14 +19,10 @@ class ItemsToAddResponse(Model): billing_cycles: int = None service_period_days: int = None metered_quantity: str = None - charge_once: bool = None - charge_on_option: str = None - charge_on_event: str = None @dataclass class ItemsToUpdateResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None item_type: str = None quantity: int = None @@ -41,21 +36,16 @@ class ItemsToUpdateResponse(Model): billing_cycles: int = None service_period_days: int = None metered_quantity: str = None - charge_once: bool = None - charge_on_option: str = None - charge_on_event: str = None @dataclass class CouponsToAddResponse(Model): - raw_data: Dict[Any, Any] = None coupon_id: str = None apply_till: int = None @dataclass class DiscountsToAddResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None invoice_name: str = None type: str = None @@ -72,7 +62,6 @@ class DiscountsToAddResponse(Model): @dataclass class ItemTierResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None starting_unit: int = None ending_unit: int = None @@ -80,22 +69,11 @@ class ItemTierResponse(Model): starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None index: int = None -@dataclass -class ContractTermResponse(Model): - raw_data: Dict[Any, Any] = None - cancellation_cutoff_period: int = None - renewal_billing_cycles: int = None - action_at_term_end: str = None - - @dataclass class StatusTransitionReasonResponse(Model): - raw_data: Dict[Any, Any] = None code: str = None message: str = None @@ -119,32 +97,32 @@ class RampResponse(Model): items_to_remove: List[str] = None coupons_to_remove: List[str] = None discounts_to_remove: List[str] = None - contract_term: ContractTermResponse = None deleted: bool = None status_transition_reason: StatusTransitionReasonResponse = None @dataclass class CreateForSubscriptionResponse(Response): - is_idempotency_replayed: bool ramp: RampResponse + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool ramp: RampResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: ramp: RampResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool ramp: RampResponse + headers: Dict[str, str] = None @dataclass @@ -153,6 +131,7 @@ class ListRampResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListRampResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/recorded_purchase/operations.py b/chargebee/models/recorded_purchase/operations.py index ae35e46..baa53ea 100644 --- a/chargebee/models/recorded_purchase/operations.py +++ b/chargebee/models/recorded_purchase/operations.py @@ -6,11 +6,11 @@ @dataclass class RecordedPurchase: + env: environment.Environment class Source(Enum): APPLE_APP_STORE = "apple_app_store" - GOOGLE_PLAY_STORE = "google_play_store" def __str__(self): return self.value @@ -27,9 +27,6 @@ def __str__(self): class LinkedOmnichannelSubscription(TypedDict): omnichannel_subscription_id: NotRequired[str] - class LinkedOmnichannelOneTimeOrder(TypedDict): - omnichannel_one_time_order_id: NotRequired[str] - class ErrorDetail(TypedDict): error_message: NotRequired[str] @@ -38,31 +35,13 @@ class CreateCustomerParams(TypedDict): class CreateAppleAppStoreParams(TypedDict): transaction_id: NotRequired[str] - receipt: NotRequired[str] - product_id: NotRequired[str] - - class CreateGooglePlayStoreParams(TypedDict): - purchase_token: NotRequired[str] - product_id: NotRequired[str] - order_id: NotRequired[str] - - class CreateOmnichannelSubscriptionParams(TypedDict): - id: NotRequired[str] class CreateParams(TypedDict): app_id: Required[str] customer: Required["RecordedPurchase.CreateCustomerParams"] apple_app_store: NotRequired["RecordedPurchase.CreateAppleAppStoreParams"] - google_play_store: NotRequired["RecordedPurchase.CreateGooglePlayStoreParams"] - omnichannel_subscription: NotRequired[ - "RecordedPurchase.CreateOmnichannelSubscriptionParams" - ] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("recorded_purchases"), @@ -70,15 +49,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("recorded_purchases", id), @@ -86,8 +59,4 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/recorded_purchase/responses.py b/chargebee/models/recorded_purchase/responses.py index b98cc99..49cde3e 100644 --- a/chargebee/models/recorded_purchase/responses.py +++ b/chargebee/models/recorded_purchase/responses.py @@ -7,19 +7,11 @@ @dataclass class LinkedOmnichannelSubscriptionResponse(Model): - raw_data: Dict[Any, Any] = None omnichannel_subscription_id: str = None -@dataclass -class LinkedOmnichannelOneTimeOrderResponse(Model): - raw_data: Dict[Any, Any] = None - omnichannel_one_time_order_id: str = None - - @dataclass class ErrorDetailResponse(Model): - raw_data: Dict[Any, Any] = None error_message: str = None @@ -35,19 +27,17 @@ class RecordedPurchaseResponse(Model): created_at: int = None resource_version: int = None linked_omnichannel_subscriptions: List[LinkedOmnichannelSubscriptionResponse] = None - linked_omnichannel_one_time_orders: List[LinkedOmnichannelOneTimeOrderResponse] = ( - None - ) error_detail: ErrorDetailResponse = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool recorded_purchase: RecordedPurchaseResponse customer: "customer.CustomerResponse" + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: recorded_purchase: RecordedPurchaseResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/resource_migration/operations.py b/chargebee/models/resource_migration/operations.py index 048a43e..0476c8e 100644 --- a/chargebee/models/resource_migration/operations.py +++ b/chargebee/models/resource_migration/operations.py @@ -7,6 +7,7 @@ @dataclass class ResourceMigration: + env: environment.Environment class Status(Enum): @@ -25,8 +26,6 @@ class RetrieveLatestParams(TypedDict): def retrieve_latest( self, params: RetrieveLatestParams, headers=None ) -> RetrieveLatestResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("resource_migrations", "retrieve_latest"), @@ -34,8 +33,4 @@ def retrieve_latest( cast(Dict[Any, Any], params), headers, RetrieveLatestResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/resource_migration/responses.py b/chargebee/models/resource_migration/responses.py index f20fcbf..5901149 100644 --- a/chargebee/models/resource_migration/responses.py +++ b/chargebee/models/resource_migration/responses.py @@ -1,7 +1,6 @@ from dataclasses import dataclass from chargebee.model import Model from typing import Dict, List, Any -from chargebee.response import Response @dataclass @@ -17,5 +16,6 @@ class ResourceMigrationResponse(Model): @dataclass -class RetrieveLatestResponse(Response): +class RetrieveLatestResponse: resource_migration: ResourceMigrationResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/rule/__init__.py b/chargebee/models/rule/__init__.py deleted file mode 100644 index aa28fe7..0000000 --- a/chargebee/models/rule/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import Rule -from .responses import RuleResponse diff --git a/chargebee/models/rule/operations.py b/chargebee/models/rule/operations.py deleted file mode 100644 index ef5c7f3..0000000 --- a/chargebee/models/rule/operations.py +++ /dev/null @@ -1,32 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class Rule: - env: environment.Environment - - class Status(Enum): - ACTIVE = "active" - DISABLED = "disabled" - - def __str__(self): - return self.value - - def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("rules", id), - self.env, - None, - headers, - RetrieveResponse, - None, - False, - jsonKeys, - options, - ) diff --git a/chargebee/models/rule/responses.py b/chargebee/models/rule/responses.py deleted file mode 100644 index 17789ea..0000000 --- a/chargebee/models/rule/responses.py +++ /dev/null @@ -1,24 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response - - -@dataclass -class RuleResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - namespace: str = None - rule_name: str = None - rule_order: int = None - status: str = None - conditions: str = None - outcome: str = None - deleted: bool = None - created_at: int = None - modified_at: int = None - - -@dataclass -class RetrieveResponse(Response): - rule: RuleResponse diff --git a/chargebee/models/site_migration_detail/operations.py b/chargebee/models/site_migration_detail/operations.py index 8754e01..e10f300 100644 --- a/chargebee/models/site_migration_detail/operations.py +++ b/chargebee/models/site_migration_detail/operations.py @@ -7,6 +7,7 @@ @dataclass class SiteMigrationDetail: + env: environment.Environment class Status(Enum): @@ -27,8 +28,6 @@ class ListParams(TypedDict): status: NotRequired[Filters.EnumFilter] def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("site_migration_details"), @@ -36,8 +35,4 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/site_migration_detail/responses.py b/chargebee/models/site_migration_detail/responses.py index bfddcba..e736c0d 100644 --- a/chargebee/models/site_migration_detail/responses.py +++ b/chargebee/models/site_migration_detail/responses.py @@ -1,7 +1,6 @@ from dataclasses import dataclass from chargebee.model import Model from typing import Dict, List, Any -from chargebee.response import Response @dataclass @@ -21,6 +20,7 @@ class ListSiteMigrationDetailResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListSiteMigrationDetailResponse] next_offset: str = None + headers: Dict[str, str] = None diff --git a/chargebee/models/subscription/operations.py b/chargebee/models/subscription/operations.py index 33df031..8a635ec 100644 --- a/chargebee/models/subscription/operations.py +++ b/chargebee/models/subscription/operations.py @@ -8,16 +8,8 @@ @dataclass class Subscription: - env: environment.Environment - - class BillingPeriodUnit(Enum): - DAY = "day" - WEEK = "week" - MONTH = "month" - YEAR = "year" - def __str__(self): - return self.value + env: environment.Environment class Status(Enum): FUTURE = "future" @@ -43,6 +35,15 @@ class CancelReason(Enum): def __str__(self): return self.value + class BillingPeriodUnit(Enum): + DAY = "day" + WEEK = "week" + MONTH = "month" + YEAR = "year" + + def __str__(self): + return self.value + class ReferralInfoRewardStatus(Enum): PENDING = "pending" PAID = "paid" @@ -72,7 +73,6 @@ def __str__(self): class DiscountType(Enum): FIXED_AMOUNT = "fixed_amount" PERCENTAGE = "percentage" - OFFER_QUANTITY = "offer_quantity" def __str__(self): return self.value @@ -92,7 +92,7 @@ class SubscriptionItem(TypedDict): next_billing_at: NotRequired[int] amount_in_decimal: NotRequired[str] billing_period: NotRequired[int] - billing_period_unit: NotRequired[enums.BillingPeriodUnit] + billing_period_unit: NotRequired["Subscription.BillingPeriodUnit"] free_quantity: NotRequired[int] free_quantity_in_decimal: NotRequired[str] trial_end: NotRequired[int] @@ -114,8 +114,6 @@ class ItemTier(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] index: Required[int] class ChargedItem(TypedDict): @@ -143,6 +141,7 @@ class ShippingAddress(TypedDict): country: NotRequired[str] zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] + index: Required[int] class ReferralInfo(TypedDict): referral_code: NotRequired[str] @@ -184,7 +183,6 @@ class Discount(TypedDict): type: Required["Subscription.DiscountType"] percentage: NotRequired[float] amount: NotRequired[int] - quantity: NotRequired[int] currency_code: NotRequired[str] duration_type: Required[enums.DurationType] period: NotRequired[int] @@ -198,6 +196,18 @@ class Discount(TypedDict): coupon_id: Required[str] index: Required[int] + class Addon(TypedDict): + id: Required[str] + quantity: NotRequired[int] + unit_price: NotRequired[int] + amount: NotRequired[int] + trial_end: NotRequired[int] + remaining_billing_cycles: NotRequired[int] + quantity_in_decimal: NotRequired[str] + unit_price_in_decimal: NotRequired[str] + amount_in_decimal: NotRequired[str] + proration_type: NotRequired[enums.ProrationType] + class ChargedEventBasedAddon(TypedDict): id: Required[str] last_charged_at: Required[int] @@ -212,18 +222,6 @@ class EventBasedAddon(TypedDict): quantity_in_decimal: NotRequired[str] unit_price_in_decimal: NotRequired[str] - class Addon(TypedDict): - id: Required[str] - quantity: NotRequired[int] - unit_price: NotRequired[int] - amount: NotRequired[int] - trial_end: NotRequired[int] - remaining_billing_cycles: NotRequired[int] - quantity_in_decimal: NotRequired[str] - unit_price_in_decimal: NotRequired[str] - amount_in_decimal: NotRequired[str] - proration_type: NotRequired[enums.ProrationType] - class CreateCustomerParams(TypedDict): id: NotRequired[str] email: NotRequired[str] @@ -462,7 +460,7 @@ class CreateWithItemsSubscriptionItemParams(TypedDict): ] class CreateWithItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -470,7 +468,6 @@ class CreateWithItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] class CreateWithItemsItemTierParams(TypedDict): item_price_id: NotRequired[str] @@ -480,8 +477,6 @@ class CreateWithItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateWithItemsShippingAddressParams(TypedDict): first_name: NotRequired[str] @@ -526,10 +521,6 @@ class CreateWithItemsBillingOverrideParams(TypedDict): max_excess_payment_usage: NotRequired[int] max_refundable_credits_usage: NotRequired[int] - class RemoveScheduledCancellationContractTermParams(TypedDict): - action_at_term_end: NotRequired["Subscription.ContractTermActionAtTermEnd"] - cancellation_cutoff_period: NotRequired[int] - class UpdateAddonParams(TypedDict): id: NotRequired[str] quantity: NotRequired[int] @@ -664,7 +655,7 @@ class UpdateForItemsSubscriptionItemParams(TypedDict): ] class UpdateForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -672,7 +663,6 @@ class UpdateForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] operation_type: Required[enums.OperationType] id: NotRequired[str] @@ -684,8 +674,6 @@ class UpdateForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class UpdateForItemsCardParams(TypedDict): gateway: NotRequired[enums.Gateway] @@ -1070,7 +1058,7 @@ class ImportForItemsSubscriptionItemParams(TypedDict): item_type: NotRequired[enums.ItemType] class ImportForItemsDiscountParams(TypedDict): - apply_on: NotRequired[enums.ApplyOn] + apply_on: Required[enums.ApplyOn] duration_type: Required[enums.DurationType] percentage: NotRequired[float] amount: NotRequired[int] @@ -1078,7 +1066,6 @@ class ImportForItemsDiscountParams(TypedDict): period_unit: NotRequired[enums.PeriodUnit] included_in_mrr: NotRequired[bool] item_price_id: NotRequired[str] - quantity: NotRequired[int] class ImportForItemsChargedItemParams(TypedDict): item_price_id: NotRequired[str] @@ -1092,8 +1079,6 @@ class ImportForItemsItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class ImportForItemsContractTermParams(TypedDict): id: NotRequired[str] @@ -1274,7 +1259,6 @@ class CreateWithItemsParams(TypedDict): auto_collection: NotRequired[enums.AutoCollection] terms_to_charge: NotRequired[int] billing_alignment_mode: NotRequired[enums.BillingAlignmentMode] - offline_payment_method: NotRequired[enums.OfflinePaymentMethod] po_number: NotRequired[str] coupon_ids: NotRequired[List[str]] payment_source_id: NotRequired[str] @@ -1338,7 +1322,6 @@ class SubscriptionsForCustomerParams(TypedDict): class ContractTermsForSubscriptionParams(TypedDict): limit: NotRequired[int] offset: NotRequired[str] - sort_by: NotRequired[Filters.SortFilter] class ListDiscountsParams(TypedDict): limit: NotRequired[int] @@ -1346,10 +1329,6 @@ class ListDiscountsParams(TypedDict): class RemoveScheduledCancellationParams(TypedDict): billing_cycles: NotRequired[int] - contract_term: NotRequired[ - "Subscription.RemoveScheduledCancellationContractTermParams" - ] - contract_term_billing_cycle_on_renewal: NotRequired[int] class RemoveCouponsParams(TypedDict): coupon_ids: NotRequired[List[str]] @@ -1644,7 +1623,6 @@ class ImportUnbilledChargesParams(TypedDict): tiers: Required[List["Subscription.ImportUnbilledChargesTierParams"]] class ImportForItemsParams(TypedDict): - exhausted_coupon_ids: NotRequired[List[str]] id: NotRequired[str] trial_end: NotRequired[int] billing_cycles: NotRequired[int] @@ -1729,7 +1707,6 @@ class CancelForItemsParams(TypedDict): List["Subscription.CancelForItemsSubscriptionItemParams"] ] cancel_reason_code: NotRequired[str] - decommissioned: NotRequired[bool] class ResumeParams(TypedDict): resume_option: NotRequired[enums.ResumeOption] @@ -1744,15 +1721,6 @@ class MoveParams(TypedDict): copy_payment_source: NotRequired[bool] def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "meta_data": 0, - "exemption_details": 1, - "additional_information": 1, - "billing_address": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions"), @@ -1760,22 +1728,11 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def create_for_customer( self, id, params: CreateForCustomerParams, headers=None ) -> CreateForCustomerResponse: - jsonKeys = { - "meta_data": 0, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "subscriptions"), @@ -1783,22 +1740,11 @@ def create_for_customer( cast(Dict[Any, Any], params), headers, CreateForCustomerResponse, - None, - False, - jsonKeys, - options, ) def create_with_items( self, id, params: CreateWithItemsParams, headers=None ) -> CreateWithItemsResponse: - jsonKeys = { - "meta_data": 0, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "subscription_for_items"), @@ -1806,15 +1752,9 @@ def create_with_items( cast(Dict[Any, Any], params), headers, CreateWithItemsResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("subscriptions"), @@ -1822,17 +1762,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def subscriptions_for_customer( self, id, params: SubscriptionsForCustomerParams = None, headers=None ) -> SubscriptionsForCustomerResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "subscriptions"), @@ -1840,17 +1774,11 @@ def subscriptions_for_customer( cast(Dict[Any, Any], params), headers, SubscriptionsForCustomerResponse, - None, - False, - jsonKeys, - options, ) def contract_terms_for_subscription( self, id, params: ContractTermsForSubscriptionParams = None, headers=None ) -> ContractTermsForSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "contract_terms"), @@ -1858,17 +1786,11 @@ def contract_terms_for_subscription( cast(Dict[Any, Any], params), headers, ContractTermsForSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def list_discounts( self, id, params: ListDiscountsParams = None, headers=None ) -> ListDiscountsResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "discounts"), @@ -1876,15 +1798,9 @@ def list_discounts( cast(Dict[Any, Any], params), headers, ListDiscountsResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id), @@ -1892,17 +1808,11 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def retrieve_with_scheduled_changes( self, id, headers=None ) -> RetrieveWithScheduledChangesResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "retrieve_with_scheduled_changes"), @@ -1910,19 +1820,11 @@ def retrieve_with_scheduled_changes( None, headers, RetrieveWithScheduledChangesResponse, - None, - False, - jsonKeys, - options, ) def remove_scheduled_changes( self, id, headers=None ) -> RemoveScheduledChangesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "remove_scheduled_changes"), @@ -1930,19 +1832,11 @@ def remove_scheduled_changes( None, headers, RemoveScheduledChangesResponse, - None, - False, - jsonKeys, - options, ) def remove_scheduled_cancellation( self, id, params: RemoveScheduledCancellationParams = None, headers=None ) -> RemoveScheduledCancellationResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "remove_scheduled_cancellation"), @@ -1950,19 +1844,11 @@ def remove_scheduled_cancellation( cast(Dict[Any, Any], params), headers, RemoveScheduledCancellationResponse, - None, - False, - jsonKeys, - options, ) def remove_coupons( self, id, params: RemoveCouponsParams = None, headers=None ) -> RemoveCouponsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "remove_coupons"), @@ -1970,20 +1856,9 @@ def remove_coupons( cast(Dict[Any, Any], params), headers, RemoveCouponsResponse, - None, - False, - jsonKeys, - options, ) def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = { - "meta_data": 0, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id), @@ -1991,22 +1866,11 @@ def update(self, id, params: UpdateParams = None, headers=None) -> UpdateRespons cast(Dict[Any, Any], params), headers, UpdateResponse, - None, - False, - jsonKeys, - options, ) def update_for_items( self, id, params: UpdateForItemsParams, headers=None ) -> UpdateForItemsResponse: - jsonKeys = { - "meta_data": 0, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "update_for_items"), @@ -2014,19 +1878,11 @@ def update_for_items( cast(Dict[Any, Any], params), headers, UpdateForItemsResponse, - None, - False, - jsonKeys, - options, ) def change_term_end( self, id, params: ChangeTermEndParams, headers=None ) -> ChangeTermEndResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "change_term_end"), @@ -2034,21 +1890,11 @@ def change_term_end( cast(Dict[Any, Any], params), headers, ChangeTermEndResponse, - None, - False, - jsonKeys, - options, ) def reactivate( self, id, params: ReactivateParams = None, headers=None ) -> ReactivateResponse: - jsonKeys = { - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "reactivate"), @@ -2056,19 +1902,11 @@ def reactivate( cast(Dict[Any, Any], params), headers, ReactivateResponse, - None, - False, - jsonKeys, - options, ) def add_charge_at_term_end( self, id, params: AddChargeAtTermEndParams, headers=None ) -> AddChargeAtTermEndResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "add_charge_at_term_end"), @@ -2076,19 +1914,11 @@ def add_charge_at_term_end( cast(Dict[Any, Any], params), headers, AddChargeAtTermEndResponse, - None, - False, - jsonKeys, - options, ) def charge_addon_at_term_end( self, id, params: ChargeAddonAtTermEndParams, headers=None ) -> ChargeAddonAtTermEndResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "charge_addon_at_term_end"), @@ -2096,19 +1926,11 @@ def charge_addon_at_term_end( cast(Dict[Any, Any], params), headers, ChargeAddonAtTermEndResponse, - None, - False, - jsonKeys, - options, ) def charge_future_renewals( self, id, params: ChargeFutureRenewalsParams = None, headers=None ) -> ChargeFutureRenewalsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "charge_future_renewals"), @@ -2116,19 +1938,11 @@ def charge_future_renewals( cast(Dict[Any, Any], params), headers, ChargeFutureRenewalsResponse, - None, - False, - jsonKeys, - options, ) def edit_advance_invoice_schedule( self, id, params: EditAdvanceInvoiceScheduleParams = None, headers=None ) -> EditAdvanceInvoiceScheduleResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "edit_advance_invoice_schedule"), @@ -2136,17 +1950,11 @@ def edit_advance_invoice_schedule( cast(Dict[Any, Any], params), headers, EditAdvanceInvoiceScheduleResponse, - None, - False, - jsonKeys, - options, ) def retrieve_advance_invoice_schedule( self, id, headers=None ) -> RetrieveAdvanceInvoiceScheduleResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "retrieve_advance_invoice_schedule"), @@ -2154,19 +1962,11 @@ def retrieve_advance_invoice_schedule( None, headers, RetrieveAdvanceInvoiceScheduleResponse, - None, - False, - jsonKeys, - options, ) def remove_advance_invoice_schedule( self, id, params: RemoveAdvanceInvoiceScheduleParams = None, headers=None ) -> RemoveAdvanceInvoiceScheduleResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "remove_advance_invoice_schedule"), @@ -2174,19 +1974,11 @@ def remove_advance_invoice_schedule( cast(Dict[Any, Any], params), headers, RemoveAdvanceInvoiceScheduleResponse, - None, - False, - jsonKeys, - options, ) def regenerate_invoice( self, id, params: RegenerateInvoiceParams = None, headers=None ) -> RegenerateInvoiceResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "regenerate_invoice"), @@ -2194,22 +1986,11 @@ def regenerate_invoice( cast(Dict[Any, Any], params), headers, RegenerateInvoiceResponse, - None, - False, - jsonKeys, - options, ) def import_subscription( self, params: ImportSubscriptionParams, headers=None ) -> ImportSubscriptionResponse: - jsonKeys = { - "meta_data": 0, - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", "import_subscription"), @@ -2217,21 +1998,11 @@ def import_subscription( cast(Dict[Any, Any], params), headers, ImportSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def import_for_customer( self, id, params: ImportForCustomerParams, headers=None ) -> ImportForCustomerResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "import_subscription"), @@ -2239,19 +2010,11 @@ def import_for_customer( cast(Dict[Any, Any], params), headers, ImportForCustomerResponse, - None, - False, - jsonKeys, - options, ) def import_contract_term( self, id, params: ImportContractTermParams = None, headers=None ) -> ImportContractTermResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "import_contract_term"), @@ -2259,19 +2022,11 @@ def import_contract_term( cast(Dict[Any, Any], params), headers, ImportContractTermResponse, - None, - False, - jsonKeys, - options, ) def import_unbilled_charges( self, id, params: ImportUnbilledChargesParams, headers=None ) -> ImportUnbilledChargesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "import_unbilled_charges"), @@ -2279,21 +2034,11 @@ def import_unbilled_charges( cast(Dict[Any, Any], params), headers, ImportUnbilledChargesResponse, - None, - False, - jsonKeys, - options, ) def import_for_items( self, id, params: ImportForItemsParams, headers=None ) -> ImportForItemsResponse: - jsonKeys = { - "meta_data": 0, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("customers", id, "import_for_items"), @@ -2301,19 +2046,11 @@ def import_for_items( cast(Dict[Any, Any], params), headers, ImportForItemsResponse, - None, - False, - jsonKeys, - options, ) def override_billing_profile( self, id, params: OverrideBillingProfileParams = None, headers=None ) -> OverrideBillingProfileResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "override_billing_profile"), @@ -2321,17 +2058,9 @@ def override_billing_profile( cast(Dict[Any, Any], params), headers, OverrideBillingProfileResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "delete"), @@ -2339,17 +2068,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def pause(self, id, params: PauseParams = None, headers=None) -> PauseResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "pause"), @@ -2357,17 +2078,9 @@ def pause(self, id, params: PauseParams = None, headers=None) -> PauseResponse: cast(Dict[Any, Any], params), headers, PauseResponse, - None, - False, - jsonKeys, - options, ) def cancel(self, id, params: CancelParams = None, headers=None) -> CancelResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "cancel"), @@ -2375,19 +2088,11 @@ def cancel(self, id, params: CancelParams = None, headers=None) -> CancelRespons cast(Dict[Any, Any], params), headers, CancelResponse, - None, - False, - jsonKeys, - options, ) def cancel_for_items( self, id, params: CancelForItemsParams = None, headers=None ) -> CancelForItemsResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "cancel_for_items"), @@ -2395,19 +2100,9 @@ def cancel_for_items( cast(Dict[Any, Any], params), headers, CancelForItemsResponse, - None, - False, - jsonKeys, - options, ) def resume(self, id, params: ResumeParams = None, headers=None) -> ResumeResponse: - jsonKeys = { - "additional_information": 1, - } - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "resume"), @@ -2415,17 +2110,9 @@ def resume(self, id, params: ResumeParams = None, headers=None) -> ResumeRespons cast(Dict[Any, Any], params), headers, ResumeResponse, - None, - False, - jsonKeys, - options, ) def remove_scheduled_pause(self, id, headers=None) -> RemoveScheduledPauseResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "remove_scheduled_pause"), @@ -2433,19 +2120,11 @@ def remove_scheduled_pause(self, id, headers=None) -> RemoveScheduledPauseRespon None, headers, RemoveScheduledPauseResponse, - None, - False, - jsonKeys, - options, ) def remove_scheduled_resumption( self, id, headers=None ) -> RemoveScheduledResumptionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "remove_scheduled_resumption"), @@ -2453,17 +2132,9 @@ def remove_scheduled_resumption( None, headers, RemoveScheduledResumptionResponse, - None, - False, - jsonKeys, - options, ) def move(self, id, params: MoveParams, headers=None) -> MoveResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "move"), @@ -2471,8 +2142,4 @@ def move(self, id, params: MoveParams, headers=None) -> MoveResponse: cast(Dict[Any, Any], params), headers, MoveResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/subscription/responses.py b/chargebee/models/subscription/responses.py index 123cac3..4a25619 100644 --- a/chargebee/models/subscription/responses.py +++ b/chargebee/models/subscription/responses.py @@ -22,7 +22,6 @@ @dataclass class SubscriptionItemResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None item_type: str = None quantity: int = None @@ -52,7 +51,6 @@ class SubscriptionItemResponse(Model): @dataclass class ItemTierResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None starting_unit: int = None ending_unit: int = None @@ -60,21 +58,17 @@ class ItemTierResponse(Model): starting_unit_in_decimal: str = None ending_unit_in_decimal: str = None price_in_decimal: str = None - pricing_type: str = None - package_size: int = None index: int = None @dataclass class ChargedItemResponse(Model): - raw_data: Dict[Any, Any] = None item_price_id: str = None last_charged_at: int = None @dataclass class CouponResponse(Model): - raw_data: Dict[Any, Any] = None coupon_id: str = None apply_till: int = None applied_count: int = None @@ -83,7 +77,6 @@ class CouponResponse(Model): @dataclass class ShippingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -98,11 +91,11 @@ class ShippingAddressResponse(Model): country: str = None zip: str = None validation_status: str = None + index: int = None @dataclass class ReferralInfoResponse(Model): - raw_data: Dict[Any, Any] = None referral_code: str = None coupon_code: str = None referrer_id: str = None @@ -121,14 +114,12 @@ class ReferralInfoResponse(Model): @dataclass class BillingOverrideResponse(Model): - raw_data: Dict[Any, Any] = None max_excess_payment_usage: int = None max_refundable_credits_usage: int = None @dataclass class ContractTermResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None status: str = None contract_start: int = None @@ -145,13 +136,11 @@ class ContractTermResponse(Model): @dataclass class DiscountResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None invoice_name: str = None type: str = None percentage: float = None amount: int = None - quantity: int = None currency_code: str = None duration_type: str = None period: int = None @@ -166,16 +155,28 @@ class DiscountResponse(Model): index: int = None +@dataclass +class AddonResponse(Model): + id: str = None + quantity: int = None + unit_price: int = None + amount: int = None + trial_end: int = None + remaining_billing_cycles: int = None + quantity_in_decimal: str = None + unit_price_in_decimal: str = None + amount_in_decimal: str = None + proration_type: str = None + + @dataclass class ChargedEventBasedAddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None last_charged_at: int = None @dataclass class EventBasedAddonResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None quantity: int = None unit_price: int = None @@ -186,21 +187,6 @@ class EventBasedAddonResponse(Model): unit_price_in_decimal: str = None -@dataclass -class AddonResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - quantity: int = None - unit_price: int = None - amount: int = None - trial_end: int = None - remaining_billing_cycles: int = None - quantity_in_decimal: str = None - unit_price_in_decimal: str = None - amount_in_decimal: str = None - proration_type: str = None - - @dataclass class SubscriptionResponse(Model): raw_data: Dict[Any, Any] = None @@ -282,37 +268,36 @@ class SubscriptionResponse(Model): auto_close_invoices: bool = None discounts: List[DiscountResponse] = None business_entity_id: str = None - decommissioned: bool = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None + headers: Dict[str, str] = None @dataclass class CreateForCustomerResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None + headers: Dict[str, str] = None @dataclass class CreateWithItemsResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None + headers: Dict[str, str] = None @dataclass @@ -323,9 +308,10 @@ class ListSubscriptionResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListSubscriptionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -334,9 +320,10 @@ class SubscriptionsForCustomerSubscriptionResponse: @dataclass -class SubscriptionsForCustomerResponse(Response): +class SubscriptionsForCustomerResponse: list: List[SubscriptionsForCustomerSubscriptionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -345,9 +332,10 @@ class ContractTermsForSubscriptionSubscriptionResponse: @dataclass -class ContractTermsForSubscriptionResponse(Response): +class ContractTermsForSubscriptionResponse: list: List[ContractTermsForSubscriptionSubscriptionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -356,108 +344,110 @@ class ListDiscountsSubscriptionResponse: @dataclass -class ListDiscountsResponse(Response): +class ListDiscountsResponse: list: List[ListDiscountsSubscriptionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass -class RetrieveWithScheduledChangesResponse(Response): +class RetrieveWithScheduledChangesResponse: subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class RemoveScheduledChangesResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None credit_notes: List["credit_note.CreditNoteResponse"] = None + headers: Dict[str, str] = None @dataclass class RemoveScheduledCancellationResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class RemoveCouponsResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class UpdateResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None credit_notes: List["credit_note.CreditNoteResponse"] = None + headers: Dict[str, str] = None @dataclass class UpdateForItemsResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None credit_notes: List["credit_note.CreditNoteResponse"] = None + headers: Dict[str, str] = None @dataclass class ChangeTermEndResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None credit_notes: List["credit_note.CreditNoteResponse"] = None + headers: Dict[str, str] = None @dataclass class ReactivateResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None + headers: Dict[str, str] = None @dataclass class AddChargeAtTermEndResponse(Response): - is_idempotency_replayed: bool estimate: "estimate.EstimateResponse" + headers: Dict[str, str] = None @dataclass class ChargeAddonAtTermEndResponse(Response): - is_idempotency_replayed: bool estimate: "estimate.EstimateResponse" + headers: Dict[str, str] = None @dataclass class ChargeFutureRenewalsResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None @@ -465,153 +455,155 @@ class ChargeFutureRenewalsResponse(Response): advance_invoice_schedules: List[ "advance_invoice_schedule.AdvanceInvoiceScheduleResponse" ] = None + headers: Dict[str, str] = None @dataclass class EditAdvanceInvoiceScheduleResponse(Response): - is_idempotency_replayed: bool advance_invoice_schedules: List[ "advance_invoice_schedule.AdvanceInvoiceScheduleResponse" ] + headers: Dict[str, str] = None @dataclass -class RetrieveAdvanceInvoiceScheduleResponse(Response): +class RetrieveAdvanceInvoiceScheduleResponse: advance_invoice_schedules: List[ "advance_invoice_schedule.AdvanceInvoiceScheduleResponse" ] + headers: Dict[str, str] = None @dataclass class RemoveAdvanceInvoiceScheduleResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse advance_invoice_schedules: List[ "advance_invoice_schedule.AdvanceInvoiceScheduleResponse" ] = None + headers: Dict[str, str] = None @dataclass class RegenerateInvoiceResponse(Response): - is_idempotency_replayed: bool invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None + headers: Dict[str, str] = None @dataclass class ImportSubscriptionResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None + headers: Dict[str, str] = None @dataclass class ImportForCustomerResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None + headers: Dict[str, str] = None @dataclass class ImportContractTermResponse(Response): - is_idempotency_replayed: bool contract_term: "contract_term.ContractTermResponse" + headers: Dict[str, str] = None @dataclass class ImportUnbilledChargesResponse(Response): - is_idempotency_replayed: bool unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] + headers: Dict[str, str] = None @dataclass class ImportForItemsResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None + headers: Dict[str, str] = None @dataclass class OverrideBillingProfileResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse payment_source: "payment_source.PaymentSourceResponse" = None + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class PauseResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None credit_notes: List["credit_note.CreditNoteResponse"] = None + headers: Dict[str, str] = None @dataclass class CancelResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None credit_notes: List["credit_note.CreditNoteResponse"] = None + headers: Dict[str, str] = None @dataclass class CancelForItemsResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None credit_notes: List["credit_note.CreditNoteResponse"] = None + headers: Dict[str, str] = None @dataclass class ResumeResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None invoice: "invoice.InvoiceResponse" = None unbilled_charges: List["unbilled_charge.UnbilledChargeResponse"] = None + headers: Dict[str, str] = None @dataclass class RemoveScheduledPauseResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class RemoveScheduledResumptionResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse customer: "customer.CustomerResponse" card: "card.CardResponse" = None + headers: Dict[str, str] = None @dataclass class MoveResponse(Response): - is_idempotency_replayed: bool subscription: SubscriptionResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/subscription_entitlement/operations.py b/chargebee/models/subscription_entitlement/operations.py index 8d97836..ce3f723 100644 --- a/chargebee/models/subscription_entitlement/operations.py +++ b/chargebee/models/subscription_entitlement/operations.py @@ -7,6 +7,7 @@ @dataclass class SubscriptionEntitlement: + env: environment.Environment class ScheduleStatus(Enum): @@ -48,8 +49,6 @@ def subscription_entitlements_for_subscription( params: SubscriptionEntitlementsForSubscriptionParams = None, headers=None, ) -> SubscriptionEntitlementsForSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "subscription_entitlements"), @@ -57,19 +56,11 @@ def subscription_entitlements_for_subscription( cast(Dict[Any, Any], params), headers, SubscriptionEntitlementsForSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def set_subscription_entitlement_availability( self, id, params: SetSubscriptionEntitlementAvailabilityParams, headers=None ) -> SetSubscriptionEntitlementAvailabilityResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path( @@ -79,8 +70,4 @@ def set_subscription_entitlement_availability( cast(Dict[Any, Any], params), headers, SetSubscriptionEntitlementAvailabilityResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/subscription_entitlement/responses.py b/chargebee/models/subscription_entitlement/responses.py index b324fe6..1b41bd5 100644 --- a/chargebee/models/subscription_entitlement/responses.py +++ b/chargebee/models/subscription_entitlement/responses.py @@ -7,7 +7,6 @@ @dataclass class ComponentResponse(Model): - raw_data: Dict[Any, Any] = None entitlement_overrides: entitlement_override.EntitlementOverrideResponse = None @@ -35,17 +34,13 @@ class SubscriptionEntitlementsForSubscriptionSubscriptionEntitlementResponse: @dataclass -class SubscriptionEntitlementsForSubscriptionResponse(Response): +class SubscriptionEntitlementsForSubscriptionResponse: list: List[SubscriptionEntitlementsForSubscriptionSubscriptionEntitlementResponse] next_offset: str = None - - -@dataclass -class SetSubscriptionEntitlementAvailabilitySubscriptionEntitlementResponse: - subscription_entitlement: SubscriptionEntitlementResponse + headers: Dict[str, str] = None @dataclass class SetSubscriptionEntitlementAvailabilityResponse(Response): - is_idempotency_replayed: bool - list: List[SetSubscriptionEntitlementAvailabilitySubscriptionEntitlementResponse] + subscription_entitlement: SubscriptionEntitlementResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/subscription_entitlements_created_detail/__init__.py b/chargebee/models/subscription_entitlements_created_detail/__init__.py deleted file mode 100644 index cf23149..0000000 --- a/chargebee/models/subscription_entitlements_created_detail/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import SubscriptionEntitlementsCreatedDetail -from .responses import SubscriptionEntitlementsCreatedDetailResponse diff --git a/chargebee/models/subscription_entitlements_created_detail/operations.py b/chargebee/models/subscription_entitlements_created_detail/operations.py deleted file mode 100644 index 663a410..0000000 --- a/chargebee/models/subscription_entitlements_created_detail/operations.py +++ /dev/null @@ -1,10 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class SubscriptionEntitlementsCreatedDetail: - env: environment.Environment - - pass diff --git a/chargebee/models/subscription_entitlements_created_detail/responses.py b/chargebee/models/subscription_entitlements_created_detail/responses.py deleted file mode 100644 index 5ea30ef..0000000 --- a/chargebee/models/subscription_entitlements_created_detail/responses.py +++ /dev/null @@ -1,10 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class SubscriptionEntitlementsCreatedDetailResponse(Model): - raw_data: Dict[Any, Any] = None - subscription_id: str = None - has_next: bool = None diff --git a/chargebee/models/subscription_entitlements_updated_detail/__init__.py b/chargebee/models/subscription_entitlements_updated_detail/__init__.py deleted file mode 100644 index a1d4bb8..0000000 --- a/chargebee/models/subscription_entitlements_updated_detail/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import SubscriptionEntitlementsUpdatedDetail -from .responses import SubscriptionEntitlementsUpdatedDetailResponse diff --git a/chargebee/models/subscription_entitlements_updated_detail/operations.py b/chargebee/models/subscription_entitlements_updated_detail/operations.py deleted file mode 100644 index fb998c4..0000000 --- a/chargebee/models/subscription_entitlements_updated_detail/operations.py +++ /dev/null @@ -1,10 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class SubscriptionEntitlementsUpdatedDetail: - env: environment.Environment - - pass diff --git a/chargebee/models/subscription_entitlements_updated_detail/responses.py b/chargebee/models/subscription_entitlements_updated_detail/responses.py deleted file mode 100644 index a4fec6f..0000000 --- a/chargebee/models/subscription_entitlements_updated_detail/responses.py +++ /dev/null @@ -1,10 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any - - -@dataclass -class SubscriptionEntitlementsUpdatedDetailResponse(Model): - raw_data: Dict[Any, Any] = None - subscription_id: str = None - has_next: bool = None diff --git a/chargebee/models/subscription_estimate/operations.py b/chargebee/models/subscription_estimate/operations.py index da7b58d..3b041a9 100644 --- a/chargebee/models/subscription_estimate/operations.py +++ b/chargebee/models/subscription_estimate/operations.py @@ -7,6 +7,7 @@ @dataclass class SubscriptionEstimate: + env: environment.Environment class Status(Enum): @@ -54,6 +55,7 @@ class ShippingAddress(TypedDict): country: NotRequired[str] zip: NotRequired[str] validation_status: NotRequired[enums.ValidationStatus] + index: Required[int] class ContractTerm(TypedDict): id: Required[str] diff --git a/chargebee/models/subscription_estimate/responses.py b/chargebee/models/subscription_estimate/responses.py index 2786429..fc347f3 100644 --- a/chargebee/models/subscription_estimate/responses.py +++ b/chargebee/models/subscription_estimate/responses.py @@ -5,7 +5,6 @@ @dataclass class ShippingAddressResponse(Model): - raw_data: Dict[Any, Any] = None first_name: str = None last_name: str = None email: str = None @@ -20,11 +19,11 @@ class ShippingAddressResponse(Model): country: str = None zip: str = None validation_status: str = None + index: int = None @dataclass class ContractTermResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None status: str = None contract_start: int = None diff --git a/chargebee/models/tax_withheld/operations.py b/chargebee/models/tax_withheld/operations.py index 4148493..c015415 100644 --- a/chargebee/models/tax_withheld/operations.py +++ b/chargebee/models/tax_withheld/operations.py @@ -6,6 +6,7 @@ @dataclass class TaxWithheld: + env: environment.Environment class Type(Enum): diff --git a/chargebee/models/third_party_payment_method/operations.py b/chargebee/models/third_party_payment_method/operations.py index 19ae517..cae87f6 100644 --- a/chargebee/models/third_party_payment_method/operations.py +++ b/chargebee/models/third_party_payment_method/operations.py @@ -5,6 +5,7 @@ @dataclass class ThirdPartyPaymentMethod: + env: environment.Environment pass diff --git a/chargebee/models/time_machine/operations.py b/chargebee/models/time_machine/operations.py index 9d237c2..3ff85a2 100644 --- a/chargebee/models/time_machine/operations.py +++ b/chargebee/models/time_machine/operations.py @@ -8,6 +8,7 @@ @dataclass class TimeMachine: + env: environment.Environment class TimeTravelStatus(Enum): @@ -58,8 +59,6 @@ class TravelForwardParams(TypedDict): destination_time: NotRequired[int] def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("time_machines", id), @@ -67,19 +66,11 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def start_afresh( self, id, params: StartAfreshParams = None, headers=None ) -> StartAfreshResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("time_machines", id, "start_afresh"), @@ -87,19 +78,11 @@ def start_afresh( cast(Dict[Any, Any], params), headers, StartAfreshResponse, - None, - False, - jsonKeys, - options, ) def travel_forward( self, id, params: TravelForwardParams = None, headers=None ) -> TravelForwardResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("time_machines", id, "travel_forward"), @@ -107,8 +90,4 @@ def travel_forward( cast(Dict[Any, Any], params), headers, TravelForwardResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/time_machine/responses.py b/chargebee/models/time_machine/responses.py index 81fce37..b4c8d81 100644 --- a/chargebee/models/time_machine/responses.py +++ b/chargebee/models/time_machine/responses.py @@ -17,17 +17,18 @@ class TimeMachineResponse(Model): @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: time_machine: TimeMachineResponse + headers: Dict[str, str] = None @dataclass class StartAfreshResponse(Response): - is_idempotency_replayed: bool time_machine: TimeMachineResponse + headers: Dict[str, str] = None @dataclass class TravelForwardResponse(Response): - is_idempotency_replayed: bool time_machine: TimeMachineResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/token/operations.py b/chargebee/models/token/operations.py index 171926a..b1e3681 100644 --- a/chargebee/models/token/operations.py +++ b/chargebee/models/token/operations.py @@ -6,6 +6,7 @@ @dataclass class Token: + env: environment.Environment class Status(Enum): diff --git a/chargebee/models/transaction/operations.py b/chargebee/models/transaction/operations.py index ffddf3b..6e337f0 100644 --- a/chargebee/models/transaction/operations.py +++ b/chargebee/models/transaction/operations.py @@ -8,6 +8,7 @@ @dataclass class Transaction: + env: environment.Environment class Type(Enum): @@ -49,7 +50,6 @@ def __str__(self): class AuthorizationReason(Enum): BLOCKING_FUNDS = "blocking_funds" VERIFICATION = "verification" - SCHEDULED_CAPTURE = "scheduled_capture" def __str__(self): return self.value @@ -112,7 +112,6 @@ class GatewayErrorDetail(TypedDict): processor_error_code: NotRequired[str] processor_error_message: NotRequired[str] error_cause_id: NotRequired[str] - processor_advice_code: NotRequired[str] class CreateAuthorizationParams(TypedDict): customer_id: Required[str] @@ -176,10 +175,6 @@ class DeleteOfflineTransactionParams(TypedDict): def create_authorization( self, params: CreateAuthorizationParams, headers=None ) -> CreateAuthorizationResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("transactions", "create_authorization"), @@ -187,17 +182,9 @@ def create_authorization( cast(Dict[Any, Any], params), headers, CreateAuthorizationResponse, - None, - False, - jsonKeys, - options, ) def void_transaction(self, id, headers=None) -> VoidTransactionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("transactions", id, "void"), @@ -205,19 +192,11 @@ def void_transaction(self, id, headers=None) -> VoidTransactionResponse: None, headers, VoidTransactionResponse, - None, - False, - jsonKeys, - options, ) def record_refund( self, id, params: RecordRefundParams, headers=None ) -> RecordRefundResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("transactions", id, "record_refund"), @@ -225,19 +204,11 @@ def record_refund( cast(Dict[Any, Any], params), headers, RecordRefundResponse, - None, - False, - jsonKeys, - options, ) def reconcile( self, id, params: ReconcileParams = None, headers=None ) -> ReconcileResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("transactions", id, "reconcile"), @@ -245,17 +216,9 @@ def reconcile( cast(Dict[Any, Any], params), headers, ReconcileResponse, - None, - False, - jsonKeys, - options, ) def refund(self, id, params: RefundParams = None, headers=None) -> RefundResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("transactions", id, "refund"), @@ -263,15 +226,9 @@ def refund(self, id, params: RefundParams = None, headers=None) -> RefundRespons cast(Dict[Any, Any], params), headers, RefundResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("transactions"), @@ -279,17 +236,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def transactions_for_customer( self, id, params: TransactionsForCustomerParams = None, headers=None ) -> TransactionsForCustomerResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("customers", id, "transactions"), @@ -297,17 +248,11 @@ def transactions_for_customer( cast(Dict[Any, Any], params), headers, TransactionsForCustomerResponse, - None, - False, - jsonKeys, - options, ) def transactions_for_subscription( self, id, params: TransactionsForSubscriptionParams = None, headers=None ) -> TransactionsForSubscriptionResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "transactions"), @@ -315,17 +260,11 @@ def transactions_for_subscription( cast(Dict[Any, Any], params), headers, TransactionsForSubscriptionResponse, - None, - False, - jsonKeys, - options, ) def payments_for_invoice( self, id, params: PaymentsForInvoiceParams = None, headers=None ) -> PaymentsForInvoiceResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("invoices", id, "payments"), @@ -333,15 +272,9 @@ def payments_for_invoice( cast(Dict[Any, Any], params), headers, PaymentsForInvoiceResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("transactions", id), @@ -349,19 +282,11 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete_offline_transaction( self, id, params: DeleteOfflineTransactionParams = None, headers=None ) -> DeleteOfflineTransactionResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("transactions", id, "delete_offline_transaction"), @@ -369,8 +294,4 @@ def delete_offline_transaction( cast(Dict[Any, Any], params), headers, DeleteOfflineTransactionResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/transaction/responses.py b/chargebee/models/transaction/responses.py index 9e2efaf..fa864d9 100644 --- a/chargebee/models/transaction/responses.py +++ b/chargebee/models/transaction/responses.py @@ -7,7 +7,6 @@ @dataclass class LinkedInvoiceResponse(Model): - raw_data: Dict[Any, Any] = None invoice_id: str = None applied_amount: int = None applied_at: int = None @@ -18,7 +17,6 @@ class LinkedInvoiceResponse(Model): @dataclass class LinkedCreditNoteResponse(Model): - raw_data: Dict[Any, Any] = None cn_id: str = None applied_amount: int = None applied_at: int = None @@ -32,7 +30,6 @@ class LinkedCreditNoteResponse(Model): @dataclass class LinkedRefundResponse(Model): - raw_data: Dict[Any, Any] = None txn_id: str = None txn_status: str = None txn_date: int = None @@ -41,7 +38,6 @@ class LinkedRefundResponse(Model): @dataclass class LinkedPaymentResponse(Model): - raw_data: Dict[Any, Any] = None id: str = None status: str = None amount: int = None @@ -50,7 +46,6 @@ class LinkedPaymentResponse(Model): @dataclass class GatewayErrorDetailResponse(Model): - raw_data: Dict[Any, Any] = None request_id: str = None error_category: str = None error_code: str = None @@ -65,7 +60,6 @@ class GatewayErrorDetailResponse(Model): processor_error_code: str = None processor_error_message: str = None error_cause_id: str = None - processor_advice_code: str = None @dataclass @@ -121,32 +115,32 @@ class TransactionResponse(Model): @dataclass class CreateAuthorizationResponse(Response): - is_idempotency_replayed: bool transaction: TransactionResponse + headers: Dict[str, str] = None @dataclass class VoidTransactionResponse(Response): - is_idempotency_replayed: bool transaction: TransactionResponse + headers: Dict[str, str] = None @dataclass class RecordRefundResponse(Response): - is_idempotency_replayed: bool transaction: TransactionResponse + headers: Dict[str, str] = None @dataclass class ReconcileResponse(Response): - is_idempotency_replayed: bool transaction: TransactionResponse + headers: Dict[str, str] = None @dataclass class RefundResponse(Response): - is_idempotency_replayed: bool transaction: TransactionResponse + headers: Dict[str, str] = None @dataclass @@ -155,9 +149,10 @@ class ListTransactionResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListTransactionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -166,9 +161,10 @@ class TransactionsForCustomerTransactionResponse: @dataclass -class TransactionsForCustomerResponse(Response): +class TransactionsForCustomerResponse: list: List[TransactionsForCustomerTransactionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -177,9 +173,10 @@ class TransactionsForSubscriptionTransactionResponse: @dataclass -class TransactionsForSubscriptionResponse(Response): +class TransactionsForSubscriptionResponse: list: List[TransactionsForSubscriptionTransactionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass @@ -188,17 +185,19 @@ class PaymentsForInvoiceTransactionResponse: @dataclass -class PaymentsForInvoiceResponse(Response): +class PaymentsForInvoiceResponse: list: List[PaymentsForInvoiceTransactionResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: transaction: TransactionResponse + headers: Dict[str, str] = None @dataclass class DeleteOfflineTransactionResponse(Response): - is_idempotency_replayed: bool transaction: TransactionResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/unbilled_charge/operations.py b/chargebee/models/unbilled_charge/operations.py index 40b396e..1dabd58 100644 --- a/chargebee/models/unbilled_charge/operations.py +++ b/chargebee/models/unbilled_charge/operations.py @@ -8,6 +8,7 @@ @dataclass class UnbilledCharge: + env: environment.Environment class EntityType(Enum): @@ -31,8 +32,6 @@ class Tier(TypedDict): ending_unit_in_decimal: NotRequired[str] quantity_used_in_decimal: NotRequired[str] unit_amount_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateUnbilledChargeAddonParams(TypedDict): id: NotRequired[str] @@ -80,8 +79,6 @@ class CreateItemTierParams(TypedDict): starting_unit_in_decimal: NotRequired[str] ending_unit_in_decimal: NotRequired[str] price_in_decimal: NotRequired[str] - pricing_type: NotRequired[enums.PricingType] - package_size: NotRequired[int] class CreateChargeParams(TypedDict): amount: NotRequired[int] @@ -141,10 +138,6 @@ class InvoiceNowEstimateParams(TypedDict): def create_unbilled_charge( self, params: CreateUnbilledChargeParams, headers=None ) -> CreateUnbilledChargeResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("unbilled_charges", "create"), @@ -152,17 +145,9 @@ def create_unbilled_charge( cast(Dict[Any, Any], params), headers, CreateUnbilledChargeResponse, - None, - False, - jsonKeys, - options, ) def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("unbilled_charges"), @@ -170,19 +155,11 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def invoice_unbilled_charges( self, params: InvoiceUnbilledChargesParams = None, headers=None ) -> InvoiceUnbilledChargesResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("unbilled_charges", "invoice_unbilled_charges"), @@ -190,17 +167,9 @@ def invoice_unbilled_charges( cast(Dict[Any, Any], params), headers, InvoiceUnbilledChargesResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("unbilled_charges", id, "delete"), @@ -208,15 +177,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("unbilled_charges"), @@ -224,17 +187,11 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def invoice_now_estimate( self, params: InvoiceNowEstimateParams = None, headers=None ) -> InvoiceNowEstimateResponse: - jsonKeys = {} - options = {} return request.send( "post", request.uri_path("unbilled_charges", "invoice_now_estimate"), @@ -242,8 +199,4 @@ def invoice_now_estimate( cast(Dict[Any, Any], params), headers, InvoiceNowEstimateResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/unbilled_charge/responses.py b/chargebee/models/unbilled_charge/responses.py index 182657a..0083698 100644 --- a/chargebee/models/unbilled_charge/responses.py +++ b/chargebee/models/unbilled_charge/responses.py @@ -7,7 +7,6 @@ @dataclass class TierResponse(Model): - raw_data: Dict[Any, Any] = None starting_unit: int = None ending_unit: int = None quantity_used: int = None @@ -16,8 +15,6 @@ class TierResponse(Model): ending_unit_in_decimal: str = None quantity_used_in_decimal: str = None unit_amount_in_decimal: str = None - pricing_type: str = None - package_size: int = None @dataclass @@ -51,26 +48,26 @@ class UnbilledChargeResponse(Model): @dataclass class CreateUnbilledChargeResponse(Response): - is_idempotency_replayed: bool unbilled_charges: List[UnbilledChargeResponse] + headers: Dict[str, str] = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool unbilled_charges: List[UnbilledChargeResponse] + headers: Dict[str, str] = None @dataclass class InvoiceUnbilledChargesResponse(Response): - is_idempotency_replayed: bool invoices: List["invoice.InvoiceResponse"] + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool unbilled_charge: UnbilledChargeResponse + headers: Dict[str, str] = None @dataclass @@ -79,12 +76,13 @@ class ListUnbilledChargeResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListUnbilledChargeResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class InvoiceNowEstimateResponse(Response): - is_idempotency_replayed: bool estimate: "estimate.EstimateResponse" + headers: Dict[str, str] = None diff --git a/chargebee/models/usage/operations.py b/chargebee/models/usage/operations.py index c649449..5d9b3f5 100644 --- a/chargebee/models/usage/operations.py +++ b/chargebee/models/usage/operations.py @@ -7,6 +7,7 @@ @dataclass class Usage: + env: environment.Environment class PdfInvoiceParams(TypedDict): @@ -43,10 +44,6 @@ class PdfParams(TypedDict): disposition_type: NotRequired[enums.DispositionType] def create(self, id, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "usages"), @@ -54,15 +51,9 @@ def create(self, id, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, params: RetrieveParams, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("subscriptions", id, "usages"), @@ -70,17 +61,9 @@ def retrieve(self, id, params: RetrieveParams, headers=None) -> RetrieveResponse cast(Dict[Any, Any], params), headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, params: DeleteParams, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("subscriptions", id, "delete_usage"), @@ -88,15 +71,9 @@ def delete(self, id, params: DeleteParams, headers=None) -> DeleteResponse: cast(Dict[Any, Any], params), headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("usages"), @@ -104,17 +81,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def pdf(self, params: PdfParams, headers=None) -> PdfResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("usages", "pdf"), @@ -122,8 +91,4 @@ def pdf(self, params: PdfParams, headers=None) -> PdfResponse: cast(Dict[Any, Any], params), headers, PdfResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/usage/responses.py b/chargebee/models/usage/responses.py index 7627776..ae6d246 100644 --- a/chargebee/models/usage/responses.py +++ b/chargebee/models/usage/responses.py @@ -24,19 +24,20 @@ class UsageResponse(Model): @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool usage: UsageResponse + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: usage: UsageResponse + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool usage: UsageResponse + headers: Dict[str, str] = None @dataclass @@ -45,12 +46,13 @@ class ListUsageResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListUsageResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class PdfResponse(Response): - is_idempotency_replayed: bool download: "download.DownloadResponse" + headers: Dict[str, str] = None diff --git a/chargebee/models/usage_charge/__init__.py b/chargebee/models/usage_charge/__init__.py deleted file mode 100644 index 833d13d..0000000 --- a/chargebee/models/usage_charge/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import UsageCharge -from .responses import UsageChargeResponse diff --git a/chargebee/models/usage_charge/operations.py b/chargebee/models/usage_charge/operations.py deleted file mode 100644 index 2dfab52..0000000 --- a/chargebee/models/usage_charge/operations.py +++ /dev/null @@ -1,32 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from chargebee.filters import Filters - - -@dataclass -class UsageCharge: - env: environment.Environment - - class RetrieveUsageChargesForSubscriptionParams(TypedDict): - limit: NotRequired[int] - offset: NotRequired[str] - feature_id: NotRequired[Filters.StringFilter] - - def retrieve_usage_charges_for_subscription( - self, id, params: RetrieveUsageChargesForSubscriptionParams = None, headers=None - ) -> RetrieveUsageChargesForSubscriptionResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("subscriptions", id, "usage_charges"), - self.env, - cast(Dict[Any, Any], params), - headers, - RetrieveUsageChargesForSubscriptionResponse, - None, - False, - jsonKeys, - options, - ) diff --git a/chargebee/models/usage_charge/responses.py b/chargebee/models/usage_charge/responses.py deleted file mode 100644 index 154ecf0..0000000 --- a/chargebee/models/usage_charge/responses.py +++ /dev/null @@ -1,30 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response - - -@dataclass -class UsageChargeResponse(Model): - raw_data: Dict[Any, Any] = None - subscription_id: str = None - feature_id: str = None - included_usage: str = None - total_usage: str = None - on_demand_usage: str = None - metered_item_price_id: str = None - amount: str = None - currency_code: str = None - usage_from: int = None - usage_to: int = None - - -@dataclass -class RetrieveUsageChargesForSubscriptionUsageChargeResponse: - usage_charge: UsageChargeResponse - - -@dataclass -class RetrieveUsageChargesForSubscriptionResponse(Response): - list: List[RetrieveUsageChargesForSubscriptionUsageChargeResponse] - next_offset: str = None diff --git a/chargebee/models/usage_event/__init__.py b/chargebee/models/usage_event/__init__.py deleted file mode 100644 index 03b412f..0000000 --- a/chargebee/models/usage_event/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import UsageEvent -from .responses import UsageEventResponse diff --git a/chargebee/models/usage_event/operations.py b/chargebee/models/usage_event/operations.py deleted file mode 100644 index 989bbca..0000000 --- a/chargebee/models/usage_event/operations.py +++ /dev/null @@ -1,61 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast - - -@dataclass -class UsageEvent: - env: environment.Environment - - class BatchIngestEventParams(TypedDict): - deduplication_id: Required[str] - subscription_id: Required[str] - usage_timestamp: Required[int] - properties: Required[Dict[Any, Any]] - - class CreateParams(TypedDict): - deduplication_id: Required[str] - subscription_id: Required[str] - usage_timestamp: Required[int] - properties: Required[Dict[Any, Any]] - - class BatchIngestParams(TypedDict): - events: Required[List["UsageEvent.BatchIngestEventParams"]] - - def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = { - "properties": 0, - } - options = {} - return request.send( - "post", - request.uri_path("usage_events"), - self.env, - cast(Dict[Any, Any], params), - headers, - CreateResponse, - "ingest", - True, - jsonKeys, - options, - ) - - def batch_ingest( - self, params: BatchIngestParams, headers=None - ) -> BatchIngestResponse: - jsonKeys = { - "properties": 1, - } - options = {} - return request.send( - "post", - request.uri_path("batch", "usage_events"), - self.env, - cast(Dict[Any, Any], params), - headers, - BatchIngestResponse, - "ingest", - True, - jsonKeys, - options, - ) diff --git a/chargebee/models/usage_event/responses.py b/chargebee/models/usage_event/responses.py deleted file mode 100644 index 63aae72..0000000 --- a/chargebee/models/usage_event/responses.py +++ /dev/null @@ -1,26 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response - - -@dataclass -class UsageEventResponse(Model): - raw_data: Dict[Any, Any] = None - subscription_id: str = None - deduplication_id: str = None - usage_timestamp: int = None - properties: Dict[Any, Any] = None - - -@dataclass -class CreateResponse(Response): - is_idempotency_replayed: bool - usage_event: UsageEventResponse - - -@dataclass -class BatchIngestResponse(Response): - is_idempotency_replayed: bool - batch_id: str - failed_events: Any diff --git a/chargebee/models/usage_file/__init__.py b/chargebee/models/usage_file/__init__.py deleted file mode 100644 index 139360f..0000000 --- a/chargebee/models/usage_file/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import UsageFile -from .responses import UsageFileResponse diff --git a/chargebee/models/usage_file/operations.py b/chargebee/models/usage_file/operations.py deleted file mode 100644 index 10a9907..0000000 --- a/chargebee/models/usage_file/operations.py +++ /dev/null @@ -1,59 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum - - -@dataclass -class UsageFile: - env: environment.Environment - - class Status(Enum): - QUEUED = "queued" - IMPORTED = "imported" - PROCESSING = "processing" - PROCESSED = "processed" - FAILED = "failed" - - def __str__(self): - return self.value - - class UploadDetail(TypedDict): - url: Required[str] - expires_at: Required[int] - - class UploadUrlParams(TypedDict): - file_name: Required[str] - mime_type: Required[str] - - def upload_url(self, params: UploadUrlParams, headers=None) -> UploadUrlResponse: - jsonKeys = {} - options = {} - return request.send( - "post", - request.uri_path("usage_files", "upload_url"), - self.env, - cast(Dict[Any, Any], params), - headers, - UploadUrlResponse, - "file-ingest", - False, - jsonKeys, - options, - ) - - def processing_status(self, id, headers=None) -> ProcessingStatusResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("usage_files", id, "processing_status"), - self.env, - None, - headers, - ProcessingStatusResponse, - "file-ingest", - False, - jsonKeys, - options, - ) diff --git a/chargebee/models/usage_file/responses.py b/chargebee/models/usage_file/responses.py deleted file mode 100644 index ebebd04..0000000 --- a/chargebee/models/usage_file/responses.py +++ /dev/null @@ -1,44 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response - - -@dataclass -class UploadDetailResponse(Model): - raw_data: Dict[Any, Any] = None - url: str = None - expires_at: int = None - - -@dataclass -class UsageFileResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - name: str = None - mime_type: str = None - error_code: str = None - error_reason: str = None - status: str = None - total_records_count: int = None - processed_records_count: int = None - failed_records_count: int = None - file_size_in_bytes: int = None - processing_started_at: int = None - processing_completed_at: int = None - uploaded_by: str = None - uploaded_at: int = None - error_file_path: str = None - error_file_url: str = None - upload_details: UploadDetailResponse = None - - -@dataclass -class UploadUrlResponse(Response): - is_idempotency_replayed: bool - usage_file: UsageFileResponse - - -@dataclass -class ProcessingStatusResponse(Response): - usage_file: UsageFileResponse diff --git a/chargebee/models/usage_summary/__init__.py b/chargebee/models/usage_summary/__init__.py deleted file mode 100644 index 29c8597..0000000 --- a/chargebee/models/usage_summary/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import UsageSummary -from .responses import UsageSummaryResponse diff --git a/chargebee/models/usage_summary/operations.py b/chargebee/models/usage_summary/operations.py deleted file mode 100644 index 2fd2038..0000000 --- a/chargebee/models/usage_summary/operations.py +++ /dev/null @@ -1,35 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from chargebee.models import enums - - -@dataclass -class UsageSummary: - env: environment.Environment - - class RetrieveUsageSummaryForSubscriptionParams(TypedDict): - limit: NotRequired[int] - offset: NotRequired[str] - feature_id: Required[str] - window_size: NotRequired[enums.WindowSize] - timeframe_start: NotRequired[int] - timeframe_end: NotRequired[int] - - def retrieve_usage_summary_for_subscription( - self, id, params: RetrieveUsageSummaryForSubscriptionParams, headers=None - ) -> RetrieveUsageSummaryForSubscriptionResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("subscriptions", id, "usage_summary"), - self.env, - cast(Dict[Any, Any], params), - headers, - RetrieveUsageSummaryForSubscriptionResponse, - None, - False, - jsonKeys, - options, - ) diff --git a/chargebee/models/usage_summary/responses.py b/chargebee/models/usage_summary/responses.py deleted file mode 100644 index e2a067e..0000000 --- a/chargebee/models/usage_summary/responses.py +++ /dev/null @@ -1,25 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response - - -@dataclass -class UsageSummaryResponse(Model): - raw_data: Dict[Any, Any] = None - subscription_id: str = None - feature_id: str = None - aggregated_value: str = None - aggregated_from: int = None - aggregated_to: int = None - - -@dataclass -class RetrieveUsageSummaryForSubscriptionUsageSummaryResponse: - usage_summary: UsageSummaryResponse - - -@dataclass -class RetrieveUsageSummaryForSubscriptionResponse(Response): - list: List[RetrieveUsageSummaryForSubscriptionUsageSummaryResponse] - next_offset: str = None diff --git a/chargebee/models/virtual_bank_account/operations.py b/chargebee/models/virtual_bank_account/operations.py index 6aff2f2..208beb8 100644 --- a/chargebee/models/virtual_bank_account/operations.py +++ b/chargebee/models/virtual_bank_account/operations.py @@ -7,6 +7,7 @@ @dataclass class VirtualBankAccount: + env: environment.Environment class Scheme(Enum): @@ -41,10 +42,6 @@ class ListParams(TypedDict): def create_using_permanent_token( self, params: CreateUsingPermanentTokenParams, headers=None ) -> CreateUsingPermanentTokenResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("virtual_bank_accounts", "create_using_permanent_token"), @@ -52,17 +49,9 @@ def create_using_permanent_token( cast(Dict[Any, Any], params), headers, CreateUsingPermanentTokenResponse, - None, - False, - jsonKeys, - options, ) def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("virtual_bank_accounts"), @@ -70,15 +59,9 @@ def create(self, params: CreateParams, headers=None) -> CreateResponse: cast(Dict[Any, Any], params), headers, CreateResponse, - None, - False, - jsonKeys, - options, ) def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} return request.send( "get", request.uri_path("virtual_bank_accounts", id), @@ -86,15 +69,9 @@ def retrieve(self, id, headers=None) -> RetrieveResponse: None, headers, RetrieveResponse, - None, - False, - jsonKeys, - options, ) def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} return request.send_list_request( "get", request.uri_path("virtual_bank_accounts"), @@ -102,17 +79,9 @@ def list(self, params: ListParams = None, headers=None) -> ListResponse: cast(Dict[Any, Any], params), headers, ListResponse, - None, - False, - jsonKeys, - options, ) def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("virtual_bank_accounts", id, "delete"), @@ -120,17 +89,9 @@ def delete(self, id, headers=None) -> DeleteResponse: None, headers, DeleteResponse, - None, - False, - jsonKeys, - options, ) def delete_local(self, id, headers=None) -> DeleteLocalResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } return request.send( "post", request.uri_path("virtual_bank_accounts", id, "delete_local"), @@ -138,8 +99,4 @@ def delete_local(self, id, headers=None) -> DeleteLocalResponse: None, headers, DeleteLocalResponse, - None, - False, - jsonKeys, - options, ) diff --git a/chargebee/models/virtual_bank_account/responses.py b/chargebee/models/virtual_bank_account/responses.py index 93ace82..7074e52 100644 --- a/chargebee/models/virtual_bank_account/responses.py +++ b/chargebee/models/virtual_bank_account/responses.py @@ -27,21 +27,22 @@ class VirtualBankAccountResponse(Model): @dataclass class CreateUsingPermanentTokenResponse(Response): - is_idempotency_replayed: bool virtual_bank_account: VirtualBankAccountResponse customer: "customer.CustomerResponse" = None + headers: Dict[str, str] = None @dataclass class CreateResponse(Response): - is_idempotency_replayed: bool virtual_bank_account: VirtualBankAccountResponse customer: "customer.CustomerResponse" = None + headers: Dict[str, str] = None @dataclass -class RetrieveResponse(Response): +class RetrieveResponse: virtual_bank_account: VirtualBankAccountResponse + headers: Dict[str, str] = None @dataclass @@ -50,18 +51,19 @@ class ListVirtualBankAccountResponse: @dataclass -class ListResponse(Response): +class ListResponse: list: List[ListVirtualBankAccountResponse] next_offset: str = None + headers: Dict[str, str] = None @dataclass class DeleteResponse(Response): - is_idempotency_replayed: bool virtual_bank_account: VirtualBankAccountResponse + headers: Dict[str, str] = None @dataclass class DeleteLocalResponse(Response): - is_idempotency_replayed: bool virtual_bank_account: VirtualBankAccountResponse + headers: Dict[str, str] = None diff --git a/chargebee/models/webhook_endpoint/__init__.py b/chargebee/models/webhook_endpoint/__init__.py deleted file mode 100644 index 23926db..0000000 --- a/chargebee/models/webhook_endpoint/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .operations import WebhookEndpoint -from .responses import WebhookEndpointResponse diff --git a/chargebee/models/webhook_endpoint/operations.py b/chargebee/models/webhook_endpoint/operations.py deleted file mode 100644 index 9533aa7..0000000 --- a/chargebee/models/webhook_endpoint/operations.py +++ /dev/null @@ -1,130 +0,0 @@ -from .responses import * -from chargebee import request, environment -from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast -from enum import Enum -from chargebee.models import enums - - -@dataclass -class WebhookEndpoint: - env: environment.Environment - - class ApiVersion(Enum): - V1 = "v1" - V2 = "v2" - - def __str__(self): - return self.value - - class CreateParams(TypedDict): - name: Required[str] - api_version: NotRequired["WebhookEndpoint.ApiVersion"] - url: Required[str] - primary_url: NotRequired[bool] - disabled: NotRequired[bool] - basic_auth_password: NotRequired[str] - basic_auth_username: NotRequired[str] - send_card_resource: NotRequired[bool] - chargebee_response_schema_type: NotRequired[enums.ChargebeeResponseSchemaType] - enabled_events: NotRequired[List[enums.EventType]] - - class UpdateParams(TypedDict): - name: NotRequired[str] - api_version: NotRequired["WebhookEndpoint.ApiVersion"] - url: NotRequired[str] - primary_url: NotRequired[bool] - send_card_resource: NotRequired[bool] - basic_auth_password: NotRequired[str] - basic_auth_username: NotRequired[str] - disabled: NotRequired[bool] - enabled_events: NotRequired[List[enums.EventType]] - - class ListParams(TypedDict): - limit: NotRequired[int] - offset: NotRequired[str] - - def create(self, params: CreateParams, headers=None) -> CreateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } - return request.send( - "post", - request.uri_path("webhook_endpoints"), - self.env, - cast(Dict[Any, Any], params), - headers, - CreateResponse, - None, - False, - jsonKeys, - options, - ) - - def update(self, id, params: UpdateParams = None, headers=None) -> UpdateResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } - return request.send( - "post", - request.uri_path("webhook_endpoints", id), - self.env, - cast(Dict[Any, Any], params), - headers, - UpdateResponse, - None, - False, - jsonKeys, - options, - ) - - def retrieve(self, id, headers=None) -> RetrieveResponse: - jsonKeys = {} - options = {} - return request.send( - "get", - request.uri_path("webhook_endpoints", id), - self.env, - None, - headers, - RetrieveResponse, - None, - False, - jsonKeys, - options, - ) - - def delete(self, id, headers=None) -> DeleteResponse: - jsonKeys = {} - options = { - "isIdempotent": True, - } - return request.send( - "post", - request.uri_path("webhook_endpoints", id, "delete"), - self.env, - None, - headers, - DeleteResponse, - None, - False, - jsonKeys, - options, - ) - - def list(self, params: ListParams = None, headers=None) -> ListResponse: - jsonKeys = {} - options = {} - return request.send_list_request( - "get", - request.uri_path("webhook_endpoints"), - self.env, - cast(Dict[Any, Any], params), - headers, - ListResponse, - None, - False, - jsonKeys, - options, - ) diff --git a/chargebee/models/webhook_endpoint/responses.py b/chargebee/models/webhook_endpoint/responses.py deleted file mode 100644 index 02e619c..0000000 --- a/chargebee/models/webhook_endpoint/responses.py +++ /dev/null @@ -1,52 +0,0 @@ -from dataclasses import dataclass -from chargebee.model import Model -from typing import Dict, List, Any -from chargebee.response import Response - - -@dataclass -class WebhookEndpointResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - name: str = None - url: str = None - send_card_resource: bool = None - disabled: bool = None - primary_url: bool = None - api_version: str = None - chargebee_response_schema_type: str = None - enabled_events: List[str] = None - - -@dataclass -class CreateResponse(Response): - is_idempotency_replayed: bool - webhook_endpoint: WebhookEndpointResponse - - -@dataclass -class UpdateResponse(Response): - is_idempotency_replayed: bool - webhook_endpoint: WebhookEndpointResponse - - -@dataclass -class RetrieveResponse(Response): - webhook_endpoint: WebhookEndpointResponse - - -@dataclass -class DeleteResponse(Response): - is_idempotency_replayed: bool - webhook_endpoint: WebhookEndpointResponse - - -@dataclass -class ListWebhookEndpointResponse: - webhook_endpoint: WebhookEndpointResponse - - -@dataclass -class ListResponse(Response): - list: List[ListWebhookEndpointResponse] - next_offset: str = None diff --git a/chargebee/request.py b/chargebee/request.py index 6b6b610..7fad85c 100644 --- a/chargebee/request.py +++ b/chargebee/request.py @@ -1,34 +1,20 @@ import json import urllib -from chargebee import compat, environment, util, http_request -from chargebee.responses import Response +from chargebee import compat +from chargebee import util, http_request def lowercase_keys(data): if isinstance(data, dict): - return { - (k if k.startswith("cf_") else k.lower()): lowercase_keys(v) - for k, v in data.items() - } + return {k.lower(): lowercase_keys(v) for k, v in data.items()} elif isinstance(data, list): return [lowercase_keys(item) for item in data] else: return data -def send_list_request( - method, - url, - env: environment.Environment = None, - params=None, - headers=None, - response_type=None, - subDomain=None, - isJsonRequest=False, - jsonKeys=None, - options=None, -): +def send_list_request(method, url, env, params=None, headers=None, response_type=None): serialized = {} if params is None: @@ -38,67 +24,26 @@ def send_list_request( if isinstance(v, list): v = json.dumps(v) serialized.update({k: v}) - return send( - method, - url, - env, - serialized, - headers, - response_type, - subDomain, - isJsonRequest, - jsonKeys, - options, - ) + return send(method, url, env, serialized, headers, response_type) -def send( - method, - url, - env: environment.Environment, - params=None, - headers=None, - response_type=None, - subDomain=None, - isJsonRequest=False, - jsonKeys=None, - options=None, -): +def send(method, url, env, params=None, headers=None, response_type=None): params = lowercase_keys(params) if params is None: params = {} - ser_params = ( - params if isJsonRequest else util.serialize(params, None, None, jsonKeys) + ser_params = util.serialize(params) + + response, response_headers = http_request.request( + method, url, env, ser_params, headers ) - request_args = { - "method": method, - "url": url, - "env": env, - "params": ser_params, - "headers": headers, - "subDomain": subDomain, - "isJsonRequest": isJsonRequest, - "options": options, - "use_async_client": env.use_async_client, - } - - if env.use_async_client: - - async def async_request(): - response, response_headers, http_code = await http_request.request( - **request_args - ) - return Response( - response_type, response, response_headers, http_code - ).parse() - - return async_request() - else: - response, response_headers, http_code = http_request.request(**request_args) - return Response(response_type, response, response_headers, http_code).parse() + from chargebee.responses import Response + + if "list" in response: + return Response(response_type, response, response_headers).parse_list_response() + return Response(response_type, response, response_headers).parse_response() def uri_path(*paths): diff --git a/chargebee/response.py b/chargebee/response.py index ef2ec59..487331b 100644 --- a/chargebee/response.py +++ b/chargebee/response.py @@ -1,8 +1,6 @@ from dataclasses import dataclass -from typing import Dict @dataclass class Response: - http_status_code: int - headers: Dict[str, str] + is_idempotency_replayed: bool diff --git a/chargebee/responses.py b/chargebee/responses.py index 49a9bd8..35df24e 100644 --- a/chargebee/responses.py +++ b/chargebee/responses.py @@ -1,119 +1,103 @@ import importlib from dataclasses import fields -from typing import Type, TypeVar, Any, get_type_hints +from typing import Type, TypeVar T = TypeVar("T") -def parse_any_type_data(data): - if isinstance(data, dict): - return dict(data) - elif isinstance(data, list): - return list(data) - return data - - def _is_primitive(field_type): return field_type in (int, str, float, bool) +def get_class_from_string(class_path: str): + module_name, class_name = class_path.rsplit(".", 1) + module_path = "chargebee.models." + module_name + ".responses" + module = importlib.import_module(module_path) + return getattr(module, class_name) + + class Response(object): IDEMPOTENCY_REPLAYED_HEADER = "chargebee-idempotency-replayed" - def __init__( - self, response_type: Type[T], response, response_header=None, http_code=None - ): + def __init__(self, response_type: Type[T], response, response_header=None): self._response = response - self._is_list_response = "list" in response - if self._is_list_response: + if "list" in response: self._response = response["list"] self._next_offset = response.get("next_offset", None) self._response_header = response_header self._response_type = response_type - self._response_status_code = http_code def is_idempotency_replayed(self) -> bool: return bool(self._response_header.get(self.IDEMPOTENCY_REPLAYED_HEADER, False)) - def http_status_code(self) -> int: - return int(self._response_status_code) - - def parse(self) -> T: - return ( - self.parse_list_response() - if self._is_list_response - else self.parse_response() - ) - def parse_response(self) -> T: init_data = {} - for name, type in get_type_hints(self._response_type).items(): - field_name = name - field_type = type + for field in fields(self._response_type): + field_name = field.name + field_type = field.type if field_name == "is_idempotency_replayed": init_data["is_idempotency_replayed"] = self.is_idempotency_replayed() if field_name in self._response: if hasattr(field_type, "__origin__") and field_type.__origin__ == list: list_data = [] - inner_type = field_type.__args__[0] - for response in self._response[field_name]: - data = inner_type.construct(response) - list_data.append(data) + for response in self._response: + data = {} + for inner_field in fields(field_type.__args__[0]): + inner_field_name = inner_field.name + inner_field_type = inner_field.type + if inner_field_name in response: + if _is_primitive(inner_field_type): + data[inner_field_name] = response[inner_field_name] + else: + if type(inner_field_type) == str: + inner_field_type = get_class_from_string( + inner_field_type + ) + data[inner_field_name] = inner_field_type.construct( + response[inner_field_name] + ) + list_data.append(field_type.__args__[0](**data)) init_data[field_name] = list_data elif _is_primitive(field_type): init_data[field_name] = self._response[field_name] else: - if field_type == Any: - init_data[field_name] = parse_any_type_data( - self._response[field_name] - ) - else: - init_data[field_name] = field_type.construct( - self._response[field_name] - ) + if type(field_type) == str: + field_type = get_class_from_string(field_type) + init_data[field_name] = field_type.construct( + self._response[field_name] + ) init_data["headers"] = self._response_header - init_data["http_status_code"] = self._response_status_code - return self._response_type(**init_data) def parse_list_response(self) -> T: result = {} - for name, type in get_type_hints(self._response_type).items(): - field_name = name - field_type = type - - if field_name == "is_idempotency_replayed": - result["is_idempotency_replayed"] = self.is_idempotency_replayed() + for field in fields(self._response_type): + field_name = field.name + field_type = field.type if hasattr(field_type, "__origin__") and field_type.__origin__ == list: list_data = [] for response in self._response: data = {} - for inner_name, inner_type in get_type_hints( - field_type.__args__[0] - ).items(): - inner_field_name = inner_name - inner_field_type = inner_type + for inner_field in fields(field_type.__args__[0]): + inner_field_name = inner_field.name + inner_field_type = inner_field.type if inner_field_name in response: if _is_primitive(inner_field_type): data[inner_field_name] = response[inner_field_name] - if field_type == Any: - data[inner_field_name] = parse_any_type_data( - response[inner_field_name] - ) else: + if type(inner_field_type) == str: + inner_field_type = get_class_from_string( + inner_field_type + ) data[inner_field_name] = inner_field_type.construct( response[inner_field_name] ) - list_data.append(field_type.__args__[0](**data)) result[field_name] = list_data + result["next_offset"] = self._next_offset result["headers"] = self._response_header - result["http_status_code"] = self._response_status_code - - if hasattr(self._response_type, "next_offset"): - result["next_offset"] = self._next_offset return self._response_type(**result) diff --git a/chargebee/retry_config.py b/chargebee/retry_config.py deleted file mode 100644 index b77ef1e..0000000 --- a/chargebee/retry_config.py +++ /dev/null @@ -1,21 +0,0 @@ -class RetryConfig: - def __init__(self, enabled=False, max_retries=3, delay_ms=200, retry_on=None): - self.enabled = enabled - self.max_retries = max_retries - self.delay_ms = delay_ms - self.retry_on = retry_on or [500, 502, 503, 504] - - def is_enabled(self): - return self.enabled - - def get_max_retries(self): - return self.max_retries - - def get_delay_ms(self): - return self.delay_ms - - def get_retry_on(self): - return self.retry_on - - def get_enable_debug_logs(self): - return self.enable_debug_logs diff --git a/chargebee/ssl/ca-certs.crt b/chargebee/ssl/ca-certs.crt index 8e34b20..2a40e3a 100644 --- a/chargebee/ssl/ca-certs.crt +++ b/chargebee/ssl/ca-certs.crt @@ -3383,53 +3383,3 @@ A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y 7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 -----END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEyDCCA7CgAwIBAgIQDPW9BitWAvR6uFAsI8zwZjANBgkqhkiG9w0BAQsFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH -MjAeFw0yMTAzMzAwMDAwMDBaFw0zMTAzMjkyMzU5NTlaMFkxCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxMzAxBgNVBAMTKkRpZ2lDZXJ0IEdsb2Jh -bCBHMiBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMz3EGJPprtjb+2QUlbFbSd7ehJWivH0+dbn4Y+9lavyYEEV -cNsSAPonCrVXOFt9slGTcZUOakGUWzUb+nv6u8W+JDD+Vu/E832X4xT1FE3LpxDy -FuqrIvAxIhFhaZAmunjZlx/jfWardUSVc8is/+9dCopZQ+GssjoP80j812s3wWPc -3kbW20X+fSP9kOhRBx5Ro1/tSUZUfyyIxfQTnJcVPAPooTncaQwywa8WV0yUR0J8 -osicfebUTVSvQpmowQTCd5zWSOTOEeAqgJnwQ3DPP3Zr0UxJqyRewg2C/Uaoq2yT -zGJSQnWS+Jr6Xl6ysGHlHx+5fwmY6D36g39HaaECAwEAAaOCAYIwggF+MBIGA1Ud -EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFHSFgMBmx9833s+9KTeqAx2+7c0XMB8G -A1UdIwQYMBaAFE4iVCAYlebjbuYP+vq5Eu0GF485MA4GA1UdDwEB/wQEAwIBhjAd -BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdgYIKwYBBQUHAQEEajBoMCQG -CCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQAYIKwYBBQUHMAKG -NGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RH -Mi5jcnQwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29t -L0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDA9BgNVHSAENjA0MAsGCWCGSAGG/WwC -ATAHBgVngQwBATAIBgZngQwBAgEwCAYGZ4EMAQICMAgGBmeBDAECAzANBgkqhkiG -9w0BAQsFAAOCAQEAkPFwyyiXaZd8dP3A+iZ7U6utzWX9upwGnIrXWkOH7U1MVl+t -wcW1BSAuWdH/SvWgKtiwla3JLko716f2b4gp/DA/JIS7w7d7kwcsr4drdjPtAFVS -slme5LnQ89/nD/7d+MS5EHKBCQRfz5eeLjJ1js+aWNJXMX43AYGyZm0pGrFmCW3R -bpD0ufovARTFXFZkAdl9h6g4U5+LXUZtXMYnhIHUfoyMo5tS58aI7Dd8KvvwVVo4 -chDYABPPTHPbqjc1qCmBaZx2vN4Ye5DUys/vZwP9BFohFrH/6j/f3IL16/RZkiMN -JCqVJUzKoZHm1Lesh3Sz8W2jmdv51b2EQJ8HmA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH -MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI -2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx -1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ -q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz -tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ -vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP -BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV -5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY -1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 -NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG -Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 -8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe -pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl -MrY= ------END CERTIFICATE----- \ No newline at end of file diff --git a/chargebee/util.py b/chargebee/util.py index 7af9c0c..a7dcf0a 100644 --- a/chargebee/util.py +++ b/chargebee/util.py @@ -1,25 +1,28 @@ -import os - +from chargebee import compat from collections import OrderedDict from enum import Enum -from typing import Any, Dict - -def serialize(value, prefix=None, idx=None, jsonKeys=None, level=0): - if level is None: - level = 0 - if jsonKeys is None: - jsonKeys = {} +def serialize(value, prefix=None, idx=None): serialized = OrderedDict() if isinstance(value, dict): for k, v in list(value.items()): - should_json_encode = k in jsonKeys and jsonKeys[k] == level - if should_json_encode: - key = f"{prefix or ''}{f'[{k}]' if prefix else k}{f'[{idx}]' if idx is not None else ''}" - serialized.update({key: v}) + if k in ( + "meta_data", + "metaData", + "metadata", + "checkout_info", + ) and isinstance(v, dict): + serialized.update({k: v}) + elif k in ( + "exemption_details", + "item_family_ids", + "item_price_periods", + "currencies", + ) and isinstance(v, list): + serialized.update({k: v}) elif k in ("in", "not_in", "between") and isinstance(v, list): v = [str(i) for i in v] key = "".join( @@ -31,8 +34,7 @@ def serialize(value, prefix=None, idx=None, jsonKeys=None, level=0): ) serialized.update({key: str(v)}) elif isinstance(v, (dict, list, tuple)): - temp_prefix = f"{prefix}[{k}]" if prefix is not None else k - serialized.update(serialize(v, temp_prefix, None, jsonKeys, level + 1)) + serialized.update(serialize(v, k)) else: if isinstance(v, Enum): v = str(v) @@ -47,7 +49,7 @@ def serialize(value, prefix=None, idx=None, jsonKeys=None, level=0): elif isinstance(value, (list, tuple)): for i, v in enumerate(value): - serialized.update(serialize(v, prefix, i, jsonKeys, level)) + serialized.update(serialize(v, prefix, i)) else: if prefix is not None and idx is not None: @@ -66,39 +68,3 @@ def get_val(val): return str(val).lower() else: return val - - -def generate_uuid_v4() -> str: - # Generate 16 random bytes - try: - bytes_ = os.urandom(16) - except NotImplementedError: - # Fallback: insecure random if urandom not available (highly unlikely) - import random - - bytes_ = bytes([random.randint(0, 255) for _ in range(16)]) - - byte_array = list(bytes_) - - # Set version to 4 -> bits 12-15 of time_hi_and_version - byte_array[6] = (byte_array[6] & 0x0F) | 0x40 - # Set variant to RFC 4122 -> bits 6-7 of clock_seq_hi_and_reserved - byte_array[8] = (byte_array[8] & 0x3F) | 0x80 - - hex_str = "".join(f"{byte:02x}" for byte in byte_array) - - return f"{hex_str[0:8]}-{hex_str[8:12]}-{hex_str[12:16]}-{hex_str[16:20]}-{hex_str[20:32]}" - - -def convert_to_serializable(obj: Any) -> Any: - """ - Recursively convert TypedDict and enums to JSON-serializable format. - """ - if isinstance(obj, Enum): - return obj.value - elif isinstance(obj, dict): - return {key: convert_to_serializable(value) for key, value in obj.items()} - elif isinstance(obj, (list, tuple)): - return type(obj)(convert_to_serializable(item) for item in obj) - else: - return obj diff --git a/chargebee/version.py b/chargebee/version.py index 70e1ba4..90d19b8 100644 --- a/chargebee/version.py +++ b/chargebee/version.py @@ -1 +1 @@ -VERSION = "3.19.1" +VERSION = "3.0.0b3" diff --git a/pyproject.toml b/pyproject.toml index 854a6d4..0837f83 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,3 @@ [build-system] -requires = ["setuptools>=66", "wheel", "httpx>=0.28.0"] +requires = ["setuptools>=66", "wheel", "requests>=2.29.0"] build-backend = "setuptools.build_meta" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index cee3237..0000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -httpx==0.28.1 diff --git a/setup.py b/setup.py index c5f4daa..2cc44dc 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ with open("README.md", "r") as file: description = file.read() -requires = ["httpx"] +requires = ["requests"] setup( name="chargebee", diff --git a/tests/__init__.py b/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/test_http_request.py b/tests/test_http_request.py deleted file mode 100644 index d0b131d..0000000 --- a/tests/test_http_request.py +++ /dev/null @@ -1,397 +0,0 @@ -import json -import unittest -import asyncio -from unittest.mock import patch, Mock, AsyncMock -from enum import Enum - -from chargebee import environment -from chargebee.api_error import InvalidRequestError - - -class MockRetryConfig: - def __init__(self, retries=3, delay_ms=100, retry_on=None): - self.retries = retries - self.delay_ms = delay_ms - self.retry_on_codes = retry_on or [429, 503] - - def is_enabled(self): - return True - - def get_max_retries(self): - return self.retries - - def get_delay_ms(self): - return self.delay_ms - - def get_retry_on(self): - return self.retry_on_codes - - -class MockEnvironment(environment.Environment): - def __init__(self): - self.api_key = "test_key" - self.site = "test_site" - self.connect_timeout = 2 - self.read_timeout = 5 - self.enable_debug_logs = False - self.set_api_endpoint() - - def get_retry_config(self): - return MockRetryConfig() - - -def make_mock_client(status_code=200, text="", headers={}, is_async=False): - mock_client = Mock() if not is_async else AsyncMock() - mock_response = Mock() - mock_response.status_code = status_code - mock_response.text = text - mock_response.headers = headers - return mock_client, mock_response - - -class RequestTests(unittest.TestCase): - @patch("httpx.Client") - def test_successful_request(self, mock_client_class): - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - resp, headers, status = request("GET", "/test", MockEnvironment(), params={}) - - self.assertEqual(status, 200) - self.assertEqual(resp["message"], "success") - - @patch("httpx.Client") - def test_rate_limit_retry(self, mock_client_class): - mock_client, retry_response = make_mock_client( - 429, json.dumps({"api_error_code": "rate_limit"}), {"Retry-After": "1"} - ) - - success_response = Mock() - success_response.status_code = 200 - success_response.text = json.dumps({"message": "ok"}) - success_response.headers = {} - - mock_client.request.side_effect = [retry_response, success_response] - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - resp, headers, status = request("GET", "/test", MockEnvironment(), params={}) - - self.assertEqual(status, 200) - self.assertEqual(resp["message"], "ok") - self.assertEqual(mock_client.request.call_count, 2) - - @patch("httpx.Client") - def test_retry_until_max_retries(self, mock_client_class): - mock_client, mock_response = make_mock_client(503, "503 Service Unavailable") - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - with self.assertRaises(Exception) as context: - request("GET", "/test", MockEnvironment(), params={}) - - err = context.exception - self.assertIsInstance(err, Exception) - self.assertIn("internal_temporary_error", str(err)) - self.assertEqual(mock_client.request.call_count, 4) # 1 original + 3 retries - - @patch("httpx.Client") - def test_no_retry_on_400(self, mock_client_class): - mock_client, mock_response = make_mock_client( - 400, - json.dumps( - {"api_error_code": "invalid_request", "type": "invalid_request"} - ), - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - with self.assertRaises(InvalidRequestError) as context: - request("POST", "/test", MockEnvironment(), params={"x": "y"}) - - err = context.exception - self.assertEqual(err.http_code, 400) - self.assertEqual(err.api_error_code, "invalid_request") - self.assertEqual(mock_client.request.call_count, 1) - - @patch("httpx.Client") - def test_custom_retry_on_header_parsing(self, mock_client_class): - mock_client, retry_response = make_mock_client( - 429, json.dumps({"api_error_code": "rate_limit"}), {"Retry-After": "2"} - ) - - success_response = Mock() - success_response.status_code = 200 - success_response.text = json.dumps({"message": "done"}) - success_response.headers = {} - - mock_client.request.side_effect = [retry_response, success_response] - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - resp, headers, status = request("GET", "/test", MockEnvironment(), params={}) - - self.assertEqual(resp["message"], "done") - self.assertEqual(mock_client.request.call_count, 2) - - @patch("httpx.AsyncClient") - def test_async_successful_request(self, mock_async_client_class): - mock_async_client, mock_response = make_mock_client( - text=json.dumps({"message": "async_success"}), is_async=True - ) - mock_async_client.request.return_value = mock_response - mock_async_client_class.return_value.__aenter__.return_value = mock_async_client - - from chargebee.http_request import request - - async def test_async_request(): - resp, headers, status = await request( - "GET", "/test", MockEnvironment(), params={}, use_async_client=True - ) - return resp, headers, status - - resp, headers, status = asyncio.run(test_async_request()) - - self.assertEqual(status, 200) - self.assertEqual(resp["message"], "async_success") - - @patch("httpx.AsyncClient") - def test_async_rate_limit_retry(self, mock_async_client_class): - mock_async_client, retry_response = make_mock_client( - 429, - json.dumps({"api_error_code": "rate_limit"}), - {"Retry-After": "1"}, - is_async=True, - ) - - success_response = Mock() - success_response.status_code = 200 - success_response.text = json.dumps({"message": "async_ok"}) - success_response.headers = {} - - mock_async_client.request.side_effect = [retry_response, success_response] - mock_async_client_class.return_value.__aenter__.return_value = mock_async_client - - from chargebee.http_request import request - - async def test_async_retry(): - resp, headers, status = await request( - "GET", "/test", MockEnvironment(), params={}, use_async_client=True - ) - return resp, headers, status - - resp, headers, status = asyncio.run(test_async_retry()) - - self.assertEqual(status, 200) - self.assertEqual(resp["message"], "async_ok") - self.assertEqual(mock_async_client.request.call_count, 2) - - @patch("httpx.Client") - def test_json_request_payload(self, mock_client_class): - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "json_success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - test_data = {"key": "value", "nested": {"data": "test"}} - resp, headers, status = request( - "POST", "/test", MockEnvironment(), params=test_data, isJsonRequest=True - ) - - # Verify that the request was made with json parameter - call_args = mock_client.request.call_args - self.assertIn("json", call_args[1]) - self.assertIn("application/json", call_args[1]["headers"]["Content-Type"]) - self.assertEqual(call_args[1]["json"], test_data) - self.assertNotIn("data", call_args[1]) - - @patch("httpx.Client") - def test_get_request(self, mock_client_class): - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "json_success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - params = {"page": 1, "count": 10} - resp, headers, status = request( - "GET", "/test", MockEnvironment(), params=params, isJsonRequest=True - ) - - call_args = mock_client.request.call_args - self.assertNotIn("json", call_args[1]) - self.assertNotIn("data", call_args[1]) - self.assertIn("params", call_args[1]) - self.assertNotIn("Content-Type", call_args[1]["headers"]) - - @patch("httpx.Client") - def test_timeout(self, mock_client_class): - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "json_success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - params = {"page": 1, "count": 10} - env = MockEnvironment() - resp, headers, status = request( - "GET", "/test", env, params=params, isJsonRequest=True - ) - - call_args = mock_client.request.call_args - self.assertEqual(call_args[1]["timeout"].connect, env.connect_timeout) - self.assertEqual(call_args[1]["timeout"].read, env.read_timeout) - - @patch("httpx.Client") - def test_subdomain_url(self, mock_client_class): - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "json_success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - env = MockEnvironment() - resp, headers, status = request("GET", "/test", env, subDomain="ingest") - - call_args = mock_client.request.call_args - self.assertEqual( - call_args[1]["url"], "https://test_site.ingest.chargebee.com/api/v2/test" - ) - - @patch("httpx.Client") - def test_json_request_with_enum_serialization(self, mock_client_class): - """Test that enums in JSON requests are converted to their values""" - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - class Status(Enum): - ACTIVE = "active" - INACTIVE = "inactive" - - class Priority(Enum): - HIGH = 1 - MEDIUM = 2 - LOW = 3 - - # Test with nested structure containing enums - test_data = { - "name": "test_user", - "status": Status.ACTIVE, - "priority": Priority.HIGH, - "nested": { - "status": Status.INACTIVE, - "values": [Priority.LOW, Priority.MEDIUM], - }, - "items": ( - {"status": Status.ACTIVE, "priority": Priority.HIGH}, - {"status": Status.INACTIVE, "priority": Priority.LOW}, - ), - } - - request( - "POST", "/test", MockEnvironment(), params=test_data, isJsonRequest=True - ) - - # Verify that the request was made with converted enum values - call_args = mock_client.request.call_args - json_data = call_args[1]["json"] - - # Check that enums are converted to their values - self.assertEqual(json_data["status"], "active") - self.assertEqual(json_data["priority"], 1) - self.assertEqual(json_data["nested"]["status"], "inactive") - self.assertEqual(json_data["nested"]["values"], [3, 2]) - self.assertEqual(json_data["items"][0]["status"], "active") - self.assertEqual(json_data["items"][0]["priority"], 1) - self.assertEqual(json_data["items"][1]["status"], "inactive") - self.assertEqual(json_data["items"][1]["priority"], 3) - - @patch("httpx.Client") - def test_url_no_trailing_question_mark_without_query_params( - self, mock_client_class - ): - """Test that URLs without query params don't get a trailing '?'""" - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - request("POST", "/test", MockEnvironment(), params={"key": "value"}) - - call_args = mock_client.request.call_args - url = call_args[1]["url"] - self.assertFalse(url.endswith("?"), f"URL should not end with '?', got: {url}") - - @patch("httpx.Client") - def test_url_preserves_query_string_when_present(self, mock_client_class): - """Test that URLs with an existing query string are preserved correctly""" - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - class MockEnvironmentWithQuery(MockEnvironment): - def api_url(self, url, subDomain=None): - return super().api_url(url, subDomain) + "?existing=param" - - request("GET", "/test", MockEnvironmentWithQuery(), params={}) - - call_args = mock_client.request.call_args - url = call_args[1]["url"] - self.assertIn("?existing=param", url) - self.assertFalse( - url.endswith("?"), f"URL should not end with bare '?', got: {url}" - ) - - @patch("httpx.Client") - def test_form_request_without_enum_conversion(self, mock_client_class): - """Test that form requests (non-JSON) don't use convert_to_serializable""" - mock_client, mock_response = make_mock_client( - text=json.dumps({"message": "success"}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee.http_request import request - - test_data = {"key": "value", "number": 42} - request( - "POST", "/test", MockEnvironment(), params=test_data, isJsonRequest=False - ) - - # Verify that form requests use data parameter - call_args = mock_client.request.call_args - self.assertIn("data", call_args[1]) - self.assertNotIn("json", call_args[1]) - self.assertEqual(call_args[1]["data"], test_data) diff --git a/tests/test_model.py b/tests/test_model.py deleted file mode 100644 index 91836a5..0000000 --- a/tests/test_model.py +++ /dev/null @@ -1,59 +0,0 @@ -import asyncio -import json -import unittest -from unittest.mock import patch - -from .test_http_request import make_mock_client - -customer = {"customer": {"id": "customer-1", "first_name": "John", "last_name": "Doe"}} - - -class ModelTest(unittest.TestCase): - @patch("httpx.Client") - def test_sync_list(self, mock_client_class): - mock_client, mock_response = make_mock_client( - text=json.dumps({"list": [customer]}) - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__enter__.return_value = mock_client - - from chargebee import Chargebee, Filters - from chargebee.models.customer import CustomerResponse - - client = Chargebee(api_key="key", site="test_site") - response = client.Customer.list( - client.Customer.ListParams(email=Filters.StringFilter(STARTS_WITH="john")) - ) - - self.assertEqual(response.http_status_code, 200) - self.assertIsInstance(response.list, list) - self.assertEqual(len(response.list), 1) - self.assertIsInstance(response.list[0].customer, CustomerResponse) - self.assertEqual(response.list[0].customer.id, "customer-1") - - @patch("httpx.AsyncClient") - def test_async_list(self, mock_client_class): - mock_client, mock_response = make_mock_client( - text=json.dumps({"list": [customer]}), is_async=True - ) - mock_client.request.return_value = mock_response - mock_client_class.return_value.__aenter__.return_value = mock_client - - from chargebee import Chargebee, Filters - from chargebee.models.customer import CustomerResponse - - async def send_request(): - client = Chargebee(api_key="key", site="test_site", use_async_client=True) - return await client.Customer.list( - client.Customer.ListParams( - email=Filters.StringFilter(STARTS_WITH="john") - ) - ) - - response = asyncio.run(send_request()) - - self.assertEqual(response.http_status_code, 200) - self.assertIsInstance(response.list, list) - self.assertEqual(len(response.list), 1) - self.assertIsInstance(response.list[0].customer, CustomerResponse) - self.assertEqual(response.list[0].customer.id, "customer-1") diff --git a/tests/test_response.py b/tests/test_response.py deleted file mode 100644 index e7f4371..0000000 --- a/tests/test_response.py +++ /dev/null @@ -1,690 +0,0 @@ -import unittest -from dataclasses import dataclass -from typing import List, Dict, Any -from chargebee.responses import Response -from chargebee.response import Response as ResponseBase -from chargebee.model import Model -from dataclasses import is_dataclass - - -# Test fixtures - Response models -@dataclass -class AddressResponse(Model): - raw_data: Dict[Any, Any] = None - line1: str = None - line2: str = None - city: str = None - state: str = None - zip: str = None - country: str = None - - -@dataclass -class PhoneResponse(Model): - raw_data: Dict[Any, Any] = None - number: str = None - type: str = None - - -@dataclass -class CustomerResponse(Model): - raw_data: Dict[Any, Any] = None - id: str = None - first_name: str = None - last_name: str = None - email: str = None - phone: str = None - created_at: int = None - updated_at: int = None - active: bool = None - billing_address: AddressResponse = None - phone_numbers: List[PhoneResponse] = None - meta_data: Any = None - - -@dataclass -class ListOfObjects(ResponseBase): - customer: List[CustomerResponse] - - -@dataclass -class CreateCustomerResponse(ResponseBase): - is_idempotency_replayed: bool - customer: CustomerResponse - - -@dataclass -class ListCustomerItem: - customer: CustomerResponse - - -@dataclass -class ListCustomerResponse(ResponseBase): - list: List[ListCustomerItem] - next_offset: str = None - - -class TestResponseParsing(unittest.TestCase): - """Test cases for Response.parse_response() - single response parsing""" - - def test_parse_response_with_primitives(self): - """Test parsing a response with primitive types""" - response_data = { - "customer": { - "id": "cust_123", - "first_name": "John", - "last_name": "Doe", - "email": "john@example.com", - "phone": "+1234567890", - "created_at": 1609459200, - "updated_at": 1609545600, - "active": True, - } - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_123") - self.assertEqual(parsed.customer.first_name, "John") - self.assertEqual(parsed.customer.last_name, "Doe") - self.assertEqual(parsed.customer.email, "john@example.com") - self.assertEqual(parsed.customer.phone, "+1234567890") - self.assertEqual(parsed.customer.created_at, 1609459200) - self.assertEqual(parsed.customer.updated_at, 1609545600) - self.assertEqual(parsed.customer.active, True) - self.assertEqual(parsed.headers, response_headers) - self.assertEqual(parsed.http_status_code, http_code) - - def test_parse_response_with_nested_object(self): - """Test parsing a response with nested objects""" - response_data = { - "customer": { - "id": "cust_456", - "first_name": "Jane", - "last_name": "Smith", - "email": "jane@example.com", - "billing_address": { - "line1": "123 Main St", - "line2": "Apt 4B", - "city": "New York", - "state": "NY", - "zip": "10001", - "country": "US", - }, - } - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_456") - self.assertEqual(parsed.customer.first_name, "Jane") - self.assertIsNotNone(parsed.customer.billing_address) - self.assertIsInstance(parsed.customer.billing_address, AddressResponse) - self.assertEqual(parsed.customer.billing_address.line1, "123 Main St") - self.assertEqual(parsed.customer.billing_address.line2, "Apt 4B") - self.assertEqual(parsed.customer.billing_address.city, "New York") - self.assertEqual(parsed.customer.billing_address.state, "NY") - self.assertEqual(parsed.customer.billing_address.zip, "10001") - self.assertEqual(parsed.customer.billing_address.country, "US") - - def test_parse_response_with_list_of_objects(self): - """Test parsing a response with a list of nested objects""" - response_data = { - "customer": { - "id": "cust_789", - "first_name": "Bob", - "last_name": "Johnson", - "email": "bob@example.com", - "phone_numbers": [ - {"number": "+1234567890", "type": "home"}, - {"number": "+0987654321", "type": "work"}, - ], - } - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_789") - self.assertIsNotNone(parsed.customer.phone_numbers) - self.assertEqual(len(parsed.customer.phone_numbers), 2) - self.assertIsInstance(parsed.customer.phone_numbers[0], PhoneResponse) - self.assertEqual(parsed.customer.phone_numbers[0].number, "+1234567890") - self.assertEqual(parsed.customer.phone_numbers[0].type, "home") - self.assertIsInstance(parsed.customer.phone_numbers[1], PhoneResponse) - self.assertEqual(parsed.customer.phone_numbers[1].number, "+0987654321") - self.assertEqual(parsed.customer.phone_numbers[1].type, "work") - - def test_parse_response_with_any_type_dict(self): - """Test parsing a response with Any type field containing a dict""" - response_data = { - "customer": { - "id": "cust_999", - "first_name": "Alice", - "last_name": "Brown", - "email": "alice@example.com", - "meta_data": {"key1": "value1", "key2": "value2", "nested": {"a": 1}}, - } - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_999") - self.assertIsNotNone(parsed.customer.meta_data) - self.assertIsInstance(parsed.customer.meta_data, dict) - self.assertEqual(parsed.customer.meta_data["key1"], "value1") - self.assertEqual(parsed.customer.meta_data["key2"], "value2") - self.assertIn("nested", parsed.customer.meta_data) - self.assertEqual(parsed.customer.meta_data["nested"]["a"], 1) - - def test_parse_response_with_any_type_list(self): - """Test parsing a response with Any type field containing a list""" - response_data = { - "customer": { - "id": "cust_888", - "first_name": "Charlie", - "last_name": "Davis", - "email": "charlie@example.com", - "meta_data": ["tag1", "tag2", "tag3"], - } - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_888") - self.assertIsNotNone(parsed.customer.meta_data) - self.assertIsInstance(parsed.customer.meta_data, list) - self.assertEqual(len(parsed.customer.meta_data), 3) - self.assertEqual(parsed.customer.meta_data[0], "tag1") - self.assertEqual(parsed.customer.meta_data[1], "tag2") - self.assertEqual(parsed.customer.meta_data[2], "tag3") - - def test_parse_response_with_idempotency_replayed_true(self): - """Test parsing a response with idempotency replayed header set to true""" - response_data = { - "customer": { - "id": "cust_111", - "first_name": "David", - "last_name": "Wilson", - "email": "david@example.com", - } - } - response_headers = { - "content-type": "application/json", - "chargebee-idempotency-replayed": "true", - } - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertTrue(parsed.is_idempotency_replayed) - self.assertEqual(parsed.customer.id, "cust_111") - - def test_parse_response_with_idempotency_replayed_false(self): - """Test parsing a response with idempotency replayed header set to false""" - response_data = { - "customer": { - "id": "cust_222", - "first_name": "Emma", - "last_name": "Taylor", - "email": "emma@example.com", - } - } - response_headers = { - "content-type": "application/json", - "chargebee-idempotency-replayed": "", - } - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertFalse(parsed.is_idempotency_replayed) - self.assertEqual(parsed.customer.id, "cust_222") - - def test_parse_response_with_missing_optional_fields(self): - """Test parsing a response with missing optional fields""" - response_data = { - "customer": { - "id": "cust_333", - "first_name": "Frank", - "email": "frank@example.com", - } - } - response_headers = {"content-type": "application/json"} - http_code = 201 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_333") - self.assertEqual(parsed.customer.first_name, "Frank") - self.assertIsNone(parsed.customer.last_name) - self.assertEqual(parsed.customer.email, "frank@example.com") - self.assertIsNone(parsed.customer.phone) - self.assertIsNone(parsed.customer.billing_address) - self.assertEqual(parsed.http_status_code, 201) - - -class TestListResponseParsing(unittest.TestCase): - """Test cases for Response.parse_list_response() - list response parsing""" - - def test_parse_list_response_with_single_item(self): - """Test parsing a list response with a single item""" - response_data = { - "list": [ - { - "customer": { - "id": "cust_list_1", - "first_name": "Grace", - "last_name": "Miller", - "email": "grace@example.com", - "active": True, - } - } - ] - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - ListCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_list_response() - - self.assertIsInstance(parsed, ListCustomerResponse) - self.assertIsNotNone(parsed.list) - self.assertEqual(len(parsed.list), 1) - self.assertIsInstance(parsed.list[0], ListCustomerItem) - self.assertEqual(parsed.list[0].customer.id, "cust_list_1") - self.assertEqual(parsed.list[0].customer.first_name, "Grace") - self.assertEqual(parsed.list[0].customer.last_name, "Miller") - self.assertEqual(parsed.list[0].customer.email, "grace@example.com") - self.assertEqual(parsed.list[0].customer.active, True) - self.assertEqual(parsed.headers, response_headers) - self.assertEqual(parsed.http_status_code, http_code) - - def test_parse_list_response_with_multiple_items(self): - """Test parsing a list response with multiple items""" - response_data = { - "list": [ - { - "customer": { - "id": "cust_list_2", - "first_name": "Henry", - "last_name": "Garcia", - "email": "henry@example.com", - "created_at": 1609459200, - } - }, - { - "customer": { - "id": "cust_list_3", - "first_name": "Ivy", - "last_name": "Martinez", - "email": "ivy@example.com", - "created_at": 1609545600, - } - }, - { - "customer": { - "id": "cust_list_4", - "first_name": "Jack", - "last_name": "Anderson", - "email": "jack@example.com", - "created_at": 1609632000, - } - }, - ] - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - ListCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_list_response() - - self.assertIsInstance(parsed, ListCustomerResponse) - self.assertEqual(len(parsed.list), 3) - - self.assertEqual(parsed.list[0].customer.id, "cust_list_2") - self.assertEqual(parsed.list[0].customer.first_name, "Henry") - self.assertEqual(parsed.list[0].customer.created_at, 1609459200) - - self.assertEqual(parsed.list[1].customer.id, "cust_list_3") - self.assertEqual(parsed.list[1].customer.first_name, "Ivy") - self.assertEqual(parsed.list[1].customer.created_at, 1609545600) - - self.assertEqual(parsed.list[2].customer.id, "cust_list_4") - self.assertEqual(parsed.list[2].customer.first_name, "Jack") - self.assertEqual(parsed.list[2].customer.created_at, 1609632000) - - def test_parse_list_response_with_next_offset(self): - """Test parsing a list response with next_offset for pagination""" - response_data = { - "list": [ - { - "customer": { - "id": "cust_list_5", - "first_name": "Kate", - "last_name": "Lopez", - "email": "kate@example.com", - } - } - ], - "next_offset": "offset_abc123", - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - ListCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_list_response() - - self.assertIsInstance(parsed, ListCustomerResponse) - self.assertEqual(len(parsed.list), 1) - self.assertEqual(parsed.list[0].customer.id, "cust_list_5") - self.assertEqual(parsed.next_offset, "offset_abc123") - - def test_parse_list_response_without_next_offset(self): - """Test parsing a list response without next_offset (last page)""" - response_data = { - "list": [ - { - "customer": { - "id": "cust_list_6", - "first_name": "Leo", - "last_name": "Hernandez", - "email": "leo@example.com", - } - } - ] - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - ListCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_list_response() - - self.assertIsInstance(parsed, ListCustomerResponse) - self.assertEqual(len(parsed.list), 1) - self.assertIsNone(parsed.next_offset) - - def test_parse_list_response_with_empty_list(self): - """Test parsing a list response with an empty list""" - response_data = {"list": []} - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - ListCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_list_response() - - self.assertIsInstance(parsed, ListCustomerResponse) - self.assertEqual(len(parsed.list), 0) - self.assertIsNone(parsed.next_offset) - - def test_parse_list_response_with_nested_objects(self): - """Test parsing a list response with nested objects in items""" - response_data = { - "list": [ - { - "customer": { - "id": "cust_list_7", - "first_name": "Mia", - "last_name": "Clark", - "email": "mia@example.com", - "billing_address": { - "line1": "456 Oak Ave", - "city": "Boston", - "state": "MA", - "zip": "02101", - "country": "US", - }, - } - } - ] - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - ListCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_list_response() - - self.assertIsInstance(parsed, ListCustomerResponse) - self.assertEqual(len(parsed.list), 1) - self.assertEqual(parsed.list[0].customer.id, "cust_list_7") - self.assertIsNotNone(parsed.list[0].customer.billing_address) - self.assertIsInstance(parsed.list[0].customer.billing_address, AddressResponse) - self.assertEqual(parsed.list[0].customer.billing_address.line1, "456 Oak Ave") - self.assertEqual(parsed.list[0].customer.billing_address.city, "Boston") - - -class TestParseMethod(unittest.TestCase): - """Test cases for Response.parse() - should delegate correctly""" - - def test_parse_delegates_to_parse_response_for_single_response(self): - """Test that parse() delegates to parse_response() for single responses""" - response_data = { - "customer": { - "id": "cust_parse_1", - "first_name": "Noah", - "last_name": "Lee", - "email": "noah@example.com", - } - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_parse_1") - self.assertEqual(parsed.customer.first_name, "Noah") - - def test_parse_delegates_to_parse_list_response_for_list_response(self): - """Test that parse() delegates to parse_list_response() for list responses""" - response_data = { - "list": [ - { - "customer": { - "id": "cust_parse_2", - "first_name": "Olivia", - "last_name": "Walker", - "email": "olivia@example.com", - } - } - ] - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - ListCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse() - - self.assertIsInstance(parsed, ListCustomerResponse) - self.assertEqual(len(parsed.list), 1) - self.assertEqual(parsed.list[0].customer.id, "cust_parse_2") - - -class TestResponseUtilityMethods(unittest.TestCase): - """Test cases for Response utility methods""" - - def test_is_idempotency_replayed_with_header_present(self): - """Test is_idempotency_replayed() when header is present""" - response_data = {"customer": {"id": "cust_test"}} - response_headers = {"chargebee-idempotency-replayed": "true"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - - self.assertTrue(response.is_idempotency_replayed()) - - def test_is_idempotency_replayed_with_header_absent(self): - """Test is_idempotency_replayed() when header is absent""" - response_data = {"customer": {"id": "cust_test"}} - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - - self.assertFalse(response.is_idempotency_replayed()) - - def test_http_status_code_returns_correct_code(self): - """Test http_status_code() returns the correct HTTP status code""" - response_data = {"customer": {"id": "cust_test"}} - response_headers = {"content-type": "application/json"} - http_code = 201 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - - self.assertEqual(response.http_status_code(), 201) - - def test_http_status_code_converts_to_int(self): - """Test http_status_code() converts string to int""" - response_data = {"customer": {"id": "cust_test"}} - response_headers = {"content-type": "application/json"} - http_code = "200" - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - - result = response.http_status_code() - self.assertEqual(result, 200) - self.assertIsInstance(result, int) - - def test_parse_response_with_any_type_json(self): - """Test parsing a response with Any type field containing JSON/dict""" - response_data = { - "customer": { - "id": "cust_999", - "first_name": "Dana", - "last_name": "Smith", - "email": "dana@example.com", - "meta_data": { - "source": "campaign", - "tier": "gold", - "active": True, - }, - } - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response( - CreateCustomerResponse, response_data, response_headers, http_code - ) - parsed = response.parse_response() - - self.assertIsInstance(parsed, CreateCustomerResponse) - self.assertEqual(parsed.customer.id, "cust_999") - - # meta_data assertions - self.assertIsNotNone(parsed.customer.meta_data) - self.assertIsInstance(parsed.customer.meta_data, dict) - self.assertEqual(parsed.customer.meta_data["source"], "campaign") - self.assertEqual(parsed.customer.meta_data["tier"], "gold") - self.assertTrue(parsed.customer.meta_data["active"]) - - def test_parse_response_non_list_based_list_response(self): - """Test parsing a response with Any type field containing JSON/dict""" - response_data = { - "customer": [ - { - "id": "cust_999", - "first_name": "Dana", - "last_name": "Smith", - "email": "dana@example.com", - "meta_data": { - "source": "campaign", - "tier": "gold", - "active": True, - }, - }, - { - "id": "cust_111", - "first_name": "Dana", - "last_name": "Smith", - "email": "dana@example.com", - "meta_data": { - "source": "campaign", - "tier": "gold", - "active": True, - }, - }, - ] - } - response_headers = {"content-type": "application/json"} - http_code = 200 - - response = Response(ListOfObjects, response_data, response_headers, http_code) - parsed = response.parse_response() - - self.assertIsInstance(parsed, ListOfObjects) - self.assertEqual(len(parsed.customer), 2) - - for customer in parsed.customer: - self.assertTrue(is_dataclass(customer)) - self.assertIsInstance(customer, CustomerResponse) - - -if __name__ == "__main__": - unittest.main() diff --git a/tests/test_util.py b/tests/test_util.py deleted file mode 100644 index b1d9aa3..0000000 --- a/tests/test_util.py +++ /dev/null @@ -1,242 +0,0 @@ -import unittest -from enum import Enum - -from chargebee import util - - -class UtilTest(unittest.TestCase): - def test_serialize(self): - before = { - "id": "sub_KyVq7DNSNM7CSD", - "plan_id": "free", - "addons": ( - { - "id": "monitor", - "quantity": 2, - }, - { - "id": "ssl", - }, - ), - "card": { - "first_name": "Rajaraman", - "last_name": "Santhanam", - "number": "4111111111111111", - "expiry_month": "1", - "expiry_year": "2024", - "cvv": "007", - }, - } - - after = { - "id": "sub_KyVq7DNSNM7CSD", - "plan_id": "free", - "addons[id][0]": "monitor", - "addons[quantity][0]": 2, - "addons[id][1]": "ssl", - "card[first_name]": "Rajaraman", - "card[last_name]": "Santhanam", - "card[number]": "4111111111111111", - "card[expiry_month]": "1", - "card[expiry_year]": "2024", - "card[cvv]": "007", - } - - self.assertEqual(after, util.serialize(before)) - - def test_convert_to_serializable_with_enum(self): - """Test that enums are converted to their values""" - - class Status(Enum): - ACTIVE = "active" - INACTIVE = "inactive" - - result = util.convert_to_serializable(Status.ACTIVE) - self.assertEqual(result, "active") - - def test_convert_to_serializable_with_dict_containing_enum(self): - """Test that enums in dicts are converted to their values""" - - class Status(Enum): - ACTIVE = "active" - INACTIVE = "inactive" - - input_dict = { - "name": "test", - "status": Status.ACTIVE, - "count": 42, - } - - result = util.convert_to_serializable(input_dict) - expected = { - "name": "test", - "status": "active", - "count": 42, - } - self.assertEqual(result, expected) - - def test_convert_to_serializable_with_nested_dict(self): - """Test that nested dicts with enums are handled correctly""" - - class Status(Enum): - ACTIVE = "active" - - class Type(Enum): - PREMIUM = "premium" - - input_dict = { - "user": { - "name": "John", - "status": Status.ACTIVE, - "subscription": { - "type": Type.PREMIUM, - "active": True, - }, - }, - "count": 10, - } - - result = util.convert_to_serializable(input_dict) - expected = { - "user": { - "name": "John", - "status": "active", - "subscription": { - "type": "premium", - "active": True, - }, - }, - "count": 10, - } - self.assertEqual(result, expected) - - def test_convert_to_serializable_with_list(self): - """Test that lists with enums are converted correctly""" - - class Status(Enum): - ACTIVE = "active" - INACTIVE = "inactive" - - input_list = [Status.ACTIVE, "test", 42, Status.INACTIVE] - result = util.convert_to_serializable(input_list) - expected = ["active", "test", 42, "inactive"] - self.assertEqual(result, expected) - - def test_convert_to_serializable_with_tuple(self): - """Test that tuples with enums are converted correctly and remain tuples""" - - class Status(Enum): - ACTIVE = "active" - INACTIVE = "inactive" - - input_tuple = (Status.ACTIVE, "test", 42, Status.INACTIVE) - result = util.convert_to_serializable(input_tuple) - expected = ("active", "test", 42, "inactive") - self.assertEqual(result, expected) - self.assertIsInstance(result, tuple) - - def test_convert_to_serializable_with_list_of_dicts(self): - """Test that lists of dicts with enums are converted correctly""" - - class Status(Enum): - ACTIVE = "active" - INACTIVE = "inactive" - - input_list = [ - {"name": "user1", "status": Status.ACTIVE}, - {"name": "user2", "status": Status.INACTIVE}, - ] - - result = util.convert_to_serializable(input_list) - expected = [ - {"name": "user1", "status": "active"}, - {"name": "user2", "status": "inactive"}, - ] - self.assertEqual(result, expected) - - def test_convert_to_serializable_with_complex_nested_structure(self): - """Test complex nested structure with enums at various levels""" - - class Status(Enum): - ACTIVE = "active" - - class Type(Enum): - BASIC = "basic" - PREMIUM = "premium" - - input_data = { - "users": [ - { - "name": "John", - "status": Status.ACTIVE, - "subscriptions": [ - {"type": Type.PREMIUM, "price": 99.99}, - {"type": Type.BASIC, "price": 9.99}, - ], - }, - ], - "metadata": { - "default_status": Status.ACTIVE, - "types": (Type.BASIC, Type.PREMIUM), - }, - } - - result = util.convert_to_serializable(input_data) - expected = { - "users": [ - { - "name": "John", - "status": "active", - "subscriptions": [ - {"type": "premium", "price": 99.99}, - {"type": "basic", "price": 9.99}, - ], - }, - ], - "metadata": { - "default_status": "active", - "types": ("basic", "premium"), - }, - } - self.assertEqual(result, expected) - - def test_convert_to_serializable_with_primitive_types(self): - """Test that primitive types are passed through unchanged""" - test_cases = [ - ("string", "string"), - (42, 42), - (3.14, 3.14), - (True, True), - (False, False), - (None, None), - ] - - for input_val, expected_val in test_cases: - result = util.convert_to_serializable(input_val) - self.assertEqual(result, expected_val) - - def test_convert_to_serializable_with_empty_structures(self): - """Test that empty dicts, lists, and tuples are handled correctly""" - self.assertEqual(util.convert_to_serializable({}), {}) - self.assertEqual(util.convert_to_serializable([]), []) - self.assertEqual(util.convert_to_serializable(()), ()) - - def test_convert_to_serializable_with_integer_enum(self): - """Test that enums with integer values are converted correctly""" - - class Priority(Enum): - LOW = 1 - MEDIUM = 2 - HIGH = 3 - - input_dict = { - "task": "Test task", - "priority": Priority.HIGH, - } - - result = util.convert_to_serializable(input_dict) - expected = { - "task": "Test task", - "priority": 3, - } - self.assertEqual(result, expected)