lago-python-client 1.28.1__tar.gz → 1.30.0__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 (143) hide show
  1. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/PKG-INFO +1 -1
  2. lago_python_client-1.30.0/lago_python_client/activity_logs/clients.py +18 -0
  3. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/client.py +5 -0
  4. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/invoices/clients.py +14 -0
  5. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/__init__.py +2 -0
  6. lago_python_client-1.30.0/lago_python_client/models/activity_log.py +36 -0
  7. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/wallet.py +6 -0
  8. lago_python_client-1.30.0/lago_python_client/version.py +1 -0
  9. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client.egg-info/PKG-INFO +1 -1
  10. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client.egg-info/SOURCES.txt +8 -0
  11. lago_python_client-1.30.0/tests/__init__.py +0 -0
  12. lago_python_client-1.30.0/tests/test_activity_logs_client.py +100 -0
  13. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_invoice_client.py +13 -0
  14. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_wallet_client.py +4 -0
  15. lago_python_client-1.28.1/lago_python_client/version.py +0 -1
  16. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/LICENSE +0 -0
  17. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/README.md +0 -0
  18. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/__init__.py +0 -0
  19. {lago_python_client-1.28.1/lago_python_client/add_ons → lago_python_client-1.30.0/lago_python_client/activity_logs}/__init__.py +0 -0
  20. {lago_python_client-1.28.1/lago_python_client/billable_metrics → lago_python_client-1.30.0/lago_python_client/add_ons}/__init__.py +0 -0
  21. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/add_ons/clients.py +0 -0
  22. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/base_client.py +0 -0
  23. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/base_model.py +0 -0
  24. {lago_python_client-1.28.1/lago_python_client/billing_entities → lago_python_client-1.30.0/lago_python_client/billable_metrics}/__init__.py +0 -0
  25. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/billable_metrics/clients.py +0 -0
  26. {lago_python_client-1.28.1/lago_python_client/coupons → lago_python_client-1.30.0/lago_python_client/billing_entities}/__init__.py +0 -0
  27. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/billing_entities/clients.py +0 -0
  28. {lago_python_client-1.28.1/lago_python_client/credit_notes → lago_python_client-1.30.0/lago_python_client/coupons}/__init__.py +0 -0
  29. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/coupons/clients.py +0 -0
  30. {lago_python_client-1.28.1/lago_python_client/customers → lago_python_client-1.30.0/lago_python_client/credit_notes}/__init__.py +0 -0
  31. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/credit_notes/clients.py +0 -0
  32. {lago_python_client-1.28.1/lago_python_client/events → lago_python_client-1.30.0/lago_python_client/customers}/__init__.py +0 -0
  33. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/customers/clients.py +0 -0
  34. {lago_python_client-1.28.1/lago_python_client/fees → lago_python_client-1.30.0/lago_python_client/events}/__init__.py +0 -0
  35. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/events/clients.py +0 -0
  36. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/exceptions.py +0 -0
  37. {lago_python_client-1.28.1/lago_python_client/gross_revenues → lago_python_client-1.30.0/lago_python_client/fees}/__init__.py +0 -0
  38. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/fees/clients.py +0 -0
  39. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/functools_ext.py +0 -0
  40. {lago_python_client-1.28.1/lago_python_client/invoice_collections → lago_python_client-1.30.0/lago_python_client/gross_revenues}/__init__.py +0 -0
  41. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/gross_revenues/clients.py +0 -0
  42. {lago_python_client-1.28.1/lago_python_client/invoiced_usages → lago_python_client-1.30.0/lago_python_client/invoice_collections}/__init__.py +0 -0
  43. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/invoice_collections/clients.py +0 -0
  44. {lago_python_client-1.28.1/lago_python_client/invoices → lago_python_client-1.30.0/lago_python_client/invoiced_usages}/__init__.py +0 -0
  45. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/invoiced_usages/clients.py +0 -0
  46. {lago_python_client-1.28.1/lago_python_client/mrrs → lago_python_client-1.30.0/lago_python_client/invoices}/__init__.py +0 -0
  47. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/mixins.py +0 -0
  48. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/add_on.py +0 -0
  49. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/applied_coupon.py +0 -0
  50. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/billable_metric.py +0 -0
  51. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/billing_entity.py +0 -0
  52. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/billing_period.py +0 -0
  53. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/charge.py +0 -0
  54. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/coupon.py +0 -0
  55. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/credit.py +0 -0
  56. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/credit_note.py +0 -0
  57. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/customer.py +0 -0
  58. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/customer_usage.py +0 -0
  59. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/error_detail.py +0 -0
  60. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/event.py +0 -0
  61. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/fee.py +0 -0
  62. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/gross_revenue.py +0 -0
  63. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/invoice.py +0 -0
  64. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/invoice_collection.py +0 -0
  65. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/invoice_item.py +0 -0
  66. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/invoiced_usage.py +0 -0
  67. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/lifetime_usage.py +0 -0
  68. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/minimum_commitment.py +0 -0
  69. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/mrr.py +0 -0
  70. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/organization.py +0 -0
  71. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/overdue_balance.py +0 -0
  72. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/payment.py +0 -0
  73. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/payment_receipt.py +0 -0
  74. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/payment_request.py +0 -0
  75. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/plan.py +0 -0
  76. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/subscription.py +0 -0
  77. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/tax.py +0 -0
  78. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/usage_threshold.py +0 -0
  79. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/wallet_transaction.py +0 -0
  80. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/models/webhook_endpoint.py +0 -0
  81. {lago_python_client-1.28.1/lago_python_client/organizations → lago_python_client-1.30.0/lago_python_client/mrrs}/__init__.py +0 -0
  82. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/mrrs/clients.py +0 -0
  83. {lago_python_client-1.28.1/lago_python_client/overdue_balances → lago_python_client-1.30.0/lago_python_client/organizations}/__init__.py +0 -0
  84. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/organizations/clients.py +0 -0
  85. {lago_python_client-1.28.1/lago_python_client/payment_receipts → lago_python_client-1.30.0/lago_python_client/overdue_balances}/__init__.py +0 -0
  86. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/overdue_balances/clients.py +0 -0
  87. {lago_python_client-1.28.1/lago_python_client/payment_requests → lago_python_client-1.30.0/lago_python_client/payment_receipts}/__init__.py +0 -0
  88. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/payment_receipts/clients.py +0 -0
  89. {lago_python_client-1.28.1/lago_python_client/payments → lago_python_client-1.30.0/lago_python_client/payment_requests}/__init__.py +0 -0
  90. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/payment_requests/clients.py +0 -0
  91. {lago_python_client-1.28.1/lago_python_client/plans → lago_python_client-1.30.0/lago_python_client/payments}/__init__.py +0 -0
  92. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/payments/clients.py +0 -0
  93. {lago_python_client-1.28.1/lago_python_client/services → lago_python_client-1.30.0/lago_python_client/plans}/__init__.py +0 -0
  94. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/plans/clients.py +0 -0
  95. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/py.typed +0 -0
  96. {lago_python_client-1.28.1/lago_python_client/subscriptions → lago_python_client-1.30.0/lago_python_client/services}/__init__.py +0 -0
  97. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/services/json.py +0 -0
  98. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/services/request.py +0 -0
  99. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/services/response.py +0 -0
  100. {lago_python_client-1.28.1/lago_python_client/taxes → lago_python_client-1.30.0/lago_python_client/subscriptions}/__init__.py +0 -0
  101. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/subscriptions/clients.py +0 -0
  102. {lago_python_client-1.28.1/lago_python_client/wallets → lago_python_client-1.30.0/lago_python_client/taxes}/__init__.py +0 -0
  103. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/taxes/clients.py +0 -0
  104. {lago_python_client-1.28.1/lago_python_client/webhook_endpoints → lago_python_client-1.30.0/lago_python_client/wallets}/__init__.py +0 -0
  105. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/wallets/clients.py +0 -0
  106. {lago_python_client-1.28.1/lago_python_client/webhooks → lago_python_client-1.30.0/lago_python_client/webhook_endpoints}/__init__.py +0 -0
  107. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/webhook_endpoints/clients.py +0 -0
  108. {lago_python_client-1.28.1/tests → lago_python_client-1.30.0/lago_python_client/webhooks}/__init__.py +0 -0
  109. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client/webhooks/clients.py +0 -0
  110. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client.egg-info/dependency_links.txt +0 -0
  111. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client.egg-info/requires.txt +0 -0
  112. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/lago_python_client.egg-info/top_level.txt +0 -0
  113. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/pyproject.toml +0 -0
  114. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/setup.cfg +0 -0
  115. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_add_on_client.py +0 -0
  116. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_applied_coupon_client.py +0 -0
  117. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_billable_metric_client.py +0 -0
  118. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_billing_entity_client.py +0 -0
  119. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_client.py +0 -0
  120. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_coupon_client.py +0 -0
  121. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_credit_note_client.py +0 -0
  122. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_customer_client.py +0 -0
  123. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_event_client.py +0 -0
  124. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_fee_client.py +0 -0
  125. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_functools_ext.py +0 -0
  126. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_gross_revenue_client.py +0 -0
  127. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_invoice_collection_client.py +0 -0
  128. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_invoiced_usage_client.py +0 -0
  129. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_json_services.py +0 -0
  130. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_mrr_client.py +0 -0
  131. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_organization_client.py +0 -0
  132. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_overdue_balance_client.py +0 -0
  133. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_payment_client.py +0 -0
  134. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_payment_receipt_client.py +0 -0
  135. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_payment_request_client.py +0 -0
  136. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_plan_client.py +0 -0
  137. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_request_services.py +0 -0
  138. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_response_services.py +0 -0
  139. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_subscription_client.py +0 -0
  140. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_tax_client.py +0 -0
  141. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_wallet_transaction_client.py +0 -0
  142. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_webhook_client.py +0 -0
  143. {lago_python_client-1.28.1 → lago_python_client-1.30.0}/tests/test_webhook_endpoint_client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.28.1
