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,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,8 @@
1
+ from __future__ import annotations
2
+ from dataclasses import dataclass
3
+
4
+
5
+ @dataclass
6
+ class TransactionUpdateTransactionItem:
7
+ price_id: str
8
+ quantity: int
@@ -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,2 @@
1
+ def enum_stringify(enum):
2
+ return enum.value
@@ -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
+ )
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class AddressApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class AdjustmentApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class BusinessApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class CustomerApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class DiscountApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class PriceApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class ProductApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class SubscriptionApiError(ApiError):
5
+ pass
@@ -0,0 +1,5 @@
1
+ from paddle_billing.Exceptions.ApiError import ApiError
2
+
3
+
4
+ class TransactionApiError(ApiError):
5
+ pass
File without changes
@@ -0,0 +1,8 @@
1
+ class FieldError:
2
+ def __init__(self, field, error):
3
+ self.field = field
4
+ self.error = error
5
+
6
+
7
+ def __repr__(self):
8
+ return f"FieldError(field='{self.field}', error='{self.error}')"
@@ -0,0 +1,2 @@
1
+ class SdkException(Exception):
2
+ pass
@@ -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)
@@ -0,0 +1,7 @@
1
+ from paddle_billing.Exceptions.SdkException import SdkException
2
+
3
+
4
+ class MalformedResponse(SdkException):
5
+ def __init__(self, e):
6
+ super().__init__(str(e))
7
+ self.original_exception = e
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ class FiltersNone:
2
+ @staticmethod
3
+ def filter_none_values(input_dict) -> dict:
4
+ """
5
+ This method filters out values that are None from the given list
6
+ """
7
+ return {key: value for key, value in input_dict.items() if value is not None}
8
+
@@ -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,6 @@
1
+ import logging
2
+
3
+
4
+ class NullHandler(logging.Handler):
5
+ def emit(self, record):
6
+ pass
@@ -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