paddle-python-sdk 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- examples/__init__.py +0 -0
- examples/catalog_management.py +166 -0
- examples/event_polling.py +56 -0
- examples/get_products.py +46 -0
- examples/logger.py +31 -0
- paddle_billing/Client.py +201 -0
- paddle_billing/ConditionallyRemoveImportMeta.py +14 -0
- paddle_billing/Entities/Address.py +44 -0
- paddle_billing/Entities/Adjustment.py +45 -0
- paddle_billing/Entities/Adjustments/AdjustmentCustomerBalance.py +18 -0
- paddle_billing/Entities/Adjustments/AdjustmentItem.py +26 -0
- paddle_billing/Entities/Adjustments/__init__.py +2 -0
- paddle_billing/Entities/Business.py +38 -0
- paddle_billing/Entities/Collections/AddressCollection.py +18 -0
- paddle_billing/Entities/Collections/AdjustmentCollection.py +18 -0
- paddle_billing/Entities/Collections/BusinessCollection.py +18 -0
- paddle_billing/Entities/Collections/Collection.py +47 -0
- paddle_billing/Entities/Collections/CreditBalanceCollection.py +18 -0
- paddle_billing/Entities/Collections/CustomerCollection.py +18 -0
- paddle_billing/Entities/Collections/DiscountCollection.py +18 -0
- paddle_billing/Entities/Collections/EventCollection.py +18 -0
- paddle_billing/Entities/Collections/EventTypeCollection.py +18 -0
- paddle_billing/Entities/Collections/NotificationCollection.py +18 -0
- paddle_billing/Entities/Collections/NotificationLogCollection.py +18 -0
- paddle_billing/Entities/Collections/NotificationSettingCollection.py +18 -0
- paddle_billing/Entities/Collections/Paginator.py +29 -0
- paddle_billing/Entities/Collections/PriceCollection.py +18 -0
- paddle_billing/Entities/Collections/ProductCollection.py +18 -0
- paddle_billing/Entities/Collections/ReportCollection.py +18 -0
- paddle_billing/Entities/Collections/SubscriptionCollection.py +18 -0
- paddle_billing/Entities/Collections/SubscriptionPreviewCollection.py +18 -0
- paddle_billing/Entities/Collections/TransactionCollection.py +18 -0
- paddle_billing/Entities/Collections/TransactionPreviewCollection.py +18 -0
- paddle_billing/Entities/Collections/TransactionsDataCollection.py +18 -0
- paddle_billing/Entities/Collections/__init__.py +21 -0
- paddle_billing/Entities/CreditBalance.py +22 -0
- paddle_billing/Entities/Customer.py +36 -0
- paddle_billing/Entities/DateTime.py +43 -0
- paddle_billing/Entities/Discount.py +51 -0
- paddle_billing/Entities/Discounts/DiscountStatus.py +8 -0
- paddle_billing/Entities/Discounts/DiscountType.py +7 -0
- paddle_billing/Entities/Discounts/__init__.py +2 -0
- paddle_billing/Entities/Entity.py +12 -0
- paddle_billing/Entities/Event.py +51 -0
- paddle_billing/Entities/EventType.py +23 -0
- paddle_billing/Entities/Events/EventTypeName.py +52 -0
- paddle_billing/Entities/Events/__init__.py +1 -0
- paddle_billing/Entities/Notification.py +42 -0
- paddle_billing/Entities/NotificationLog.py +25 -0
- paddle_billing/Entities/NotificationSetting.py +34 -0
- paddle_billing/Entities/NotificationSettings/NotificationSettingType.py +6 -0
- paddle_billing/Entities/NotificationSettings/__init__.py +1 -0
- paddle_billing/Entities/Notifications/NotificationOrigin.py +6 -0
- paddle_billing/Entities/Notifications/NotificationPayout.py +24 -0
- paddle_billing/Entities/Notifications/NotificationPayoutStatus.py +6 -0
- paddle_billing/Entities/Notifications/NotificationStatus.py +8 -0
- paddle_billing/Entities/Notifications/__init__.py +4 -0
- paddle_billing/Entities/Price.py +68 -0
- paddle_billing/Entities/PricePreview.py +34 -0
- paddle_billing/Entities/PricingPreviews/PricePreviewDetails.py +15 -0
- paddle_billing/Entities/PricingPreviews/PricePreviewDiscounts.py +20 -0
- paddle_billing/Entities/PricingPreviews/PricePreviewItem.py +16 -0
- paddle_billing/Entities/PricingPreviews/PricePreviewLineItem.py +38 -0
- paddle_billing/Entities/PricingPreviews/PricePreviewTotalsFormatted.py +20 -0
- paddle_billing/Entities/PricingPreviews/PricePreviewUnitTotalsFormatted.py +20 -0
- paddle_billing/Entities/PricingPreviews/__init__.py +6 -0
- paddle_billing/Entities/Product.py +45 -0
- paddle_billing/Entities/Report.py +32 -0
- paddle_billing/Entities/ReportCSV.py +13 -0
- paddle_billing/Entities/Reports/ReportFilter.py +20 -0
- paddle_billing/Entities/Reports/ReportFilterName.py +17 -0
- paddle_billing/Entities/Reports/ReportFilterOperator.py +6 -0
- paddle_billing/Entities/Reports/ReportStatus.py +8 -0
- paddle_billing/Entities/Reports/ReportType.py +10 -0
- paddle_billing/Entities/Reports/__init__.py +5 -0
- paddle_billing/Entities/Shared/Action.py +10 -0
- paddle_billing/Entities/Shared/AddressPreview.py +18 -0
- paddle_billing/Entities/Shared/AdjustmentItemTotals.py +18 -0
- paddle_billing/Entities/Shared/AdjustmentProration.py +18 -0
- paddle_billing/Entities/Shared/AdjustmentStatus.py +8 -0
- paddle_billing/Entities/Shared/AdjustmentTimePeriod.py +17 -0
- paddle_billing/Entities/Shared/AdjustmentTotals.py +26 -0
- paddle_billing/Entities/Shared/AdjustmentType.py +8 -0
- paddle_billing/Entities/Shared/AvailablePaymentMethods.py +11 -0
- paddle_billing/Entities/Shared/BillingDetails.py +22 -0
- paddle_billing/Entities/Shared/BillingDetailsUpdate.py +22 -0
- paddle_billing/Entities/Shared/Card.py +24 -0
- paddle_billing/Entities/Shared/CatalogType.py +6 -0
- paddle_billing/Entities/Shared/ChargebackFee.py +18 -0
- paddle_billing/Entities/Shared/Checkout.py +12 -0
- paddle_billing/Entities/Shared/CollectionMode.py +6 -0
- paddle_billing/Entities/Shared/Contacts.py +16 -0
- paddle_billing/Entities/Shared/CountryCode.py +233 -0
- paddle_billing/Entities/Shared/CurrencyCode.py +34 -0
- paddle_billing/Entities/Shared/CurrencyCodeAdjustments.py +7 -0
- paddle_billing/Entities/Shared/CurrencyCodePayouts.py +17 -0
- paddle_billing/Entities/Shared/CustomData.py +10 -0
- paddle_billing/Entities/Shared/Data.py +9 -0
- paddle_billing/Entities/Shared/ErrorCode.py +21 -0
- paddle_billing/Entities/Shared/ImportMeta.py +16 -0
- paddle_billing/Entities/Shared/Interval.py +8 -0
- paddle_billing/Entities/Shared/Meta.py +7 -0
- paddle_billing/Entities/Shared/MetaPaginated.py +18 -0
- paddle_billing/Entities/Shared/MethodDetails.py +19 -0
- paddle_billing/Entities/Shared/Money.py +28 -0
- paddle_billing/Entities/Shared/Original.py +18 -0
- paddle_billing/Entities/Shared/Pagination.py +20 -0
- paddle_billing/Entities/Shared/PaymentAttemptStatus.py +13 -0
- paddle_billing/Entities/Shared/PaymentMethodType.py +14 -0
- paddle_billing/Entities/Shared/PayoutTotalsAdjustment.py +29 -0
- paddle_billing/Entities/Shared/PriceQuantity.py +16 -0
- paddle_billing/Entities/Shared/Status.py +6 -0
- paddle_billing/Entities/Shared/TaxCategory.py +13 -0
- paddle_billing/Entities/Shared/TaxMode.py +7 -0
- paddle_billing/Entities/Shared/TaxRatesUsed.py +18 -0
- paddle_billing/Entities/Shared/TimePeriod.py +18 -0
- paddle_billing/Entities/Shared/Totals.py +20 -0
- paddle_billing/Entities/Shared/TransactionDetailsPreview.py +22 -0
- paddle_billing/Entities/Shared/TransactionLineItemPreview.py +28 -0
- paddle_billing/Entities/Shared/TransactionOrigin.py +10 -0
- paddle_billing/Entities/Shared/TransactionPaymentAttempt.py +35 -0
- paddle_billing/Entities/Shared/TransactionPayoutTotals.py +36 -0
- paddle_billing/Entities/Shared/TransactionPayoutTotalsAdjusted.py +29 -0
- paddle_billing/Entities/Shared/TransactionStatus.py +11 -0
- paddle_billing/Entities/Shared/TransactionTotals.py +36 -0
- paddle_billing/Entities/Shared/TransactionTotalsAdjusted.py +28 -0
- paddle_billing/Entities/Shared/UnitPriceOverride.py +19 -0
- paddle_billing/Entities/Shared/UnitTotals.py +20 -0
- paddle_billing/Entities/Shared/__init__.py +56 -0
- paddle_billing/Entities/Subscription.py +86 -0
- paddle_billing/Entities/SubscriptionPreview.py +79 -0
- paddle_billing/Entities/Subscriptions/SubscriptionAdjustmentItem.py +24 -0
- paddle_billing/Entities/Subscriptions/SubscriptionAdjustmentPreview.py +22 -0
- paddle_billing/Entities/Subscriptions/SubscriptionCharge.py +18 -0
- paddle_billing/Entities/Subscriptions/SubscriptionCredit.py +18 -0
- paddle_billing/Entities/Subscriptions/SubscriptionDetails.py +34 -0
- paddle_billing/Entities/Subscriptions/SubscriptionDiscount.py +19 -0
- paddle_billing/Entities/Subscriptions/SubscriptionEffectiveFrom.py +6 -0
- paddle_billing/Entities/Subscriptions/SubscriptionItem.py +35 -0
- paddle_billing/Entities/Subscriptions/SubscriptionItemStatus.py +7 -0
- paddle_billing/Entities/Subscriptions/SubscriptionItems.py +20 -0
- paddle_billing/Entities/Subscriptions/SubscriptionItemsWithPrice.py +19 -0
- paddle_billing/Entities/Subscriptions/SubscriptionManagementUrls.py +16 -0
- paddle_billing/Entities/Subscriptions/SubscriptionNextTransaction.py +23 -0
- paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPrice.py +30 -0
- paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPriceWithProduct.py +32 -0
- paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogProduct.py +26 -0
- paddle_billing/Entities/Subscriptions/SubscriptionOnPaymentFailure.py +6 -0
- paddle_billing/Entities/Subscriptions/SubscriptionPreviewSubscriptionUpdateSummary.py +22 -0
- paddle_billing/Entities/Subscriptions/SubscriptionPrice.py +28 -0
- paddle_billing/Entities/Subscriptions/SubscriptionProration.py +18 -0
- paddle_billing/Entities/Subscriptions/SubscriptionProrationBillingMode.py +9 -0
- paddle_billing/Entities/Subscriptions/SubscriptionResult.py +22 -0
- paddle_billing/Entities/Subscriptions/SubscriptionResultAction.py +6 -0
- paddle_billing/Entities/Subscriptions/SubscriptionResumeEffectiveFrom.py +5 -0
- paddle_billing/Entities/Subscriptions/SubscriptionScheduledChange.py +21 -0
- paddle_billing/Entities/Subscriptions/SubscriptionScheduledChangeAction.py +7 -0
- paddle_billing/Entities/Subscriptions/SubscriptionStatus.py +10 -0
- paddle_billing/Entities/Subscriptions/SubscriptionTimePeriod.py +17 -0
- paddle_billing/Entities/Subscriptions/SubscriptionTransactionItem.py +23 -0
- paddle_billing/Entities/Subscriptions/SubscriptionTransactionLineItem.py +33 -0
- paddle_billing/Entities/Subscriptions/SubscriptionUpdateItem.py +16 -0
- paddle_billing/Entities/Subscriptions/__init__.py +31 -0
- paddle_billing/Entities/Transaction.py +98 -0
- paddle_billing/Entities/TransactionData.py +15 -0
- paddle_billing/Entities/TransactionPreview.py +40 -0
- paddle_billing/Entities/Transactions/TransactionAdjustmentsTotals.py +30 -0
- paddle_billing/Entities/Transactions/TransactionBreakdown.py +18 -0
- paddle_billing/Entities/Transactions/TransactionCardType.py +14 -0
- paddle_billing/Entities/Transactions/TransactionCreateItem.py +16 -0
- paddle_billing/Entities/Transactions/TransactionCreateItemWithPrice.py +11 -0
- paddle_billing/Entities/Transactions/TransactionDetails.py +32 -0
- paddle_billing/Entities/Transactions/TransactionItem.py +24 -0
- paddle_billing/Entities/Transactions/TransactionItemPreviewWithNonCatalogPrice.py +21 -0
- paddle_billing/Entities/Transactions/TransactionItemPreviewWithPrice.py +24 -0
- paddle_billing/Entities/Transactions/TransactionItemPreviewWithPriceId.py +18 -0
- paddle_billing/Entities/Transactions/TransactionLineItem.py +35 -0
- paddle_billing/Entities/Transactions/TransactionNonCatalogPrice.py +39 -0
- paddle_billing/Entities/Transactions/TransactionNonCatalogPriceWithProduct.py +41 -0
- paddle_billing/Entities/Transactions/TransactionNonCatalogProduct.py +25 -0
- paddle_billing/Entities/Transactions/TransactionProration.py +18 -0
- paddle_billing/Entities/Transactions/TransactionTimePeriod.py +17 -0
- paddle_billing/Entities/Transactions/TransactionUpdateTransactionItem.py +8 -0
- paddle_billing/Entities/Transactions/__init__.py +20 -0
- paddle_billing/Entities/__init__.py +0 -0
- paddle_billing/EnumStringify.py +2 -0
- paddle_billing/Environment.py +14 -0
- paddle_billing/Exceptions/ApiError.py +28 -0
- paddle_billing/Exceptions/ApiErrors/AddressApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/AdjustmentApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/BusinessApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/CustomerApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/DiscountApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/PriceApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/ProductApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/SubscriptionApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/TransactionApiError.py +5 -0
- paddle_billing/Exceptions/ApiErrors/__init__.py +0 -0
- paddle_billing/Exceptions/FieldError.py +8 -0
- paddle_billing/Exceptions/SdkException.py +2 -0
- paddle_billing/Exceptions/SdkExceptions/InvalidArgumentException.py +8 -0
- paddle_billing/Exceptions/SdkExceptions/MalformedResponse.py +7 -0
- paddle_billing/Exceptions/SdkExceptions/__init__.py +0 -0
- paddle_billing/Exceptions/__init__.py +0 -0
- paddle_billing/FiltersNone.py +8 -0
- paddle_billing/FiltersUndefined.py +11 -0
- paddle_billing/HasParameters.py +11 -0
- paddle_billing/Logger/Formatter.py +18 -0
- paddle_billing/Logger/NullHandler.py +6 -0
- paddle_billing/Logger/__init__.py +30 -0
- paddle_billing/Notifications/Entities/Address.py +44 -0
- paddle_billing/Notifications/Entities/Adjustment.py +45 -0
- paddle_billing/Notifications/Entities/Adjustments/AdjustmentItem.py +26 -0
- paddle_billing/Notifications/Entities/Adjustments/__init__.py +1 -0
- paddle_billing/Notifications/Entities/Business.py +39 -0
- paddle_billing/Notifications/Entities/Businesses/BusinessesContacts.py +16 -0
- paddle_billing/Notifications/Entities/Businesses/__init__.py +1 -0
- paddle_billing/Notifications/Entities/Customer.py +36 -0
- paddle_billing/Notifications/Entities/DateTime.py +43 -0
- paddle_billing/Notifications/Entities/Discount.py +51 -0
- paddle_billing/Notifications/Entities/Discounts/DiscountStatus.py +8 -0
- paddle_billing/Notifications/Entities/Discounts/DiscountType.py +7 -0
- paddle_billing/Notifications/Entities/Discounts/__init__.py +2 -0
- paddle_billing/Notifications/Entities/Entity.py +12 -0
- paddle_billing/Notifications/Entities/Payout.py +24 -0
- paddle_billing/Notifications/Entities/Payouts/PayoutStatus.py +6 -0
- paddle_billing/Notifications/Entities/Payouts/__init__.py +1 -0
- paddle_billing/Notifications/Entities/Price.py +66 -0
- paddle_billing/Notifications/Entities/Product.py +45 -0
- paddle_billing/Notifications/Entities/Report.py +32 -0
- paddle_billing/Notifications/Entities/Reports/ReportFilter.py +20 -0
- paddle_billing/Notifications/Entities/Reports/ReportFilterName.py +17 -0
- paddle_billing/Notifications/Entities/Reports/ReportFilterOperator.py +6 -0
- paddle_billing/Notifications/Entities/Reports/ReportStatus.py +8 -0
- paddle_billing/Notifications/Entities/Reports/ReportType.py +10 -0
- paddle_billing/Notifications/Entities/Reports/__init__.py +5 -0
- paddle_billing/Notifications/Entities/Shared/Action.py +10 -0
- paddle_billing/Notifications/Entities/Shared/AddressPreview.py +18 -0
- paddle_billing/Notifications/Entities/Shared/AdjustmentItemTotals.py +18 -0
- paddle_billing/Notifications/Entities/Shared/AdjustmentProration.py +18 -0
- paddle_billing/Notifications/Entities/Shared/AdjustmentStatus.py +8 -0
- paddle_billing/Notifications/Entities/Shared/AdjustmentTimePeriod.py +17 -0
- paddle_billing/Notifications/Entities/Shared/AdjustmentTotals.py +26 -0
- paddle_billing/Notifications/Entities/Shared/AdjustmentType.py +8 -0
- paddle_billing/Notifications/Entities/Shared/AvailablePaymentMethods.py +11 -0
- paddle_billing/Notifications/Entities/Shared/BillingDetails.py +22 -0
- paddle_billing/Notifications/Entities/Shared/Card.py +24 -0
- paddle_billing/Notifications/Entities/Shared/CatalogType.py +6 -0
- paddle_billing/Notifications/Entities/Shared/ChargebackFee.py +18 -0
- paddle_billing/Notifications/Entities/Shared/Checkout.py +12 -0
- paddle_billing/Notifications/Entities/Shared/CollectionMode.py +6 -0
- paddle_billing/Notifications/Entities/Shared/CountryCode.py +233 -0
- paddle_billing/Notifications/Entities/Shared/CurrencyCode.py +34 -0
- paddle_billing/Notifications/Entities/Shared/CurrencyCodeAdjustments.py +7 -0
- paddle_billing/Notifications/Entities/Shared/CurrencyCodePayouts.py +17 -0
- paddle_billing/Notifications/Entities/Shared/CustomData.py +10 -0
- paddle_billing/Notifications/Entities/Shared/Data.py +9 -0
- paddle_billing/Notifications/Entities/Shared/ErrorCode.py +21 -0
- paddle_billing/Notifications/Entities/Shared/ImportMeta.py +16 -0
- paddle_billing/Notifications/Entities/Shared/Interval.py +8 -0
- paddle_billing/Notifications/Entities/Shared/MethodDetails.py +19 -0
- paddle_billing/Notifications/Entities/Shared/Money.py +28 -0
- paddle_billing/Notifications/Entities/Shared/Original.py +18 -0
- paddle_billing/Notifications/Entities/Shared/PaymentAttemptStatus.py +13 -0
- paddle_billing/Notifications/Entities/Shared/PaymentMethodType.py +15 -0
- paddle_billing/Notifications/Entities/Shared/PayoutTotalsAdjustment.py +29 -0
- paddle_billing/Notifications/Entities/Shared/PriceQuantity.py +16 -0
- paddle_billing/Notifications/Entities/Shared/Status.py +6 -0
- paddle_billing/Notifications/Entities/Shared/TaxCategory.py +13 -0
- paddle_billing/Notifications/Entities/Shared/TaxMode.py +7 -0
- paddle_billing/Notifications/Entities/Shared/TaxRatesUsed.py +18 -0
- paddle_billing/Notifications/Entities/Shared/TimePeriod.py +18 -0
- paddle_billing/Notifications/Entities/Shared/Totals.py +20 -0
- paddle_billing/Notifications/Entities/Shared/TransactionOrigin.py +10 -0
- paddle_billing/Notifications/Entities/Shared/TransactionPaymentAttempt.py +35 -0
- paddle_billing/Notifications/Entities/Shared/TransactionPayoutTotals.py +36 -0
- paddle_billing/Notifications/Entities/Shared/TransactionPayoutTotalsAdjusted.py +29 -0
- paddle_billing/Notifications/Entities/Shared/TransactionStatus.py +11 -0
- paddle_billing/Notifications/Entities/Shared/TransactionTotals.py +36 -0
- paddle_billing/Notifications/Entities/Shared/TransactionTotalsAdjusted.py +28 -0
- paddle_billing/Notifications/Entities/Shared/UnitPriceOverride.py +19 -0
- paddle_billing/Notifications/Entities/Shared/UnitTotals.py +20 -0
- paddle_billing/Notifications/Entities/Shared/__init__.py +46 -0
- paddle_billing/Notifications/Entities/Subscription.py +76 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionAdjustmentItem.py +24 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionCharge.py +18 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionCredit.py +18 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionDiscount.py +19 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionEffectiveFrom.py +6 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionItem.py +35 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionItemStatus.py +7 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionOnPaymentFailure.py +6 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionPrice.py +28 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionScheduledChange.py +21 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionScheduledChangeAction.py +7 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionStatus.py +10 -0
- paddle_billing/Notifications/Entities/Subscriptions/SubscriptionTimePeriod.py +17 -0
- paddle_billing/Notifications/Entities/Subscriptions/__init__.py +13 -0
- paddle_billing/Notifications/Entities/Transaction.py +75 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionAdjustmentsTotals.py +30 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionBreakdown.py +18 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionCardType.py +14 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionDetails.py +32 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionItem.py +24 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionLineItem.py +35 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionProration.py +18 -0
- paddle_billing/Notifications/Entities/Transactions/TransactionTimePeriod.py +17 -0
- paddle_billing/Notifications/Entities/Transactions/__init__.py +11 -0
- paddle_billing/Notifications/Entities/__init__.py +0 -0
- paddle_billing/Notifications/Events/AddressCreated.py +17 -0
- paddle_billing/Notifications/Events/AddressUpdated.py +17 -0
- paddle_billing/Notifications/Events/AdjustmentCreated.py +17 -0
- paddle_billing/Notifications/Events/AdjustmentUpdated.py +17 -0
- paddle_billing/Notifications/Events/BusinessCreated.py +17 -0
- paddle_billing/Notifications/Events/BusinessUpdated.py +17 -0
- paddle_billing/Notifications/Events/CustomerCreated.py +17 -0
- paddle_billing/Notifications/Events/CustomerUpdated.py +17 -0
- paddle_billing/Notifications/Events/DiscountCreated.py +17 -0
- paddle_billing/Notifications/Events/DiscountImported.py +17 -0
- paddle_billing/Notifications/Events/DiscountUpdated.py +17 -0
- paddle_billing/Notifications/Events/PayoutCreated.py +17 -0
- paddle_billing/Notifications/Events/PayoutPaid.py +17 -0
- paddle_billing/Notifications/Events/PriceCreated.py +17 -0
- paddle_billing/Notifications/Events/PriceUpdated.py +17 -0
- paddle_billing/Notifications/Events/ProductCreated.py +17 -0
- paddle_billing/Notifications/Events/ProductUpdated.py +17 -0
- paddle_billing/Notifications/Events/ReportCreated.py +17 -0
- paddle_billing/Notifications/Events/ReportUpdated.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionActivated.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionCanceled.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionCreated.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionImported.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionPastDue.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionPaused.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionResumed.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionTrialing.py +17 -0
- paddle_billing/Notifications/Events/SubscriptionUpdated.py +17 -0
- paddle_billing/Notifications/Events/TransactionBilled.py +17 -0
- paddle_billing/Notifications/Events/TransactionCanceled.py +17 -0
- paddle_billing/Notifications/Events/TransactionCompleted.py +16 -0
- paddle_billing/Notifications/Events/TransactionCreated.py +17 -0
- paddle_billing/Notifications/Events/TransactionPaid.py +17 -0
- paddle_billing/Notifications/Events/TransactionPastDue.py +17 -0
- paddle_billing/Notifications/Events/TransactionPaymentFailed.py +17 -0
- paddle_billing/Notifications/Events/TransactionReady.py +17 -0
- paddle_billing/Notifications/Events/TransactionUpdated.py +17 -0
- paddle_billing/Notifications/Events/__init__.py +0 -0
- paddle_billing/Notifications/PaddleSignature.py +128 -0
- paddle_billing/Notifications/Secret.py +8 -0
- paddle_billing/Notifications/Verifier.py +55 -0
- paddle_billing/Notifications/__init__.py +3 -0
- paddle_billing/Options.py +10 -0
- paddle_billing/PaddleStrEnum.py +44 -0
- paddle_billing/RecursivelyRemoveKey.py +14 -0
- paddle_billing/Resources/Addresses/AddressesClient.py +58 -0
- paddle_billing/Resources/Addresses/Operations/CreateAddress.py +20 -0
- paddle_billing/Resources/Addresses/Operations/ListAddresses.py +42 -0
- paddle_billing/Resources/Addresses/Operations/UpdateAddress.py +21 -0
- paddle_billing/Resources/Addresses/Operations/__init__.py +3 -0
- paddle_billing/Resources/Addresses/__init__.py +0 -0
- paddle_billing/Resources/Adjustments/AdjustmentsClient.py +36 -0
- paddle_billing/Resources/Adjustments/Operations/Create/AdjustmentItem.py +11 -0
- paddle_billing/Resources/Adjustments/Operations/Create/__init__.py +0 -0
- paddle_billing/Resources/Adjustments/Operations/CreateAdjustment.py +28 -0
- paddle_billing/Resources/Adjustments/Operations/ListAdjustments.py +60 -0
- paddle_billing/Resources/Adjustments/Operations/__init__.py +3 -0
- paddle_billing/Resources/Adjustments/__init__.py +0 -0
- paddle_billing/Resources/Businesses/BusinessesClient.py +58 -0
- paddle_billing/Resources/Businesses/Operations/CreateBusiness.py +17 -0
- paddle_billing/Resources/Businesses/Operations/ListBusinesses.py +45 -0
- paddle_billing/Resources/Businesses/Operations/UpdateBusiness.py +18 -0
- paddle_billing/Resources/Businesses/Operations/__init__.py +3 -0
- paddle_billing/Resources/Businesses/__init__.py +0 -0
- paddle_billing/Resources/Customers/CustomersClient.py +65 -0
- paddle_billing/Resources/Customers/Operations/CreateCustomer.py +16 -0
- paddle_billing/Resources/Customers/Operations/ListCreditBalances.py +28 -0
- paddle_billing/Resources/Customers/Operations/ListCustomers.py +50 -0
- paddle_billing/Resources/Customers/Operations/UpdateCustomer.py +17 -0
- paddle_billing/Resources/Customers/Operations/__init__.py +4 -0
- paddle_billing/Resources/Customers/__init__.py +0 -0
- paddle_billing/Resources/Discounts/DiscountsClient.py +55 -0
- paddle_billing/Resources/Discounts/Operations/CreateDiscount.py +24 -0
- paddle_billing/Resources/Discounts/Operations/ListDiscounts.py +46 -0
- paddle_billing/Resources/Discounts/Operations/UpdateDiscount.py +25 -0
- paddle_billing/Resources/Discounts/Operations/__init__.py +3 -0
- paddle_billing/Resources/Discounts/__init__.py +0 -0
- paddle_billing/Resources/EventTypes/EventTypesClient.py +22 -0
- paddle_billing/Resources/EventTypes/__init__.py +0 -0
- paddle_billing/Resources/Events/EventsClient.py +26 -0
- paddle_billing/Resources/Events/Operations/ListEvents.py +12 -0
- paddle_billing/Resources/Events/Operations/__init__.py +1 -0
- paddle_billing/Resources/Events/__init__.py +0 -0
- paddle_billing/Resources/NotificationLogs/NotificationLogsClient.py +26 -0
- paddle_billing/Resources/NotificationLogs/Operations/ListNotificationLogs.py +11 -0
- paddle_billing/Resources/NotificationLogs/Operations/__init__.py +1 -0
- paddle_billing/Resources/NotificationLogs/__init__.py +0 -0
- paddle_billing/Resources/NotificationSettings/NotificationSettingsClient.py +54 -0
- paddle_billing/Resources/NotificationSettings/Operations/CreateNotificationSetting.py +21 -0
- paddle_billing/Resources/NotificationSettings/Operations/UpdateNotificationSetting.py +20 -0
- paddle_billing/Resources/NotificationSettings/Operations/__init__.py +2 -0
- paddle_billing/Resources/NotificationSettings/__init__.py +0 -0
- paddle_billing/Resources/Notifications/NotificationsClient.py +44 -0
- paddle_billing/Resources/Notifications/Operations/ListNotifications.py +58 -0
- paddle_billing/Resources/Notifications/Operations/__init__.py +1 -0
- paddle_billing/Resources/Notifications/__init__.py +0 -0
- paddle_billing/Resources/Prices/Operations/CreatePrice.py +23 -0
- paddle_billing/Resources/Prices/Operations/List/Includes.py +5 -0
- paddle_billing/Resources/Prices/Operations/List/__init__.py +0 -0
- paddle_billing/Resources/Prices/Operations/ListPrices.py +62 -0
- paddle_billing/Resources/Prices/Operations/UpdatePrice.py +23 -0
- paddle_billing/Resources/Prices/Operations/__init__.py +4 -0
- paddle_billing/Resources/Prices/PricesClient.py +65 -0
- paddle_billing/Resources/Prices/__init__.py +0 -0
- paddle_billing/Resources/PricingPreviews/Operations/PreviewPrice.py +20 -0
- paddle_billing/Resources/PricingPreviews/Operations/__init__.py +1 -0
- paddle_billing/Resources/PricingPreviews/PricingPreviewsClient.py +20 -0
- paddle_billing/Resources/PricingPreviews/__init__.py +0 -0
- paddle_billing/Resources/Products/Operations/CreateProduct.py +18 -0
- paddle_billing/Resources/Products/Operations/List/Includes.py +5 -0
- paddle_billing/Resources/Products/Operations/List/__init__.py +0 -0
- paddle_billing/Resources/Products/Operations/ListProducts.py +59 -0
- paddle_billing/Resources/Products/Operations/UpdateProduct.py +19 -0
- paddle_billing/Resources/Products/Operations/__init__.py +4 -0
- paddle_billing/Resources/Products/ProductsClient.py +70 -0
- paddle_billing/Resources/Products/__init__.py +0 -0
- paddle_billing/Resources/Reports/Operations/CreateReport.py +27 -0
- paddle_billing/Resources/Reports/Operations/ListReports.py +35 -0
- paddle_billing/Resources/Reports/Operations/__init__.py +2 -0
- paddle_billing/Resources/Reports/ReportsClient.py +51 -0
- paddle_billing/Resources/Reports/__init__.py +0 -0
- paddle_billing/Resources/Shared/Operations/List/Comparator.py +8 -0
- paddle_billing/Resources/Shared/Operations/List/DateComparison.py +31 -0
- paddle_billing/Resources/Shared/Operations/List/OrderBy.py +21 -0
- paddle_billing/Resources/Shared/Operations/List/Pager.py +24 -0
- paddle_billing/Resources/Shared/Operations/List/__init__.py +0 -0
- paddle_billing/Resources/Shared/Operations/__init__.py +4 -0
- paddle_billing/Resources/Shared/__init__.py +0 -0
- paddle_billing/Resources/Subscriptions/Operations/CancelSubscription.py +12 -0
- paddle_billing/Resources/Subscriptions/Operations/CreateOneTimeCharge.py +22 -0
- paddle_billing/Resources/Subscriptions/Operations/Get/Includes.py +6 -0
- paddle_billing/Resources/Subscriptions/Operations/Get/__init__.py +0 -0
- paddle_billing/Resources/Subscriptions/Operations/ListSubscriptions.py +59 -0
- paddle_billing/Resources/Subscriptions/Operations/PauseSubscription.py +19 -0
- paddle_billing/Resources/Subscriptions/Operations/PreviewOneTimeCharge.py +22 -0
- paddle_billing/Resources/Subscriptions/Operations/PreviewUpdateSubscription.py +37 -0
- paddle_billing/Resources/Subscriptions/Operations/ResumeSubscription.py +17 -0
- paddle_billing/Resources/Subscriptions/Operations/Update/SubscriptionDiscount.py +9 -0
- paddle_billing/Resources/Subscriptions/Operations/Update/__init__.py +0 -0
- paddle_billing/Resources/Subscriptions/Operations/UpdateSubscription.py +37 -0
- paddle_billing/Resources/Subscriptions/Operations/__init__.py +10 -0
- paddle_billing/Resources/Subscriptions/SubscriptionsClient.py +121 -0
- paddle_billing/Resources/Subscriptions/__init__.py +0 -0
- paddle_billing/Resources/Transactions/Operations/CreateTransaction.py +25 -0
- paddle_billing/Resources/Transactions/Operations/List/Includes.py +11 -0
- paddle_billing/Resources/Transactions/Operations/List/Origin.py +10 -0
- paddle_billing/Resources/Transactions/Operations/List/__init__.py +0 -0
- paddle_billing/Resources/Transactions/Operations/ListTransactions.py +86 -0
- paddle_billing/Resources/Transactions/Operations/PreviewTransaction.py +24 -0
- paddle_billing/Resources/Transactions/Operations/UpdateTransaction.py +25 -0
- paddle_billing/Resources/Transactions/Operations/__init__.py +6 -0
- paddle_billing/Resources/Transactions/TransactionsClient.py +90 -0
- paddle_billing/Resources/Transactions/__init__.py +0 -0
- paddle_billing/Resources/__init__.py +0 -0
- paddle_billing/ResponseParser.py +65 -0
- paddle_billing/Undefined.py +2 -0
- paddle_billing/__init__.py +4 -0
- paddle_python_sdk-0.1.0.dist-info/LICENSE +190 -0
- paddle_python_sdk-0.1.0.dist-info/METADATA +184 -0
- paddle_python_sdk-0.1.0.dist-info/RECORD +517 -0
- paddle_python_sdk-0.1.0.dist-info/WHEEL +5 -0
- paddle_python_sdk-0.1.0.dist-info/top_level.txt +3 -0
- tests/Functional/Resources/Addresses/__init__.py +0 -0
- tests/Functional/Resources/Addresses/test_AddressesClient.py +274 -0
- tests/Functional/Resources/Adjustments/__init__.py +0 -0
- tests/Functional/Resources/Adjustments/test_AdjustmentsClient.py +188 -0
- tests/Functional/Resources/Businesses/__init__.py +0 -0
- tests/Functional/Resources/Businesses/test_BusinessesClient.py +279 -0
- tests/Functional/Resources/Customers/__init__.py +0 -0
- tests/Functional/Resources/Customers/test_CustomersClient.py +291 -0
- tests/Functional/Resources/Discounts/__init__.py +0 -0
- tests/Functional/Resources/Discounts/test_DiscountsClient.py +280 -0
- tests/Functional/Resources/EventTypes/__init__.py +0 -0
- tests/Functional/Resources/EventTypes/test_EventTypesClient.py +43 -0
- tests/Functional/Resources/Events/__init__.py +0 -0
- tests/Functional/Resources/Events/test_EventsClient.py +64 -0
- tests/Functional/Resources/NotificationLogs/__init__.py +0 -0
- tests/Functional/Resources/NotificationLogs/test_NotificationLogsClient.py +68 -0
- tests/Functional/Resources/NotificationSettings/__init__.py +0 -0
- tests/Functional/Resources/NotificationSettings/test_NotificationSettingsClient.py +287 -0
- tests/Functional/Resources/Notifications/__init__.py +0 -0
- tests/Functional/Resources/Notifications/test_NotificationsClient.py +202 -0
- tests/Functional/Resources/Prices/__init__.py +0 -0
- tests/Functional/Resources/Prices/test_PricesClient.py +307 -0
- tests/Functional/Resources/PricingPreviews/__init__.py +0 -0
- tests/Functional/Resources/PricingPreviews/test_PricingPreviewsClient.py +92 -0
- tests/Functional/Resources/Products/__init__.py +0 -0
- tests/Functional/Resources/Products/test_ProductsClient.py +271 -0
- tests/Functional/Resources/Reports/__init__.py +0 -0
- tests/Functional/Resources/Reports/test_ReportsClient.py +197 -0
- tests/Functional/Resources/Subscriptions/__init__.py +0 -0
- tests/Functional/Resources/Subscriptions/test_SubscriptionsClient.py +758 -0
- tests/Functional/Resources/Transactions/__init__.py +0 -0
- tests/Functional/Resources/Transactions/test_TransactionsClient.py +585 -0
- tests/Functional/Resources/__init__.py +0 -0
- tests/Functional/__init__.py +0 -0
- tests/Unit/Logger/__init__.py +0 -0
- tests/Unit/Logger/test_Logger.py +10 -0
- tests/Unit/Notification/__init__.py +0 -0
- tests/Unit/Notification/test_Verifier.py +63 -0
- tests/Unit/PaddleStrEnum/__init__.py +0 -0
- tests/Unit/PaddleStrEnum/test_PaddleStrEnum.py +52 -0
- tests/Unit/__init__.py +0 -0
- tests/Utils/FakeResponse.py +6 -0
- tests/Utils/ReadsFixture.py +33 -0
- tests/Utils/TestClient.py +48 -0
- tests/Utils/__init__.py +1 -0
- tests/__init__.py +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from paddle_billing.EnumStringify import enum_stringify
|
|
2
|
+
from paddle_billing.HasParameters import HasParameters
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Shared import CatalogType, Status, TaxCategory
|
|
5
|
+
|
|
6
|
+
from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
|
|
7
|
+
|
|
8
|
+
from paddle_billing.Resources.Products.Operations.List.Includes import Includes as ProductIncludes
|
|
9
|
+
from paddle_billing.Resources.Shared.Operations import Pager
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ListProducts(HasParameters):
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
pager: Pager | None = None,
|
|
16
|
+
includes: list[ProductIncludes] = None,
|
|
17
|
+
ids: list[str] = None,
|
|
18
|
+
types: list[CatalogType] = None,
|
|
19
|
+
product_ids: list[str] = None,
|
|
20
|
+
statuses: list[Status] = None,
|
|
21
|
+
tax_categories: list[TaxCategory] = None,
|
|
22
|
+
):
|
|
23
|
+
self.pager = pager
|
|
24
|
+
self.includes = includes if includes is not None else []
|
|
25
|
+
self.ids = ids if ids is not None else []
|
|
26
|
+
self.types = types if types is not None else []
|
|
27
|
+
self.product_ids = product_ids if product_ids is not None else []
|
|
28
|
+
self.statuses = statuses if statuses is not None else []
|
|
29
|
+
self.tax_categories = tax_categories if tax_categories is not None else []
|
|
30
|
+
|
|
31
|
+
# Validation
|
|
32
|
+
for field_name, field_value, field_type in [
|
|
33
|
+
('ids', self.ids, str),
|
|
34
|
+
('includes', self.includes, ProductIncludes),
|
|
35
|
+
('statuses', self.statuses, Status),
|
|
36
|
+
('tax_categories', self.tax_categories, TaxCategory),
|
|
37
|
+
('types', self.types, CatalogType),
|
|
38
|
+
]:
|
|
39
|
+
invalid_items = [item for item in field_value if not isinstance(item, field_type)]
|
|
40
|
+
if invalid_items:
|
|
41
|
+
raise InvalidArgumentException(field_name, field_type.__name__, invalid_items)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def get_parameters(self) -> dict:
|
|
45
|
+
parameters = {}
|
|
46
|
+
if self.pager:
|
|
47
|
+
parameters.update(self.pager.get_parameters())
|
|
48
|
+
if self.ids:
|
|
49
|
+
parameters['id'] = ','.join(self.ids)
|
|
50
|
+
if self.includes:
|
|
51
|
+
parameters['include'] = ','.join(map(enum_stringify, self.includes))
|
|
52
|
+
if self.statuses:
|
|
53
|
+
parameters['status'] = ','.join(map(enum_stringify, self.statuses))
|
|
54
|
+
if self.tax_categories:
|
|
55
|
+
parameters['tax_category'] = ','.join(map(enum_stringify, self.tax_categories))
|
|
56
|
+
if self.types:
|
|
57
|
+
parameters['type'] = ','.join(map(enum_stringify, self.types))
|
|
58
|
+
|
|
59
|
+
return parameters
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Undefined import Undefined
|
|
4
|
+
from paddle_billing.Entities.Shared import CatalogType, CustomData, Status, TaxCategory
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class UpdateProduct:
|
|
9
|
+
name: str | Undefined = Undefined()
|
|
10
|
+
description: str | None | Undefined = Undefined()
|
|
11
|
+
type: CatalogType | None | Undefined = Undefined()
|
|
12
|
+
tax_category: TaxCategory | Undefined = Undefined()
|
|
13
|
+
image_url: str | None | Undefined = Undefined()
|
|
14
|
+
custom_data: CustomData | None | Undefined = Undefined()
|
|
15
|
+
status: Status | Undefined = Undefined()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def get_parameters(self) -> dict:
|
|
19
|
+
return asdict(self)
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
from paddle_billing.Resources.Products.Operations.CreateProduct import CreateProduct
|
|
2
|
+
from paddle_billing.Resources.Products.Operations.ListProducts import ListProducts
|
|
3
|
+
from paddle_billing.Resources.Products.Operations.List.Includes import Includes as ProductIncludes
|
|
4
|
+
from paddle_billing.Resources.Products.Operations.UpdateProduct import UpdateProduct
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from paddle_billing.ResponseParser import ResponseParser
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.Collections import Paginator, ProductCollection
|
|
4
|
+
from paddle_billing.Entities.Product import Product
|
|
5
|
+
from paddle_billing.Entities.Shared import Status
|
|
6
|
+
|
|
7
|
+
from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
|
|
8
|
+
|
|
9
|
+
from paddle_billing.Resources.Products.Operations import CreateProduct, ListProducts, UpdateProduct, ProductIncludes
|
|
10
|
+
|
|
11
|
+
from typing import TYPE_CHECKING
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from paddle_billing.Client import Client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ProductsClient:
|
|
17
|
+
def __init__(self, client: 'Client'):
|
|
18
|
+
self.client = client
|
|
19
|
+
self.response = None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def list(self, operation: ListProducts = None) -> ProductCollection:
|
|
23
|
+
if operation is None:
|
|
24
|
+
operation = ListProducts()
|
|
25
|
+
|
|
26
|
+
self.response = self.client.get_raw('/products', operation.get_parameters())
|
|
27
|
+
parser = ResponseParser(self.response)
|
|
28
|
+
|
|
29
|
+
return ProductCollection.from_list(
|
|
30
|
+
parser.get_data(),
|
|
31
|
+
Paginator(self.client, parser.get_pagination(), ProductCollection)
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def get(self, product_id: str, includes = None) -> Product | Product:
|
|
36
|
+
if product_id is None:
|
|
37
|
+
raise ValueError('product_id is required')
|
|
38
|
+
if not isinstance(product_id, str):
|
|
39
|
+
raise ValueError('product_id must be a string')
|
|
40
|
+
|
|
41
|
+
if includes is None:
|
|
42
|
+
includes = []
|
|
43
|
+
|
|
44
|
+
invalid_items = [item for item in includes if not isinstance(item, ProductIncludes)]
|
|
45
|
+
if invalid_items:
|
|
46
|
+
raise InvalidArgumentException('includes', ProductIncludes.__name__, invalid_items)
|
|
47
|
+
|
|
48
|
+
params = {'include': ','.join(include.value for include in includes)} if includes else {}
|
|
49
|
+
self.response = self.client.get_raw(f"/products/{product_id}", params)
|
|
50
|
+
parser = ResponseParser(self.response)
|
|
51
|
+
|
|
52
|
+
return Product.from_dict(parser.get_data())
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def create(self, operation: CreateProduct) -> Product:
|
|
56
|
+
self.response = self.client.post_raw('/products', operation.get_parameters())
|
|
57
|
+
parser = ResponseParser(self.response)
|
|
58
|
+
|
|
59
|
+
return Product.from_dict(parser.get_data())
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def update(self, product_id: str, operation: UpdateProduct) -> Product:
|
|
63
|
+
self.response = self.client.patch_raw(f"/products/{product_id}", operation.get_parameters())
|
|
64
|
+
parser = ResponseParser(self.response)
|
|
65
|
+
|
|
66
|
+
return Product.from_dict(parser.get_data())
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def archive(self, product_id: str) -> Product:
|
|
70
|
+
return self.update(product_id, UpdateProduct(status=Status.Archived))
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from dataclasses import dataclass, field
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.Reports import ReportType, ReportFilter
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass
|
|
9
|
+
class CreateReport:
|
|
10
|
+
type: ReportType
|
|
11
|
+
filters: list[ReportFilter] = field(default_factory=list)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def __post_init__(self):
|
|
15
|
+
# Validation
|
|
16
|
+
if any(not isinstance(filter_item, ReportFilter) for filter_item in self.filters):
|
|
17
|
+
invalid_items = [filter_item for filter_item in self.filters if not isinstance(filter_item, ReportFilter)]
|
|
18
|
+
raise InvalidArgumentException('filters', 'ReportFilter', ', '.join(map(str, invalid_items)))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_parameters(self) -> dict:
|
|
22
|
+
parameters = {'type': self.type}
|
|
23
|
+
|
|
24
|
+
if self.filters is not None and self.filters != []:
|
|
25
|
+
parameters.update({'filters': [filter_.get_parameters() for filter_ in self.filters]})
|
|
26
|
+
|
|
27
|
+
return parameters
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from paddle_billing.EnumStringify import enum_stringify
|
|
2
|
+
from paddle_billing.HasParameters import HasParameters
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Reports import ReportStatus
|
|
5
|
+
|
|
6
|
+
from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
|
|
7
|
+
|
|
8
|
+
from paddle_billing.Resources.Shared.Operations import Pager
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ListReports(HasParameters):
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
pager: Pager | None = None,
|
|
16
|
+
statuses: list[ReportStatus] = None,
|
|
17
|
+
):
|
|
18
|
+
self.pager = pager
|
|
19
|
+
self.statuses = statuses if statuses is not None else []
|
|
20
|
+
|
|
21
|
+
# Validation
|
|
22
|
+
for field_name, field_value, field_type in [('statuses', self.statuses, ReportStatus)]:
|
|
23
|
+
invalid_items = [item for item in field_value if not isinstance(item, field_type)]
|
|
24
|
+
if invalid_items:
|
|
25
|
+
raise InvalidArgumentException(field_name, field_type.__name__, invalid_items)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def get_parameters(self) -> dict:
|
|
29
|
+
parameters = {}
|
|
30
|
+
if self.pager:
|
|
31
|
+
parameters.update(self.pager.get_parameters())
|
|
32
|
+
if self.statuses:
|
|
33
|
+
parameters['status'] = ','.join(map(enum_stringify, self.statuses))
|
|
34
|
+
|
|
35
|
+
return parameters
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from paddle_billing.ResponseParser import ResponseParser
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.Report import Report
|
|
4
|
+
from paddle_billing.Entities.ReportCSV import ReportCSV
|
|
5
|
+
from paddle_billing.Entities.Collections import Paginator, ReportCollection
|
|
6
|
+
|
|
7
|
+
from paddle_billing.Resources.Reports.Operations import CreateReport, ListReports
|
|
8
|
+
|
|
9
|
+
from typing import TYPE_CHECKING
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from paddle_billing.Client import Client
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ReportsClient:
|
|
15
|
+
def __init__(self, client: 'Client'):
|
|
16
|
+
self.client = client
|
|
17
|
+
self.response = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def list(self, operation: ListReports = None) -> ReportCollection:
|
|
21
|
+
if operation is None:
|
|
22
|
+
operation = ListReports()
|
|
23
|
+
|
|
24
|
+
self.response = self.client.get_raw('/reports', operation.get_parameters())
|
|
25
|
+
parser = ResponseParser(self.response)
|
|
26
|
+
|
|
27
|
+
return ReportCollection.from_list(
|
|
28
|
+
parser.get_data(),
|
|
29
|
+
Paginator(self.client, parser.get_pagination(), ReportCollection)
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def get(self, report_id: str) -> Report:
|
|
34
|
+
self.response = self.client.get_raw(f"/reports/{report_id}")
|
|
35
|
+
parser = ResponseParser(self.response)
|
|
36
|
+
|
|
37
|
+
return Report.from_dict(parser.get_data())
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def get_report_csv(self, report_id: str) -> ReportCSV:
|
|
41
|
+
self.response = self.client.get_raw(f"/reports/{report_id}/download-url")
|
|
42
|
+
parser = ResponseParser(self.response)
|
|
43
|
+
|
|
44
|
+
return ReportCSV.from_dict(parser.get_data())
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def create(self, operation: CreateReport) -> Report:
|
|
48
|
+
self.response = self.client.post_raw('/reports', operation.get_parameters())
|
|
49
|
+
parser = ResponseParser(self.response)
|
|
50
|
+
|
|
51
|
+
return Report.from_dict(parser.get_data())
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.DateTime import DateTime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Resources.Shared.Operations.List.Comparator import Comparator
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DateComparison:
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
date: datetime,
|
|
12
|
+
comparator: Comparator | None = None,
|
|
13
|
+
):
|
|
14
|
+
self.date = date
|
|
15
|
+
self._comparator = comparator
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def comparator(self) -> str:
|
|
20
|
+
return f"[{self._comparator.value}]" if self._comparator else ''
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def formatted(self) -> str:
|
|
24
|
+
if isinstance(self.date, datetime):
|
|
25
|
+
date_obj = DateTime.from_datetime(self.date)
|
|
26
|
+
elif isinstance(self.date, DateTime):
|
|
27
|
+
date_obj = self.date
|
|
28
|
+
else:
|
|
29
|
+
raise TypeError(f"Invalid '{type(self.date)}' type for date")
|
|
30
|
+
|
|
31
|
+
return date_obj.format() if date_obj else ''
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class OrderBy:
|
|
5
|
+
def __init__(self, field: str, direction: str):
|
|
6
|
+
self.field = field
|
|
7
|
+
self.direction = direction
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@classmethod
|
|
11
|
+
def id_ascending(cls) -> OrderBy:
|
|
12
|
+
return OrderBy('id', 'asc')
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@classmethod
|
|
16
|
+
def id_descending(cls) -> OrderBy:
|
|
17
|
+
return OrderBy('id', 'desc')
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def __str__(self):
|
|
21
|
+
return f"{self.field}[{self.direction}]"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from paddle_billing.FiltersNone import FiltersNone
|
|
2
|
+
from paddle_billing.HasParameters import HasParameters
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Resources.Shared.Operations.List.OrderBy import OrderBy
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Pager(HasParameters):
|
|
8
|
+
def __init__(
|
|
9
|
+
self,
|
|
10
|
+
after: str | None = None,
|
|
11
|
+
order_by: OrderBy | None = None,
|
|
12
|
+
per_page: int = 50,
|
|
13
|
+
):
|
|
14
|
+
self.after = after
|
|
15
|
+
self.order_by = order_by if order_by is not None else OrderBy.id_ascending()
|
|
16
|
+
self.per_page = per_page
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def get_parameters(self) -> dict:
|
|
20
|
+
return FiltersNone.filter_none_values({
|
|
21
|
+
'after': self.after,
|
|
22
|
+
'order_by': str(self.order_by),
|
|
23
|
+
'per_page': self.per_page
|
|
24
|
+
})
|
|
File without changes
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
from paddle_billing.Resources.Shared.Operations.List.Comparator import Comparator
|
|
2
|
+
from paddle_billing.Resources.Shared.Operations.List.DateComparison import DateComparison
|
|
3
|
+
from paddle_billing.Resources.Shared.Operations.List.OrderBy import OrderBy
|
|
4
|
+
from paddle_billing.Resources.Shared.Operations.List.Pager import Pager
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.Subscriptions import SubscriptionEffectiveFrom
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclass
|
|
7
|
+
class CancelSubscription:
|
|
8
|
+
effective_from: SubscriptionEffectiveFrom = None
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def get_parameters(self) -> dict:
|
|
12
|
+
return asdict(self)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Undefined import Undefined
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.Subscriptions import (
|
|
6
|
+
SubscriptionEffectiveFrom,
|
|
7
|
+
SubscriptionItems,
|
|
8
|
+
SubscriptionItemsWithPrice,
|
|
9
|
+
SubscriptionOnPaymentFailure,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class CreateOneTimeCharge:
|
|
15
|
+
effective_from: SubscriptionEffectiveFrom
|
|
16
|
+
items: list[SubscriptionItems | SubscriptionItemsWithPrice]
|
|
17
|
+
on_payment_failure: SubscriptionOnPaymentFailure | Undefined = Undefined()
|
|
18
|
+
receipt_data: str | Undefined = Undefined()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_parameters(self) -> dict:
|
|
22
|
+
return asdict(self)
|
|
File without changes
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from paddle_billing.EnumStringify import enum_stringify
|
|
2
|
+
from paddle_billing.HasParameters import HasParameters
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Shared import CollectionMode
|
|
5
|
+
from paddle_billing.Entities.Subscriptions import SubscriptionStatus, SubscriptionScheduledChangeAction
|
|
6
|
+
|
|
7
|
+
from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
|
|
8
|
+
|
|
9
|
+
from paddle_billing.Resources.Shared.Operations import Pager
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ListSubscriptions(HasParameters):
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
pager: Pager | None = None,
|
|
16
|
+
address_ids: list[str] = None,
|
|
17
|
+
collection_mode: CollectionMode | None = None,
|
|
18
|
+
customer_ids: list[str] = None,
|
|
19
|
+
ids: list[str] = None,
|
|
20
|
+
price_ids: list[str] = None,
|
|
21
|
+
scheduled_change_actions: list[SubscriptionScheduledChangeAction] = None,
|
|
22
|
+
statuses: list[SubscriptionStatus] = None,
|
|
23
|
+
):
|
|
24
|
+
self.pager = pager
|
|
25
|
+
self.collection_mode = collection_mode
|
|
26
|
+
self.address_ids = address_ids if address_ids is not None else []
|
|
27
|
+
self.customer_ids = customer_ids if customer_ids is not None else []
|
|
28
|
+
self.ids = ids if ids is not None else []
|
|
29
|
+
self.price_ids = price_ids if price_ids is not None else []
|
|
30
|
+
self.scheduled_change_actions = scheduled_change_actions if scheduled_change_actions is not None else []
|
|
31
|
+
self.statuses = statuses if statuses is not None else []
|
|
32
|
+
|
|
33
|
+
# Validation
|
|
34
|
+
for field_name, field_value, field_type in [
|
|
35
|
+
('address_ids', self.address_ids, str),
|
|
36
|
+
('customer_ids', self.customer_ids, str),
|
|
37
|
+
('ids', self.ids, str),
|
|
38
|
+
('price_ids', self.price_ids, str),
|
|
39
|
+
('scheduled_change_actions', self.scheduled_change_actions, SubscriptionScheduledChangeAction),
|
|
40
|
+
('statuses', self.statuses, SubscriptionStatus),
|
|
41
|
+
]:
|
|
42
|
+
invalid_items = [item for item in field_value if not isinstance(item, field_type)]
|
|
43
|
+
if invalid_items:
|
|
44
|
+
raise InvalidArgumentException(field_name, field_type.__name__, invalid_items)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_parameters(self) -> dict:
|
|
48
|
+
parameters = self.pager.get_parameters() if self.pager else {}
|
|
49
|
+
parameters.update({
|
|
50
|
+
'address_id': ','.join(self.address_ids),
|
|
51
|
+
'collection_mode': self.collection_mode.value if self.collection_mode else None,
|
|
52
|
+
'customer_id': ','.join(self.customer_ids),
|
|
53
|
+
'id': ','.join(self.ids),
|
|
54
|
+
'price_id': ','.join(self.price_ids),
|
|
55
|
+
'scheduled_change_action': ','.join(map(enum_stringify, self.scheduled_change_actions)),
|
|
56
|
+
'status': ','.join(map(enum_stringify, self.statuses)),
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
return {key: value for key, value in parameters.items() if value}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.DateTime import DateTime
|
|
4
|
+
from paddle_billing.Entities.Subscriptions import SubscriptionEffectiveFrom
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class PauseSubscription:
|
|
9
|
+
effective_from: SubscriptionEffectiveFrom | None = None
|
|
10
|
+
resume_at: DateTime | None = None
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def get_parameters(self) -> dict:
|
|
14
|
+
parameters = asdict(self)
|
|
15
|
+
parameters['resume_at'] = self.resume_at.format() \
|
|
16
|
+
if isinstance(self.resume_at, DateTime) \
|
|
17
|
+
else self.resume_at
|
|
18
|
+
|
|
19
|
+
return parameters
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Undefined import Undefined
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.Subscriptions import (
|
|
6
|
+
SubscriptionEffectiveFrom,
|
|
7
|
+
SubscriptionItems,
|
|
8
|
+
SubscriptionItemsWithPrice,
|
|
9
|
+
SubscriptionOnPaymentFailure,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class PreviewOneTimeCharge:
|
|
15
|
+
effective_from: SubscriptionEffectiveFrom
|
|
16
|
+
items: list[SubscriptionItems | SubscriptionItemsWithPrice]
|
|
17
|
+
on_payment_failure: SubscriptionOnPaymentFailure | Undefined = Undefined()
|
|
18
|
+
receipt_data: str | Undefined = Undefined()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_parameters(self) -> dict:
|
|
22
|
+
return asdict(self)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Undefined import Undefined
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.DateTime import DateTime
|
|
6
|
+
from paddle_billing.Entities.Shared import BillingDetails, CollectionMode, CurrencyCode, CustomData
|
|
7
|
+
from paddle_billing.Entities.Subscriptions import SubscriptionItems, SubscriptionOnPaymentFailure, SubscriptionProrationBillingMode
|
|
8
|
+
|
|
9
|
+
from paddle_billing.Resources.Subscriptions.Operations.Update.SubscriptionDiscount import SubscriptionDiscount
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class PreviewUpdateSubscription:
|
|
14
|
+
customer_id: str | Undefined = Undefined()
|
|
15
|
+
address_id: str | Undefined = Undefined()
|
|
16
|
+
business_id: str | None | Undefined = Undefined()
|
|
17
|
+
currency_code: CurrencyCode | Undefined = Undefined()
|
|
18
|
+
next_billed_at: DateTime | Undefined = Undefined()
|
|
19
|
+
discount: SubscriptionDiscount | None | Undefined = Undefined()
|
|
20
|
+
collection_mode: CollectionMode | Undefined = Undefined()
|
|
21
|
+
billing_details: BillingDetails | None | Undefined = Undefined()
|
|
22
|
+
scheduled_change: None | Undefined = Undefined()
|
|
23
|
+
items: list[SubscriptionItems] | Undefined = Undefined()
|
|
24
|
+
custom_data: CustomData | None | Undefined = Undefined()
|
|
25
|
+
proration_billing_mode: SubscriptionProrationBillingMode | Undefined = Undefined()
|
|
26
|
+
on_payment_failure: SubscriptionOnPaymentFailure | Undefined = Undefined()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_parameters(self) -> dict:
|
|
30
|
+
parameters = asdict(self)
|
|
31
|
+
|
|
32
|
+
if isinstance(self.next_billed_at, DateTime):
|
|
33
|
+
parameters['next_billed_at'] = self.next_billed_at.format()
|
|
34
|
+
if not isinstance(self.items, Undefined):
|
|
35
|
+
parameters['items'] = [item.get_parameters() for item in self.items]
|
|
36
|
+
|
|
37
|
+
return parameters
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.DateTime import DateTime
|
|
4
|
+
from paddle_billing.Entities.Subscriptions import SubscriptionResumeEffectiveFrom
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class ResumeSubscription:
|
|
9
|
+
effective_from: SubscriptionResumeEffectiveFrom | DateTime | None = None
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def get_parameters(self) -> dict:
|
|
13
|
+
effective_from = self.effective_from.format() \
|
|
14
|
+
if isinstance(self.effective_from, DateTime) \
|
|
15
|
+
else self.effective_from
|
|
16
|
+
|
|
17
|
+
return {'effective_from': effective_from}
|
|
File without changes
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from dataclasses import asdict, dataclass
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Undefined import Undefined
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.DateTime import DateTime
|
|
6
|
+
from paddle_billing.Entities.Shared import BillingDetails, CollectionMode, CurrencyCode, CustomData
|
|
7
|
+
from paddle_billing.Entities.Subscriptions import SubscriptionItems, SubscriptionOnPaymentFailure, SubscriptionProrationBillingMode
|
|
8
|
+
|
|
9
|
+
from paddle_billing.Resources.Subscriptions.Operations.Update.SubscriptionDiscount import SubscriptionDiscount
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class UpdateSubscription:
|
|
14
|
+
customer_id: str | Undefined = Undefined()
|
|
15
|
+
address_id: str | Undefined = Undefined()
|
|
16
|
+
business_id: str | None | Undefined = Undefined()
|
|
17
|
+
currency_code: CurrencyCode | Undefined = Undefined()
|
|
18
|
+
next_billed_at: DateTime | Undefined = Undefined()
|
|
19
|
+
discount: SubscriptionDiscount | None | Undefined = Undefined()
|
|
20
|
+
collection_mode: CollectionMode | Undefined = Undefined()
|
|
21
|
+
billing_details: BillingDetails | None | Undefined = Undefined()
|
|
22
|
+
scheduled_change: None | Undefined = Undefined()
|
|
23
|
+
items: list[SubscriptionItems] | Undefined = Undefined()
|
|
24
|
+
custom_data: CustomData | None | Undefined = Undefined()
|
|
25
|
+
proration_billing_mode: SubscriptionProrationBillingMode | Undefined = Undefined()
|
|
26
|
+
on_payment_failure: SubscriptionOnPaymentFailure | Undefined = Undefined()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_parameters(self) -> dict:
|
|
30
|
+
parameters = asdict(self)
|
|
31
|
+
|
|
32
|
+
if isinstance(self.next_billed_at, DateTime):
|
|
33
|
+
parameters['next_billed_at'] = self.next_billed_at.format()
|
|
34
|
+
if not isinstance(self.items, Undefined):
|
|
35
|
+
parameters['items'] = [item.get_parameters() for item in self.items]
|
|
36
|
+
|
|
37
|
+
return parameters
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from paddle_billing.Resources.Subscriptions.Operations.CancelSubscription import CancelSubscription
|
|
2
|
+
from paddle_billing.Resources.Subscriptions.Operations.CreateOneTimeCharge import CreateOneTimeCharge
|
|
3
|
+
from paddle_billing.Resources.Subscriptions.Operations.Get.Includes import Includes as SubscriptionIncludes
|
|
4
|
+
from paddle_billing.Resources.Subscriptions.Operations.ListSubscriptions import ListSubscriptions
|
|
5
|
+
from paddle_billing.Resources.Subscriptions.Operations.PauseSubscription import PauseSubscription
|
|
6
|
+
from paddle_billing.Resources.Subscriptions.Operations.PreviewOneTimeCharge import PreviewOneTimeCharge
|
|
7
|
+
from paddle_billing.Resources.Subscriptions.Operations.PreviewUpdateSubscription import PreviewUpdateSubscription
|
|
8
|
+
from paddle_billing.Resources.Subscriptions.Operations.ResumeSubscription import ResumeSubscription
|
|
9
|
+
from paddle_billing.Resources.Subscriptions.Operations.UpdateSubscription import UpdateSubscription
|
|
10
|
+
from paddle_billing.Resources.Subscriptions.Operations.Update.SubscriptionDiscount import SubscriptionDiscount
|