3
+ Version: 1.30.0
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -0,0 +1,18 @@
1
+ from typing import ClassVar, Type
2
+
3
+ from ..base_client import BaseClient
4
+ from ..mixins import (
5
+ FindAllCommandMixin,
6
+ FindCommandMixin,
7
+ )
8
+ from ..models.activity_log import ActivityLogResponse
9
+
10
+
11
+ class ActivityLogClient(
12
+ FindAllCommandMixin[ActivityLogResponse],
13
+ FindCommandMixin[ActivityLogResponse],
14
+ BaseClient,
15
+ ):
16
+ API_RESOURCE: ClassVar[str] = "activity_logs"
17
+ RESPONSE_MODEL: ClassVar[Type[ActivityLogResponse]] = ActivityLogResponse
18
+ ROOT_NAME: ClassVar[str] = "activity_log"
@@ -25,6 +25,7 @@ from .taxes.clients import TaxClient
25
25
  from .wallets.clients import WalletClient, WalletTransactionClient
26
26
  from .webhooks.clients import WebhookClient
27
27
  from .webhook_endpoints.clients import WebhookEndpointClient
28
+ from .activity_logs.clients import ActivityLogClient
28
29
 
29
30
  try:
30
31
  from typing import Final
@@ -164,3 +165,7 @@ class Client:
164
165
  @callable_cached_property
