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.
Files changed (517) hide show
  1. examples/__init__.py +0 -0
  2. examples/catalog_management.py +166 -0
  3. examples/event_polling.py +56 -0
  4. examples/get_products.py +46 -0
  5. examples/logger.py +31 -0
  6. paddle_billing/Client.py +201 -0
  7. paddle_billing/ConditionallyRemoveImportMeta.py +14 -0
  8. paddle_billing/Entities/Address.py +44 -0
  9. paddle_billing/Entities/Adjustment.py +45 -0
  10. paddle_billing/Entities/Adjustments/AdjustmentCustomerBalance.py +18 -0
  11. paddle_billing/Entities/Adjustments/AdjustmentItem.py +26 -0
  12. paddle_billing/Entities/Adjustments/__init__.py +2 -0
  13. paddle_billing/Entities/Business.py +38 -0
  14. paddle_billing/Entities/Collections/AddressCollection.py +18 -0
  15. paddle_billing/Entities/Collections/AdjustmentCollection.py +18 -0
  16. paddle_billing/Entities/Collections/BusinessCollection.py +18 -0
  17. paddle_billing/Entities/Collections/Collection.py +47 -0
  18. paddle_billing/Entities/Collections/CreditBalanceCollection.py +18 -0
  19. paddle_billing/Entities/Collections/CustomerCollection.py +18 -0
  20. paddle_billing/Entities/Collections/DiscountCollection.py +18 -0
  21. paddle_billing/Entities/Collections/EventCollection.py +18 -0
  22. paddle_billing/Entities/Collections/EventTypeCollection.py +18 -0
  23. paddle_billing/Entities/Collections/NotificationCollection.py +18 -0
  24. paddle_billing/Entities/Collections/NotificationLogCollection.py +18 -0
  25. paddle_billing/Entities/Collections/NotificationSettingCollection.py +18 -0
  26. paddle_billing/Entities/Collections/Paginator.py +29 -0
  27. paddle_billing/Entities/Collections/PriceCollection.py +18 -0
  28. paddle_billing/Entities/Collections/ProductCollection.py +18 -0
  29. paddle_billing/Entities/Collections/ReportCollection.py +18 -0
  30. paddle_billing/Entities/Collections/SubscriptionCollection.py +18 -0
  31. paddle_billing/Entities/Collections/SubscriptionPreviewCollection.py +18 -0
  32. paddle_billing/Entities/Collections/TransactionCollection.py +18 -0
  33. paddle_billing/Entities/Collections/TransactionPreviewCollection.py +18 -0
  34. paddle_billing/Entities/Collections/TransactionsDataCollection.py +18 -0
  35. paddle_billing/Entities/Collections/__init__.py +21 -0
  36. paddle_billing/Entities/CreditBalance.py +22 -0
  37. paddle_billing/Entities/Customer.py +36 -0
  38. paddle_billing/Entities/DateTime.py +43 -0
  39. paddle_billing/Entities/Discount.py +51 -0
  40. paddle_billing/Entities/Discounts/DiscountStatus.py +8 -0
  41. paddle_billing/Entities/Discounts/DiscountType.py +7 -0
  42. paddle_billing/Entities/Discounts/__init__.py +2 -0
  43. paddle_billing/Entities/Entity.py +12 -0
  44. paddle_billing/Entities/Event.py +51 -0
  45. paddle_billing/Entities/EventType.py +23 -0
  46. paddle_billing/Entities/Events/EventTypeName.py +52 -0
  47. paddle_billing/Entities/Events/__init__.py +1 -0
  48. paddle_billing/Entities/Notification.py +42 -0
  49. paddle_billing/Entities/NotificationLog.py +25 -0
  50. paddle_billing/Entities/NotificationSetting.py +34 -0
  51. paddle_billing/Entities/NotificationSettings/NotificationSettingType.py +6 -0
  52. paddle_billing/Entities/NotificationSettings/__init__.py +1 -0
  53. paddle_billing/Entities/Notifications/NotificationOrigin.py +6 -0
  54. paddle_billing/Entities/Notifications/NotificationPayout.py +24 -0
  55. paddle_billing/Entities/Notifications/NotificationPayoutStatus.py +6 -0
  56. paddle_billing/Entities/Notifications/NotificationStatus.py +8 -0
  57. paddle_billing/Entities/Notifications/__init__.py +4 -0
  58. paddle_billing/Entities/Price.py +68 -0
  59. paddle_billing/Entities/PricePreview.py +34 -0
  60. paddle_billing/Entities/PricingPreviews/PricePreviewDetails.py +15 -0
  61. paddle_billing/Entities/PricingPreviews/PricePreviewDiscounts.py +20 -0
  62. paddle_billing/Entities/PricingPreviews/PricePreviewItem.py +16 -0
  63. paddle_billing/Entities/PricingPreviews/PricePreviewLineItem.py +38 -0
  64. paddle_billing/Entities/PricingPreviews/PricePreviewTotalsFormatted.py +20 -0
  65. paddle_billing/Entities/PricingPreviews/PricePreviewUnitTotalsFormatted.py +20 -0
  66. paddle_billing/Entities/PricingPreviews/__init__.py +6 -0
  67. paddle_billing/Entities/Product.py +45 -0
  68. paddle_billing/Entities/Report.py +32 -0
  69. paddle_billing/Entities/ReportCSV.py +13 -0
  70. paddle_billing/Entities/Reports/ReportFilter.py +20 -0
  71. paddle_billing/Entities/Reports/ReportFilterName.py +17 -0
  72. paddle_billing/Entities/Reports/ReportFilterOperator.py +6 -0
  73. paddle_billing/Entities/Reports/ReportStatus.py +8 -0
  74. paddle_billing/Entities/Reports/ReportType.py +10 -0
  75. paddle_billing/Entities/Reports/__init__.py +5 -0
  76. paddle_billing/Entities/Shared/Action.py +10 -0
  77. paddle_billing/Entities/Shared/AddressPreview.py +18 -0
  78. paddle_billing/Entities/Shared/AdjustmentItemTotals.py +18 -0
  79. paddle_billing/Entities/Shared/AdjustmentProration.py +18 -0
  80. paddle_billing/Entities/Shared/AdjustmentStatus.py +8 -0
  81. paddle_billing/Entities/Shared/AdjustmentTimePeriod.py +17 -0
  82. paddle_billing/Entities/Shared/AdjustmentTotals.py +26 -0
  83. paddle_billing/Entities/Shared/AdjustmentType.py +8 -0
  84. paddle_billing/Entities/Shared/AvailablePaymentMethods.py +11 -0
  85. paddle_billing/Entities/Shared/BillingDetails.py +22 -0
  86. paddle_billing/Entities/Shared/BillingDetailsUpdate.py +22 -0
  87. paddle_billing/Entities/Shared/Card.py +24 -0
  88. paddle_billing/Entities/Shared/CatalogType.py +6 -0
  89. paddle_billing/Entities/Shared/ChargebackFee.py +18 -0
  90. paddle_billing/Entities/Shared/Checkout.py +12 -0
  91. paddle_billing/Entities/Shared/CollectionMode.py +6 -0
  92. paddle_billing/Entities/Shared/Contacts.py +16 -0
  93. paddle_billing/Entities/Shared/CountryCode.py +233 -0
  94. paddle_billing/Entities/Shared/CurrencyCode.py +34 -0
  95. paddle_billing/Entities/Shared/CurrencyCodeAdjustments.py +7 -0
  96. paddle_billing/Entities/Shared/CurrencyCodePayouts.py +17 -0
  97. paddle_billing/Entities/Shared/CustomData.py +10 -0
  98. paddle_billing/Entities/Shared/Data.py +9 -0
  99. paddle_billing/Entities/Shared/ErrorCode.py +21 -0
  100. paddle_billing/Entities/Shared/ImportMeta.py +16 -0
  101. paddle_billing/Entities/Shared/Interval.py +8 -0
  102. paddle_billing/Entities/Shared/Meta.py +7 -0
  103. paddle_billing/Entities/Shared/MetaPaginated.py +18 -0
  104. paddle_billing/Entities/Shared/MethodDetails.py +19 -0
  105. paddle_billing/Entities/Shared/Money.py +28 -0
  106. paddle_billing/Entities/Shared/Original.py +18 -0
  107. paddle_billing/Entities/Shared/Pagination.py +20 -0
  108. paddle_billing/Entities/Shared/PaymentAttemptStatus.py +13 -0
  109. paddle_billing/Entities/Shared/PaymentMethodType.py +14 -0
  110. paddle_billing/Entities/Shared/PayoutTotalsAdjustment.py +29 -0
  111. paddle_billing/Entities/Shared/PriceQuantity.py +16 -0
  112. paddle_billing/Entities/Shared/Status.py +6 -0
  113. paddle_billing/Entities/Shared/TaxCategory.py +13 -0
  114. paddle_billing/Entities/Shared/TaxMode.py +7 -0
  115. paddle_billing/Entities/Shared/TaxRatesUsed.py +18 -0
  116. paddle_billing/Entities/Shared/TimePeriod.py +18 -0
  117. paddle_billing/Entities/Shared/Totals.py +20 -0
  118. paddle_billing/Entities/Shared/TransactionDetailsPreview.py +22 -0
  119. paddle_billing/Entities/Shared/TransactionLineItemPreview.py +28 -0
  120. paddle_billing/Entities/Shared/TransactionOrigin.py +10 -0
  121. paddle_billing/Entities/Shared/TransactionPaymentAttempt.py +35 -0
  122. paddle_billing/Entities/Shared/TransactionPayoutTotals.py +36 -0
  123. paddle_billing/Entities/Shared/TransactionPayoutTotalsAdjusted.py +29 -0
  124. paddle_billing/Entities/Shared/TransactionStatus.py +11 -0
  125. paddle_billing/Entities/Shared/TransactionTotals.py +36 -0
  126. paddle_billing/Entities/Shared/TransactionTotalsAdjusted.py +28 -0
  127. paddle_billing/Entities/Shared/UnitPriceOverride.py +19 -0
  128. paddle_billing/Entities/Shared/UnitTotals.py +20 -0
  129. paddle_billing/Entities/Shared/__init__.py +56 -0
  130. paddle_billing/Entities/Subscription.py +86 -0
  131. paddle_billing/Entities/SubscriptionPreview.py +79 -0
  132. paddle_billing/Entities/Subscriptions/SubscriptionAdjustmentItem.py +24 -0
  133. paddle_billing/Entities/Subscriptions/SubscriptionAdjustmentPreview.py +22 -0
  134. paddle_billing/Entities/Subscriptions/SubscriptionCharge.py +18 -0
  135. paddle_billing/Entities/Subscriptions/SubscriptionCredit.py +18 -0
  136. paddle_billing/Entities/Subscriptions/SubscriptionDetails.py +34 -0
  137. paddle_billing/Entities/Subscriptions/SubscriptionDiscount.py +19 -0
  138. paddle_billing/Entities/Subscriptions/SubscriptionEffectiveFrom.py +6 -0
  139. paddle_billing/Entities/Subscriptions/SubscriptionItem.py +35 -0
  140. paddle_billing/Entities/Subscriptions/SubscriptionItemStatus.py +7 -0
  141. paddle_billing/Entities/Subscriptions/SubscriptionItems.py +20 -0
  142. paddle_billing/Entities/Subscriptions/SubscriptionItemsWithPrice.py +19 -0
  143. paddle_billing/Entities/Subscriptions/SubscriptionManagementUrls.py +16 -0
  144. paddle_billing/Entities/Subscriptions/SubscriptionNextTransaction.py +23 -0
  145. paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPrice.py +30 -0
  146. paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPriceWithProduct.py +32 -0
  147. paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogProduct.py +26 -0
  148. paddle_billing/Entities/Subscriptions/SubscriptionOnPaymentFailure.py +6 -0
  149. paddle_billing/Entities/Subscriptions/SubscriptionPreviewSubscriptionUpdateSummary.py +22 -0
  150. paddle_billing/Entities/Subscriptions/SubscriptionPrice.py +28 -0
  151. paddle_billing/Entities/Subscriptions/SubscriptionProration.py +18 -0
  152. paddle_billing/Entities/Subscriptions/SubscriptionProrationBillingMode.py +9 -0
  153. paddle_billing/Entities/Subscriptions/SubscriptionResult.py +22 -0
  154. paddle_billing/Entities/Subscriptions/SubscriptionResultAction.py +6 -0
  155. paddle_billing/Entities/Subscriptions/SubscriptionResumeEffectiveFrom.py +5 -0
  156. paddle_billing/Entities/Subscriptions/SubscriptionScheduledChange.py +21 -0
  157. paddle_billing/Entities/Subscriptions/SubscriptionScheduledChangeAction.py +7 -0
  158. paddle_billing/Entities/Subscriptions/SubscriptionStatus.py +10 -0
  159. paddle_billing/Entities/Subscriptions/SubscriptionTimePeriod.py +17 -0
  160. paddle_billing/Entities/Subscriptions/SubscriptionTransactionItem.py +23 -0
  161. paddle_billing/Entities/Subscriptions/SubscriptionTransactionLineItem.py +33 -0
  162. paddle_billing/Entities/Subscriptions/SubscriptionUpdateItem.py +16 -0
  163. paddle_billing/Entities/Subscriptions/__init__.py +31 -0
  164. paddle_billing/Entities/Transaction.py +98 -0
  165. paddle_billing/Entities/TransactionData.py +15 -0
  166. paddle_billing/Entities/TransactionPreview.py +40 -0
  167. paddle_billing/Entities/Transactions/TransactionAdjustmentsTotals.py +30 -0
  168. paddle_billing/Entities/Transactions/TransactionBreakdown.py +18 -0
  169. paddle_billing/Entities/Transactions/TransactionCardType.py +14 -0
  170. paddle_billing/Entities/Transactions/TransactionCreateItem.py +16 -0
  171. paddle_billing/Entities/Transactions/TransactionCreateItemWithPrice.py +11 -0
  172. paddle_billing/Entities/Transactions/TransactionDetails.py +32 -0
  173. paddle_billing/Entities/Transactions/TransactionItem.py +24 -0
  174. paddle_billing/Entities/Transactions/TransactionItemPreviewWithNonCatalogPrice.py +21 -0
  175. paddle_billing/Entities/Transactions/TransactionItemPreviewWithPrice.py +24 -0
  176. paddle_billing/Entities/Transactions/TransactionItemPreviewWithPriceId.py +18 -0
  177. paddle_billing/Entities/Transactions/TransactionLineItem.py +35 -0
  178. paddle_billing/Entities/Transactions/TransactionNonCatalogPrice.py +39 -0
  179. paddle_billing/Entities/Transactions/TransactionNonCatalogPriceWithProduct.py +41 -0
  180. paddle_billing/Entities/Transactions/TransactionNonCatalogProduct.py +25 -0
  181. paddle_billing/Entities/Transactions/TransactionProration.py +18 -0
  182. paddle_billing/Entities/Transactions/TransactionTimePeriod.py +17 -0
  183. paddle_billing/Entities/Transactions/TransactionUpdateTransactionItem.py +8 -0
  184. paddle_billing/Entities/Transactions/__init__.py +20 -0
  185. paddle_billing/Entities/__init__.py +0 -0
  186. paddle_billing/EnumStringify.py +2 -0
  187. paddle_billing/Environment.py +14 -0
  188. paddle_billing/Exceptions/ApiError.py +28 -0
  189. paddle_billing/Exceptions/ApiErrors/AddressApiError.py +5 -0
  190. paddle_billing/Exceptions/ApiErrors/AdjustmentApiError.py +5 -0
  191. paddle_billing/Exceptions/ApiErrors/BusinessApiError.py +5 -0
  192. paddle_billing/Exceptions/ApiErrors/CustomerApiError.py +5 -0
  193. paddle_billing/Exceptions/ApiErrors/DiscountApiError.py +5 -0
  194. paddle_billing/Exceptions/ApiErrors/PriceApiError.py +5 -0
  195. paddle_billing/Exceptions/ApiErrors/ProductApiError.py +5 -0
  196. paddle_billing/Exceptions/ApiErrors/SubscriptionApiError.py +5 -0
  197. paddle_billing/Exceptions/ApiErrors/TransactionApiError.py +5 -0
  198. paddle_billing/Exceptions/ApiErrors/__init__.py +0 -0
  199. paddle_billing/Exceptions/FieldError.py +8 -0
  200. paddle_billing/Exceptions/SdkException.py +2 -0
  201. paddle_billing/Exceptions/SdkExceptions/InvalidArgumentException.py +8 -0
  202. paddle_billing/Exceptions/SdkExceptions/MalformedResponse.py +7 -0
  203. paddle_billing/Exceptions/SdkExceptions/__init__.py +0 -0
  204. paddle_billing/Exceptions/__init__.py +0 -0
  205. paddle_billing/FiltersNone.py +8 -0
  206. paddle_billing/FiltersUndefined.py +11 -0
  207. paddle_billing/HasParameters.py +11 -0
  208. paddle_billing/Logger/Formatter.py +18 -0
  209. paddle_billing/Logger/NullHandler.py +6 -0
  210. paddle_billing/Logger/__init__.py +30 -0
  211. paddle_billing/Notifications/Entities/Address.py +44 -0
  212. paddle_billing/Notifications/Entities/Adjustment.py +45 -0
  213. paddle_billing/Notifications/Entities/Adjustments/AdjustmentItem.py +26 -0
  214. paddle_billing/Notifications/Entities/Adjustments/__init__.py +1 -0
  215. paddle_billing/Notifications/Entities/Business.py +39 -0
  216. paddle_billing/Notifications/Entities/Businesses/BusinessesContacts.py +16 -0
  217. paddle_billing/Notifications/Entities/Businesses/__init__.py +1 -0
  218. paddle_billing/Notifications/Entities/Customer.py +36 -0
  219. paddle_billing/Notifications/Entities/DateTime.py +43 -0
  220. paddle_billing/Notifications/Entities/Discount.py +51 -0
  221. paddle_billing/Notifications/Entities/Discounts/DiscountStatus.py +8 -0
  222. paddle_billing/Notifications/Entities/Discounts/DiscountType.py +7 -0
  223. paddle_billing/Notifications/Entities/Discounts/__init__.py +2 -0
  224. paddle_billing/Notifications/Entities/Entity.py +12 -0
  225. paddle_billing/Notifications/Entities/Payout.py +24 -0
  226. paddle_billing/Notifications/Entities/Payouts/PayoutStatus.py +6 -0
  227. paddle_billing/Notifications/Entities/Payouts/__init__.py +1 -0
  228. paddle_billing/Notifications/Entities/Price.py +66 -0
  229. paddle_billing/Notifications/Entities/Product.py +45 -0
  230. paddle_billing/Notifications/Entities/Report.py +32 -0
  231. paddle_billing/Notifications/Entities/Reports/ReportFilter.py +20 -0
  232. paddle_billing/Notifications/Entities/Reports/ReportFilterName.py +17 -0
  233. paddle_billing/Notifications/Entities/Reports/ReportFilterOperator.py +6 -0
  234. paddle_billing/Notifications/Entities/Reports/ReportStatus.py +8 -0
  235. paddle_billing/Notifications/Entities/Reports/ReportType.py +10 -0
  236. paddle_billing/Notifications/Entities/Reports/__init__.py +5 -0
  237. paddle_billing/Notifications/Entities/Shared/Action.py +10 -0
  238. paddle_billing/Notifications/Entities/Shared/AddressPreview.py +18 -0
  239. paddle_billing/Notifications/Entities/Shared/AdjustmentItemTotals.py +18 -0
  240. paddle_billing/Notifications/Entities/Shared/AdjustmentProration.py +18 -0
  241. paddle_billing/Notifications/Entities/Shared/AdjustmentStatus.py +8 -0
  242. paddle_billing/Notifications/Entities/Shared/AdjustmentTimePeriod.py +17 -0
  243. paddle_billing/Notifications/Entities/Shared/AdjustmentTotals.py +26 -0
  244. paddle_billing/Notifications/Entities/Shared/AdjustmentType.py +8 -0
  245. paddle_billing/Notifications/Entities/Shared/AvailablePaymentMethods.py +11 -0
  246. paddle_billing/Notifications/Entities/Shared/BillingDetails.py +22 -0
  247. paddle_billing/Notifications/Entities/Shared/Card.py +24 -0
  248. paddle_billing/Notifications/Entities/Shared/CatalogType.py +6 -0
  249. paddle_billing/Notifications/Entities/Shared/ChargebackFee.py +18 -0
  250. paddle_billing/Notifications/Entities/Shared/Checkout.py +12 -0
  251. paddle_billing/Notifications/Entities/Shared/CollectionMode.py +6 -0
  252. paddle_billing/Notifications/Entities/Shared/CountryCode.py +233 -0
  253. paddle_billing/Notifications/Entities/Shared/CurrencyCode.py +34 -0
  254. paddle_billing/Notifications/Entities/Shared/CurrencyCodeAdjustments.py +7 -0
  255. paddle_billing/Notifications/Entities/Shared/CurrencyCodePayouts.py +17 -0
  256. paddle_billing/Notifications/Entities/Shared/CustomData.py +10 -0
  257. paddle_billing/Notifications/Entities/Shared/Data.py +9 -0
  258. paddle_billing/Notifications/Entities/Shared/ErrorCode.py +21 -0
  259. paddle_billing/Notifications/Entities/Shared/ImportMeta.py +16 -0
  260. paddle_billing/Notifications/Entities/Shared/Interval.py +8 -0
  261. paddle_billing/Notifications/Entities/Shared/MethodDetails.py +19 -0
  262. paddle_billing/Notifications/Entities/Shared/Money.py +28 -0
  263. paddle_billing/Notifications/Entities/Shared/Original.py +18 -0
  264. paddle_billing/Notifications/Entities/Shared/PaymentAttemptStatus.py +13 -0
  265. paddle_billing/Notifications/Entities/Shared/PaymentMethodType.py +15 -0
  266. paddle_billing/Notifications/Entities/Shared/PayoutTotalsAdjustment.py +29 -0
  267. paddle_billing/Notifications/Entities/Shared/PriceQuantity.py +16 -0
  268. paddle_billing/Notifications/Entities/Shared/Status.py +6 -0
  269. paddle_billing/Notifications/Entities/Shared/TaxCategory.py +13 -0
  270. paddle_billing/Notifications/Entities/Shared/TaxMode.py +7 -0
  271. paddle_billing/Notifications/Entities/Shared/TaxRatesUsed.py +18 -0
  272. paddle_billing/Notifications/Entities/Shared/TimePeriod.py +18 -0
  273. paddle_billing/Notifications/Entities/Shared/Totals.py +20 -0
  274. paddle_billing/Notifications/Entities/Shared/TransactionOrigin.py +10 -0
  275. paddle_billing/Notifications/Entities/Shared/TransactionPaymentAttempt.py +35 -0
  276. paddle_billing/Notifications/Entities/Shared/TransactionPayoutTotals.py +36 -0
  277. paddle_billing/Notifications/Entities/Shared/TransactionPayoutTotalsAdjusted.py +29 -0
  278. paddle_billing/Notifications/Entities/Shared/TransactionStatus.py +11 -0
  279. paddle_billing/Notifications/Entities/Shared/TransactionTotals.py +36 -0
  280. paddle_billing/Notifications/Entities/Shared/TransactionTotalsAdjusted.py +28 -0
  281. paddle_billing/Notifications/Entities/Shared/UnitPriceOverride.py +19 -0
  282. paddle_billing/Notifications/Entities/Shared/UnitTotals.py +20 -0
  283. paddle_billing/Notifications/Entities/Shared/__init__.py +46 -0
  284. paddle_billing/Notifications/Entities/Subscription.py +76 -0
  285. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionAdjustmentItem.py +24 -0
  286. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionCharge.py +18 -0
  287. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionCredit.py +18 -0
  288. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionDiscount.py +19 -0
  289. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionEffectiveFrom.py +6 -0
  290. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionItem.py +35 -0
  291. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionItemStatus.py +7 -0
  292. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionOnPaymentFailure.py +6 -0
  293. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionPrice.py +28 -0
  294. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionScheduledChange.py +21 -0
  295. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionScheduledChangeAction.py +7 -0
  296. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionStatus.py +10 -0
  297. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionTimePeriod.py +17 -0
  298. paddle_billing/Notifications/Entities/Subscriptions/__init__.py +13 -0
  299. paddle_billing/Notifications/Entities/Transaction.py +75 -0
  300. paddle_billing/Notifications/Entities/Transactions/TransactionAdjustmentsTotals.py +30 -0
  301. paddle_billing/Notifications/Entities/Transactions/TransactionBreakdown.py +18 -0
  302. paddle_billing/Notifications/Entities/Transactions/TransactionCardType.py +14 -0
  303. paddle_billing/Notifications/Entities/Transactions/TransactionDetails.py +32 -0
  304. paddle_billing/Notifications/Entities/Transactions/TransactionItem.py +24 -0
  305. paddle_billing/Notifications/Entities/Transactions/TransactionLineItem.py +35 -0
  306. paddle_billing/Notifications/Entities/Transactions/TransactionProration.py +18 -0
  307. paddle_billing/Notifications/Entities/Transactions/TransactionTimePeriod.py +17 -0
  308. paddle_billing/Notifications/Entities/Transactions/__init__.py +11 -0
  309. paddle_billing/Notifications/Entities/__init__.py +0 -0
  310. paddle_billing/Notifications/Events/AddressCreated.py +17 -0
  311. paddle_billing/Notifications/Events/AddressUpdated.py +17 -0
  312. paddle_billing/Notifications/Events/AdjustmentCreated.py +17 -0
  313. paddle_billing/Notifications/Events/AdjustmentUpdated.py +17 -0
  314. paddle_billing/Notifications/Events/BusinessCreated.py +17 -0
  315. paddle_billing/Notifications/Events/BusinessUpdated.py +17 -0
  316. paddle_billing/Notifications/Events/CustomerCreated.py +17 -0
  317. paddle_billing/Notifications/Events/CustomerUpdated.py +17 -0
  318. paddle_billing/Notifications/Events/DiscountCreated.py +17 -0
  319. paddle_billing/Notifications/Events/DiscountImported.py +17 -0
  320. paddle_billing/Notifications/Events/DiscountUpdated.py +17 -0
  321. paddle_billing/Notifications/Events/PayoutCreated.py +17 -0
  322. paddle_billing/Notifications/Events/PayoutPaid.py +17 -0
  323. paddle_billing/Notifications/Events/PriceCreated.py +17 -0
  324. paddle_billing/Notifications/Events/PriceUpdated.py +17 -0
  325. paddle_billing/Notifications/Events/ProductCreated.py +17 -0
  326. paddle_billing/Notifications/Events/ProductUpdated.py +17 -0
  327. paddle_billing/Notifications/Events/ReportCreated.py +17 -0
  328. paddle_billing/Notifications/Events/ReportUpdated.py +17 -0
  329. paddle_billing/Notifications/Events/SubscriptionActivated.py +17 -0
  330. paddle_billing/Notifications/Events/SubscriptionCanceled.py +17 -0
  331. paddle_billing/Notifications/Events/SubscriptionCreated.py +17 -0
  332. paddle_billing/Notifications/Events/SubscriptionImported.py +17 -0
  333. paddle_billing/Notifications/Events/SubscriptionPastDue.py +17 -0
  334. paddle_billing/Notifications/Events/SubscriptionPaused.py +17 -0
  335. paddle_billing/Notifications/Events/SubscriptionResumed.py +17 -0
  336. paddle_billing/Notifications/Events/SubscriptionTrialing.py +17 -0
  337. paddle_billing/Notifications/Events/SubscriptionUpdated.py +17 -0
  338. paddle_billing/Notifications/Events/TransactionBilled.py +17 -0
  339. paddle_billing/Notifications/Events/TransactionCanceled.py +17 -0
  340. paddle_billing/Notifications/Events/TransactionCompleted.py +16 -0
  341. paddle_billing/Notifications/Events/TransactionCreated.py +17 -0
  342. paddle_billing/Notifications/Events/TransactionPaid.py +17 -0
  343. paddle_billing/Notifications/Events/TransactionPastDue.py +17 -0
  344. paddle_billing/Notifications/Events/TransactionPaymentFailed.py +17 -0
  345. paddle_billing/Notifications/Events/TransactionReady.py +17 -0
  346. paddle_billing/Notifications/Events/TransactionUpdated.py +17 -0
  347. paddle_billing/Notifications/Events/__init__.py +0 -0
  348. paddle_billing/Notifications/PaddleSignature.py +128 -0
  349. paddle_billing/Notifications/Secret.py +8 -0
  350. paddle_billing/Notifications/Verifier.py +55 -0
  351. paddle_billing/Notifications/__init__.py +3 -0
  352. paddle_billing/Options.py +10 -0
  353. paddle_billing/PaddleStrEnum.py +44 -0
  354. paddle_billing/RecursivelyRemoveKey.py +14 -0
  355. paddle_billing/Resources/Addresses/AddressesClient.py +58 -0
  356. paddle_billing/Resources/Addresses/Operations/CreateAddress.py +20 -0
  357. paddle_billing/Resources/Addresses/Operations/ListAddresses.py +42 -0
  358. paddle_billing/Resources/Addresses/Operations/UpdateAddress.py +21 -0
  359. paddle_billing/Resources/Addresses/Operations/__init__.py +3 -0
  360. paddle_billing/Resources/Addresses/__init__.py +0 -0
  361. paddle_billing/Resources/Adjustments/AdjustmentsClient.py +36 -0
  362. paddle_billing/Resources/Adjustments/Operations/Create/AdjustmentItem.py +11 -0
  363. paddle_billing/Resources/Adjustments/Operations/Create/__init__.py +0 -0
  364. paddle_billing/Resources/Adjustments/Operations/CreateAdjustment.py +28 -0
  365. paddle_billing/Resources/Adjustments/Operations/ListAdjustments.py +60 -0
  366. paddle_billing/Resources/Adjustments/Operations/__init__.py +3 -0
  367. paddle_billing/Resources/Adjustments/__init__.py +0 -0
  368. paddle_billing/Resources/Businesses/BusinessesClient.py +58 -0
  369. paddle_billing/Resources/Businesses/Operations/CreateBusiness.py +17 -0
  370. paddle_billing/Resources/Businesses/Operations/ListBusinesses.py +45 -0
  371. paddle_billing/Resources/Businesses/Operations/UpdateBusiness.py +18 -0
  372. paddle_billing/Resources/Businesses/Operations/__init__.py +3 -0
  373. paddle_billing/Resources/Businesses/__init__.py +0 -0
  374. paddle_billing/Resources/Customers/CustomersClient.py +65 -0
  375. paddle_billing/Resources/Customers/Operations/CreateCustomer.py +16 -0
  376. paddle_billing/Resources/Customers/Operations/ListCreditBalances.py +28 -0
  377. paddle_billing/Resources/Customers/Operations/ListCustomers.py +50 -0
  378. paddle_billing/Resources/Customers/Operations/UpdateCustomer.py +17 -0
  379. paddle_billing/Resources/Customers/Operations/__init__.py +4 -0
  380. paddle_billing/Resources/Customers/__init__.py +0 -0
  381. paddle_billing/Resources/Discounts/DiscountsClient.py +55 -0
  382. paddle_billing/Resources/Discounts/Operations/CreateDiscount.py +24 -0
  383. paddle_billing/Resources/Discounts/Operations/ListDiscounts.py +46 -0
  384. paddle_billing/Resources/Discounts/Operations/UpdateDiscount.py +25 -0
  385. paddle_billing/Resources/Discounts/Operations/__init__.py +3 -0
  386. paddle_billing/Resources/Discounts/__init__.py +0 -0
  387. paddle_billing/Resources/EventTypes/EventTypesClient.py +22 -0
  388. paddle_billing/Resources/EventTypes/__init__.py +0 -0
  389. paddle_billing/Resources/Events/EventsClient.py +26 -0
  390. paddle_billing/Resources/Events/Operations/ListEvents.py +12 -0
  391. paddle_billing/Resources/Events/Operations/__init__.py +1 -0
  392. paddle_billing/Resources/Events/__init__.py +0 -0
  393. paddle_billing/Resources/NotificationLogs/NotificationLogsClient.py +26 -0
  394. paddle_billing/Resources/NotificationLogs/Operations/ListNotificationLogs.py +11 -0
  395. paddle_billing/Resources/NotificationLogs/Operations/__init__.py +1 -0
  396. paddle_billing/Resources/NotificationLogs/__init__.py +0 -0
  397. paddle_billing/Resources/NotificationSettings/NotificationSettingsClient.py +54 -0
  398. paddle_billing/Resources/NotificationSettings/Operations/CreateNotificationSetting.py +21 -0
  399. paddle_billing/Resources/NotificationSettings/Operations/UpdateNotificationSetting.py +20 -0
  400. paddle_billing/Resources/NotificationSettings/Operations/__init__.py +2 -0
  401. paddle_billing/Resources/NotificationSettings/__init__.py +0 -0
  402. paddle_billing/Resources/Notifications/NotificationsClient.py +44 -0
  403. paddle_billing/Resources/Notifications/Operations/ListNotifications.py +58 -0
  404. paddle_billing/Resources/Notifications/Operations/__init__.py +1 -0
  405. paddle_billing/Resources/Notifications/__init__.py +0 -0
  406. paddle_billing/Resources/Prices/Operations/CreatePrice.py +23 -0
  407. paddle_billing/Resources/Prices/Operations/List/Includes.py +5 -0
  408. paddle_billing/Resources/Prices/Operations/List/__init__.py +0 -0
  409. paddle_billing/Resources/Prices/Operations/ListPrices.py +62 -0
  410. paddle_billing/Resources/Prices/Operations/UpdatePrice.py +23 -0
  411. paddle_billing/Resources/Prices/Operations/__init__.py +4 -0
  412. paddle_billing/Resources/Prices/PricesClient.py +65 -0
  413. paddle_billing/Resources/Prices/__init__.py +0 -0
  414. paddle_billing/Resources/PricingPreviews/Operations/PreviewPrice.py +20 -0
  415. paddle_billing/Resources/PricingPreviews/Operations/__init__.py +1 -0
  416. paddle_billing/Resources/PricingPreviews/PricingPreviewsClient.py +20 -0
  417. paddle_billing/Resources/PricingPreviews/__init__.py +0 -0
  418. paddle_billing/Resources/Products/Operations/CreateProduct.py +18 -0
  419. paddle_billing/Resources/Products/Operations/List/Includes.py +5 -0
  420. paddle_billing/Resources/Products/Operations/List/__init__.py +0 -0
  421. paddle_billing/Resources/Products/Operations/ListProducts.py +59 -0
  422. paddle_billing/Resources/Products/Operations/UpdateProduct.py +19 -0
  423. paddle_billing/Resources/Products/Operations/__init__.py +4 -0
  424. paddle_billing/Resources/Products/ProductsClient.py +70 -0
  425. paddle_billing/Resources/Products/__init__.py +0 -0
  426. paddle_billing/Resources/Reports/Operations/CreateReport.py +27 -0
  427. paddle_billing/Resources/Reports/Operations/ListReports.py +35 -0
  428. paddle_billing/Resources/Reports/Operations/__init__.py +2 -0
  429. paddle_billing/Resources/Reports/ReportsClient.py +51 -0
  430. paddle_billing/Resources/Reports/__init__.py +0 -0
  431. paddle_billing/Resources/Shared/Operations/List/Comparator.py +8 -0
  432. paddle_billing/Resources/Shared/Operations/List/DateComparison.py +31 -0
  433. paddle_billing/Resources/Shared/Operations/List/OrderBy.py +21 -0
  434. paddle_billing/Resources/Shared/Operations/List/Pager.py +24 -0
  435. paddle_billing/Resources/Shared/Operations/List/__init__.py +0 -0
  436. paddle_billing/Resources/Shared/Operations/__init__.py +4 -0
  437. paddle_billing/Resources/Shared/__init__.py +0 -0
  438. paddle_billing/Resources/Subscriptions/Operations/CancelSubscription.py +12 -0
  439. paddle_billing/Resources/Subscriptions/Operations/CreateOneTimeCharge.py +22 -0
  440. paddle_billing/Resources/Subscriptions/Operations/Get/Includes.py +6 -0
  441. paddle_billing/Resources/Subscriptions/Operations/Get/__init__.py +0 -0
  442. paddle_billing/Resources/Subscriptions/Operations/ListSubscriptions.py +59 -0
  443. paddle_billing/Resources/Subscriptions/Operations/PauseSubscription.py +19 -0
  444. paddle_billing/Resources/Subscriptions/Operations/PreviewOneTimeCharge.py +22 -0
  445. paddle_billing/Resources/Subscriptions/Operations/PreviewUpdateSubscription.py +37 -0
  446. paddle_billing/Resources/Subscriptions/Operations/ResumeSubscription.py +17 -0
  447. paddle_billing/Resources/Subscriptions/Operations/Update/SubscriptionDiscount.py +9 -0
  448. paddle_billing/Resources/Subscriptions/Operations/Update/__init__.py +0 -0
  449. paddle_billing/Resources/Subscriptions/Operations/UpdateSubscription.py +37 -0
  450. paddle_billing/Resources/Subscriptions/Operations/__init__.py +10 -0
  451. paddle_billing/Resources/Subscriptions/SubscriptionsClient.py +121 -0
  452. paddle_billing/Resources/Subscriptions/__init__.py +0 -0
  453. paddle_billing/Resources/Transactions/Operations/CreateTransaction.py +25 -0
  454. paddle_billing/Resources/Transactions/Operations/List/Includes.py +11 -0
  455. paddle_billing/Resources/Transactions/Operations/List/Origin.py +10 -0
  456. paddle_billing/Resources/Transactions/Operations/List/__init__.py +0 -0
  457. paddle_billing/Resources/Transactions/Operations/ListTransactions.py +86 -0
  458. paddle_billing/Resources/Transactions/Operations/PreviewTransaction.py +24 -0
  459. paddle_billing/Resources/Transactions/Operations/UpdateTransaction.py +25 -0
  460. paddle_billing/Resources/Transactions/Operations/__init__.py +6 -0
  461. paddle_billing/Resources/Transactions/TransactionsClient.py +90 -0
  462. paddle_billing/Resources/Transactions/__init__.py +0 -0
  463. paddle_billing/Resources/__init__.py +0 -0
  464. paddle_billing/ResponseParser.py +65 -0
  465. paddle_billing/Undefined.py +2 -0
  466. paddle_billing/__init__.py +4 -0
  467. paddle_python_sdk-0.1.0.dist-info/LICENSE +190 -0
  468. paddle_python_sdk-0.1.0.dist-info/METADATA +184 -0
  469. paddle_python_sdk-0.1.0.dist-info/RECORD +517 -0
  470. paddle_python_sdk-0.1.0.dist-info/WHEEL +5 -0
  471. paddle_python_sdk-0.1.0.dist-info/top_level.txt +3 -0
  472. tests/Functional/Resources/Addresses/__init__.py +0 -0
  473. tests/Functional/Resources/Addresses/test_AddressesClient.py +274 -0
  474. tests/Functional/Resources/Adjustments/__init__.py +0 -0
  475. tests/Functional/Resources/Adjustments/test_AdjustmentsClient.py +188 -0
  476. tests/Functional/Resources/Businesses/__init__.py +0 -0
  477. tests/Functional/Resources/Businesses/test_BusinessesClient.py +279 -0
  478. tests/Functional/Resources/Customers/__init__.py +0 -0
  479. tests/Functional/Resources/Customers/test_CustomersClient.py +291 -0
  480. tests/Functional/Resources/Discounts/__init__.py +0 -0
  481. tests/Functional/Resources/Discounts/test_DiscountsClient.py +280 -0
  482. tests/Functional/Resources/EventTypes/__init__.py +0 -0
  483. tests/Functional/Resources/EventTypes/test_EventTypesClient.py +43 -0
  484. tests/Functional/Resources/Events/__init__.py +0 -0
  485. tests/Functional/Resources/Events/test_EventsClient.py +64 -0
  486. tests/Functional/Resources/NotificationLogs/__init__.py +0 -0
  487. tests/Functional/Resources/NotificationLogs/test_NotificationLogsClient.py +68 -0
  488. tests/Functional/Resources/NotificationSettings/__init__.py +0 -0
  489. tests/Functional/Resources/NotificationSettings/test_NotificationSettingsClient.py +287 -0
  490. tests/Functional/Resources/Notifications/__init__.py +0 -0
  491. tests/Functional/Resources/Notifications/test_NotificationsClient.py +202 -0
  492. tests/Functional/Resources/Prices/__init__.py +0 -0
  493. tests/Functional/Resources/Prices/test_PricesClient.py +307 -0
  494. tests/Functional/Resources/PricingPreviews/__init__.py +0 -0
  495. tests/Functional/Resources/PricingPreviews/test_PricingPreviewsClient.py +92 -0
  496. tests/Functional/Resources/Products/__init__.py +0 -0
  497. tests/Functional/Resources/Products/test_ProductsClient.py +271 -0
  498. tests/Functional/Resources/Reports/__init__.py +0 -0
  499. tests/Functional/Resources/Reports/test_ReportsClient.py +197 -0
  500. tests/Functional/Resources/Subscriptions/__init__.py +0 -0
  501. tests/Functional/Resources/Subscriptions/test_SubscriptionsClient.py +758 -0
  502. tests/Functional/Resources/Transactions/__init__.py +0 -0
  503. tests/Functional/Resources/Transactions/test_TransactionsClient.py +585 -0
  504. tests/Functional/Resources/__init__.py +0 -0
  505. tests/Functional/__init__.py +0 -0
  506. tests/Unit/Logger/__init__.py +0 -0
  507. tests/Unit/Logger/test_Logger.py +10 -0
  508. tests/Unit/Notification/__init__.py +0 -0
  509. tests/Unit/Notification/test_Verifier.py +63 -0
  510. tests/Unit/PaddleStrEnum/__init__.py +0 -0
  511. tests/Unit/PaddleStrEnum/test_PaddleStrEnum.py +52 -0
  512. tests/Unit/__init__.py +0 -0
  513. tests/Utils/FakeResponse.py +6 -0
  514. tests/Utils/ReadsFixture.py +33 -0
  515. tests/Utils/TestClient.py +48 -0
  516. tests/Utils/__init__.py +1 -0
  517. tests/__init__.py +0 -0
