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,121 @@
1
+ from paddle_billing.ResponseParser import ResponseParser
2
+
3
+ from paddle_billing.Entities.Subscription import Subscription
4
+ from paddle_billing.Entities.SubscriptionPreview import SubscriptionPreview
5
+ from paddle_billing.Entities.Transaction import Transaction
6
+ from paddle_billing.Entities.Collections import Paginator, SubscriptionCollection
7
+
8
+ from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
9
+
10
+ from paddle_billing.Resources.Subscriptions.Operations import (
11
+ CancelSubscription,
12
+ CreateOneTimeCharge,
13
+ SubscriptionIncludes,
14
+ ListSubscriptions,
15
+ PauseSubscription,
16
+ PreviewOneTimeCharge,
17
+ PreviewUpdateSubscription,
18
+ ResumeSubscription,
19
+ UpdateSubscription,
20
+ )
21
+
22
+ from typing import TYPE_CHECKING
23
+ if TYPE_CHECKING:
24
+ from paddle_billing.Client import Client
25
+
26
+
27
+ class SubscriptionsClient:
28
+ def __init__(self, client: 'Client'):
29
+ self.client = client
30
+ self.response = None
31
+
32
+
33
+ def list(self, operation: ListSubscriptions = None) -> SubscriptionCollection:
34
+ if operation is None:
35
+ operation = ListSubscriptions()
36
+
37
+ self.response = self.client.get_raw('/subscriptions', operation.get_parameters())
38
+ parser = ResponseParser(self.response)
39
+
40
+ return SubscriptionCollection.from_list(
41
+ parser.get_data(),
42
+ Paginator(self.client, parser.get_pagination(), SubscriptionCollection)
43
+ )
44
+
45
+
46
+ def get(self, subscription_id: str, includes = None) -> Subscription:
47
+ if includes is None:
48
+ includes = []
49
+
50
+ invalid_items = [item for item in includes if not isinstance(item, SubscriptionIncludes)]
51
+ if invalid_items:
52
+ raise InvalidArgumentException('includes', SubscriptionIncludes.__name__, invalid_items)
53
+
54
+ params = {'include': ','.join(include.value for include in includes)} if includes else {}
55
+ self.response = self.client.get_raw(f"/subscriptions/{subscription_id}", params)
56
+ parser = ResponseParser(self.response)
57
+
58
+ return Subscription.from_dict(parser.get_data())
59
+
60
+
61
+ def update(self, subscription_id: str, operation: UpdateSubscription) -> Subscription:
62
+ self.response = self.client.patch_raw(f"/subscriptions/{subscription_id}", operation.get_parameters())
63
+ parser = ResponseParser(self.response)
64
+
65
+ return Subscription.from_dict(parser.get_data())
66
+
67
+
68
+ def pause(self, subscription_id: str, operation: PauseSubscription) -> Subscription:
69
+ self.response = self.client.post_raw(f"/subscriptions/{subscription_id}/pause", operation.get_parameters())
70
+ parser = ResponseParser(self.response)
71
+
72
+ return Subscription.from_dict(parser.get_data())
73
+
74
+
75
+ def resume(self, subscription_id: str, operation: ResumeSubscription) -> Subscription:
76
+ self.response = self.client.post_raw(f"/subscriptions/{subscription_id}/resume", operation.get_parameters())
77
+ parser = ResponseParser(self.response)
78
+
79
+ return Subscription.from_dict(parser.get_data())
80
+
81
+
82
+ def cancel(self, subscription_id: str, operation: CancelSubscription) -> Subscription:
83
+ self.response = self.client.post_raw(f"/subscriptions/{subscription_id}/cancel", operation.get_parameters())
84
+ parser = ResponseParser(self.response)
85
+
86
+ return Subscription.from_dict(parser.get_data())
87
+
88
+
89
+ def get_payment_method_change_transaction(self, subscription_id: str) -> Transaction:
90
+ self.response = self.client.get_raw(f"/subscriptions/{subscription_id}/update-payment-method-transaction")
91
+ parser = ResponseParser(self.response)
92
+
93
+ return Transaction.from_dict(parser.get_data())
94
+
95
+
96
+ def activate(self, subscription_id: str) -> Subscription:
97
+ self.response = self.client.post_raw(f"/subscriptions/{subscription_id}/activate")
98
+ parser = ResponseParser(self.response)
99
+
100
+ return Subscription.from_dict(parser.get_data())
101
+
102
+
103
+ def create_one_time_charge(self, subscription_id: str, operation: CreateOneTimeCharge) -> Subscription:
104
+ self.response = self.client.post_raw(f"/subscriptions/{subscription_id}/charge", operation.get_parameters())
105
+ parser = ResponseParser(self.response)
106
+
107
+ return Subscription.from_dict(parser.get_data())
108
+
109
+
110
+ def preview_update(self, subscription_id: str, operation: PreviewUpdateSubscription) -> SubscriptionPreview:
111
+ self.response = self.client.patch_raw(f"/subscriptions/{subscription_id}/preview", operation.get_parameters())
112
+ parser = ResponseParser(self.response)
113
+
114
+ return SubscriptionPreview.from_dict(parser.get_data())
115
+
116
+
117
+ def preview_one_time_charge(self, subscription_id: str, operation: PreviewOneTimeCharge) -> SubscriptionPreview:
118
+ self.response = self.client.post_raw(f"/subscriptions/{subscription_id}/charge/preview", operation.get_parameters())
119
+ parser = ResponseParser(self.response)
120
+
121
+ return SubscriptionPreview.from_dict(parser.get_data())
File without changes
@@ -0,0 +1,25 @@
1
+ from dataclasses import asdict, dataclass
2
+
3
+ from paddle_billing.Undefined import Undefined
4
+ from paddle_billing.Entities.Shared import BillingDetails, Checkout, CollectionMode, CurrencyCode, CustomData, TransactionStatus
5
+ from paddle_billing.Entities.Transactions import TransactionCreateItem, TransactionCreateItemWithPrice, TransactionTimePeriod
6
+
7
+
8
+ @dataclass
9
+ class CreateTransaction:
10
+ items: list[TransactionCreateItem | TransactionCreateItemWithPrice] = Undefined()
11
+ status: TransactionStatus | Undefined = Undefined()
12
+ customer_id: str | None | Undefined = Undefined()
13
+ address_id: str | None | Undefined = Undefined()
14
+ business_id: str | None | Undefined = Undefined()
15
+ custom_data: CustomData | None | Undefined = Undefined()
16
+ currency_code: CurrencyCode | Undefined = Undefined()
17
+ collection_mode: CollectionMode | Undefined = Undefined()
18
+ discount_id: str | None | Undefined = Undefined()
19
+ billing_details: BillingDetails | None | Undefined = Undefined()
20
+ billing_period: TransactionTimePeriod | None | Undefined = Undefined()
21
+ checkout: Checkout | None | Undefined = Undefined()
22
+
23
+
24
+ def get_parameters(self) -> dict:
25
+ return asdict(self)
@@ -0,0 +1,11 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class Includes(PaddleStrEnum):
5
+ Address = 'address'
6
+ Adjustment = 'adjustment'
7
+ AdjustmentsTotals = 'adjustments_totals'
8
+ AvailablePaymentMethods = 'available_payment_methods'
9
+ Business = 'business'
10
+ Customer = 'customer'
11
+ Discount = 'discount'
@@ -0,0 +1,10 @@
1
+ from paddle_billing.PaddleStrEnum import PaddleStrEnum
2
+
3
+
4
+ class Origin(PaddleStrEnum):
5
+ Api = 'api'
6
+ SubscriptionCharge = 'subscription_charge'
7
+ SubscriptionPaymentMethodChange = 'subscription_payment_method_change'
8
+ SubscriptionRecurring = 'subscription_recurring'
9
+ SubscriptionUpdate = 'subscription_update'
10
+ Web = 'web'
@@ -0,0 +1,86 @@
1
+ from paddle_billing.EnumStringify import enum_stringify
2
+ from paddle_billing.HasParameters import HasParameters
3
+
4
+ from paddle_billing.Entities.Shared import CollectionMode, TransactionStatus
5
+
6
+ from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
7
+
8
+ from paddle_billing.Resources.Shared.Operations import DateComparison, Pager
9
+ from paddle_billing.Resources.Transactions.Operations.List.Includes import Includes
10
+ from paddle_billing.Resources.Transactions.Operations.List.Origin import Origin
11
+
12
+
13
+ class ListTransactions(HasParameters):
14
+ def __init__(
15
+ self,
16
+ pager: Pager | None = None,
17
+ billed_at: DateComparison | None = None,
18
+ collection_mode: CollectionMode | None = None,
19
+ created_at: DateComparison | None = None,
20
+ updated_at: DateComparison | None = None,
21
+ customer_ids: list[str] = None,
22
+ ids: list[str] = None,
23
+ includes: list[Includes] = None,
24
+ invoice_numbers: list[str] = None,
25
+ statuses: list[TransactionStatus] = None,
26
+ subscription_ids: list[str] = None,
27
+ origins: list[Origin] = None,
28
+ ):
29
+ self.pager = pager
30
+ self.billed_at = billed_at
31
+ self.collection_mode = collection_mode
32
+ self.created_at = created_at
33
+ self.updated_at = updated_at
34
+ self.includes = includes if includes is not None else []
35
+ self.ids = ids if ids is not None else []
36
+ self.customer_ids = customer_ids if customer_ids is not None else []
37
+ self.subscription_ids = subscription_ids if subscription_ids is not None else []
38
+ self.invoice_numbers = invoice_numbers if invoice_numbers is not None else []
39
+ self.statuses = statuses if statuses is not None else []
40
+ self.origins = origins if origins is not None else []
41
+
42
+ # Validation
43
+ for field_name, field_value, field_type in [
44
+ ('ids', self.ids, str),
45
+ ('customer_ids', self.customer_ids, str),
46
+ ('subscription_ids', self.subscription_ids, str),
47
+ ('invoice_numbers', self.invoice_numbers, str),
48
+ ('includes', self.includes, Includes),
49
+ ('statuses', self.statuses, TransactionStatus),
50
+ ('origins', self.origins, Origin),
51
+ ]:
52
+ invalid_items = [item for item in field_value if not isinstance(item, field_type)]
53
+ if invalid_items:
54
+ raise InvalidArgumentException(field_name, field_type.__name__, invalid_items)
55
+
56
+
57
+ def get_parameters(self) -> dict:
58
+ parameters = {}
59
+ if self.pager:
60
+ parameters.update(self.pager.get_parameters())
61
+
62
+ if self.billed_at is not None:
63
+ parameters[f"billed_at{self.billed_at.comparator}"] = self.billed_at.formatted()
64
+ if self.created_at is not None:
65
+ parameters[f"created_at{self.created_at.comparator}"] = self.created_at.formatted()
66
+ if self.updated_at is not None:
67
+ parameters[f"updated_at{self.updated_at.comparator}"] = self.updated_at.formatted()
68
+
69
+ if self.collection_mode:
70
+ parameters['collection_mode'] = self.collection_mode.value
71
+ if self.customer_ids:
72
+ parameters['customer_id'] = ','.join(self.customer_ids)
73
+ if self.ids:
74
+ parameters['id'] = ','.join(self.ids)
75
+ if self.includes:
76
+ parameters['include'] = ','.join(map(enum_stringify, self.includes))
77
+ if self.invoice_numbers:
78
+ parameters['invoice_number'] = ','.join(self.invoice_numbers)
79
+ if self.statuses:
80
+ parameters['status'] = ','.join(map(enum_stringify, self.statuses))
81
+ if self.subscription_ids:
82
+ parameters['subscription_id'] = ','.join(self.subscription_ids)
83
+ if self.origins:
84
+ parameters['origin'] = ','.join(map(enum_stringify, self.origins))
85
+
86
+ return parameters
@@ -0,0 +1,24 @@
1
+ from dataclasses import asdict, dataclass
2
+
3
+ from paddle_billing.Undefined import Undefined
4
+ from paddle_billing.Entities.Shared import AddressPreview, CollectionMode, CurrencyCode
5
+ from paddle_billing.Entities.Transactions import TransactionItemPreviewWithPriceId, TransactionItemPreviewWithNonCatalogPrice
6
+
7
+
8
+
9
+ @dataclass
10
+ class PreviewTransaction:
11
+ items: list[TransactionItemPreviewWithPriceId | TransactionItemPreviewWithNonCatalogPrice]
12
+ customer_id: str | None | Undefined = Undefined()
13
+ address_id: str | None | Undefined = Undefined()
14
+ business_id: str | None | Undefined = Undefined()
15
+ currency_code: CurrencyCode | Undefined = Undefined()
16
+ collection_mode: CollectionMode | Undefined = Undefined()
17
+ discount_id: str | None | Undefined = Undefined()
18
+ customer_ip_address: str | None | Undefined = Undefined()
19
+ address: AddressPreview | None | Undefined = Undefined()
20
+ ignore_trials: bool | Undefined = Undefined()
21
+
22
+
23
+ def get_parameters(self) -> dict:
24
+ return asdict(self)
@@ -0,0 +1,25 @@
1
+ from dataclasses import asdict, dataclass
2
+
3
+ from paddle_billing.Undefined import Undefined
4
+ from paddle_billing.Entities.Shared import BillingDetails, Checkout, CollectionMode, CurrencyCode, CustomData, TransactionStatus
5
+ from paddle_billing.Entities.Transactions import TransactionCreateItem, TransactionCreateItemWithPrice, TransactionTimePeriod
6
+
7
+
8
+ @dataclass
9
+ class UpdateTransaction:
10
+ items: list[TransactionCreateItem | TransactionCreateItemWithPrice] = Undefined()
11
+ status: TransactionStatus | Undefined = Undefined()
12
+ customer_id: str | None | Undefined = Undefined()
13
+ address_id: str | None | Undefined = Undefined()
14
+ business_id: str | None | Undefined = Undefined()
15
+ custom_data: CustomData | None | Undefined = Undefined()
16
+ currency_code: CurrencyCode | Undefined = Undefined()
17
+ collection_mode: CollectionMode | Undefined = Undefined()
18
+ discount_id: str | None | Undefined = Undefined()
19
+ billing_details: BillingDetails | None | Undefined = Undefined()
20
+ billing_period: TransactionTimePeriod | None | Undefined = Undefined()
21
+ checkout: Checkout | None | Undefined = Undefined()
22
+
23
+
24
+ def get_parameters(self) -> dict:
25
+ return asdict(self)
@@ -0,0 +1,6 @@
1
+ from paddle_billing.Resources.Transactions.Operations.CreateTransaction import CreateTransaction
2
+ from paddle_billing.Resources.Transactions.Operations.ListTransactions import ListTransactions
3
+ from paddle_billing.Resources.Transactions.Operations.List.Includes import Includes as TransactionIncludes
4
+ from paddle_billing.Resources.Transactions.Operations.List.Origin import Origin as TransactionOrigin
5
+ from paddle_billing.Resources.Transactions.Operations.PreviewTransaction import PreviewTransaction
6
+ from paddle_billing.Resources.Transactions.Operations.UpdateTransaction import UpdateTransaction
@@ -0,0 +1,90 @@
1
+ from paddle_billing.ResponseParser import ResponseParser
2
+
3
+ from paddle_billing.Entities.Transaction import Transaction
4
+ from paddle_billing.Entities.TransactionData import TransactionData
5
+ from paddle_billing.Entities.TransactionPreview import TransactionPreview
6
+ from paddle_billing.Entities.Collections import Paginator, TransactionCollection
7
+
8
+ from paddle_billing.Exceptions.SdkExceptions.InvalidArgumentException import InvalidArgumentException
9
+
10
+ from paddle_billing.Resources.Transactions.Operations import (
11
+ CreateTransaction,
12
+ ListTransactions,
13
+ UpdateTransaction,
14
+ PreviewTransaction,
15
+ TransactionIncludes,
16
+ )
17
+
18
+ from typing import TYPE_CHECKING
19
+ if TYPE_CHECKING:
20
+ from paddle_billing.Client import Client
21
+
22
+
23
+ class TransactionsClient:
24
+ def __init__(self, client: 'Client'):
25
+ self.client = client
26
+ self.response = None
27
+
28
+
29
+ def list(self, operation: ListTransactions = None) -> TransactionCollection:
30
+ if operation is None:
31
+ operation = ListTransactions()
32
+
33
+ self.response = self.client.get_raw('/transactions', operation.get_parameters())
34
+ parser = ResponseParser(self.response)
35
+
36
+ return TransactionCollection.from_list(
37
+ parser.get_data(),
38
+ Paginator(self.client, parser.get_pagination(), TransactionCollection)
39
+ )
40
+
41
+
42
+ def get(self, transaction_id: str, includes = None) -> Transaction:
43
+ if includes is None:
44
+ includes = []
45
+
46
+ invalid_items = [item for item in includes if not isinstance(item, TransactionIncludes)]
47
+ if invalid_items:
48
+ raise InvalidArgumentException('includes', TransactionIncludes.__name__, invalid_items)
49
+
50
+ params = {'include': ','.join(include.value for include in includes)} if includes else {}
51
+ self.response = self.client.get_raw(f"/transactions/{transaction_id}", params)
52
+ parser = ResponseParser(self.response)
53
+
54
+ return Transaction.from_dict(parser.get_data())
55
+
56
+
57
+ def create(self, operation: CreateTransaction, includes = None) -> Transaction:
58
+ if includes is None:
59
+ includes = []
60
+
61
+ invalid_items = [item for item in includes if not isinstance(item, TransactionIncludes)]
62
+ if invalid_items:
63
+ raise InvalidArgumentException('includes', TransactionIncludes.__name__, invalid_items)
64
+
65
+ params = {'include': ','.join(include.value for include in includes)} if includes else {}
66
+ self.response = self.client.post_raw('/transactions', operation.get_parameters(), params)
67
+ parser = ResponseParser(self.response)
68
+
69
+ return Transaction.from_dict(parser.get_data())
70
+
71
+
72
+ def update(self, transaction_id: str, operation: UpdateTransaction) -> Transaction:
73
+ self.response = self.client.patch_raw(f"/transactions/{transaction_id}", operation.get_parameters())
74
+ parser = ResponseParser(self.response)
75
+
76
+ return Transaction.from_dict(parser.get_data())
77
+
78
+
79
+ def preview(self, operation: PreviewTransaction) -> TransactionPreview:
80
+ self.response = self.client.post_raw('/transactions/preview', operation.get_parameters())
81
+ parser = ResponseParser(self.response)
82
+
83
+ return TransactionPreview.from_dict(parser.get_data())
84
+
85
+
86
+ def get_invoice_pdf(self, transaction_id: str) -> TransactionData:
87
+ self.response = self.client.get_raw(f"/transactions/{transaction_id}/invoice")
88
+ parser = ResponseParser(self.response)
89
+
90
+ return TransactionData.from_dict(parser.get_data())
File without changes
File without changes
@@ -0,0 +1,65 @@
1
+ import json
2
+ from requests import Response
3
+
4
+ from paddle_billing.Entities.Shared import Pagination
5
+
6
+ from paddle_billing.Exceptions.ApiError import ApiError
7
+
8
+
9
+ class ResponseParser:
10
+ def __init__(self, response: Response):
11
+ self.body = None
12
+
13
+ if not hasattr(response, 'text'):
14
+ return
15
+
16
+ try:
17
+ self.body = json.loads(response.text)
18
+ except json.JSONDecodeError:
19
+ self.body = None
20
+
21
+ if self.body and 'error' in self.body:
22
+ self.parse_errors()
23
+
24
+
25
+ def get_data(self) -> list | dict:
26
+ return self.body.get('data', []) if self.body else []
27
+
28
+
29
+ def get_pagination(self) -> Pagination:
30
+ meta = self.body.get('meta', {}) if self.body else {}
31
+ pagination = meta.get('pagination', {}) if meta else {}
32
+
33
+ return Pagination(
34
+ per_page = pagination.get('per_page'),
35
+ next = pagination.get('next'),
36
+ has_more = pagination.get('has_more'),
37
+ estimated_total = pagination.get('estimated_total'),
38
+ )
39
+
40
+
41
+ def parse_errors(self):
42
+ if not self.body or 'error' not in self.body:
43
+ return
44
+
45
+ error = self.body['error']
46
+ code = error.get('code', 'shared_error')
47
+ exception_class = self.find_exception_class_from_code(code)
48
+
49
+ raise exception_class(error)
50
+
51
+
52
+ @staticmethod
53
+ def find_exception_class_from_code(code):
54
+ parts = code.split('_')
55
+ resource = parts[0].capitalize() if parts else ''
56
+
57
+ if not resource:
58
+ return ApiError
59
+
60
+ class_name = f"api_error.{resource}ApiError"
61
+ try:
62
+ module = __import__(class_name, fromlist=[''])
63
+ return getattr(module, f'{resource}ApiError')
64
+ except (ImportError, AttributeError):
65
+ return ApiError
@@ -0,0 +1,2 @@
1
+ class Undefined:
2
+ pass
@@ -0,0 +1,4 @@
1
+ # The order of these three imports matters
2
+ from paddle_billing.Environment import Environment
3
+ from paddle_billing.Options import Options
4
+ from paddle_billing.Client import Client