165
166
  def webhook_endpoints(self) -> WebhookEndpointClient:
166
167
  return WebhookEndpointClient(self.base_api_url, self.api_key)
168
+
169
+ @callable_cached_property
170
+ def activity_logs(self) -> ActivityLogClient:
171
+ return ActivityLogClient(self.base_api_url, self.api_key)
@@ -107,6 +107,20 @@ class InvoiceClient(
107
107
  data=get_response_data(response=api_response, key=self.ROOT_NAME),
108
108
  )
109
109
 
110
+ def void(self, resource_id: str) -> InvoiceResponse:
111
+ api_response: Response = send_post_request(
112
+ url=make_url(
113
+ origin=self.base_url,
114
+ path_parts=(self.API_RESOURCE, resource_id, "void"),
115
+ ),
116
+ headers=make_headers(api_key=self.api_key),
117
+ )
118
+
119
+ return prepare_object_response(
120
+ response_model=self.RESPONSE_MODEL,
121
+ data=get_response_data(response=api_response, key=self.ROOT_NAME),
122
+ )
123
+
110
124
  def lose_dispute(self, resource_id: str) -> InvoiceResponse:
111
125
  api_response: Response = send_put_request(
112
126
  url=make_url(
@@ -1,3 +1,4 @@
1
+ from .activity_log import ActivityLog as ActivityLog, ActivityLogResponse as ActivityLogResponse
1
2
  from .applied_coupon import AppliedCoupon as AppliedCoupon
2
3
  from .billable_metric import (
3
4
  BillableMetric as BillableMetric,
@@ -88,6 +89,7 @@ from .wallet import (
88
89
  RecurringTransactionRuleList as RecurringTransactionRuleList,
89
90
  RecurringTransactionRuleResponse as RecurringTransactionRuleResponse,
90
91
  RecurringTransactionRuleResponseList as RecurringTransactionRuleResponseList,
92
+ AppliesTo as AppliesTo,
91
93
  )
92
94
  from .wallet_transaction import WalletTransaction as WalletTransaction
93
95
  from .webhook_endpoint import WebhookEndpoint as WebhookEndpoint
@@ -0,0 +1,36 @@
1
+ from typing import Optional
2
+
3
+ from lago_python_client.base_model import BaseModel
4
+
5
+ from ..base_model import BaseResponseModel
6
+
7
+
8
+ class ActivityLog(BaseModel):
9
+ activity_type: str
10
+ activity_object: Optional[dict]
11
+ activity_object_changes: Optional[dict]
12
+ activity_source: str
13
+ activity_type: str
14
+ logged_at: str
15
+ resource_type: str
16
+ created_at: str
17
+ activity_id: str
18
+ external_customer_id: Optional[str]
19
+ external_subscription_id: Optional[str]
20
+ resource_id: str
21
+ user_email: Optional[str]
22
+
23
+
24
+ class ActivityLogResponse(BaseResponseModel):
25
+ activity_id: str
26
+ activity_type: str
27
+ activity_source: str
28
+ activity_object: Optional[dict]
29
+ activity_object_changes: Optional[dict]
30
+ user_email: Optional[str]
31
+ resource_id: str
32
+ resource_type: str
33
+ external_customer_id: Optional[str]
34
+ external_subscription_id: Optional[str]
35
+ logged_at: str
36
+ created_at: str
@@ -43,6 +43,10 @@ class RecurringTransactionRuleResponseList(BaseModel):
43
43
  __root__: List[RecurringTransactionRuleResponse]
44
44
 
45
45
 
46
+ class AppliesTo(BaseModel):
47
+ fee_types: Optional[List[str]]
48
+
49
+
46
50
  class Wallet(BaseModel):
47
51
  external_customer_id: Optional[str]
48
52
  rate_amount: Optional[str]
@@ -53,6 +57,7 @@ class Wallet(BaseModel):
53
57
  currency: Optional[str]
54
58
  recurring_transaction_rules: Optional[RecurringTransactionRuleList]
55
59
  transaction_metadata: Optional[List[Dict[str, str]]]
60
+ applies_to: Optional[AppliesTo]
56
61
 
57
62
 
58
63
  class WalletResponse(BaseResponseModel):
@@ -76,3 +81,4 @@ class WalletResponse(BaseResponseModel):
76
81
  ongoing_usage_balance_cents: int
77
82
  credits_ongoing_balance: str
78
83
  credits_ongoing_usage_balance: str
84
+ applies_to: Optional[AppliesTo]
@@ -0,0 +1 @@
1
+ LAGO_VERSION = "1.30.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.28.1
3
+ Version: 1.30.0
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -11,6 +11,8 @@ setup.cfg
11
11
  ./lago_python_client/mixins.py
12
12
  ./lago_python_client/py.typed
13
13
  ./lago_python_client/version.py
14
+ ./lago_python_client/activity_logs/__init__.py
15
+ ./lago_python_client/activity_logs/clients.py
14
16
  ./lago_python_client/add_ons/__init__.py
15
17
  ./lago_python_client/add_ons/clients.py
16
18
  ./lago_python_client/billable_metrics/__init__.py
@@ -36,6 +38,7 @@ setup.cfg
36
38
  ./lago_python_client/invoices/__init__.py
37
39
  ./lago_python_client/invoices/clients.py
38
40
  ./lago_python_client/models/__init__.py
41
+ ./lago_python_client/models/activity_log.py
39
42
  ./lago_python_client/models/add_on.py
40
43
  ./lago_python_client/models/applied_coupon.py
41
44
  ./lago_python_client/models/billable_metric.py
@@ -99,6 +102,7 @@ setup.cfg
99
102
  ./lago_python_client/webhooks/__init__.py
100
103
  ./lago_python_client/webhooks/clients.py
101
104
  ./tests/__init__.py
105
+ ./tests/test_activity_logs_client.py
102
106
  ./tests/test_add_on_client.py
103
107
  ./tests/test_applied_coupon_client.py
104
108
  ./tests/test_billable_metric_client.py
@@ -144,6 +148,8 @@ lago_python_client.egg-info/SOURCES.txt
144
148
  lago_python_client.egg-info/dependency_links.txt
145
149
  lago_python_client.egg-info/requires.txt
146
150
  lago_python_client.egg-info/top_level.txt
151
+ lago_python_client/activity_logs/__init__.py
152
+ lago_python_client/activity_logs/clients.py
147
153
  lago_python_client/add_ons/__init__.py
148
154
  lago_python_client/add_ons/clients.py
149
155
  lago_python_client/billable_metrics/__init__.py
@@ -169,6 +175,7 @@ lago_python_client/invoiced_usages/clients.py
169
175
  lago_python_client/invoices/__init__.py
170
176
  lago_python_client/invoices/clients.py
171
177
  lago_python_client/models/__init__.py
178
+ lago_python_client/models/activity_log.py
172
179
  lago_python_client/models/add_on.py
173
180
  lago_python_client/models/applied_coupon.py
174
181
  lago_python_client/models/billable_metric.py
@@ -232,6 +239,7 @@ lago_python_client/webhook_endpoints/clients.py
232
239
  lago_python_client/webhooks/__init__.py
233
240
  lago_python_client/webhooks/clients.py
234
241
  tests/__init__.py
242
+ tests/test_activity_logs_client.py
235
243
  tests/test_add_on_client.py
236
244
  tests/test_applied_coupon_client.py
237
245
  tests/test_billable_metric_client.py
File without changes
@@ -0,0 +1,100 @@
1
+ import os
2
+
3
+ import pytest
4
+ from pytest_httpx import HTTPXMock
5
+
6
+ from urllib.parse import urlencode
7
+
8
+ from lago_python_client.client import Client
9
+ from lago_python_client.exceptions import LagoApiError
10
+
11
+ ENDPOINT = "https://api.getlago.com/api/v1/activity_logs"
12
+
13
+
14
+ def mock_response(fixture_path):
15
+ this_dir = os.path.dirname(os.path.abspath(__file__))
16
+ data_path = os.path.join(this_dir, fixture_path)
17
+
18
+ with open(data_path, "rb") as response:
19
+ return response.read()
20
+
21
+
22
+ def test_valid_find_activity_log_request(httpx_mock: HTTPXMock):
23
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
24
+ activity_id = "1262046f-ea6e-423b-8bf7-3a985232f91b"
25
+
26
+ httpx_mock.add_response(
27
+ method="GET",
28
+ url=ENDPOINT + f"/{activity_id}",
29
+ content=mock_response("fixtures/activity_log.json"),
30
+ )
31
+ response = client.activity_logs.find(activity_id)
32
+
33
+ assert response.activity_id == activity_id
34
+ assert response.activity_type == "billable_metric.created"
35
+
36
+
37
+ def test_invalid_find_activity_log_request(httpx_mock: HTTPXMock):
38
+ client = Client(api_key="invalid")
39
+ activity_id = "invalid"
40
+
41
+ httpx_mock.add_response(
42
+ method="GET",
43
+ url=ENDPOINT + f"/{activity_id}",
44
+ status_code=404,
45
+ content=b"",
46
+ )
47
+
48
+ with pytest.raises(LagoApiError):
49
+ client.activity_logs.find(activity_id)
50
+
51
+
52
+ def test_valid_find_all_activity_log_request(httpx_mock: HTTPXMock):
53
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
54
+
55
+ httpx_mock.add_response(
56
+ method="GET",
57
+ url=ENDPOINT,
58
+ content=mock_response("fixtures/activity_log_index.json"),
59
+ )
60
+ response = client.activity_logs.find_all()
61
+
62
+ assert response["activity_logs"][0].activity_id == "1262046f-ea6e-423b-8bf7-3a985232f91b"
63
+ assert response["activity_logs"][1].activity_id == "6744ddec-3516-4e26-9c7e-dc3c30fc4e80"
64
+ assert response["meta"]["current_page"] == 1
65
+
66
+
67
+ def test_valid_find_all_activity_log_request_with_options(httpx_mock: HTTPXMock):
68
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
69
+ options = {"per_page": 1, "page": 1}
70
+
71
+ httpx_mock.add_response(
72
+ method="GET",
73
+ url=ENDPOINT + f"?{urlencode(options)}",
74
+ content=mock_response("fixtures/activity_log_index.json"),
75
+ )
76
+ response = client.activity_logs.find_all(options)
77
+
78
+ assert response["activity_logs"][1].activity_id == "6744ddec-3516-4e26-9c7e-dc3c30fc4e80"
79
+ assert response["meta"]["current_page"] == 1
80
+
81
+
82
+ def test_invalid_find_all_activity_log_request(httpx_mock: HTTPXMock):
83
+ client = Client(api_key="invalid")
84
+
85
+ httpx_mock.add_response(
86
+ method="GET",
87
+ url=ENDPOINT,
88
+ status_code=404,
89
+ content=b"",
90
+ )
91
+
92
+ with pytest.raises(LagoApiError):
93
+ client.activity_logs.find_all()
94
+
95
+
96
+ def test_invalid_operations_for_activity_log_request():
97
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
98
+ assert not hasattr(client.activity_logs, "create")
99
+ assert not hasattr(client.activity_logs, "update")
100
+ assert not hasattr(client.activity_logs, "destroy")
@@ -252,6 +252,19 @@ def test_valid_finalize_invoice_request(httpx_mock: HTTPXMock):
252
252
  assert response.lago_id == "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
253
253
 
254
254
 
255
+ def test_valid_void_invoice_request(httpx_mock: HTTPXMock):
256
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
257
+
258
+ httpx_mock.add_response(
259
+ method="POST",
260
+ url="https://api.getlago.com/api/v1/invoices/5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba/void",
261
+ content=mock_response(),
262
+ )
263
+ response = client.invoices.void("5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba")
264
+
265
+ assert response.lago_id == "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
266
+
267
+
255
268
  def test_valid_retry_payment_invoice_request(httpx_mock: HTTPXMock):
256
269
  client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
257
270
 
@@ -9,6 +9,7 @@ from lago_python_client.models import (
9
9
  Wallet,
10
10
  RecurringTransactionRule,
11
11
  RecurringTransactionRuleList,
12
+ AppliesTo,
12
13
  )
13
14
 
14
15
 
@@ -22,6 +23,7 @@ def wallet_object():
22
23
  target_ongoing_balance="105.0",
23
24
  )
24
25
  rules_list = RecurringTransactionRuleList(__root__=[rule])
26
+ applies_to = AppliesTo(fee_types=["charge"])
25
27
  return Wallet(
26
28
  name="name",
27
29
  external_customer_id="12345",
@@ -29,6 +31,7 @@ def wallet_object():
29
31
  paid_credits="10",
30
32
  granted_credits="10",
31
33
  recurring_transaction_rules=rules_list,
34
+ applies_to=applies_to,
32
35
  )
33
36
 
34
37
 
@@ -62,6 +65,7 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock):
62
65
  assert response.recurring_transaction_rules.__root__[0].lago_id == "12345"
63
66
  assert response.recurring_transaction_rules.__root__[0].trigger == "interval"
64
67
  assert response.recurring_transaction_rules.__root__[0].interval == "monthly"
68
+ assert response.applies_to.fee_types[0] == "charge"
65
69
 
66
70
 
67
71
  def test_invalid_create_wallet_request(httpx_mock: HTTPXMock):
@@ -1 +0,0 @@
1
- LAGO_VERSION = "1.28.1"