lago-python-client 1.40.0__tar.gz → 1.41.4__tar.gz

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 (171) hide show
  1. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/PKG-INFO +1 -1
  2. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/__init__.py +10 -0
  3. lago_python_client-1.41.4/lago_python_client/models/alert.py +54 -0
  4. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/charge.py +2 -0
  5. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/credit_note.py +2 -0
  6. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/subscription.py +2 -0
  7. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/wallet.py +2 -0
  8. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/subscriptions/clients.py +30 -0
  9. lago_python_client-1.41.4/lago_python_client/version.py +1 -0
  10. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client.egg-info/PKG-INFO +1 -1
  11. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client.egg-info/SOURCES.txt +2 -0
  12. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_credit_note_client.py +16 -4
  13. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_subscription_client.py +93 -0
  14. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_wallet_client.py +2 -0
  15. lago_python_client-1.40.0/lago_python_client/version.py +0 -1
  16. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/LICENSE +0 -0
  17. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/README.md +0 -0
  18. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/__init__.py +0 -0
  19. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/activity_logs/__init__.py +0 -0
  20. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/activity_logs/clients.py +0 -0
  21. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/add_ons/__init__.py +0 -0
  22. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/add_ons/clients.py +0 -0
  23. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/api_logs/__init__.py +0 -0
  24. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/api_logs/clients.py +0 -0
  25. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/base_client.py +0 -0
  26. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/base_model.py +0 -0
  27. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/billable_metrics/__init__.py +0 -0
  28. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/billable_metrics/clients.py +0 -0
  29. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/billing_entities/__init__.py +0 -0
  30. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/billing_entities/clients.py +0 -0
  31. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/client.py +0 -0
  32. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/coupons/__init__.py +0 -0
  33. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/coupons/clients.py +0 -0
  34. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/credit_notes/__init__.py +0 -0
  35. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/credit_notes/clients.py +0 -0
  36. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/__init__.py +0 -0
  37. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/applied_coupons_client.py +0 -0
  38. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/clients.py +0 -0
  39. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/credit_notes_client.py +0 -0
  40. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/invoices_client.py +0 -0
  41. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/payment_requests_client.py +0 -0
  42. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/payments_client.py +0 -0
  43. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/subscriptions_client.py +0 -0
  44. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/customers/wallets_client.py +0 -0
  45. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/events/__init__.py +0 -0
  46. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/events/clients.py +0 -0
  47. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/exceptions.py +0 -0
  48. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/fees/__init__.py +0 -0
  49. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/fees/clients.py +0 -0
  50. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/functools_ext.py +0 -0
  51. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/gross_revenues/__init__.py +0 -0
  52. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/gross_revenues/clients.py +0 -0
  53. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/invoice_collections/__init__.py +0 -0
  54. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/invoice_collections/clients.py +0 -0
  55. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/invoiced_usages/__init__.py +0 -0
  56. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/invoiced_usages/clients.py +0 -0
  57. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/invoices/__init__.py +0 -0
  58. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/invoices/clients.py +0 -0
  59. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/mixins.py +0 -0
  60. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/activity_log.py +0 -0
  61. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/add_on.py +0 -0
  62. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/api_log.py +0 -0
  63. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/applied_coupon.py +0 -0
  64. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/billable_metric.py +0 -0
  65. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/billing_entity.py +0 -0
  66. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/billing_period.py +0 -0
  67. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/coupon.py +0 -0
  68. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/credit.py +0 -0
  69. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/customer.py +0 -0
  70. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/customer_projected_usage.py +0 -0
  71. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/customer_usage.py +0 -0
  72. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/error_detail.py +0 -0
  73. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/event.py +0 -0
  74. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/fee.py +0 -0
  75. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/fixed_charge.py +0 -0
  76. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/gross_revenue.py +0 -0
  77. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/invoice.py +0 -0
  78. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/invoice_collection.py +0 -0
  79. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/invoice_custom_section.py +0 -0
  80. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/invoice_item.py +0 -0
  81. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/invoiced_usage.py +0 -0
  82. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/lifetime_usage.py +0 -0
  83. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/minimum_commitment.py +0 -0
  84. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/mrr.py +0 -0
  85. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/organization.py +0 -0
  86. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/overdue_balance.py +0 -0
  87. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/payment.py +0 -0
  88. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/payment_receipt.py +0 -0
  89. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/payment_request.py +0 -0
  90. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/plan.py +0 -0
  91. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/tax.py +0 -0
  92. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/usage.py +0 -0
  93. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/usage_threshold.py +0 -0
  94. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/wallet_transaction.py +0 -0
  95. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/models/webhook_endpoint.py +0 -0
  96. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/mrrs/__init__.py +0 -0
  97. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/mrrs/clients.py +0 -0
  98. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/organizations/__init__.py +0 -0
  99. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/organizations/clients.py +0 -0
  100. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/overdue_balances/__init__.py +0 -0
  101. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/overdue_balances/clients.py +0 -0
  102. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/payment_receipts/__init__.py +0 -0
  103. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/payment_receipts/clients.py +0 -0
  104. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/payment_requests/__init__.py +0 -0
  105. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/payment_requests/clients.py +0 -0
  106. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/payments/__init__.py +0 -0
  107. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/payments/clients.py +0 -0
  108. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/plans/__init__.py +0 -0
  109. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/plans/clients.py +0 -0
  110. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/py.typed +0 -0
  111. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/services/__init__.py +0 -0
  112. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/services/json.py +0 -0
  113. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/services/request.py +0 -0
  114. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/services/response.py +0 -0
  115. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/subscriptions/__init__.py +0 -0
  116. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/taxes/__init__.py +0 -0
  117. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/taxes/clients.py +0 -0
  118. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/usages/__init__.py +0 -0
  119. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/usages/clients.py +0 -0
  120. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/wallets/__init__.py +0 -0
  121. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/wallets/clients.py +0 -0
  122. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/webhook_endpoints/__init__.py +0 -0
  123. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/webhook_endpoints/clients.py +0 -0
  124. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/webhooks/__init__.py +0 -0
  125. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client/webhooks/clients.py +0 -0
  126. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client.egg-info/dependency_links.txt +0 -0
  127. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client.egg-info/requires.txt +0 -0
  128. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/lago_python_client.egg-info/top_level.txt +0 -0
  129. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/pyproject.toml +0 -0
  130. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/setup.cfg +0 -0
  131. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/__init__.py +0 -0
  132. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_activity_logs_client.py +0 -0
  133. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_add_on_client.py +0 -0
  134. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_api_logs_client.py +0 -0
  135. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_applied_coupon_client.py +0 -0
  136. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_billable_metric_client.py +0 -0
  137. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_billing_entity_client.py +0 -0
  138. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_client.py +0 -0
  139. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_coupon_client.py +0 -0
  140. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_applied_coupons_client.py +0 -0
  141. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_client.py +0 -0
  142. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_credit_notes_client.py +0 -0
  143. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_invoices_client.py +0 -0
  144. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_payment_requests_client.py +0 -0
  145. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_payments_client.py +0 -0
  146. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_sbscriptions_client.py +0 -0
  147. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_customer_wallets_client.py +0 -0
  148. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_event_client.py +0 -0
  149. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_fee_client.py +0 -0
  150. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_functools_ext.py +0 -0
  151. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_gross_revenue_client.py +0 -0
  152. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_invoice_client.py +0 -0
  153. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_invoice_collection_client.py +0 -0
  154. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_invoiced_usage_client.py +0 -0
  155. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_json_services.py +0 -0
  156. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_mrr_client.py +0 -0
  157. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_organization_client.py +0 -0
  158. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_overdue_balance_client.py +0 -0
  159. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_payment_client.py +0 -0
  160. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_payment_receipt_client.py +0 -0
  161. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_payment_request_client.py +0 -0
  162. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_plan_client.py +0 -0
  163. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_request_services.py +0 -0
  164. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_response_services.py +0 -0
  165. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_tax_client.py +0 -0
  166. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_usage_client.py +0 -0
  167. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_wallet_transaction_client.py +0 -0
  168. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_webhook_client.py +0 -0
  169. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/test_webhook_endpoint_client.py +0 -0
  170. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/utils/__init__.py +0 -0
  171. {lago_python_client-1.40.0 → lago_python_client-1.41.4}/tests/utils/mixin.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.40.0
