paddle-python-sdk 0.2.2__py3-none-any.whl → 0.3.1__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 (500) hide show
  1. examples/catalog_management.py +67 -58
  2. examples/event_polling.py +10 -12
  3. examples/get_products.py +14 -11
  4. examples/logger.py +9 -7
  5. examples/webhook_verification.py +33 -0
  6. paddle_billing/Client.py +104 -103
  7. paddle_billing/Entities/Address.py +29 -30
  8. paddle_billing/Entities/Adjustment.py +42 -33
  9. paddle_billing/Entities/AdjustmentCreditNote.py +13 -0
  10. paddle_billing/Entities/Adjustments/AdjustmentCustomerBalance.py +6 -7
  11. paddle_billing/Entities/Adjustments/AdjustmentItem.py +14 -15
  12. paddle_billing/Entities/Adjustments/AdjustmentTaxRatesUsed.py +17 -0
  13. paddle_billing/Entities/Adjustments/AdjustmentTotals.py +17 -0
  14. paddle_billing/Entities/Adjustments/__init__.py +2 -1
  15. paddle_billing/Entities/Business.py +22 -23
  16. paddle_billing/Entities/Collections/AddressCollection.py +1 -1
  17. paddle_billing/Entities/Collections/AdjustmentCollection.py +1 -1
  18. paddle_billing/Entities/Collections/BusinessCollection.py +1 -1
  19. paddle_billing/Entities/Collections/Collection.py +6 -11
  20. paddle_billing/Entities/Collections/CreditBalanceCollection.py +1 -1
  21. paddle_billing/Entities/Collections/CustomerCollection.py +1 -1
  22. paddle_billing/Entities/Collections/DiscountCollection.py +1 -1
  23. paddle_billing/Entities/Collections/EventCollection.py +1 -1
  24. paddle_billing/Entities/Collections/EventTypeCollection.py +1 -1
  25. paddle_billing/Entities/Collections/NotificationCollection.py +1 -1
  26. paddle_billing/Entities/Collections/NotificationLogCollection.py +1 -2
  27. paddle_billing/Entities/Collections/NotificationSettingCollection.py +1 -1
  28. paddle_billing/Entities/Collections/Paginator.py +10 -12
  29. paddle_billing/Entities/Collections/PriceCollection.py +1 -1
  30. paddle_billing/Entities/Collections/ProductCollection.py +1 -1
  31. paddle_billing/Entities/Collections/ReportCollection.py +1 -1
  32. paddle_billing/Entities/Collections/SubscriptionCollection.py +1 -1
  33. paddle_billing/Entities/Collections/SubscriptionPreviewCollection.py +1 -1
  34. paddle_billing/Entities/Collections/TransactionCollection.py +1 -1
  35. paddle_billing/Entities/Collections/TransactionPreviewCollection.py +1 -1
  36. paddle_billing/Entities/Collections/TransactionsDataCollection.py +1 -1
  37. paddle_billing/Entities/Collections/__init__.py +19 -19
  38. paddle_billing/Entities/CreditBalance.py +8 -9
  39. paddle_billing/Entities/Customer.py +21 -22
  40. paddle_billing/Entities/DateTime.py +9 -11
  41. paddle_billing/Entities/Discount.py +39 -38
  42. paddle_billing/Entities/Discounts/DiscountStatus.py +4 -4
  43. paddle_billing/Entities/Discounts/DiscountType.py +3 -3
  44. paddle_billing/Entities/Discounts/__init__.py +1 -1
  45. paddle_billing/Entities/Entity.py +1 -1
  46. paddle_billing/Entities/Event.py +11 -35
  47. paddle_billing/Entities/EventType.py +8 -9
  48. paddle_billing/Entities/Events/EventTypeName.py +48 -48
  49. paddle_billing/Entities/IPAddresses.py +15 -0
  50. paddle_billing/Entities/Notification.py +28 -29
  51. paddle_billing/Entities/NotificationLog.py +11 -12
  52. paddle_billing/Entities/NotificationSetting.py +20 -21
  53. paddle_billing/Entities/NotificationSettings/NotificationSettingType.py +2 -2
  54. paddle_billing/Entities/Notifications/NotificationEvent.py +44 -0
  55. paddle_billing/Entities/Notifications/NotificationOrigin.py +2 -2
  56. paddle_billing/Entities/Notifications/NotificationPayout.py +10 -11
  57. paddle_billing/Entities/Notifications/NotificationPayoutStatus.py +2 -2
  58. paddle_billing/Entities/Notifications/NotificationStatus.py +4 -4
  59. paddle_billing/Entities/Notifications/__init__.py +4 -3
  60. paddle_billing/Entities/Price.py +39 -38
  61. paddle_billing/Entities/PricePreview.py +21 -22
  62. paddle_billing/Entities/PricingPreviews/PricePreviewDetails.py +2 -3
  63. paddle_billing/Entities/PricingPreviews/PricePreviewDiscounts.py +6 -7
  64. paddle_billing/Entities/PricingPreviews/PricePreviewItem.py +3 -4
  65. paddle_billing/Entities/PricingPreviews/PricePreviewLineItem.py +22 -23
  66. paddle_billing/Entities/PricingPreviews/PricePreviewTotalsFormatted.py +7 -8
  67. paddle_billing/Entities/PricingPreviews/PricePreviewUnitTotalsFormatted.py +7 -8
  68. paddle_billing/Entities/PricingPreviews/__init__.py +5 -5
  69. paddle_billing/Entities/Product.py +26 -28
  70. paddle_billing/Entities/Report.py +16 -17
  71. paddle_billing/Entities/ReportCSV.py +2 -2
  72. paddle_billing/Entities/Reports/AdjustmentsReportType.py +8 -0
  73. paddle_billing/Entities/Reports/DiscountsReportType.py +7 -0
  74. paddle_billing/Entities/Reports/ProductsPricesReportType.py +7 -0
  75. paddle_billing/Entities/Reports/ReportFilter.py +3 -5
  76. paddle_billing/Entities/Reports/ReportFilterName.py +13 -13
  77. paddle_billing/Entities/Reports/ReportFilterOperator.py +2 -2
  78. paddle_billing/Entities/Reports/ReportStatus.py +4 -4
  79. paddle_billing/Entities/Reports/ReportType.py +6 -6
  80. paddle_billing/Entities/Reports/TransactionsReportType.py +8 -0
  81. paddle_billing/Entities/Reports/__init__.py +8 -4
  82. paddle_billing/Entities/Shared/Action.py +6 -6
  83. paddle_billing/Entities/Shared/AddressPreview.py +4 -5
  84. paddle_billing/Entities/Shared/AdjustmentItemTotals.py +6 -7
  85. paddle_billing/Entities/Shared/AdjustmentStatus.py +4 -4
  86. paddle_billing/Entities/Shared/AdjustmentTotals.py +12 -13
  87. paddle_billing/Entities/Shared/AdjustmentType.py +4 -4
  88. paddle_billing/Entities/Shared/BillingDetails.py +9 -10
  89. paddle_billing/Entities/Shared/Card.py +10 -11
  90. paddle_billing/Entities/Shared/CatalogType.py +2 -2
  91. paddle_billing/Entities/Shared/ChargebackFee.py +4 -5
  92. paddle_billing/Entities/Shared/Checkout.py +2 -3
  93. paddle_billing/Entities/Shared/CollectionMode.py +2 -2
  94. paddle_billing/Entities/Shared/Contacts.py +4 -5
  95. paddle_billing/Entities/Shared/CountryCode.py +229 -229
  96. paddle_billing/Entities/Shared/CurrencyCode.py +30 -30
  97. paddle_billing/Entities/Shared/CurrencyCodeAdjustments.py +3 -3
  98. paddle_billing/Entities/Shared/CurrencyCodePayouts.py +13 -13
  99. paddle_billing/Entities/Shared/CustomData.py +5 -4
  100. paddle_billing/Entities/Shared/Data.py +1 -1
  101. paddle_billing/Entities/Shared/Disposition.py +6 -0
  102. paddle_billing/Entities/Shared/Duration.py +17 -0
  103. paddle_billing/Entities/Shared/ErrorCode.py +17 -17
  104. paddle_billing/Entities/Shared/ImportMeta.py +4 -5
  105. paddle_billing/Entities/Shared/Interval.py +4 -4
  106. paddle_billing/Entities/Shared/Meta.py +1 -1
  107. paddle_billing/Entities/Shared/MetaPaginated.py +3 -4
  108. paddle_billing/Entities/Shared/MethodDetails.py +4 -5
  109. paddle_billing/Entities/Shared/Money.py +7 -8
  110. paddle_billing/Entities/Shared/Original.py +4 -5
  111. paddle_billing/Entities/Shared/Pagination.py +8 -9
  112. paddle_billing/Entities/Shared/PaymentAttemptStatus.py +9 -9
  113. paddle_billing/Entities/Shared/PaymentMethodType.py +10 -10
  114. paddle_billing/Entities/Shared/PayoutTotalsAdjustment.py +15 -16
  115. paddle_billing/Entities/Shared/PriceQuantity.py +3 -4
  116. paddle_billing/Entities/Shared/Proration.py +17 -0
  117. paddle_billing/Entities/Shared/Status.py +2 -2
  118. paddle_billing/Entities/Shared/TaxCategory.py +9 -9
  119. paddle_billing/Entities/Shared/TaxMode.py +3 -3
  120. paddle_billing/Entities/Shared/TaxRatesUsed.py +4 -5
  121. paddle_billing/Entities/Shared/TimePeriod.py +6 -8
  122. paddle_billing/Entities/Shared/Totals.py +7 -8
  123. paddle_billing/Entities/Shared/TransactionDetailsPreview.py +8 -9
  124. paddle_billing/Entities/Shared/TransactionLineItemPreview.py +17 -15
  125. paddle_billing/Entities/Shared/TransactionOrigin.py +6 -6
  126. paddle_billing/Entities/Shared/TransactionPaymentAttempt.py +21 -22
  127. paddle_billing/Entities/Shared/TransactionPayoutTotals.py +22 -23
  128. paddle_billing/Entities/Shared/TransactionPayoutTotalsAdjusted.py +15 -16
  129. paddle_billing/Entities/Shared/TransactionStatus.py +7 -7
  130. paddle_billing/Entities/Shared/TransactionTotals.py +22 -23
  131. paddle_billing/Entities/Shared/TransactionTotalsAdjusted.py +14 -15
  132. paddle_billing/Entities/Shared/UnitPriceOverride.py +5 -6
  133. paddle_billing/Entities/Shared/UnitTotals.py +7 -8
  134. paddle_billing/Entities/Shared/__init__.py +49 -50
  135. paddle_billing/Entities/Subscription.py +69 -55
  136. paddle_billing/Entities/SubscriptionPreview.py +87 -55
  137. paddle_billing/Entities/Subscriptions/SubscriptionAdjustmentItem.py +12 -13
  138. paddle_billing/Entities/Subscriptions/SubscriptionAdjustmentPreview.py +6 -7
  139. paddle_billing/Entities/Subscriptions/SubscriptionCharge.py +3 -4
  140. paddle_billing/Entities/Subscriptions/SubscriptionCredit.py +4 -5
  141. paddle_billing/Entities/Subscriptions/SubscriptionDiscount.py +7 -8
  142. paddle_billing/Entities/Subscriptions/SubscriptionEffectiveFrom.py +2 -2
  143. paddle_billing/Entities/Subscriptions/SubscriptionItem.py +27 -22
  144. paddle_billing/Entities/Subscriptions/SubscriptionItemStatus.py +3 -3
  145. paddle_billing/Entities/Subscriptions/SubscriptionItems.py +3 -5
  146. paddle_billing/Entities/Subscriptions/SubscriptionItemsWithPrice.py +12 -8
  147. paddle_billing/Entities/Subscriptions/SubscriptionManagementUrls.py +4 -5
  148. paddle_billing/Entities/Subscriptions/SubscriptionNextTransaction.py +8 -9
  149. paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPrice.py +21 -18
  150. paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPriceWithProduct.py +21 -18
  151. paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogProduct.py +12 -13
  152. paddle_billing/Entities/Subscriptions/SubscriptionOnPaymentFailure.py +2 -2
  153. paddle_billing/Entities/Subscriptions/SubscriptionPreviewSubscriptionUpdateSummary.py +4 -5
  154. paddle_billing/Entities/Subscriptions/SubscriptionProrationBillingMode.py +5 -5
  155. paddle_billing/Entities/Subscriptions/SubscriptionResult.py +5 -6
  156. paddle_billing/Entities/Subscriptions/SubscriptionResultAction.py +2 -2
  157. paddle_billing/Entities/Subscriptions/SubscriptionResumeEffectiveFrom.py +1 -1
  158. paddle_billing/Entities/Subscriptions/SubscriptionScheduledChange.py +7 -8
  159. paddle_billing/Entities/Subscriptions/SubscriptionScheduledChangeAction.py +3 -3
  160. paddle_billing/Entities/Subscriptions/SubscriptionStatus.py +6 -6
  161. paddle_billing/Entities/Subscriptions/SubscriptionUpdateItem.py +3 -4
  162. paddle_billing/Entities/Subscriptions/__init__.py +29 -30
  163. paddle_billing/Entities/Transaction.py +73 -73
  164. paddle_billing/Entities/TransactionData.py +2 -4
  165. paddle_billing/Entities/TransactionPreview.py +25 -26
  166. paddle_billing/Entities/Transactions/TransactionAdjustmentsTotals.py +14 -15
  167. paddle_billing/Entities/Transactions/TransactionBreakdown.py +6 -7
  168. paddle_billing/Entities/Transactions/TransactionCardType.py +10 -10
  169. paddle_billing/Entities/Transactions/TransactionCreateItem.py +3 -4
  170. paddle_billing/Entities/Transactions/TransactionCreateItemWithPrice.py +6 -4
  171. paddle_billing/Entities/Transactions/TransactionDetails.py +24 -17
  172. paddle_billing/Entities/Transactions/TransactionItem.py +10 -11
  173. paddle_billing/Entities/Transactions/TransactionItemPreviewWithNonCatalogPrice.py +17 -9
  174. paddle_billing/Entities/Transactions/TransactionItemPreviewWithPrice.py +9 -10
  175. paddle_billing/Entities/Transactions/TransactionItemPreviewWithPriceId.py +6 -7
  176. paddle_billing/Entities/Transactions/TransactionLineItem.py +18 -20
  177. paddle_billing/Entities/Transactions/TransactionNonCatalogPrice.py +25 -26
  178. paddle_billing/Entities/Transactions/TransactionNonCatalogPriceWithProduct.py +25 -26
  179. paddle_billing/Entities/Transactions/TransactionNonCatalogProduct.py +11 -12
  180. paddle_billing/Entities/Transactions/TransactionUpdateTransactionItem.py +1 -1
  181. paddle_billing/Entities/Transactions/__init__.py +16 -13
  182. paddle_billing/Environment.py +4 -5
  183. paddle_billing/Exceptions/ApiError.py +11 -17
  184. paddle_billing/Exceptions/FieldError.py +0 -1
  185. paddle_billing/Exceptions/SdkExceptions/InvalidArgumentException.py +16 -2
  186. paddle_billing/FiltersNone.py +0 -1
  187. paddle_billing/FiltersUndefined.py +0 -1
  188. paddle_billing/Logger/Formatter.py +1 -1
  189. paddle_billing/Logger/__init__.py +4 -4
  190. paddle_billing/Notifications/Entities/Address.py +29 -30
  191. paddle_billing/Notifications/Entities/Adjustment.py +46 -33
  192. paddle_billing/Notifications/Entities/Adjustments/AdjustmentItem.py +14 -15
  193. paddle_billing/Notifications/Entities/Adjustments/AdjustmentTaxRatesUsed.py +17 -0
  194. paddle_billing/Notifications/Entities/Adjustments/AdjustmentTotals.py +17 -0
  195. paddle_billing/Notifications/Entities/Adjustments/__init__.py +1 -0
  196. paddle_billing/Notifications/Entities/Business.py +24 -25
  197. paddle_billing/Notifications/Entities/Businesses/BusinessesContacts.py +4 -5
  198. paddle_billing/Notifications/Entities/Customer.py +21 -22
  199. paddle_billing/Notifications/Entities/DateTime.py +6 -11
  200. paddle_billing/Notifications/Entities/Discount.py +38 -39
  201. paddle_billing/Notifications/Entities/Discounts/DiscountStatus.py +4 -4
  202. paddle_billing/Notifications/Entities/Discounts/DiscountType.py +3 -3
  203. paddle_billing/Notifications/Entities/Discounts/__init__.py +1 -1
  204. paddle_billing/Notifications/Entities/Entity.py +43 -2
  205. paddle_billing/Notifications/Entities/EntityDict.py +6 -0
  206. paddle_billing/Notifications/Entities/Payout.py +10 -11
  207. paddle_billing/Notifications/Entities/Payouts/PayoutStatus.py +2 -2
  208. paddle_billing/Notifications/Entities/Price.py +37 -36
  209. paddle_billing/Notifications/Entities/Product.py +26 -28
  210. paddle_billing/Notifications/Entities/Report.py +16 -17
  211. paddle_billing/Notifications/Entities/Reports/ReportFilter.py +3 -5
  212. paddle_billing/Notifications/Entities/Reports/ReportFilterName.py +13 -13
  213. paddle_billing/Notifications/Entities/Reports/ReportFilterOperator.py +2 -2
  214. paddle_billing/Notifications/Entities/Reports/ReportStatus.py +4 -4
  215. paddle_billing/Notifications/Entities/Reports/ReportType.py +6 -6
  216. paddle_billing/Notifications/Entities/Reports/__init__.py +4 -4
  217. paddle_billing/Notifications/Entities/Shared/Action.py +6 -6
  218. paddle_billing/Notifications/Entities/Shared/AddressPreview.py +4 -5
  219. paddle_billing/Notifications/Entities/Shared/AdjustmentItemTotals.py +6 -7
  220. paddle_billing/Notifications/Entities/Shared/AdjustmentStatus.py +4 -4
  221. paddle_billing/Notifications/Entities/Shared/AdjustmentTotals.py +12 -13
  222. paddle_billing/Notifications/Entities/Shared/AdjustmentType.py +4 -4
  223. paddle_billing/Notifications/Entities/Shared/BillingDetails.py +9 -10
  224. paddle_billing/Notifications/Entities/Shared/Card.py +10 -11
  225. paddle_billing/Notifications/Entities/Shared/CatalogType.py +2 -2
  226. paddle_billing/Notifications/Entities/Shared/ChargebackFee.py +4 -5
  227. paddle_billing/Notifications/Entities/Shared/Checkout.py +2 -3
  228. paddle_billing/Notifications/Entities/Shared/CollectionMode.py +2 -2
  229. paddle_billing/Notifications/Entities/Shared/CountryCode.py +229 -229
  230. paddle_billing/Notifications/Entities/Shared/CurrencyCode.py +30 -30
  231. paddle_billing/Notifications/Entities/Shared/CurrencyCodeAdjustments.py +3 -3
  232. paddle_billing/Notifications/Entities/Shared/CurrencyCodePayouts.py +13 -13
  233. paddle_billing/Notifications/Entities/Shared/CustomData.py +0 -1
  234. paddle_billing/Notifications/Entities/Shared/Data.py +1 -1
  235. paddle_billing/Notifications/Entities/Shared/Duration.py +17 -0
  236. paddle_billing/Notifications/Entities/Shared/ErrorCode.py +17 -17
  237. paddle_billing/Notifications/Entities/Shared/ImportMeta.py +4 -5
  238. paddle_billing/Notifications/Entities/Shared/Interval.py +4 -4
  239. paddle_billing/Notifications/Entities/Shared/MethodDetails.py +4 -5
  240. paddle_billing/Notifications/Entities/Shared/Money.py +7 -8
  241. paddle_billing/Notifications/Entities/Shared/Original.py +4 -5
  242. paddle_billing/Notifications/Entities/Shared/PaymentAttemptStatus.py +9 -9
  243. paddle_billing/Notifications/Entities/Shared/PaymentMethodType.py +11 -11
  244. paddle_billing/Notifications/Entities/Shared/PayoutTotalsAdjustment.py +15 -16
  245. paddle_billing/Notifications/Entities/Shared/PriceQuantity.py +3 -4
  246. paddle_billing/Notifications/Entities/Shared/Proration.py +17 -0
  247. paddle_billing/Notifications/Entities/Shared/Status.py +2 -2
  248. paddle_billing/Notifications/Entities/Shared/TaxCategory.py +9 -9
  249. paddle_billing/Notifications/Entities/Shared/TaxMode.py +3 -3
  250. paddle_billing/Notifications/Entities/Shared/TaxRatesUsed.py +4 -5
  251. paddle_billing/Notifications/Entities/Shared/TimePeriod.py +6 -8
  252. paddle_billing/Notifications/Entities/Shared/Totals.py +7 -8
  253. paddle_billing/Notifications/Entities/Shared/TransactionOrigin.py +6 -6
  254. paddle_billing/Notifications/Entities/Shared/TransactionPaymentAttempt.py +21 -22
  255. paddle_billing/Notifications/Entities/Shared/TransactionPayoutTotals.py +22 -23
  256. paddle_billing/Notifications/Entities/Shared/TransactionPayoutTotalsAdjusted.py +15 -16
  257. paddle_billing/Notifications/Entities/Shared/TransactionStatus.py +7 -7
  258. paddle_billing/Notifications/Entities/Shared/TransactionTotals.py +22 -23
  259. paddle_billing/Notifications/Entities/Shared/TransactionTotalsAdjusted.py +14 -15
  260. paddle_billing/Notifications/Entities/Shared/UnitPriceOverride.py +5 -6
  261. paddle_billing/Notifications/Entities/Shared/UnitTotals.py +7 -8
  262. paddle_billing/Notifications/Entities/Shared/__init__.py +44 -45
  263. paddle_billing/Notifications/Entities/Subscription.py +54 -51
  264. paddle_billing/Notifications/Entities/SubscriptionCreated.py +81 -0
  265. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionAdjustmentItem.py +12 -13
  266. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionCharge.py +3 -4
  267. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionCredit.py +4 -5
  268. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionDiscount.py +7 -8
  269. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionEffectiveFrom.py +2 -2
  270. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionItem.py +27 -22
  271. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionItemStatus.py +3 -3
  272. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionOnPaymentFailure.py +2 -2
  273. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionPrice.py +36 -35
  274. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionScheduledChange.py +10 -9
  275. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionScheduledChangeAction.py +3 -3
  276. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionStatus.py +6 -6
  277. paddle_billing/Notifications/Entities/Subscriptions/__init__.py +16 -13
  278. paddle_billing/Notifications/Entities/Transaction.py +49 -52
  279. paddle_billing/Notifications/Entities/Transactions/TransactionAdjustmentsTotals.py +14 -15
  280. paddle_billing/Notifications/Entities/Transactions/TransactionBreakdown.py +6 -7
  281. paddle_billing/Notifications/Entities/Transactions/TransactionCardType.py +10 -10
  282. paddle_billing/Notifications/Entities/Transactions/TransactionDetails.py +24 -17
  283. paddle_billing/Notifications/Entities/Transactions/TransactionItem.py +10 -11
  284. paddle_billing/Notifications/Entities/Transactions/TransactionLineItem.py +18 -20
  285. paddle_billing/Notifications/Entities/Transactions/__init__.py +2 -4
  286. paddle_billing/Notifications/Entities/UndefinedEntity.py +13 -0
  287. paddle_billing/Notifications/Events/AddressCreated.py +4 -4
  288. paddle_billing/Notifications/Events/AddressUpdated.py +4 -4
  289. paddle_billing/Notifications/Events/AdjustmentCreated.py +4 -4
  290. paddle_billing/Notifications/Events/AdjustmentUpdated.py +4 -4
  291. paddle_billing/Notifications/Events/BusinessCreated.py +4 -4
  292. paddle_billing/Notifications/Events/BusinessUpdated.py +4 -4
  293. paddle_billing/Notifications/Events/CustomerCreated.py +4 -4
  294. paddle_billing/Notifications/Events/CustomerUpdated.py +4 -4
  295. paddle_billing/Notifications/Events/DiscountCreated.py +4 -4
  296. paddle_billing/Notifications/Events/DiscountImported.py +4 -4
  297. paddle_billing/Notifications/Events/DiscountUpdated.py +4 -4
  298. paddle_billing/Notifications/Events/PayoutCreated.py +4 -4
  299. paddle_billing/Notifications/Events/PayoutPaid.py +4 -4
  300. paddle_billing/Notifications/Events/PriceCreated.py +4 -4
  301. paddle_billing/Notifications/Events/PriceUpdated.py +4 -4
  302. paddle_billing/Notifications/Events/ProductCreated.py +4 -4
  303. paddle_billing/Notifications/Events/ProductUpdated.py +4 -4
  304. paddle_billing/Notifications/Events/ReportCreated.py +4 -4
  305. paddle_billing/Notifications/Events/ReportUpdated.py +4 -4
  306. paddle_billing/Notifications/Events/SubscriptionActivated.py +4 -4
  307. paddle_billing/Notifications/Events/SubscriptionCanceled.py +4 -4
  308. paddle_billing/Notifications/Events/SubscriptionCreated.py +4 -4
  309. paddle_billing/Notifications/Events/SubscriptionImported.py +4 -4
  310. paddle_billing/Notifications/Events/SubscriptionPastDue.py +4 -4
  311. paddle_billing/Notifications/Events/SubscriptionPaused.py +4 -4
  312. paddle_billing/Notifications/Events/SubscriptionResumed.py +4 -4
  313. paddle_billing/Notifications/Events/SubscriptionTrialing.py +4 -4
  314. paddle_billing/Notifications/Events/SubscriptionUpdated.py +4 -4
  315. paddle_billing/Notifications/Events/TransactionBilled.py +4 -4
  316. paddle_billing/Notifications/Events/TransactionCanceled.py +4 -4
  317. paddle_billing/Notifications/Events/TransactionCompleted.py +5 -4
  318. paddle_billing/Notifications/Events/TransactionCreated.py +4 -4
  319. paddle_billing/Notifications/Events/TransactionPaid.py +4 -4
  320. paddle_billing/Notifications/Events/TransactionPastDue.py +4 -4
  321. paddle_billing/Notifications/Events/TransactionPaymentFailed.py +4 -4
  322. paddle_billing/Notifications/Events/TransactionReady.py +4 -4
  323. paddle_billing/Notifications/Events/TransactionUpdated.py +4 -4
  324. paddle_billing/Notifications/PaddleSignature.py +27 -31
  325. paddle_billing/Notifications/Requests/Headers.py +5 -0
  326. paddle_billing/Notifications/Requests/Request.py +10 -0
  327. paddle_billing/Notifications/Requests/__init__.py +1 -0
  328. paddle_billing/Notifications/Secret.py +0 -1
  329. paddle_billing/Notifications/Verifier.py +16 -19
  330. paddle_billing/Notifications/__init__.py +2 -2
  331. paddle_billing/Operation.py +7 -0
  332. paddle_billing/Options.py +2 -2
  333. paddle_billing/PaddleStrEnum.py +4 -14
  334. paddle_billing/Resources/Addresses/AddressesClient.py +10 -16
  335. paddle_billing/Resources/Addresses/Operations/CreateAddress.py +8 -9
  336. paddle_billing/Resources/Addresses/Operations/ListAddresses.py +13 -14
  337. paddle_billing/Resources/Addresses/Operations/UpdateAddress.py +10 -11
  338. paddle_billing/Resources/Adjustments/AdjustmentsClient.py +17 -12
  339. paddle_billing/Resources/Adjustments/Operations/Create/AdjustmentItem.py +4 -4
  340. paddle_billing/Resources/Adjustments/Operations/CreateAdjustment.py +15 -13
  341. paddle_billing/Resources/Adjustments/Operations/GetCreditNote.py +19 -0
  342. paddle_billing/Resources/Adjustments/Operations/ListAdjustments.py +27 -26
  343. paddle_billing/Resources/Adjustments/Operations/__init__.py +3 -2
  344. paddle_billing/Resources/Businesses/BusinessesClient.py +11 -17
  345. paddle_billing/Resources/Businesses/Operations/CreateBusiness.py +6 -7
  346. paddle_billing/Resources/Businesses/Operations/ListBusinesses.py +14 -13
  347. paddle_billing/Resources/Businesses/Operations/UpdateBusiness.py +7 -8
  348. paddle_billing/Resources/Customers/CustomersClient.py +20 -21
  349. paddle_billing/Resources/Customers/Operations/CreateCustomer.py +4 -5
  350. paddle_billing/Resources/Customers/Operations/ListCreditBalances.py +5 -4
  351. paddle_billing/Resources/Customers/Operations/ListCustomers.py +19 -18
  352. paddle_billing/Resources/Customers/Operations/UpdateCustomer.py +5 -6
  353. paddle_billing/Resources/Customers/Operations/__init__.py +3 -3
  354. paddle_billing/Resources/Discounts/DiscountsClient.py +13 -18
  355. paddle_billing/Resources/Discounts/Operations/CreateDiscount.py +14 -14
  356. paddle_billing/Resources/Discounts/Operations/ListDiscounts.py +15 -14
  357. paddle_billing/Resources/Discounts/Operations/UpdateDiscount.py +15 -15
  358. paddle_billing/Resources/Discounts/Operations/__init__.py +1 -1
  359. paddle_billing/Resources/EventTypes/EventTypesClient.py +7 -8
  360. paddle_billing/Resources/Events/EventsClient.py +8 -9
  361. paddle_billing/Resources/Events/Operations/ListEvents.py +0 -1
  362. paddle_billing/Resources/IPAddresses/IPAddressesClient.py +20 -0
  363. paddle_billing/Resources/IPAddresses/__init__.py +0 -0
  364. paddle_billing/Resources/NotificationLogs/NotificationLogsClient.py +7 -8
  365. paddle_billing/Resources/NotificationLogs/Operations/ListNotificationLogs.py +1 -2
  366. paddle_billing/Resources/NotificationSettings/NotificationSettingsClient.py +25 -21
  367. paddle_billing/Resources/NotificationSettings/Operations/CreateNotificationSetting.py +7 -10
  368. paddle_billing/Resources/NotificationSettings/Operations/ListNotificationSettings.py +22 -0
  369. paddle_billing/Resources/NotificationSettings/Operations/UpdateNotificationSetting.py +7 -10
  370. paddle_billing/Resources/NotificationSettings/Operations/__init__.py +1 -0
  371. paddle_billing/Resources/Notifications/NotificationsClient.py +11 -14
  372. paddle_billing/Resources/Notifications/Operations/ListNotifications.py +25 -24
  373. paddle_billing/Resources/Prices/Operations/CreatePrice.py +21 -14
  374. paddle_billing/Resources/Prices/Operations/List/Includes.py +1 -1
  375. paddle_billing/Resources/Prices/Operations/ListPrices.py +29 -29
  376. paddle_billing/Resources/Prices/Operations/UpdatePrice.py +22 -14
  377. paddle_billing/Resources/Prices/Operations/__init__.py +3 -3
  378. paddle_billing/Resources/Prices/PricesClient.py +17 -20
  379. paddle_billing/Resources/PricingPreviews/Operations/PreviewPrice.py +23 -10
  380. paddle_billing/Resources/PricingPreviews/PricingPreviewsClient.py +7 -7
  381. paddle_billing/Resources/Products/Operations/CreateProduct.py +6 -7
  382. paddle_billing/Resources/Products/Operations/List/Includes.py +1 -1
  383. paddle_billing/Resources/Products/Operations/ListProducts.py +27 -26
  384. paddle_billing/Resources/Products/Operations/UpdateProduct.py +8 -9
  385. paddle_billing/Resources/Products/Operations/__init__.py +1 -1
  386. paddle_billing/Resources/Products/ProductsClient.py +19 -22
  387. paddle_billing/Resources/Reports/Operations/CreateAdjustmentsReport.py +31 -0
  388. paddle_billing/Resources/Reports/Operations/CreateDiscountsReport.py +27 -0
  389. paddle_billing/Resources/Reports/Operations/CreateProductsAndPricesReport.py +40 -0
  390. paddle_billing/Resources/Reports/Operations/CreateReport.py +16 -8
  391. paddle_billing/Resources/Reports/Operations/CreateTransactionsReport.py +33 -0
  392. paddle_billing/Resources/Reports/Operations/Filters/AdjustmentActionFilter.py +22 -0
  393. paddle_billing/Resources/Reports/Operations/Filters/AdjustmentStatusFilter.py +22 -0
  394. paddle_billing/Resources/Reports/Operations/Filters/CollectionModeFilter.py +22 -0
  395. paddle_billing/Resources/Reports/Operations/Filters/CurrencyCodeFilter.py +22 -0
  396. paddle_billing/Resources/Reports/Operations/Filters/DiscountStatusFilter.py +22 -0
  397. paddle_billing/Resources/Reports/Operations/Filters/DiscountTypeFilter.py +22 -0
  398. paddle_billing/Resources/Reports/Operations/Filters/Filter.py +29 -0
  399. paddle_billing/Resources/Reports/Operations/Filters/PriceStatusFilter.py +22 -0
  400. paddle_billing/Resources/Reports/Operations/Filters/PriceTypeFilter.py +22 -0
  401. paddle_billing/Resources/Reports/Operations/Filters/PriceUpdatedAtFilter.py +34 -0
  402. paddle_billing/Resources/Reports/Operations/Filters/ProductStatusFilter.py +22 -0
  403. paddle_billing/Resources/Reports/Operations/Filters/ProductTypeFilter.py +22 -0
  404. paddle_billing/Resources/Reports/Operations/Filters/ProductUpdatedAtFilter.py +34 -0
  405. paddle_billing/Resources/Reports/Operations/Filters/TransactionOriginFilter.py +22 -0
  406. paddle_billing/Resources/Reports/Operations/Filters/TransactionStatusFilter.py +22 -0
  407. paddle_billing/Resources/Reports/Operations/Filters/UpdatedAtFilter.py +34 -0
  408. paddle_billing/Resources/Reports/Operations/Filters/__init__.py +15 -0
  409. paddle_billing/Resources/Reports/Operations/ListReports.py +7 -7
  410. paddle_billing/Resources/Reports/Operations/__init__.py +5 -2
  411. paddle_billing/Resources/Reports/ReportsClient.py +13 -17
  412. paddle_billing/Resources/Shared/Operations/List/Comparator.py +4 -4
  413. paddle_billing/Resources/Shared/Operations/List/DateComparison.py +4 -6
  414. paddle_billing/Resources/Shared/Operations/List/OrderBy.py +3 -6
  415. paddle_billing/Resources/Shared/Operations/List/Pager.py +8 -11
  416. paddle_billing/Resources/Shared/Operations/__init__.py +3 -3
  417. paddle_billing/Resources/Subscriptions/Operations/CancelSubscription.py +0 -1
  418. paddle_billing/Resources/Subscriptions/Operations/CreateOneTimeCharge.py +2 -4
  419. paddle_billing/Resources/Subscriptions/Operations/Get/Includes.py +2 -2
  420. paddle_billing/Resources/Subscriptions/Operations/ListSubscriptions.py +35 -32
  421. paddle_billing/Resources/Subscriptions/Operations/PauseSubscription.py +3 -6
  422. paddle_billing/Resources/Subscriptions/Operations/PreviewOneTimeCharge.py +2 -4
  423. paddle_billing/Resources/Subscriptions/Operations/PreviewUpdateSubscription.py +28 -30
  424. paddle_billing/Resources/Subscriptions/Operations/ResumeSubscription.py +5 -6
  425. paddle_billing/Resources/Subscriptions/Operations/Update/SubscriptionDiscount.py +1 -1
  426. paddle_billing/Resources/Subscriptions/Operations/Update/UpdateBillingDetails.py +13 -0
  427. paddle_billing/Resources/Subscriptions/Operations/Update/__init__.py +2 -0
  428. paddle_billing/Resources/Subscriptions/Operations/UpdateSubscription.py +28 -30
  429. paddle_billing/Resources/Subscriptions/Operations/__init__.py +9 -9
  430. paddle_billing/Resources/Subscriptions/SubscriptionsClient.py +29 -36
  431. paddle_billing/Resources/Transactions/Operations/Create/CreateBillingDetails.py +13 -0
  432. paddle_billing/Resources/Transactions/Operations/Create/__init__.py +1 -0
  433. paddle_billing/Resources/Transactions/Operations/CreateTransaction.py +26 -21
  434. paddle_billing/Resources/Transactions/Operations/GetTransactionInvoice.py +19 -0
  435. paddle_billing/Resources/Transactions/Operations/List/Includes.py +7 -7
  436. paddle_billing/Resources/Transactions/Operations/List/Origin.py +6 -6
  437. paddle_billing/Resources/Transactions/Operations/ListTransactions.py +43 -42
  438. paddle_billing/Resources/Transactions/Operations/PreviewTransactionByAddress.py +21 -0
  439. paddle_billing/Resources/Transactions/Operations/PreviewTransactionByCustomer.py +22 -0
  440. paddle_billing/Resources/Transactions/Operations/PreviewTransactionByIP.py +21 -0
  441. paddle_billing/Resources/Transactions/Operations/Update/UpdateBillingDetails.py +13 -0
  442. paddle_billing/Resources/Transactions/Operations/Update/__init__.py +1 -0
  443. paddle_billing/Resources/Transactions/Operations/UpdateTransaction.py +26 -21
  444. paddle_billing/Resources/Transactions/Operations/__init__.py +9 -6
  445. paddle_billing/Resources/Transactions/TransactionsClient.py +36 -33
  446. paddle_billing/ResponseParser.py +17 -22
  447. paddle_billing/__init__.py +2 -2
  448. {paddle_python_sdk-0.2.2.dist-info → paddle_python_sdk-0.3.1.dist-info}/METADATA +4 -1
  449. paddle_python_sdk-0.3.1.dist-info/RECORD +560 -0
  450. {paddle_python_sdk-0.2.2.dist-info → paddle_python_sdk-0.3.1.dist-info}/WHEEL +1 -1
  451. tests/Functional/Client/test_Client.py +70 -67
  452. tests/Functional/Resources/Addresses/test_AddressesClient.py +184 -167
  453. tests/Functional/Resources/Adjustments/test_AdjustmentsClient.py +238 -85
  454. tests/Functional/Resources/Businesses/test_BusinessesClient.py +144 -128
  455. tests/Functional/Resources/Customers/test_CustomersClient.py +164 -130
  456. tests/Functional/Resources/Discounts/test_DiscountsClient.py +179 -119
  457. tests/Functional/Resources/EventTypes/test_EventTypesClient.py +17 -16
  458. tests/Functional/Resources/Events/test_EventsClient.py +82 -20
  459. tests/Functional/Resources/IPAddresses/__init__.py +0 -0
  460. tests/Functional/Resources/IPAddresses/test_IPAddressesClient.py +31 -0
  461. tests/Functional/Resources/NotificationLogs/test_NotificationLogsClient.py +23 -22
  462. tests/Functional/Resources/NotificationSettings/test_NotificationSettingsClient.py +225 -110
  463. tests/Functional/Resources/Notifications/test_NotificationsClient.py +201 -108
  464. tests/Functional/Resources/Prices/test_PricesClient.py +148 -131
  465. tests/Functional/Resources/PricingPreviews/test_PricingPreviewsClient.py +46 -42
  466. tests/Functional/Resources/Products/test_ProductsClient.py +123 -123
  467. tests/Functional/Resources/Reports/test_ReportsClient.py +240 -87
  468. tests/Functional/Resources/Subscriptions/test_SubscriptionsClient.py +680 -326
  469. tests/Functional/Resources/Transactions/test_TransactionsClient.py +717 -278
  470. tests/Unit/Logger/test_Logger.py +1 -1
  471. tests/Unit/Notification/test_Verifier.py +18 -22
  472. tests/Unit/PaddleStrEnum/test_PaddleStrEnum.py +28 -30
  473. tests/Utils/{FakeResponse.py → FakeRequest.py} +3 -3
  474. tests/Utils/ReadsFixture.py +4 -5
  475. tests/Utils/TestClient.py +13 -17
  476. tests/Utils/TestLogger.py +2 -4
  477. tests/Utils/__init__.py +1 -1
  478. paddle_billing/ConditionallyRemoveImportMeta.py +0 -14
  479. paddle_billing/Entities/Shared/AdjustmentProration.py +0 -18
  480. paddle_billing/Entities/Shared/AdjustmentTimePeriod.py +0 -17
  481. paddle_billing/Entities/Shared/AvailablePaymentMethods.py +0 -11
  482. paddle_billing/Entities/Shared/BillingDetailsUpdate.py +0 -22
  483. paddle_billing/Entities/Subscriptions/SubscriptionDetails.py +0 -34
  484. paddle_billing/Entities/Subscriptions/SubscriptionProration.py +0 -18
  485. paddle_billing/Entities/Subscriptions/SubscriptionTimePeriod.py +0 -17
  486. paddle_billing/Entities/Subscriptions/SubscriptionTransactionItem.py +0 -23
  487. paddle_billing/Entities/Subscriptions/SubscriptionTransactionLineItem.py +0 -33
  488. paddle_billing/Entities/Transactions/TransactionProration.py +0 -18
  489. paddle_billing/Entities/Transactions/TransactionTimePeriod.py +0 -17
  490. paddle_billing/Exceptions/SdkExceptions/MalformedResponse.py +0 -7
  491. paddle_billing/Notifications/Entities/Shared/AdjustmentProration.py +0 -18
  492. paddle_billing/Notifications/Entities/Shared/AdjustmentTimePeriod.py +0 -17
  493. paddle_billing/Notifications/Entities/Shared/AvailablePaymentMethods.py +0 -11
  494. paddle_billing/Notifications/Entities/Subscriptions/SubscriptionTimePeriod.py +0 -17
  495. paddle_billing/Notifications/Entities/Transactions/TransactionProration.py +0 -18
  496. paddle_billing/Notifications/Entities/Transactions/TransactionTimePeriod.py +0 -17
  497. paddle_billing/Resources/Transactions/Operations/PreviewTransaction.py +0 -24
  498. paddle_python_sdk-0.2.2.dist-info/RECORD +0 -520
  499. {paddle_python_sdk-0.2.2.dist-info → paddle_python_sdk-0.3.1.dist-info}/LICENSE +0 -0
  500. {paddle_python_sdk-0.2.2.dist-info → paddle_python_sdk-0.3.1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  from logging import getLogger
2
- from os import getenv
3
- from sys import exit # You should use classes/functions that returns instead of exits
2
+ from os import getenv
3
+ from sys import exit # You should use classes/functions that returns instead of exits
4
4
 
5
5
  from paddle_billing import Client, Environment, Options
6
6
 
@@ -8,50 +8,50 @@ from paddle_billing.Entities.Shared import (
8
8
  CountryCode,
9
9
  CurrencyCode,
10
10
  CustomData,
11
+ Duration,
11
12
  Money,
12
- TimePeriod,
13
13
  PriceQuantity,
14
14
  UnitPriceOverride,
15
15
  Interval,
16
16
  Status,
17
- TaxCategory
17
+ TaxCategory,
18
18
  )
19
19
 
20
- from paddle_billing.Exceptions.ApiError import ApiError
21
- from paddle_billing.Exceptions.SdkExceptions.MalformedResponse import MalformedResponse
20
+ from paddle_billing.Exceptions.ApiError import ApiError
22
21
 
23
- from paddle_billing.Resources.Prices.Operations import CreatePrice, UpdatePrice, PriceIncludes
22
+ from paddle_billing.Resources.Prices.Operations import CreatePrice, UpdatePrice, PriceIncludes
24
23
  from paddle_billing.Resources.Products.Operations import CreateProduct, UpdateProduct, ProductIncludes, ListProducts
25
24
 
26
- log = getLogger('my_app')
25
+ log = getLogger("my_app")
27
26
 
28
27
  # Verify your Paddle API key was provided by a PADDLE_SECRET_API_KEY environment variable
29
28
  # It is strongly advised that you do not include secrets in your source code
30
29
  # Use environment variables, and/or secrets management like Vault to obtain your secrets
31
- api_key: str = getenv('PADDLE_SECRET_API_KEY', None)
30
+ api_key: str = getenv("PADDLE_SECRET_API_KEY", None)
32
31
  if not api_key:
33
32
  raise ValueError("You must provide the PADDLE_SECRET_API_KEY in your environment variables")
34
33
 
35
34
  # Determine the environment, defaulting to sandbox
36
- environment = getenv('PADDLE_ENVIRONMENT', 'sandbox')
37
- paddle_environment = getattr(Environment, environment) # E.g. Environment.sandbox
35
+ environment = Environment(getenv("PADDLE_ENVIRONMENT", "sandbox"))
38
36
 
39
37
  # Initialize the Paddle client
40
- paddle = Client(api_key, options=Options(paddle_environment), logger=log)
38
+ paddle = Client(api_key, options=Options(environment), logger=log)
41
39
 
42
40
 
43
41
  # ┌───
44
42
  # │ Create Product │
45
43
  # └────────────────┘
46
44
  try:
47
- product = paddle.products.create(CreateProduct(
48
- name = 'Kitten Service',
49
- tax_category = TaxCategory.Standard,
50
- description = 'Simply an awesome product',
51
- image_url = 'https://placekitten.com/200/300',
52
- custom_data = CustomData({'foo': 'bar'}),
53
- ))
54
- except (ApiError, MalformedResponse) as error:
45
+ product = paddle.products.create(
46
+ CreateProduct(
47
+ name="Kitten Service",
48
+ tax_category=TaxCategory.Standard,
49
+ description="Simply an awesome product",
50
+ image_url="https://placekitten.com/200/300",
51
+ custom_data=CustomData({"foo": "bar"}),
52
+ )
53
+ )
54
+ except ApiError as error:
55
55
  print(error)
56
56
  exit(1)
57
57
 
@@ -62,12 +62,15 @@ print(f"Created product '{product.id}': {product.description}")
62
62
  # │ Update Product │
63
63
  # └────────────────┘
64
64
  try:
65
- product = paddle.products.update(product.id, UpdateProduct(
66
- name = 'Bear Service',
67
- image_url = 'https://placebear.com/200/300',
68
- custom_data = CustomData({'beep': 'boop'}),
69
- ))
70
- except (ApiError, MalformedResponse) as error:
65
+ product = paddle.products.update(
66
+ product.id,
67
+ UpdateProduct(
68
+ name="Bear Service",
69
+ image_url="https://placebear.com/200/300",
70
+ custom_data=CustomData({"beep": "boop"}),
71
+ ),
72
+ )
73
+ except ApiError as error:
71
74
  print(error)
72
75
  exit(1)
73
76
 
@@ -78,23 +81,24 @@ print(f"Updated product '{product.id}': {product.description}")
78
81
  # │ Create Price │
79
82
  # └──────────────┘
80
83
  try:
81
- price = paddle.prices.create(CreatePrice(
82
- description = 'Bear Hug',
83
- product_id = product.id,
84
- unit_price = Money('1000', CurrencyCode.GBP),
85
- trial_period = TimePeriod(Interval.Week, 1),
86
- billing_cycle = TimePeriod(Interval.Year, 1),
87
- quantity = PriceQuantity(1, 1),
88
- custom_data = CustomData({'foo': 'bar'}),
89
-
90
- unit_price_overrides=[
91
- UnitPriceOverride(
92
- [CountryCode.CA, CountryCode.US],
93
- Money('5000', CurrencyCode.USD),
94
- ),
95
- ],
96
- ))
97
- except (ApiError, MalformedResponse) as error:
84
+ price = paddle.prices.create(
85
+ CreatePrice(
86
+ description="Bear Hug",
87
+ product_id=product.id,
88
+ unit_price=Money("1000", CurrencyCode.GBP),
89
+ trial_period=Duration(Interval.Week, 1),
90
+ billing_cycle=Duration(Interval.Year, 1),
91
+ quantity=PriceQuantity(1, 1),
92
+ custom_data=CustomData({"foo": "bar"}),
93
+ unit_price_overrides=[
94
+ UnitPriceOverride(
95
+ [CountryCode.CA, CountryCode.US],
96
+ Money("5000", CurrencyCode.USD),
97
+ ),
98
+ ],
99
+ )
100
+ )
101
+ except ApiError as error:
98
102
  print(error)
99
103
  exit(1)
100
104
 
@@ -105,12 +109,15 @@ print(f"Created price '{price.id}': {price.description}")
105
109
  # │ Update Price │
106
110
  # └──────────────┘
107
111
  try:
108
- price = paddle.prices.update(price.id, UpdatePrice(
109
- description = 'One-off Bear Hug',
110
- unit_price = Money('500', CurrencyCode.GBP),
111
- custom_data = CustomData({'beep': 'boop'}),
112
- ))
113
- except (ApiError, MalformedResponse) as error:
112
+ price = paddle.prices.update(
113
+ price.id,
114
+ UpdatePrice(
115
+ description="One-off Bear Hug",
116
+ unit_price=Money("500", CurrencyCode.GBP),
117
+ custom_data=CustomData({"beep": "boop"}),
118
+ ),
119
+ )
120
+ except ApiError as error:
114
121
  print(error)
115
122
  exit(1)
116
123
 
@@ -122,12 +129,12 @@ print(f"Updated price '{price.id}': {price.description}")
122
129
  # └─────────────────────────┘
123
130
  try:
124
131
  product = paddle.products.get(product.id, [ProductIncludes.Prices])
125
- except (ApiError, MalformedResponse) as error:
132
+ except ApiError as error:
126
133
  print(error)
127
134
  exit(1)
128
135
 
129
136
  print(f"product.prices={product.prices}")
130
- print(f"Read product '{product.id}' with prices " + ', '.join([str(price.id) for price in product.prices]))
137
+ print(f"Read product '{product.id}' with prices " + ", ".join([str(price.id) for price in product.prices]))
131
138
 
132
139
 
133
140
  # ┌───
@@ -135,7 +142,7 @@ print(f"Read product '{product.id}' with prices " + ', '.join([str(price.id) for
135
142
  # └────────────────────────┘
136
143
  try:
137
144
  price = paddle.prices.get(price.id, [PriceIncludes.Product])
138
- except (ApiError, MalformedResponse) as error:
145
+ except ApiError as error:
139
146
  print(error)
140
147
  exit(1)
141
148
 
@@ -146,11 +153,13 @@ print(f"Read price '{price.id}' with product {price.product.id if price.product
146
153
  # │ Get Products │
147
154
  # └──────────────┘
148
155
  try:
149
- products = paddle.products.list(ListProducts(
150
- includes = [ProductIncludes.Prices],
151
- statuses = [Status.Active],
152
- ))
153
- except (ApiError, MalformedResponse) as error:
156
+ products = paddle.products.list(
157
+ ListProducts(
158
+ includes=[ProductIncludes.Prices],
159
+ statuses=[Status.Active],
160
+ )
161
+ )
162
+ except ApiError as error:
154
163
  print(error)
155
164
  exit(1)
156
165
 
@@ -160,7 +169,7 @@ except (ApiError, MalformedResponse) as error:
160
169
  # └─────────────────────────────┘
161
170
  for product in products:
162
171
  print(f"Product: {product.name}")
163
- print('-' * len(product.name))
172
+ print("-" * len(product.name))
164
173
  for price in product.prices:
165
174
  print(f"Price: {price.name} - {price.description}")
166
175
  print()
examples/event_polling.py CHANGED
@@ -1,39 +1,37 @@
1
1
  from logging import getLogger
2
- from os import getenv
3
- from sys import exit # You should use classes/functions that returns instead of exits
2
+ from os import getenv
3
+ from sys import exit # You should use classes/functions that returns instead of exits
4
4
 
5
5
  from paddle_billing import Client, Environment, Options
6
6
 
7
- from paddle_billing.Exceptions.ApiError import ApiError
8
- from paddle_billing.Exceptions.SdkExceptions.MalformedResponse import MalformedResponse
7
+ from paddle_billing.Exceptions.ApiError import ApiError
9
8
 
10
9
  from paddle_billing.Resources.Events.Operations import ListEvents
11
10
  from paddle_billing.Resources.Shared.Operations import Pager
12
11
 
13
- log = getLogger('my_app')
12
+ log = getLogger("my_app")
14
13
 
15
14
  # Verify your Paddle API key was provided by a PADDLE_SECRET_API_KEY environment variable
16
15
  # It is strongly advised that you do not include secrets in your source code
17
16
  # Use environment variables, and/or secrets management like Vault to obtain your secrets
18
- api_key: str = getenv('PADDLE_SECRET_API_KEY', None)
17
+ api_key: str = getenv("PADDLE_SECRET_API_KEY", None)
19
18
  if not api_key:
20
19
  raise ValueError("You must provide the PADDLE_SECRET_API_KEY in your environment variables")
21
20
 
22
21
  # Determine the environment, defaulting to sandbox
23
- environment = getenv('PADDLE_ENVIRONMENT', 'sandbox')
24
- paddle_environment = getattr(Environment, environment) # E.g. Environment.sandbox
22
+ environment = Environment(getenv("PADDLE_ENVIRONMENT", "sandbox"))
25
23
 
26
24
  # Initialize the Paddle client
27
- paddle = Client(api_key, options=Options(paddle_environment), logger=log)
25
+ paddle = Client(api_key, options=Options(environment), logger=log)
28
26
 
29
27
  # Placeholder for the last processed event ID
30
- last_processed_event_id = 'evt_01hfxx8t6ek9h399srcrp36jt3'
28
+ last_processed_event_id = "evt_01hfxx8t6ek9h399srcrp36jt3"
31
29
 
32
30
  events = None
33
31
  try:
34
32
  # List events starting after the last processed event ID
35
33
  events = paddle.events.list(ListEvents(Pager(after=last_processed_event_id)))
36
- except (ApiError, MalformedResponse) as error:
34
+ except ApiError as error:
37
35
  log.error(error)
38
36
  # Your additional logic that can handle Paddle's hints about what went wrong
39
37
  except Exception as error:
@@ -49,7 +47,7 @@ if not len(events.items):
49
47
 
50
48
  for event in events:
51
49
  last_processed_event_id = event.event_id # Update the last processed event ID
52
- print(f"event: {event.event_id}\t\t Type: {event.event_type.value:28}\t\t Occurred At: {event.occurred_at.format()}")
50
+ print(f"event: {event.event_id}\t\t Type: {event.event_type.value:28}\t\t Occurred At: {event.occurred_at}")
53
51
  # Your additional logic for using each event
54
52
 
55
53
  # Now you're up-to-date, you should keep a record of the last processed event...
examples/get_products.py CHANGED
@@ -1,34 +1,37 @@
1
1
  from logging import getLogger
2
- from os import getenv
3
- from sys import exit # You should use classes/functions that returns instead of exits
2
+ from os import getenv
3
+ from sys import exit # You should use classes/functions that returns instead of exits
4
4
 
5
5
  from paddle_billing import Client, Environment, Options
6
6
 
7
- from paddle_billing.Exceptions.ApiError import ApiError
8
- from paddle_billing.Exceptions.SdkExceptions.MalformedResponse import MalformedResponse
7
+ from paddle_billing.Exceptions.ApiError import ApiError
9
8
 
10
- log = getLogger('my_app')
9
+ log = getLogger("my_app")
11
10
 
12
11
  # Verify your Paddle API key was provided by a PADDLE_SECRET_API_KEY environment variable
13
12
  # It is strongly advised that you do not include secrets in your source code
14
13
  # Use environment variables, and/or secrets management like Vault to obtain your secrets
15
- api_key = getenv('PADDLE_SECRET_API_KEY', None)
14
+ api_key = getenv("PADDLE_SECRET_API_KEY", None)
16
15
  if not api_key:
17
16
  raise ValueError("You must provide the PADDLE_SECRET_API_KEY in your environment variables")
18
17
 
19
18
  # Determine the environment, defaulting to sandbox
20
- environment = getenv('PADDLE_ENVIRONMENT', 'sandbox')
21
- paddle_environment = getattr(Environment, environment) # E.g. Environment.sandbox
19
+ environment = Environment(getenv("PADDLE_ENVIRONMENT", "sandbox"))
22
20
 
23
21
  # Initialize the Paddle client
24
- paddle = Client(api_key, options=Options(paddle_environment), logger=log)
22
+ paddle = Client(api_key, options=Options(environment), logger=log)
25
23
 
26
24
  products = None
27
25
  try:
28
26
  products = paddle.products.list()
29
- except (ApiError, MalformedResponse) as error:
27
+ except ApiError as error:
30
28
  log.error(error)
31
- # Your additional logic that can handle Paddle's hints about what went wrong
29
+ # Your additional logic that can handle Paddle's hints about what went wrong.
30
+ print(f"error_type: {error.error_type}")
31
+ print(f"error_code: {error.error_code}")
32
+ print(f"detail: {error.detail}")
33
+ print(f"field_errors: {error.field_errors}")
34
+ print(f"response.status_code: {error.response.status_code}")
32
35
  except Exception as error:
33
36
  log.error(f"We received an error listing products: {error}")
34
37
 
examples/logger.py CHANGED
@@ -1,25 +1,24 @@
1
1
  import logging
2
2
 
3
- from os import getenv
3
+ from os import getenv
4
4
  from paddle_billing import Client, Environment, Options
5
5
 
6
6
 
7
7
  # Verify your Paddle API key was provided by a PADDLE_SECRET_API_KEY environment variable
8
8
  # It is strongly advised that you do not include secrets in your source code
9
9
  # Use environment variables, and/or secrets management like Vault to obtain your secrets
10
- api_key = getenv('PADDLE_SECRET_API_KEY', None)
10
+ api_key = getenv("PADDLE_SECRET_API_KEY", None)
11
11
  if not api_key:
12
12
  raise ValueError("You must provide the PADDLE_SECRET_API_KEY in your environment variables")
13
13
 
14
14
  # Determine the environment, defaulting to sandbox
15
- environment = getenv('PADDLE_ENVIRONMENT', 'sandbox')
16
- paddle_environment = getattr(Environment, environment) # E.g. Environment.sandbox
15
+ environment = Environment(getenv("PADDLE_ENVIRONMENT", "sandbox"))
17
16
 
18
17
  # Initialize the Paddle client
19
18
  paddle = Client(
20
19
  api_key,
21
- options = Options(paddle_environment),
22
- logger = logging.getLogger('my_app'),
20
+ options=Options(environment),
21
+ logger=logging.getLogger("my_app"),
23
22
  )
24
23
 
25
24
  # Set up logging to standard output
@@ -28,4 +27,7 @@ stdout_handler.setLevel(logging.INFO)
28
27
  paddle.log.addHandler(stdout_handler)
29
28
 
30
29
  # List products
31
- paddle.products.list()
30
+ products = paddle.products.list()
31
+
32
+ for product in products:
33
+ print(f"Product's id: {product.id}")
@@ -0,0 +1,33 @@
1
+ from paddle_billing.Entities.Notifications import NotificationEvent
2
+ from paddle_billing.Notifications import Secret, Verifier
3
+ from examples.Utils.Requests.Request import Request
4
+
5
+ # This example requires environment variable TEST_MODE=1 to disable time drift checks, e.g.
6
+ # TEST_MODE=1 python webhook_verification.py
7
+
8
+ secret = "pdl_ntfset_01hs0t3tw21j988db1pam5xg8m_GrOWLNef+vmtjJYq4mSnHNzvc8uWoJ1I"
9
+
10
+ request = Request.create_from_fixture(
11
+ "webhook_payload.json",
12
+ {
13
+ "Paddle-Signature": "ts=1710498758;h1=558bf93944dbeb4790c7a8af6cb2ea435c8ca9c8396aafc1a4e37424ac132744",
14
+ },
15
+ )
16
+
17
+ integrity_check = Verifier().verify(request, Secret(secret))
18
+
19
+ if integrity_check is True:
20
+ print("Webhook is verified")
21
+
22
+ notification = NotificationEvent.from_request(request)
23
+ print(f"Notification ID: {notification.notification_id}")
24
+ print(f"Event ID: {notification.event_id}")
25
+ print(f"Event Type: {notification.event_type}")
26
+ print(f"Occurred At: {notification.occurred_at}")
27
+
28
+ customer = notification.data
29
+ print(f"Customer ID: {customer.id}")
30
+ print(f"Customer Name: {customer.name}")
31
+ print(f"Customer Email: {customer.email}")
32
+ else:
33
+ print("Webhook is not verified")