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,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Product import Product
|
|
5
|
+
|
|
6
|
+
from paddle_billing.Entities.Transactions.TransactionProration import TransactionProration
|
|
7
|
+
|
|
8
|
+
from paddle_billing.Entities.Shared.Totals import Totals
|
|
9
|
+
from paddle_billing.Entities.Shared.UnitTotals import UnitTotals
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class TransactionLineItem:
|
|
14
|
+
id: str
|
|
15
|
+
price_id: str
|
|
16
|
+
quantity: int
|
|
17
|
+
proration: TransactionProration | None
|
|
18
|
+
tax_rate: str
|
|
19
|
+
unit_totals: UnitTotals
|
|
20
|
+
totals: Totals
|
|
21
|
+
product: Product
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@staticmethod
|
|
25
|
+
def from_dict(data: dict) -> TransactionLineItem:
|
|
26
|
+
return TransactionLineItem(
|
|
27
|
+
id = data['id'],
|
|
28
|
+
price_id = data['price_id'],
|
|
29
|
+
quantity = data['quantity'],
|
|
30
|
+
proration = TransactionProration.from_dict(data['proration']) if data.get('proration') else None,
|
|
31
|
+
tax_rate = data['tax_rate'],
|
|
32
|
+
unit_totals = UnitTotals.from_dict(data['unit_totals']),
|
|
33
|
+
totals = Totals.from_dict(data['totals']),
|
|
34
|
+
product = Product.from_dict(data['product']),
|
|
35
|
+
)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Shared.TimePeriod import TimePeriod
|
|
5
|
+
from paddle_billing.Entities.Shared.TaxMode import TaxMode
|
|
6
|
+
from paddle_billing.Entities.Shared.Money import Money
|
|
7
|
+
from paddle_billing.Entities.Shared.PriceQuantity import PriceQuantity
|
|
8
|
+
from paddle_billing.Entities.Shared.CustomData import CustomData
|
|
9
|
+
from paddle_billing.Entities.Shared.UnitPriceOverride import UnitPriceOverride
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class TransactionNonCatalogPrice:
|
|
14
|
+
description: str
|
|
15
|
+
name: str | None
|
|
16
|
+
billing_cycle: TimePeriod | None
|
|
17
|
+
trial_period: TimePeriod | None
|
|
18
|
+
custom_data: CustomData | None
|
|
19
|
+
tax_mode: TaxMode
|
|
20
|
+
unit_price: Money
|
|
21
|
+
unit_price_overrides: list[UnitPriceOverride]
|
|
22
|
+
quantity: PriceQuantity
|
|
23
|
+
product_id: str
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@staticmethod
|
|
27
|
+
def from_dict(data: dict) -> TransactionNonCatalogPrice:
|
|
28
|
+
return TransactionNonCatalogPrice(
|
|
29
|
+
description = data['description'],
|
|
30
|
+
name = data.get('name'),
|
|
31
|
+
tax_mode = data['tax_mode'],
|
|
32
|
+
unit_price = Money.from_dict(data['unit_price']),
|
|
33
|
+
quantity = PriceQuantity.from_dict(data['quantity']),
|
|
34
|
+
product_id = data['product_id'],
|
|
35
|
+
unit_price_overrides = [UnitPriceOverride.from_dict(item) for item in data['unit_price_overrides']],
|
|
36
|
+
billing_cycle = TimePeriod.from_dict(data['billing_cycle']) if data.get('billing_cycle') else None,
|
|
37
|
+
trial_period = TimePeriod.from_dict(data['trial_period']) if data.get('trial_period') else None,
|
|
38
|
+
custom_data = CustomData(data['custom_data']) if data.get('custom_data') else None,
|
|
39
|
+
)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Shared.CustomData import CustomData
|
|
5
|
+
from paddle_billing.Entities.Shared.Money import Money
|
|
6
|
+
from paddle_billing.Entities.Shared.PriceQuantity import PriceQuantity
|
|
7
|
+
from paddle_billing.Entities.Shared.TaxMode import TaxMode
|
|
8
|
+
from paddle_billing.Entities.Shared.TimePeriod import TimePeriod
|
|
9
|
+
from paddle_billing.Entities.Shared.UnitPriceOverride import UnitPriceOverride
|
|
10
|
+
|
|
11
|
+
from paddle_billing.Entities.Transactions.TransactionNonCatalogProduct import TransactionNonCatalogProduct
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class TransactionNonCatalogPriceWithProduct:
|
|
16
|
+
description: str
|
|
17
|
+
name: str | None
|
|
18
|
+
billing_cycle: TimePeriod | None
|
|
19
|
+
trial_period: TimePeriod | None
|
|
20
|
+
custom_data: CustomData | None
|
|
21
|
+
tax_mode: TaxMode
|
|
22
|
+
unit_price: Money
|
|
23
|
+
unit_price_overrides: list[UnitPriceOverride]
|
|
24
|
+
quantity: PriceQuantity
|
|
25
|
+
product: TransactionNonCatalogProduct
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@staticmethod
|
|
29
|
+
def from_dict(data: dict) -> TransactionNonCatalogPriceWithProduct:
|
|
30
|
+
return TransactionNonCatalogPriceWithProduct(
|
|
31
|
+
description = data['description'],
|
|
32
|
+
name = data.get('name'),
|
|
33
|
+
tax_mode = data['tax_mode'],
|
|
34
|
+
unit_price = Money.from_dict(data['unit_price']),
|
|
35
|
+
quantity = PriceQuantity.from_dict(data['quantity']),
|
|
36
|
+
product = TransactionNonCatalogProduct.from_dict(data['product_id']),
|
|
37
|
+
unit_price_overrides = [UnitPriceOverride.from_dict(item) for item in data['unit_price_overrides']],
|
|
38
|
+
billing_cycle = TimePeriod.from_dict(data['billing_cycle']) if data.get('billing_cycle') else None,
|
|
39
|
+
trial_period = TimePeriod.from_dict(data['trial_period']) if data.get('trial_period') else None,
|
|
40
|
+
custom_data = CustomData(data['custom_data']) if data.get('custom_data') else None,
|
|
41
|
+
)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Shared.CustomData import CustomData
|
|
5
|
+
from paddle_billing.Entities.Shared.TaxCategory import TaxCategory
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass
|
|
9
|
+
class TransactionNonCatalogProduct:
|
|
10
|
+
name: str
|
|
11
|
+
tax_category: TaxCategory
|
|
12
|
+
description: str | None
|
|
13
|
+
image_url: str | None
|
|
14
|
+
custom_data: CustomData | None
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@staticmethod
|
|
18
|
+
def from_dict(data: dict) -> TransactionNonCatalogProduct:
|
|
19
|
+
return TransactionNonCatalogProduct(
|
|
20
|
+
name = data['name'],
|
|
21
|
+
description = data.get('description'),
|
|
22
|
+
image_url = data.get('image_url'),
|
|
23
|
+
tax_category = TaxCategory(data['tax_category']) if data.get('tax_category') else None,
|
|
24
|
+
custom_data = CustomData(data['custom_data']) if data.get('custom_data') else None,
|
|
25
|
+
)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Entities.Transactions.TransactionTimePeriod import TransactionTimePeriod
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class TransactionProration:
|
|
9
|
+
rate: str
|
|
10
|
+
billing_period: TransactionTimePeriod | None
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@staticmethod
|
|
14
|
+
def from_dict(data: dict) -> TransactionProration:
|
|
15
|
+
return TransactionProration(
|
|
16
|
+
rate = data['rate'],
|
|
17
|
+
billing_period = TransactionTimePeriod.from_dict(data['billing_period']) if data.get('billing_period') else None,
|
|
18
|
+
)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclass
|
|
7
|
+
class TransactionTimePeriod:
|
|
8
|
+
starts_at: datetime
|
|
9
|
+
ends_at: datetime
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@staticmethod
|
|
13
|
+
def from_dict(data: dict) -> TransactionTimePeriod:
|
|
14
|
+
return TransactionTimePeriod(
|
|
15
|
+
starts_at = datetime.fromisoformat(data['starts_at']),
|
|
16
|
+
ends_at = datetime.fromisoformat(data['ends_at']),
|
|
17
|
+
)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from paddle_billing.Entities.Transactions.TransactionAdjustmentsTotals import TransactionAdjustmentsTotals
|
|
2
|
+
from paddle_billing.Entities.Transactions.TransactionBreakdown import TransactionBreakdown
|
|
3
|
+
from paddle_billing.Entities.Transactions.TransactionCardType import TransactionCardType
|
|
4
|
+
from paddle_billing.Entities.Transactions.TransactionCreateItem import TransactionCreateItem
|
|
5
|
+
from paddle_billing.Entities.Transactions.TransactionCreateItemWithPrice import TransactionCreateItemWithPrice
|
|
6
|
+
from paddle_billing.Entities.Transactions.TransactionItemPreviewWithNonCatalogPrice import TransactionItemPreviewWithNonCatalogPrice
|
|
7
|
+
from paddle_billing.Entities.Transactions.TransactionItemPreviewWithPriceId import TransactionItemPreviewWithPriceId
|
|
8
|
+
from paddle_billing.Entities.Transactions.TransactionNonCatalogPrice import TransactionNonCatalogPrice
|
|
9
|
+
from paddle_billing.Entities.Transactions.TransactionNonCatalogPriceWithProduct import TransactionNonCatalogPriceWithProduct
|
|
10
|
+
from paddle_billing.Entities.Transactions.TransactionNonCatalogProduct import TransactionNonCatalogProduct
|
|
11
|
+
from paddle_billing.Entities.Transactions.TransactionProration import TransactionProration
|
|
12
|
+
from paddle_billing.Entities.Transactions.TransactionTimePeriod import TransactionTimePeriod
|
|
13
|
+
from paddle_billing.Entities.Transactions.TransactionUpdateTransactionItem import TransactionUpdateTransactionItem
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# These cause circular imports
|
|
17
|
+
# from paddle_billing.Entities.Transactions.TransactionDetails import TransactionDetails
|
|
18
|
+
# from paddle_billing.Entities.Transactions.TransactionItem import TransactionItem
|
|
19
|
+
# from paddle_billing.Entities.Transactions.TransactionItemPreviewWithPrice import TransactionItemPreviewWithPrice
|
|
20
|
+
# from paddle_billing.Entities.Transactions.TransactionLineItem import TransactionLineItem
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from paddle_billing.PaddleStrEnum import PaddleStrEnum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Environment(PaddleStrEnum):
|
|
5
|
+
PRODUCTION = 'production'
|
|
6
|
+
SANDBOX = 'sandbox'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@property
|
|
10
|
+
def base_url(self) -> str:
|
|
11
|
+
return {
|
|
12
|
+
'production': 'https://api.paddle.com',
|
|
13
|
+
'sandbox': 'https://sandbox-api.paddle.com',
|
|
14
|
+
}[self.value]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from paddle_billing.Exceptions.FieldError import FieldError
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ApiError(Exception):
|
|
5
|
+
def __init__(self, error_type, error_code, detail, docs_url, *field_errors):
|
|
6
|
+
self.error_type = error_type
|
|
7
|
+
self.error_code = error_code
|
|
8
|
+
self.detail = detail
|
|
9
|
+
self.docs_url = docs_url
|
|
10
|
+
self.field_errors = field_errors
|
|
11
|
+
super().__init__(self.detail)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def __repr__(self):
|
|
15
|
+
return (f"ApiError(type='{self.error_type}', error_code='{self.error_code}', detail='{self.detail}', "
|
|
16
|
+
f"docs_url='{self.docs_url}', field_errors={self.field_errors})")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@classmethod
|
|
20
|
+
def from_error_data(cls, error):
|
|
21
|
+
field_errors = [FieldError(fe['field'], fe['message']) for fe in error.get('errors', [])]
|
|
22
|
+
return cls(
|
|
23
|
+
error['type'],
|
|
24
|
+
error['code'],
|
|
25
|
+
error['detail'],
|
|
26
|
+
error['documentation_url'],
|
|
27
|
+
*field_errors
|
|
28
|
+
)
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from paddle_billing.Exceptions.SdkException import SdkException
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class InvalidArgumentException(SdkException):
|
|
5
|
+
@staticmethod
|
|
6
|
+
def array_contains_invalid_types(field, expected_type, given):
|
|
7
|
+
message = f"Expected '{field}' to only contain only type/s '{expected_type}', '{given}' given"
|
|
8
|
+
return InvalidArgumentException(message)
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from paddle_billing.Undefined import Undefined
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class FiltersUndefined:
|
|
5
|
+
@staticmethod
|
|
6
|
+
def filter_undefined_values(input_dict) -> dict:
|
|
7
|
+
"""
|
|
8
|
+
This method filters out values that are None from the given list
|
|
9
|
+
"""
|
|
10
|
+
return {key: value for key, value in input_dict.items() if not isinstance(value, Undefined)}
|
|
11
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class HasParameters(ABC):
|
|
5
|
+
@abstractmethod
|
|
6
|
+
def get_parameters(self) -> dict:
|
|
7
|
+
"""
|
|
8
|
+
Implementations of this method should return a dictionary of parameters
|
|
9
|
+
suitable to be used in API calls, e.g., {'foo': 'bar'} which would result in foo=bar in an API call.
|
|
10
|
+
"""
|
|
11
|
+
pass
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import re
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CustomLogger(logging.Filter):
|
|
6
|
+
def filter(self, record):
|
|
7
|
+
# Define multiple regex patterns for different sensitive data types
|
|
8
|
+
search_patterns = {
|
|
9
|
+
r"'X-Transaction-ID': '\s*([^']+)'": "'X-Transaction-ID': '<redacted>'",
|
|
10
|
+
r"Bearer \s*([^']+)": "Bearer <API_SECRET_KEY>",
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
# If the log record's message is a string, apply each regex substitution
|
|
14
|
+
if isinstance(record.msg, str):
|
|
15
|
+
for pattern, replacement in search_patterns.items():
|
|
16
|
+
record.msg = re.sub(pattern, replacement, record.msg)
|
|
17
|
+
|
|
18
|
+
return True # Return True to indicate the record should be processed
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from paddle_billing.Logger.Formatter import CustomLogger
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def get_logger(
|
|
6
|
+
log_level: int = logging.INFO,
|
|
7
|
+
log_file_path: str | None = None,
|
|
8
|
+
) -> logging.Logger:
|
|
9
|
+
"""
|
|
10
|
+
Configures a logger instance that our Client() uses
|
|
11
|
+
|
|
12
|
+
:param log_level: Defaults to logging.INFO
|
|
13
|
+
:param log_file_path: Defaults to None, which streams logs to the console. If a file path is provided logs are written to the file.
|
|
14
|
+
:return: Returns a logger instance
|
|
15
|
+
"""
|
|
16
|
+
logger = logging.getLogger('paddle_billing')
|
|
17
|
+
|
|
18
|
+
if not logger.handlers:
|
|
19
|
+
logger.setLevel(log_level)
|
|
20
|
+
|
|
21
|
+
formatter = logging.Formatter("{asctime} {levelname:<8} {message}", style='{')
|
|
22
|
+
handler = logging.NullHandler() if not log_file_path else logging.FileHandler(log_file_path)
|
|
23
|
+
|
|
24
|
+
handler.setFormatter(formatter)
|
|
25
|
+
logger.addHandler(handler)
|
|
26
|
+
|
|
27
|
+
# Filter out secrets from outputting to logs
|
|
28
|
+
logger.addFilter(CustomLogger())
|
|
29
|
+
|
|
30
|
+
return logger
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Notifications.Entities.Entity import Entity
|
|
6
|
+
from paddle_billing.Notifications.Entities.Shared import CountryCode, CustomData, ImportMeta, Status
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class Address(Entity):
|
|
11
|
+
id: str
|
|
12
|
+
description: str | None
|
|
13
|
+
first_line: str | None
|
|
14
|
+
second_line: str | None
|
|
15
|
+
city: str | None
|
|
16
|
+
postal_code: str | None
|
|
17
|
+
region: str | None
|
|
18
|
+
country_code: CountryCode
|
|
19
|
+
status: Status
|
|
20
|
+
created_at: datetime
|
|
21
|
+
updated_at: datetime
|
|
22
|
+
custom_data: CustomData | None = None
|
|
23
|
+
import_meta: ImportMeta | None = None
|
|
24
|
+
customer_id: str | None = None
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@classmethod
|
|
28
|
+
def from_dict(cls, data: dict) -> Address:
|
|
29
|
+
return Address(
|
|
30
|
+
id = data['id'],
|
|
31
|
+
customer_id = data.get('customer_id'),
|
|
32
|
+
description = data.get('description'),
|
|
33
|
+
first_line = data.get('first_line'),
|
|
34
|
+
second_line = data.get('second_line'),
|
|
35
|
+
city = data.get('city'),
|
|
36
|
+
postal_code = data.get('postal_code'),
|
|
37
|
+
region = data.get('region'),
|
|
38
|
+
country_code = CountryCode(data['country_code']),
|
|
39
|
+
status = Status(data['status']),
|
|
40
|
+
created_at = datetime.fromisoformat(data['created_at']),
|
|
41
|
+
updated_at = datetime.fromisoformat(data['updated_at']),
|
|
42
|
+
custom_data = CustomData(data['custom_data']) if data.get('custom_data') else None,
|
|
43
|
+
import_meta = ImportMeta.from_dict(data['import_meta']) if data.get('import_meta') else None,
|
|
44
|
+
)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Notifications.Entities.Adjustments import AdjustmentItem
|
|
6
|
+
from paddle_billing.Notifications.Entities.Entity import Entity
|
|
7
|
+
from paddle_billing.Notifications.Entities.Shared import Action, AdjustmentStatus, CurrencyCode, PayoutTotalsAdjustment, AdjustmentTotals
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class Adjustment(Entity):
|
|
12
|
+
id: str
|
|
13
|
+
action: Action
|
|
14
|
+
transaction_id: str
|
|
15
|
+
subscription_id: str | None
|
|
16
|
+
customer_id: str
|
|
17
|
+
reason: str
|
|
18
|
+
credit_applied_to_balance: bool | None
|
|
19
|
+
currency_code: CurrencyCode
|
|
20
|
+
status: AdjustmentStatus
|
|
21
|
+
items: list[AdjustmentItem]
|
|
22
|
+
totals: AdjustmentTotals
|
|
23
|
+
payout_totals: PayoutTotalsAdjustment | None
|
|
24
|
+
created_at: datetime
|
|
25
|
+
updated_at: datetime | None
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@classmethod
|
|
29
|
+
def from_dict(cls, data: dict) -> Adjustment:
|
|
30
|
+
return Adjustment(
|
|
31
|
+
id = data['id'],
|
|
32
|
+
action = Action(data['action']),
|
|
33
|
+
transaction_id = data['transaction_id'],
|
|
34
|
+
subscription_id = data.get('subscription_id'),
|
|
35
|
+
customer_id = data['customer_id'],
|
|
36
|
+
reason = data['reason'],
|
|
37
|
+
credit_applied_to_balance = data.get('credit_applied_to_balance'),
|
|
38
|
+
currency_code = CurrencyCode(data['currency_code']),
|
|
39
|
+
status = AdjustmentStatus(data['status']),
|
|
40
|
+
totals = AdjustmentTotals.from_dict(data['totals']),
|
|
41
|
+
created_at = datetime.fromisoformat(data['created_at']),
|
|
42
|
+
items = [AdjustmentItem.from_dict(item) for item in data['items']],
|
|
43
|
+
payout_totals = PayoutTotalsAdjustment.from_dict(data['payout_totals']) if data.get('payout_totals') else None,
|
|
44
|
+
updated_at = datetime.fromisoformat(data['updated_at']) if data.get('updated_at') else None,
|
|
45
|
+
)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from paddle_billing.Notifications.Entities.Shared import AdjustmentItemTotals, AdjustmentProration, AdjustmentType
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class AdjustmentItem:
|
|
9
|
+
id: str
|
|
10
|
+
item_id: str
|
|
11
|
+
type: AdjustmentType
|
|
12
|
+
amount: str | None
|
|
13
|
+
proration: AdjustmentProration | None
|
|
14
|
+
totals: AdjustmentItemTotals
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@staticmethod
|
|
18
|
+
def from_dict(data: dict) -> AdjustmentItem:
|
|
19
|
+
return AdjustmentItem(
|
|
20
|
+
id = data['id'],
|
|
21
|
+
item_id = data['item_id'],
|
|
22
|
+
type = AdjustmentType(data['type']),
|
|
23
|
+
amount = data.get('amount'),
|
|
24
|
+
proration = AdjustmentProration.from_dict(data['proration']) if data.get('proration') else None,
|
|
25
|
+
totals = AdjustmentItemTotals.from_dict(data['totals']),
|
|
26
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from paddle_billing.Notifications.Entities.Adjustments.AdjustmentItem import AdjustmentItem
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Notifications.Entities.Entity import Entity
|
|
6
|
+
from paddle_billing.Notifications.Entities.Businesses import BusinessesContacts
|
|
7
|
+
from paddle_billing.Notifications.Entities.Shared import CustomData, ImportMeta, Status
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class Business(Entity):
|
|
12
|
+
id: str
|
|
13
|
+
name: str
|
|
14
|
+
company_number: str | None
|
|
15
|
+
tax_identifier: str | None
|
|
16
|
+
status: Status
|
|
17
|
+
contacts: list[BusinessesContacts]
|
|
18
|
+
created_at: datetime
|
|
19
|
+
updated_at: datetime
|
|
20
|
+
custom_data: CustomData | None = None
|
|
21
|
+
import_meta: ImportMeta | None = None
|
|
22
|
+
customer_id: str | None = None
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def from_dict(cls, data: dict) -> Business:
|
|
27
|
+
return Business(
|
|
28
|
+
id = data['id'],
|
|
29
|
+
customer_id = data.get('customer_id'),
|
|
30
|
+
name = data['name'],
|
|
31
|
+
company_number = data.get('company_number'),
|
|
32
|
+
tax_identifier = data.get('tax_identifier'),
|
|
33
|
+
status = Status(data['status']),
|
|
34
|
+
created_at = datetime.fromisoformat(data['created_at']),
|
|
35
|
+
updated_at = datetime.fromisoformat(data['updated_at']),
|
|
36
|
+
contacts = [BusinessesContacts.from_dict(contact) for contact in data['contacts']],
|
|
37
|
+
custom_data = CustomData(data['custom_data']) if data.get('custom_data') else None,
|
|
38
|
+
import_meta = ImportMeta.from_dict(data['import_meta']) if data.get('import_meta') else None,
|
|
39
|
+
)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class BusinessesContacts:
|
|
7
|
+
name: str
|
|
8
|
+
email: str
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@staticmethod
|
|
12
|
+
def from_dict(data: dict) -> BusinessesContacts:
|
|
13
|
+
return BusinessesContacts(
|
|
14
|
+
name = data['name'],
|
|
15
|
+
email = data['email'],
|
|
16
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from paddle_billing.Notifications.Entities.Businesses.BusinessesContacts import BusinessesContacts
|