3
+ Version: 1.41.4
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -1,4 +1,14 @@
1
1
  from .activity_log import ActivityLog as ActivityLog, ActivityLogResponse as ActivityLogResponse
2
+ from .alert import (
3
+ Alert as Alert,
4
+ AlertsList as AlertsList,
5
+ AlertThreshold as AlertThreshold,
6
+ AlertThresholdList as AlertThresholdList,
7
+ AlertResponse as AlertResponse,
8
+ AlertsResponseList as AlertsResponseList,
9
+ AlertThresholdResponse as AlertThresholdResponse,
10
+ AlertThresholdResponseList as AlertThresholdResponseList,
11
+ )
2
12
  from .api_log import ApiLog as ApiLog, ApiLogResponse as ApiLogResponse
3
13
  from .applied_coupon import AppliedCoupon as AppliedCoupon
4
14
  from .billable_metric import (
@@ -0,0 +1,54 @@
1
+ from typing import List, Optional
2
+
3
+ from ..base_model import BaseModel, BaseResponseModel
4
+ from .billable_metric import BillableMetricResponse
5
+
6
+
7
+ class AlertThreshold(BaseModel):
8
+ code: Optional[str]
9
+ value: str
10
+ recurring: Optional[bool]
11
+
12
+
13
+ class AlertThresholdList(BaseModel):
14
+ __root__: List[AlertThreshold]
15
+
16
+
17
+ class Alert(BaseModel):
18
+ alert_type: str
19
+ code: str
20
+ name: Optional[str]
21
+ billable_metric_code: Optional[str]
22
+ thresholds: AlertThresholdList
23
+
24
+
25
+ class AlertsList(BaseModel):
26
+ alerts: List[Alert]
27
+
28
+
29
+ class AlertThresholdResponse(BaseResponseModel):
30
+ code: Optional[str]
31
+ value: str
32
+ recurring: bool
33
+
34
+
35
+ class AlertThresholdResponseList(BaseResponseModel):
36
+ __root__: List[AlertThresholdResponse]
37
+
38
+
39
+ class AlertResponse(BaseResponseModel):
40
+ lago_id: str
41
+ lago_organization_id: str
42
+ external_subscription_id: str
43
+ alert_type: str
44
+ code: str
45
+ name: Optional[str]
46
+ previous_value: Optional[str]
47
+ last_processed_at: Optional[str]
48
+ thresholds: AlertThresholdResponseList
49
+ created_at: str
50
+ billable_metric: Optional[BillableMetricResponse]
51
+
52
+
53
+ class AlertsResponseList(BaseResponseModel):
54
+ alerts: List[AlertResponse]
@@ -35,6 +35,7 @@ class Charge(BaseModel):
35
35
  filters: Optional[ChargeFilters]
36
36
  tax_codes: Optional[List[str]]
37
37
  applied_pricing_unit: Optional[AppliedPricingUnit]
38
+ accepts_target_wallet: Optional[bool]
38
39
 
39
40
 
40
41
  class Charges(BaseModel):
@@ -55,6 +56,7 @@ class ChargeResponse(BaseResponseModel):
55
56
  properties: Optional[Dict[str, Any]]
56
57
  filters: Optional[ChargeFilters]
57
58
  taxes: Optional[TaxesResponse]
59
+ accepts_target_wallet: Optional[bool]
58
60
 
59
61
 
60
62
  class ChargesResponse(BaseResponseModel):
@@ -1,6 +1,7 @@
1
1
  from typing import Dict, List, Optional
2
2
 
3
3
  from lago_python_client.base_model import BaseModel
4
+ from .customer import CustomerResponse
4
5
 
5
6
  from .fee import FeeResponse
6
7
  from ..base_model import BaseResponseModel
@@ -60,6 +61,7 @@ class CreditNoteResponse(BaseResponseModel):
60
61
  items: Optional[ItemsResponse]
61
62
  applied_taxes: Optional[CreditNoteAppliedTaxes]
62
63
  metadata: Optional[Dict[str, Optional[str]]]
64
+ customer: Optional[CustomerResponse]
63
65
 
64
66
 
65
67
  class Item(BaseModel):
@@ -29,6 +29,8 @@ class SubscriptionResponse(BaseResponseModel):
29
29
  canceled_at: Optional[str]
30
30
  created_at: Optional[str]
31
31
  plan_code: Optional[str]
32
+ plan_amount_cents: Optional[str]
33
+ plan_amount_currency: Optional[str]
32
34
  started_at: Optional[str]
33
35
  status: Optional[str]
34
36
  name: Optional[str]
@@ -56,6 +56,7 @@ class Wallet(BaseModel):
56
56
  external_customer_id: Optional[str]
57
57
  rate_amount: Optional[str]
58
58
  name: Optional[str]
59
+ code: Optional[str]
59
60
  priority: Optional[int]
60
61
  paid_credits: Optional[str]
61
62
  granted_credits: Optional[str]
@@ -79,6 +80,7 @@ class WalletResponse(BaseResponseModel):
79
80
  status: str
80
81
  currency: str
81
82
  name: Optional[str]
83
+ code: Optional[str]
82
84
  priority: Optional[int]
83
85
  rate_amount: str
84
86
  credits_balance: str
@@ -8,13 +8,16 @@ from ..mixins import (
8
8
  FindCommandMixin,
9
9
  UpdateCommandMixin,
10
10
  )
11
+ from ..models.alert import AlertResponse, AlertsList
11
12
  from ..models.fixed_charge import FixedChargeResponse
12
13
  from ..models.lifetime_usage import LifetimeUsageResponse
13
14
  from ..models.subscription import SubscriptionResponse
14
15
  from ..services.request import (
15
16
  make_headers,
16
17
  make_url,
18
+ send_delete_request,
17
19
  send_get_request,
20
+ send_post_request,
18
21
  send_put_request,
19
22
  )
20
23
  from ..services.response import (
@@ -22,6 +25,7 @@ from ..services.response import (
22
25
  get_response_data,
23
26
  prepare_index_response,
24
27
  prepare_object_response,
28
+ verify_response,
25
29
  )
26
30
  from ..services.json import to_json
27
31
 
@@ -71,6 +75,32 @@ class SubscriptionClient(
71
75
  data=get_response_data(response=api_response, key="lifetime_usage"),
72
76
  )
73
77
 
78
+ def create_alerts(self, external_id: str, input_object: AlertsList) -> Mapping[str, Any]:
79
+ api_response: Response = send_post_request(
80
+ url=make_url(
81
+ origin=self.base_url,
82
+ path_parts=(self.API_RESOURCE, external_id, "alerts"),
83
+ ),
84
+ content=to_json(input_object.dict()),
85
+ headers=make_headers(api_key=self.api_key),
86
+ )
87
+
88
+ return prepare_index_response(
89
+ api_resource="alerts",
90
+ response_model=AlertResponse,
91
+ data=get_response_data(response=api_response),
92
+ )
93
+
94
+ def delete_alerts(self, external_id: str) -> None:
95
+ api_response: Response = send_delete_request(
96
+ url=make_url(
97
+ origin=self.base_url,
98
+ path_parts=(self.API_RESOURCE, external_id, "alerts"),
99
+ ),
100
+ headers=make_headers(api_key=self.api_key),
101
+ )
102
+ verify_response(api_response)
103
+
74
104
  def find_all_fixed_charges(self, external_id: str) -> Mapping[str, Any]:
75
105
  api_response: Response = send_get_request(
76
106
  url=make_url(
@@ -0,0 +1 @@
1
+ LAGO_VERSION = "1.41.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.40.0
3
+ Version: 1.41.4
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -49,6 +49,7 @@ setup.cfg
49
49
  ./lago_python_client/models/__init__.py
50
50
  ./lago_python_client/models/activity_log.py
51
51
  ./lago_python_client/models/add_on.py
52
+ ./lago_python_client/models/alert.py
52
53
  ./lago_python_client/models/api_log.py
53
54
  ./lago_python_client/models/applied_coupon.py
54
55
  ./lago_python_client/models/billable_metric.py
@@ -213,6 +214,7 @@ lago_python_client/invoices/clients.py
213
214
  lago_python_client/models/__init__.py
214
215
  lago_python_client/models/activity_log.py
215
216
  lago_python_client/models/add_on.py
217
+ lago_python_client/models/alert.py
216
218
  lago_python_client/models/api_log.py
217
219
  lago_python_client/models/applied_coupon.py
218
220
  lago_python_client/models/billable_metric.py
@@ -51,6 +51,14 @@ def mock_response():
51
51
  return credit_note_response.read()
52
52
 
53
53
 
54
+ def mock_response_with_customer():
55
+ current_dir = os.path.dirname(os.path.abspath(__file__))
56
+ data_path = os.path.join(current_dir, "fixtures/credit_note_with_customer.json")
57
+
58
+ with open(data_path, "rb") as credit_note_response:
59
+ return credit_note_response.read()
60
+
61
+
54
62
  def mock_collection_response():
55
63
  current_dir = os.path.dirname(os.path.abspath(__file__))
56
64
  data_path = os.path.join(current_dir, "fixtures/credit_note_index.json")
@@ -74,11 +82,12 @@ def test_valid_find_credit_note_request(httpx_mock: HTTPXMock):
74
82
  httpx_mock.add_response(
75
83
  method="GET",
76
84
  url="https://api.getlago.com/api/v1/credit_notes/" + identifier,
77
- content=mock_response(),
85
+ content=mock_response_with_customer(),
78
86
  )
79
87
  response = client.credit_notes.find(identifier)
80
88
 
81
89
  assert response.lago_id == identifier
90
+ assert response.customer.lago_id == "99a6094e-199b-4101-896a-54e927ce7bd7"
82
91
 
83
92
 
84
93
  def test_invalid_find_invoice_request(httpx_mock: HTTPXMock):
@@ -129,12 +138,13 @@ def test_valid_create_credit_note_request(httpx_mock: HTTPXMock):
129
138
  httpx_mock.add_response(
130
139
  method="POST",
131
140
  url="https://api.getlago.com/api/v1/credit_notes",
132
- content=mock_response(),
141
+ content=mock_response_with_customer(),
133
142
  )
134
143
  response = client.credit_notes.create(credit_note_object())
135
144
 
136
145
  assert response.lago_id == "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
137
146
  assert response.refund_status == "pending"
147
+ assert response.customer.lago_id == "99a6094e-199b-4101-896a-54e927ce7bd7"
138
148
 
139
149
 
140
150
  def test_invalid_create_credit_note_request(httpx_mock: HTTPXMock):
@@ -158,12 +168,13 @@ def test_valid_update_credit_note_request(httpx_mock: HTTPXMock):
158
168
  httpx_mock.add_response(
159
169
  method="PUT",
160
170
  url="https://api.getlago.com/api/v1/credit_notes/" + credit_note_id,
161
- content=mock_response(),
171
+ content=mock_response_with_customer(),
162
172
  )
163
173
  response = client.credit_notes.update(credit_note_update_object(), credit_note_id)
164
174
 
165
175
  assert response.lago_id == "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
166
176
  assert response.refund_status == "pending"
177
+ assert response.customer.lago_id == "99a6094e-199b-4101-896a-54e927ce7bd7"
167
178
 
168
179
 
169
180
  def test_valid_void_credit_note_request(httpx_mock: HTTPXMock):
@@ -173,12 +184,13 @@ def test_valid_void_credit_note_request(httpx_mock: HTTPXMock):
173
184
  httpx_mock.add_response(
174
185
  method="PUT",
175
186
  url="https://api.getlago.com/api/v1/credit_notes/" + credit_note_id + "/void",
176
- content=mock_response(),
187
+ content=mock_response_with_customer(),
177
188
  )
178
189
  response = client.credit_notes.void(credit_note_id)
179
190
 
180
191
  assert response.lago_id == "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
181
192
  assert response.refund_status == "pending"
193
+ assert response.customer.lago_id == "99a6094e-199b-4101-896a-54e927ce7bd7"
182
194
 
183
195
 
184
196
  def test_valid_estimate_credit_note_request(httpx_mock: HTTPXMock):
@@ -6,6 +6,7 @@ from pytest_httpx import HTTPXMock
6
6
  from lago_python_client.client import Client
7
7
  from lago_python_client.exceptions import LagoApiError
8
8
  from lago_python_client.models import Subscription
9
+ from lago_python_client.models.alert import Alert, AlertThreshold, AlertsList
9
10
 
10
11
 
11
12
  def create_subscription():
@@ -400,3 +401,95 @@ def test_fixed_charge_response_model_parsing():
400
401
  assert response.properties.graduated_ranges[0].from_value == 0
401
402
  assert response.properties.graduated_ranges[0].per_unit_amount == "100"
402
403
  assert response.properties.graduated_ranges[1].to_value is None
404
+
405
+
406
+ def mock_subscription_alerts_response():
407
+ this_dir = os.path.dirname(os.path.abspath(__file__))
408
+ my_data_path = os.path.join(this_dir, "fixtures/subscription_alerts.json")
409
+
410
+ with open(my_data_path, "rb") as alerts_response:
411
+ return alerts_response.read()
412
+
413
+
414
+ def test_valid_create_alerts_request(httpx_mock: HTTPXMock):
415
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
416
+ external_id = "sub_1234"
417
+
418
+ httpx_mock.add_response(
419
+ method="POST",
420
+ url="https://api.getlago.com/api/v1/subscriptions/" + external_id + "/alerts",
421
+ content=mock_subscription_alerts_response(),
422
+ )
423
+
424
+ input_object = AlertsList(
425
+ alerts=[
426
+ Alert(
427
+ alert_type="current_usage_amount",
428
+ code="alert1",
429
+ name="First Alert",
430
+ thresholds=[AlertThreshold(code="warn", value="1000")],
431
+ ),
432
+ Alert(
433
+ alert_type="billable_metric_current_usage_amount",
434
+ code="alert2",
435
+ billable_metric_code="storage",
436
+ thresholds=[AlertThreshold(value="2000")],
437
+ ),
438
+ ]
439
+ )
440
+
441
+ response = client.subscriptions.create_alerts(external_id, input_object)
442
+
443
+ assert len(response["alerts"]) == 2
444
+ assert response["alerts"][0].lago_id == "1a901a90-1a90-1a90-1a90-1a901a901a90"
445
+ assert response["alerts"][0].code == "alert1"
446
+ assert response["alerts"][0].alert_type == "current_usage_amount"
447
+ assert response["alerts"][1].lago_id == "3c903c90-3c90-3c90-3c90-3c903c903c90"
448
+ assert response["alerts"][1].code == "alert2"
449
+
450
+
451
+ def test_invalid_create_alerts_request(httpx_mock: HTTPXMock):
452
+ client = Client(api_key="invalid")
453
+ external_id = "sub_1234"
454
+
455
+ httpx_mock.add_response(
456
+ method="POST",
457
+ url="https://api.getlago.com/api/v1/subscriptions/" + external_id + "/alerts",
458
+ status_code=422,
459
+ content=b"",
460
+ )
461
+
462
+ input_object = AlertsList(alerts=[])
463
+
464
+ with pytest.raises(LagoApiError):
465
+ client.subscriptions.create_alerts(external_id, input_object)
466
+
467
+
468
+ def test_valid_delete_alerts_request(httpx_mock: HTTPXMock):
469
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
470
+ external_id = "sub_1234"
471
+
472
+ httpx_mock.add_response(
473
+ method="DELETE",
474
+ url="https://api.getlago.com/api/v1/subscriptions/" + external_id + "/alerts",
475
+ status_code=200,
476
+ content=b"",
477
+ )
478
+
479
+ result = client.subscriptions.delete_alerts(external_id)
480
+ assert result is None
481
+
482
+
483
+ def test_invalid_delete_alerts_request(httpx_mock: HTTPXMock):
484
+ client = Client(api_key="invalid")
485
+ external_id = "invalid_sub"
486
+
487
+ httpx_mock.add_response(
488
+ method="DELETE",
489
+ url="https://api.getlago.com/api/v1/subscriptions/" + external_id + "/alerts",
490
+ status_code=404,
491
+ content=b"",
492
+ )
493
+
494
+ with pytest.raises(LagoApiError):
495
+ client.subscriptions.delete_alerts(external_id)
@@ -31,6 +31,7 @@ def wallet_object():
31
31
  )
32
32
  return Wallet(
33
33
  name="name",
34
+ code="wallet_code",
34
35
  priority=30,
35
36
  external_customer_id="12345",
36
37
  rate_amount="1",
@@ -73,6 +74,7 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock):
73
74
  "external_customer_id": "12345",
74
75
  "rate_amount": "1",
75
76
  "name": "name",
77
+ "code": "wallet_code",
76
78
  "priority": 30,
77
79
  "paid_credits": "10",
78
80
  "granted_credits": "10",
@@ -1 +0,0 @@
1
- LAGO_VERSION = "1.40.0"