@@ -0,0 +1,8 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class DiscountStatus(PaddleStrEnum):
5
+ Active = 'active'
6
+ Archived = 'archived'
7
+ Expired = 'expired'
8
+ Used = 'used'
@@ -0,0 +1,7 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class DiscountType(PaddleStrEnum):
5
+ Flat = 'flat'
6
+ FlatPerSeat = 'flat_per_seat'
7
+ Percentage = 'percentage'
@@ -0,0 +1,2 @@
1
+ from paddle_billing.Entities.Discounts.DiscountStatus import DiscountStatus
2
+ from paddle_billing.Entities.Discounts.DiscountType import DiscountType
@@ -0,0 +1,12 @@
1
+ from __future__ import annotations
2
+ from abc import ABC, abstractmethod
3
+
4
+
5
+ class Entity(ABC):
6
+ @classmethod
7
+ @abstractmethod
8
+ def from_dict(cls, data: dict):
9
+ """
10
+ A static factory for the entity that conforms to the Paddle API.
11
+ """
12
+ pass
@@ -0,0 +1,51 @@
1
+ from __future__ import annotations
2
+ from abc import ABC
3
+ from dataclasses import dataclass
4
+ from datetime import datetime
5
+ from importlib import import_module
6
+
7
+ from paddle_billing.ConditionallyRemoveImportMeta import conditionally_remove_import_meta
8
+
9
+ from paddle_billing.Entities.Entity import Entity
10
+ from paddle_billing.Entities.Events import EventTypeName
11
+
12
+ from paddle_billing.Notifications.Entities.Entity import Entity as NotificationEntity
13
+
14
+
15
+ @dataclass
16
+ class Event(Entity, ABC):
17
+ event_id: str
18
+ event_type: EventTypeName
19
+ occurred_at: datetime
20
+ data: NotificationEntity
21
+
22
+
23
+ @classmethod
24
+ def from_dict(cls, data: dict) -> Event:
25
+ _type = data['event_type'].split('.')[0] or ''
26
+
27
+ entity_class_name = data['event_type'].split('.')[0].lower().title()
28
+ entity_class = None
29
+ instantiated_class = None
30
+ entity_module_path = 'paddle_billing.Notifications.Entities'
31
+
32
+ try:
33
+ imported_module = import_module(f"{entity_module_path}.{entity_class_name}")
34
+ entity_class = getattr(imported_module, entity_class_name)
35
+
36
+ conditionally_remove_import_meta(entity_class, data)
37
+ instantiated_class = entity_class # (**data['data'])
38
+ except Exception as error:
39
+ print(f"Error dynamically instantiating a '{entity_module_path}.{entity_class_name}' object: {error}")
40
+
41
+ if not entity_class:
42
+ raise ValueError(f"Event type '{entity_class_name}' cannot be mapped to an object")
43
+ if not issubclass(entity_class, NotificationEntity):
44
+ raise ValueError(f"Event type '{_type}' is not of NotificationEntity")
45
+
46
+ return Event(
47
+ data['event_id'],
48
+ EventTypeName(data['event_type']),
49
+ datetime.fromisoformat(data['occurred_at']),
50
+ instantiated_class.from_dict(data['data']),
51
+ )
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+ from paddle_billing.Entities.Entity import Entity
5
+ from paddle_billing.Entities.Events import EventTypeName
6
+
7
+
8
+ @dataclass
9
+ class EventType(Entity):
10
+ name: EventTypeName
11
+ description: str
12
+ group: str
13
+ available_versions: list
14
+
15
+
16
+ @classmethod
17
+ def from_dict(cls, data: dict) -> EventType:
18
+ return EventType(
19
+ name = EventTypeName(data['name']),
20
+ description = data['description'],
21
+ group = data['group'],
22
+ available_versions = data['available_versions'],
23
+ )
@@ -0,0 +1,52 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class EventTypeName(PaddleStrEnum):
5
+ AddressCreated = 'address.created'
6
+ AddressImported = 'address.imported'
7
+ AddressUpdated = 'address.updated'
8
+ AdjustmentCreated = 'adjustment.created'
9
+ AdjustmentUpdated = 'adjustment.updated'
10
+ BusinessCreated = 'business.created'
11
+ BusinessImported = 'business.imported'
12
+ BusinessUpdated = 'business.updated'
13
+ CustomerCreated = 'customer.created'
14
+ CustomerImported = 'customer.imported'
15
+ CustomerUpdated = 'customer.updated'
16
+ DiscountCreated = 'discount.created'
17
+ DiscountImported = 'discount.imported'
18
+ DiscountUpdated = 'discount.updated'
19
+ InvoiceCanceled = 'invoice.canceled'
20
+ InvoiceCreated = 'invoice.created'
21
+ InvoiceIssued = 'invoice.issued'
22
+ InvoiceOverdue = 'invoice.overdue'
23
+ InvoicePaid = 'invoice.paid'
24
+ InvoiceScheduled = 'invoice.scheduled'
25
+ PayoutCreated = 'payout.created'
26
+ PayoutPaid = 'payout.paid'
27
+ PriceCreated = 'price.created'
28
+ PriceUpdated = 'price.updated'
29
+ PriceImported = 'price.imported'
30
+ ProductCreated = 'product.created'
31
+ ProductUpdated = 'product.updated'
32
+ ProductImported = 'product.imported'
33
+ SubscriptionActivated = 'subscription.activated'
34
+ SubscriptionCanceled = 'subscription.canceled'
35
+ SubscriptionCreated = 'subscription.created'
36
+ SubscriptionImported = 'subscription.imported'
37
+ SubscriptionPastDue = 'subscription.past_due'
38
+ SubscriptionPaused = 'subscription.paused'
39
+ SubscriptionResumed = 'subscription.resumed'
40
+ SubscriptionTrialing = 'subscription.trialing'
41
+ SubscriptionUpdated = 'subscription.updated'
42
+ TransactionBilled = 'transaction.billed'
43
+ TransactionCanceled = 'transaction.canceled'
44
+ TransactionCompleted = 'transaction.completed'
45
+ TransactionCreated = 'transaction.created'
46
+ TransactionPaid = 'transaction.paid'
47
+ TransactionPastDue = 'transaction.past_due'
48
+ TransactionPaymentFailed = 'transaction.payment_failed'
49
+ TransactionReady = 'transaction.ready'
50
+ TransactionUpdated = 'transaction.updated'
51
+ ReportCreated = 'report.created'
52
+ ReportUpdated = 'report.updated'
@@ -0,0 +1 @@
1
+ from paddle_billing.Entities.Events.EventTypeName import EventTypeName
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+ from datetime import datetime
4
+
5
+ from paddle_billing.Entities.Entity import Entity
6
+ from paddle_billing.Entities.Event import Event
7
+ from paddle_billing.Entities.Events import EventTypeName
8
+ from paddle_billing.Entities.Notifications import NotificationOrigin, NotificationStatus
9
+
10
+
11
+ @dataclass
12
+ class Notification(Entity):
13
+ id: str
14
+ type: EventTypeName
15
+ status: NotificationStatus
16
+ payload: Event
17
+ occurred_at: datetime
18
+ delivered_at: datetime | None
19
+ replayed_at: datetime | None
20
+ origin: NotificationOrigin
21
+ last_attempt_at: datetime | None
22
+ retry_at: datetime | None
23
+ times_attempted: int
24
+ notification_setting_id: str
25
+
26
+
27
+ @classmethod
28
+ def from_dict(cls, data: dict) -> Notification:
29
+ return Notification(
30
+ id = data['id'],
31
+ type = EventTypeName(data['type']),
32
+ status = NotificationStatus(data['status']),
33
+ payload = Event.from_dict(data['payload']),
34
+ occurred_at = datetime.fromisoformat(data['occurred_at']),
35
+ origin = NotificationOrigin(data['origin']),
36
+ times_attempted = data['times_attempted'],
37
+ notification_setting_id = data['notification_setting_id'],
38
+ delivered_at = datetime.fromisoformat(data['delivered_at']) if data.get('delivered_at') else None,
39
+ replayed_at = datetime.fromisoformat(data['replayed_at']) if data.get('replayed_at') else None,
40
+ last_attempt_at = datetime.fromisoformat(data['last_attempt_at']) if data.get('last_attempt_at') else None,
41
+ retry_at = datetime.fromisoformat(data['retry_at']) if data.get('retry_at') else None,
42
+ )
@@ -0,0 +1,25 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+ from datetime import datetime
4
+
5
+ from paddle_billing.Entities.Entity import Entity
6
+
7
+
8
+ @dataclass
9
+ class NotificationLog(Entity):
10
+ id: str
11
+ response_code: int
12
+ response_content_type: str | None
13
+ response_body: str
14
+ attempted_at: datetime
15
+
16
+
17
+ @classmethod
18
+ def from_dict(cls, data: dict) -> NotificationLog:
19
+ return NotificationLog(
20
+ id = data['id'],
21
+ response_code = data['response_code'],
22
+ response_content_type = data.get('response_content_type'),
23
+ response_body = data['response_body'],
24
+ attempted_at = datetime.fromisoformat(data['attempted_at']),
25
+ )
@@ -0,0 +1,34 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+ from paddle_billing.Entities.Entity import Entity
5
+ from paddle_billing.Entities.EventType import EventType
6
+ from paddle_billing.Entities.NotificationSettings import NotificationSettingType
7
+
8
+
9
+ @dataclass
10
+ class NotificationSetting(Entity):
11
+ id: str
12
+ description: str
13
+ type: NotificationSettingType
14
+ destination: str
15
+ active: bool
16
+ api_version: int
17
+ include_sensitive_fields: bool
18
+ subscribed_events: list[EventType]
19
+ endpoint_secret_key: str
20
+
21
+
22
+ @classmethod
23
+ def from_dict(cls, data: dict) -> NotificationSetting:
24
+ return NotificationSetting(
25
+ id = data['id'],
26
+ description = data['description'],
27
+ type = NotificationSettingType(data['type']),
28
+ destination = data['destination'],
29
+ active = data['active'],
30
+ api_version = data['api_version'],
31
+ include_sensitive_fields = data['include_sensitive_fields'],
32
+ subscribed_events = [EventType.from_dict(event) for event in data.get('subscribed_events', [])],
33
+ endpoint_secret_key = data['endpoint_secret_key'],
34
+ )
@@ -0,0 +1,6 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class NotificationSettingType(PaddleStrEnum):
5
+ Email = 'email'
6
+ Url = 'url'
@@ -0,0 +1 @@
1
+ from paddle_billing.Entities.NotificationSettings.NotificationSettingType import NotificationSettingType
@@ -0,0 +1,6 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class NotificationOrigin(PaddleStrEnum):
5
+ Event = 'event'
6
+ Replay = 'replay'
@@ -0,0 +1,24 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+ from paddle_billing.Entities.Entity import Entity
5
+ from paddle_billing.Entities.Notifications import NotificationPayoutStatus
6
+ from paddle_billing.Entities.Shared import CurrencyCodePayouts
7
+
8
+
9
+ @dataclass
10
+ class NotificationPayout(Entity):
11
+ id: str
12
+ status: NotificationPayoutStatus
13
+ amount: str
14
+ currency_code: CurrencyCodePayouts
15
+
16
+
17
+ @classmethod
18
+ def from_dict(cls, data: dict) -> NotificationPayout:
19
+ return NotificationPayout(
20
+ id = data['id'],
21
+ status = NotificationPayoutStatus(data['status']),
22
+ amount = data['amount'],
23
+ currency_code = CurrencyCodePayouts(data['currency_code']),
24
+ )
@@ -0,0 +1,6 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class NotificationPayoutStatus(PaddleStrEnum):
5
+ Unpaid = 'unpaid'
6
+ Paid = 'paid'
@@ -0,0 +1,8 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class NotificationStatus(PaddleStrEnum):
5
+ NotAttempted = 'not_attempted'
6
+ NeedsRetry = 'needs_retry'
7
+ Delivered = 'delivered'
8
+ Failed = 'failed'
@@ -0,0 +1,4 @@
1
+ from paddle_billing.Entities.Notifications.NotificationOrigin import NotificationOrigin
2
+ from paddle_billing.Entities.Notifications.NotificationPayout import NotificationPayout
3
+ from paddle_billing.Entities.Notifications.NotificationPayoutStatus import NotificationPayoutStatus
4
+ from paddle_billing.Entities.Notifications.NotificationStatus import NotificationStatus
@@ -0,0 +1,68 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+ from datetime import datetime
4
+
5
+ from paddle_billing.Entities.Entity import Entity
6
+ from paddle_billing.Entities.Shared import (
7
+ CatalogType,
8
+ CustomData,
9
+ ImportMeta,
10
+ Money,
11
+ PriceQuantity,
12
+ Status,
13
+ TaxMode,
14
+ TimePeriod,
15
+ UnitPriceOverride,
16
+ )
17
+
18
+ from paddle_billing.Logger import get_logger
19
+ log = get_logger()
20
+
21
+
22
+ @dataclass
23
+ class Price(Entity):
24
+ id: str
25
+ product_id: str
26
+ name: str | None
27
+ description: str
28
+ type: CatalogType | None
29
+ billing_cycle: TimePeriod | None
30
+ trial_period: TimePeriod | None
31
+ tax_mode: TaxMode
32
+ unit_price: Money
33
+ unit_price_overrides: list[UnitPriceOverride]
34
+ quantity: PriceQuantity
35
+ status: Status
36
+ custom_data: CustomData | None
37
+ import_meta: ImportMeta | None
38
+ product: Product | None
39
+ created_at: datetime
40
+ updated_at: datetime
41
+
42
+
43
+ @classmethod
44
+ def from_dict(cls, data: dict) -> Price:
45
+ return Price(
46
+ id = data['id'],
47
+ product_id = data['product_id'],
48
+ name = data.get('name'),
49
+ description = data['description'],
50
+ unit_price = Money.from_dict(data['unit_price']),
51
+ quantity = PriceQuantity.from_dict(data['quantity']),
52
+ status = Status(data['status']),
53
+ tax_mode = TaxMode(data.get('tax_mode')),
54
+ created_at = datetime.fromisoformat(data['created_at']),
55
+ updated_at = datetime.fromisoformat(data['updated_at']),
56
+ unit_price_overrides = [UnitPriceOverride.from_dict(override) for override in data.get('unit_price_overrides', [])],
57
+ type = CatalogType(data.get('type')) if data.get('type') else None,
58
+ billing_cycle = TimePeriod.from_dict(data['billing_cycle']) if data.get('billing_cycle') else None,
59
+ trial_period = TimePeriod.from_dict(data['trial_period']) if data.get('trial_period') else None,
60
+ custom_data = CustomData(data['custom_data']) if data.get('custom_data') else None,
61
+ import_meta = ImportMeta.from_dict(data['import_meta']) if data.get('import_meta') else None,
62
+ product = Product.from_dict(data['product']) if data.get('product') else None,
63
+ )
64
+
65
+
66
+
67
+ # Prevents circular import
68
+ from paddle_billing.Entities.Product import Product # noqa E402
@@ -0,0 +1,34 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+ from paddle_billing.Entities.Entity import Entity
5
+ from paddle_billing.Entities.Shared import AddressPreview, AvailablePaymentMethods, CurrencyCode
6
+ from paddle_billing.Entities.PricingPreviews import PricePreviewDetails
7
+
8
+
9
+ @dataclass
10
+ class PricePreview(Entity):
11
+ customer_id: str | None
12
+ address_id: str | None
13
+ business_id: str | None
14
+ currency_code: CurrencyCode
15
+ discount_id: str | None
16
+ address: AddressPreview | None
17
+ customer_ip_address: str | None
18
+ details: PricePreviewDetails
19
+ available_payment_methods: list[AvailablePaymentMethods]
20
+
21
+
22
+ @classmethod
23
+ def from_dict(cls, data: dict) -> PricePreview:
24
+ return PricePreview(
25
+ customer_id = data.get('customer_id'),
26
+ address_id = data.get('address_id'),
27
+ business_id = data.get('business_id'),
28
+ currency_code = CurrencyCode(data['currency_code']),
29
+ discount_id = data.get('discount_id'),
30
+ address = AddressPreview.from_dict(data['address']) if data.get('address') else None,
31
+ customer_ip_address = data.get('customer_ip_address'),
32
+ details = PricePreviewDetails.from_dict(data['details']),
33
+ available_payment_methods = [AvailablePaymentMethods(item) for item in data['available_payment_methods']],
34
+ )
@@ -0,0 +1,15 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+ from paddle_billing.Entities.Entity import Entity
5
+ from paddle_billing.Entities.PricingPreviews.PricePreviewLineItem import PricePreviewLineItem
6
+
7
+
8
+ @dataclass
9
+ class PricePreviewDetails(Entity):
10
+ line_items: list[PricePreviewLineItem]
11
+
12
+
13
+ @classmethod
14
+ def from_dict(cls, data: dict) -> PricePreviewDetails:
15
+ return PricePreviewDetails(line_items=[PricePreviewLineItem.from_dict(item) for item in data['line_items']])
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+ from paddle_billing.Entities.Discount import Discount
5
+
6
+
7
+ @dataclass
8
+ class PricePreviewDiscounts:
9
+ discount: Discount
10
+ total: str
11
+ formatted_total: str
12
+
13
+
14
+ @classmethod
15
+ def from_dict(cls, data: dict) -> PricePreviewDiscounts:
16
+ return PricePreviewDiscounts(
17
+ discount = Discount.from_dict(data['discount']),
18
+ total = data['total'],
19
+ formatted_total = data['formatted_total'],
20
+ )
@@ -0,0 +1,16 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class PricePreviewItem:
7
+ price_id: str
8
+ quantity: int
9
+
10
+
11
+ @classmethod
12
+ def from_dict(cls, data: dict) -> PricePreviewItem:
13
+ return PricePreviewItem(
14
+ price_id = data['price_id'],
15
+ quantity = data['quantity'],
16
+ )
@@ -0,0 +1,38 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+ from paddle_billing.Entities.Price import Price
5
+ from paddle_billing.Entities.Product import Product
6
+ from paddle_billing.Entities.Shared import Totals, UnitTotals
7
+
8
+ from paddle_billing.Entities.PricingPreviews.PricePreviewDiscounts import PricePreviewDiscounts
9
+ from paddle_billing.Entities.PricingPreviews.PricePreviewTotalsFormatted import PricePreviewTotalsFormatted
10
+ from paddle_billing.Entities.PricingPreviews.PricePreviewUnitTotalsFormatted import PricePreviewUnitTotalsFormatted
11
+
12
+
13
+ @dataclass
14
+ class PricePreviewLineItem:
15
+ price: Price
16
+ quantity: int
17
+ tax_rate: str
18
+ unit_totals: UnitTotals
19
+ formatted_unit_totals: PricePreviewUnitTotalsFormatted
20
+ totals: Totals
21
+ formatted_totals: PricePreviewTotalsFormatted
22
+ product: Product
23
+ discounts: list[PricePreviewDiscounts]
24
+
25
+
26
+ @classmethod
27
+ def from_dict(cls, data: dict) -> PricePreviewLineItem:
28
+ return PricePreviewLineItem(
29
+ price = Price.from_dict(data['price']),
30
+ quantity = data['quantity'],
31
+ tax_rate = data['tax_rate'],
32
+ unit_totals = UnitTotals.from_dict(data['unit_totals']),
33
+ formatted_unit_totals = PricePreviewUnitTotalsFormatted.from_dict(data['formatted_unit_totals']),
34
+ totals = Totals.from_dict(data['totals']),
35
+ formatted_totals = PricePreviewTotalsFormatted.from_dict(data['formatted_totals']),
36
+ product = Product.from_dict(data['product']),
37
+ discounts = [PricePreviewDiscounts.from_dict(item) for item in data['discounts']],
38
+ )
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class PricePreviewTotalsFormatted:
7
+ subtotal: str
8
+ discount: str
9
+ tax: str
10
+ total: str
11
+
12
+
13
+ @classmethod
14
+ def from_dict(cls, data: dict) -> PricePreviewTotalsFormatted:
15
+ return PricePreviewTotalsFormatted(
16
+ subtotal = data['subtotal'],
17
+ discount = data['discount'],
18
+ tax = data['tax'],
19
+ total = data['total'],
20
+ )
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class PricePreviewUnitTotalsFormatted:
7
+ subtotal: str
8
+ discount: str
9
+ tax: str
10
+ total: str
11
+
12
+
13
+ @classmethod
14
+ def from_dict(cls, data: dict) -> PricePreviewUnitTotalsFormatted:
15
+ return PricePreviewUnitTotalsFormatted(
16
+ subtotal = data['subtotal'],
17
+ discount = data['discount'],
18
+ tax = data['tax'],
19
+ total = data['total'],
20
+ )
@@ -0,0 +1,6 @@
1
+ from paddle_billing.Entities.PricingPreviews.PricePreviewDetails import PricePreviewDetails
2
+ from paddle_billing.Entities.PricingPreviews.PricePreviewDiscounts import PricePreviewDiscounts
3
+ from paddle_billing.Entities.PricingPreviews.PricePreviewItem import PricePreviewItem
4
+ from paddle_billing.Entities.PricingPreviews.PricePreviewLineItem import PricePreviewLineItem
5
+ from paddle_billing.Entities.PricingPreviews.PricePreviewTotalsFormatted import PricePreviewTotalsFormatted
6
+ from paddle_billing.Entities.PricingPreviews.PricePreviewUnitTotalsFormatted import PricePreviewUnitTotalsFormatted
@@ -0,0 +1,45 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+ from datetime import datetime
4
+
5
+ from paddle_billing.Entities.Entity import Entity
6
+ from paddle_billing.Entities.Shared import CatalogType, CustomData, ImportMeta, Status, TaxCategory
7
+
8
+
9
+ @dataclass
10
+ class Product(Entity):
11
+ id: str
12
+ name: str
13
+ status: Status
14
+ tax_category: TaxCategory
15
+ created_at: datetime
16
+ updated_at: datetime
17
+ description: str | None
18
+ image_url: str | None
19
+ custom_data: CustomData | None = None
20
+ import_meta: ImportMeta | None = None
21
+ prices: list[Price] | None = None
22
+ type: CatalogType | None = None
23
+
24
+
25
+ @classmethod
26
+ def from_dict(cls, data: dict) -> Product:
27
+ return Product(
28
+ description = data.get('description'),
29
+ id = data['id'],
30
+ image_url = data.get('image_url'),
31
+ name = data['name'],
32
+ status = Status(data['status']),
33
+ tax_category = TaxCategory(data['tax_category']),
34
+ created_at = datetime.fromisoformat(data['created_at']),
35
+ updated_at = datetime.fromisoformat(data['updated_at']),
36
+ prices = [Price.from_dict(price) for price in data.get('prices', [])],
37
+ type = CatalogType(data['type']) if data.get('type') else None,
38
+ custom_data = CustomData(data['custom_data']) if data.get('custom_data') else None,
39
+ import_meta = ImportMeta.from_dict(data['import_meta']) if data.get('import_meta') else None,
40
+ )
41
+
42
+
43
+
44
+ # Prevents circular import
45
+ from paddle_billing.Entities.Price import Price # noqa E402