lago-python-client 1.22.0__tar.gz → 1.26.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 (135) hide show
  1. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/PKG-INFO +3 -2
  2. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/client.py +5 -0
  3. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/__init__.py +4 -0
  4. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/customer.py +2 -0
  5. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/fee.py +1 -0
  6. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/invoice.py +1 -0
  7. lago_python_client-1.26.0/lago_python_client/models/payment_receipt.py +15 -0
  8. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/subscription.py +2 -0
  9. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/wallet.py +3 -0
  10. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/wallet_transaction.py +1 -0
  11. lago_python_client-1.26.0/lago_python_client/payment_receipts/clients.py +15 -0
  12. lago_python_client-1.26.0/lago_python_client/version.py +1 -0
  13. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/wallets/clients.py +12 -0
  14. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client.egg-info/PKG-INFO +3 -2
  15. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client.egg-info/SOURCES.txt +8 -0
  16. lago_python_client-1.26.0/tests/__init__.py +0 -0
  17. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_customer_client.py +2 -0
  18. lago_python_client-1.26.0/tests/test_payment_receipt_client.py +65 -0
  19. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_wallet_transaction_client.py +25 -0
  20. lago_python_client-1.22.0/lago_python_client/version.py +0 -1
  21. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/LICENSE +0 -0
  22. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/README.md +0 -0
  23. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/__init__.py +0 -0
  24. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/add_ons/__init__.py +0 -0
  25. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/add_ons/clients.py +0 -0
  26. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/base_client.py +0 -0
  27. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/base_model.py +0 -0
  28. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/billable_metrics/__init__.py +0 -0
  29. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/billable_metrics/clients.py +0 -0
  30. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/coupons/__init__.py +0 -0
  31. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/coupons/clients.py +0 -0
  32. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/credit_notes/__init__.py +0 -0
  33. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/credit_notes/clients.py +0 -0
  34. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/customers/__init__.py +0 -0
  35. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/customers/clients.py +0 -0
  36. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/events/__init__.py +0 -0
  37. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/events/clients.py +0 -0
  38. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/exceptions.py +0 -0
  39. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/fees/__init__.py +0 -0
  40. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/fees/clients.py +0 -0
  41. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/functools_ext.py +0 -0
  42. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/gross_revenues/__init__.py +0 -0
  43. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/gross_revenues/clients.py +0 -0
  44. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/invoice_collections/__init__.py +0 -0
  45. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/invoice_collections/clients.py +0 -0
  46. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/invoiced_usages/__init__.py +0 -0
  47. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/invoiced_usages/clients.py +0 -0
  48. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/invoices/__init__.py +0 -0
  49. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/invoices/clients.py +0 -0
  50. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/mixins.py +0 -0
  51. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/add_on.py +0 -0
  52. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/applied_coupon.py +0 -0
  53. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/billable_metric.py +0 -0
  54. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/billing_period.py +0 -0
  55. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/charge.py +0 -0
  56. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/coupon.py +0 -0
  57. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/credit.py +0 -0
  58. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/credit_note.py +0 -0
  59. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/customer_usage.py +0 -0
  60. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/error_detail.py +0 -0
  61. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/event.py +0 -0
  62. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/gross_revenue.py +0 -0
  63. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/invoice_collection.py +0 -0
  64. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/invoice_item.py +0 -0
  65. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/invoiced_usage.py +0 -0
  66. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/lifetime_usage.py +0 -0
  67. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/minimum_commitment.py +0 -0
  68. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/mrr.py +0 -0
  69. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/organization.py +0 -0
  70. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/overdue_balance.py +0 -0
  71. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/payment.py +0 -0
  72. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/payment_request.py +0 -0
  73. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/plan.py +0 -0
  74. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/tax.py +0 -0
  75. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/usage_threshold.py +0 -0
  76. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/models/webhook_endpoint.py +0 -0
  77. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/mrrs/__init__.py +0 -0
  78. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/mrrs/clients.py +0 -0
  79. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/organizations/__init__.py +0 -0
  80. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/organizations/clients.py +0 -0
  81. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/overdue_balances/__init__.py +0 -0
  82. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/overdue_balances/clients.py +0 -0
  83. {lago_python_client-1.22.0/lago_python_client/payment_requests → lago_python_client-1.26.0/lago_python_client/payment_receipts}/__init__.py +0 -0
  84. {lago_python_client-1.22.0/lago_python_client/payments → lago_python_client-1.26.0/lago_python_client/payment_requests}/__init__.py +0 -0
  85. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/payment_requests/clients.py +0 -0
  86. {lago_python_client-1.22.0/lago_python_client/plans → lago_python_client-1.26.0/lago_python_client/payments}/__init__.py +0 -0
  87. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/payments/clients.py +0 -0
  88. {lago_python_client-1.22.0/lago_python_client/services → lago_python_client-1.26.0/lago_python_client/plans}/__init__.py +0 -0
  89. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/plans/clients.py +0 -0
  90. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/py.typed +0 -0
  91. {lago_python_client-1.22.0/lago_python_client/subscriptions → lago_python_client-1.26.0/lago_python_client/services}/__init__.py +0 -0
  92. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/services/json.py +0 -0
  93. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/services/request.py +0 -0
  94. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/services/response.py +0 -0
  95. {lago_python_client-1.22.0/lago_python_client/taxes → lago_python_client-1.26.0/lago_python_client/subscriptions}/__init__.py +0 -0
  96. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/subscriptions/clients.py +0 -0
  97. {lago_python_client-1.22.0/lago_python_client/wallets → lago_python_client-1.26.0/lago_python_client/taxes}/__init__.py +0 -0
  98. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/taxes/clients.py +0 -0
  99. {lago_python_client-1.22.0/lago_python_client/webhook_endpoints → lago_python_client-1.26.0/lago_python_client/wallets}/__init__.py +0 -0
  100. {lago_python_client-1.22.0/lago_python_client/webhooks → lago_python_client-1.26.0/lago_python_client/webhook_endpoints}/__init__.py +0 -0
  101. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/webhook_endpoints/clients.py +0 -0
  102. {lago_python_client-1.22.0/tests → lago_python_client-1.26.0/lago_python_client/webhooks}/__init__.py +0 -0
  103. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client/webhooks/clients.py +0 -0
  104. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client.egg-info/dependency_links.txt +0 -0
  105. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client.egg-info/requires.txt +0 -0
  106. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/lago_python_client.egg-info/top_level.txt +0 -0
  107. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/pyproject.toml +0 -0
  108. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/setup.cfg +0 -0
  109. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_add_on_client.py +0 -0
  110. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_applied_coupon_client.py +0 -0
  111. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_billable_metric_client.py +0 -0
  112. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_client.py +0 -0
  113. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_coupon_client.py +0 -0
  114. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_credit_note_client.py +0 -0
  115. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_event_client.py +0 -0
  116. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_fee_client.py +0 -0
  117. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_functools_ext.py +0 -0
  118. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_gross_revenue_client.py +0 -0
  119. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_invoice_client.py +0 -0
  120. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_invoice_collection_client.py +0 -0
  121. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_invoiced_usage_client.py +0 -0
  122. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_json_services.py +0 -0
  123. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_mrr_client.py +0 -0
  124. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_organization_client.py +0 -0
  125. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_overdue_balance_client.py +0 -0
  126. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_payment_client.py +0 -0
  127. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_payment_request_client.py +0 -0
  128. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_plan_client.py +0 -0
  129. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_request_services.py +0 -0
  130. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_response_services.py +0 -0
  131. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_subscription_client.py +0 -0
  132. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_tax_client.py +0 -0
  133. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_wallet_client.py +0 -0
  134. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_webhook_client.py +0 -0
  135. {lago_python_client-1.22.0 → lago_python_client-1.26.0}/tests/test_webhook_endpoint_client.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.22.0
3
+ Version: 1.26.0
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -29,6 +29,7 @@ Provides-Extra: test
29
29
  Requires-Dist: mypy==0.971; extra == "test"
30
30
  Requires-Dist: pytest; extra == "test"
31
31
  Requires-Dist: pytest_httpx; extra == "test"
32
+ Dynamic: license-file
32
33
 
33
34
  # Lago Python Client
34
35
 
@@ -14,6 +14,7 @@ from .invoiced_usages.clients import InvoicedUsageClient
14
14
  from .mrrs.clients import MrrClient
15
15
  from .organizations.clients import OrganizationClient
16
16
  from .overdue_balances.clients import OverdueBalanceClient
17
+ from .payment_receipts.clients import PaymentReceiptClient
17
18
  from .payment_requests.clients import PaymentRequestClient
18
19
  from .payments.clients import PaymentClient
19
20
  from .invoice_collections.clients import InvoiceCollectionClient
@@ -115,6 +116,10 @@ class Client:
115
116
  def overdue_balances(self) -> OverdueBalanceClient:
116
117
  return OverdueBalanceClient(self.base_api_url, self.api_key)
117
118
 
119
+ @callable_cached_property
120
+ def payment_receipts(self) -> PaymentReceiptClient:
121
+ return PaymentReceiptClient(self.base_api_url, self.api_key)
122
+
118
123
  @callable_cached_property
119
124
  def payment_requests(self) -> PaymentRequestClient:
120
125
  return PaymentRequestClient(self.base_api_url, self.api_key)
@@ -90,6 +90,10 @@ from .usage_threshold import (
90
90
  UsageThresholds as UsageThresholds,
91
91
  UsageThresholdsResponse as UsageThresholdsResponse,
92
92
  )
93
+ from .payment_receipt import (
94
+ PaymentReceiptResponse as PaymentReceiptResponse,
95
+ PaymentReceiptsResponse as PaymentReceiptsResponse,
96
+ )
93
97
  from .payment_request import PaymentRequest as PaymentRequest
94
98
  from .payment import Payment as Payment
95
99
  from .lifetime_usage import LifetimeUsageResponse as LifetimeUsageResponse
@@ -120,6 +120,7 @@ class Customer(BaseModel):
120
120
  tax_codes: Optional[List[str]]
121
121
  skip_invoice_custom_sections: Optional[bool]
122
122
  invoice_custom_section_codes: Optional[List[str]]
123
+ billing_entity_code: Optional[str]
123
124
 
124
125
 
125
126
  class CustomerResponse(BaseResponseModel):
@@ -156,3 +157,4 @@ class CustomerResponse(BaseResponseModel):
156
157
  taxes: Optional[TaxesResponse]
157
158
  skip_invoice_custom_sections: Optional[bool]
158
159
  applicable_invoice_custom_sections: Optional[InvoiceCustomSectionsResponseList]
160
+ billing_entity_code: Optional[str]
@@ -59,6 +59,7 @@ class FeeResponse(BaseResponseModel):
59
59
  from_date: Optional[str]
60
60
  to_date: Optional[str]
61
61
  amount_details: Optional[Dict[str, Any]]
62
+ billing_entity_code: Optional[str]
62
63
 
63
64
  item: Optional[InvoiceItemResponse]
64
65
  applied_taxes: Optional[FeeAppliedTaxes]
@@ -139,3 +139,4 @@ class InvoiceResponse(BaseResponseModel):
139
139
  applied_invoice_custom_sections: Optional[InvoiceAppliedInvoiceCustomSections]
140
140
  applied_usage_thresholds: Optional[InvoiceAppliedUsageThresholds]
141
141
  error_details: Optional[ErrorDetailsResponse]
142
+ billing_entity_code: Optional[str]
@@ -0,0 +1,15 @@
1
+ from typing import List
2
+
3
+ from ..base_model import BaseResponseModel
4
+ from .payment import PaymentResponse
5
+
6
+
7
+ class PaymentReceiptResponse(BaseResponseModel):
8
+ lago_id: str
9
+ number: str
10
+ payment: PaymentResponse
11
+ created_at: str
12
+
13
+
14
+ class PaymentReceiptsResponse(BaseResponseModel):
15
+ __root__: List[PaymentReceiptResponse]
@@ -18,6 +18,8 @@ class Subscription(BaseModel):
18
18
 
19
19
  class Subscriptions(BaseModel):
20
20
  external_ids: Optional[List[str]]
21
+ plan_code: Optional[str]
22
+ terminated_at: Optional[str]
21
23
 
22
24
 
23
25
  class SubscriptionResponse(BaseResponseModel):
@@ -14,6 +14,7 @@ class RecurringTransactionRule(BaseModel):
14
14
  paid_credits: Optional[str]
15
15
  granted_credits: Optional[str]
16
16
  started_at: Optional[str]
17
+ expiration_at: Optional[str]
17
18
  target_ongoing_balance: Optional[str]
18
19
  transaction_metadata: Optional[List[Dict[str, str]]]
19
20
 
@@ -27,6 +28,8 @@ class RecurringTransactionRuleResponse(BaseModel):
27
28
  paid_credits: Optional[str]
28
29
  granted_credits: Optional[str]
29
30
  started_at: Optional[str]
31
+ expiration_at: Optional[str]
32
+ status: Optional[str]
30
33
  target_ongoing_balance: Optional[str]
31
34
  created_at: Optional[str]
32
35
  transaction_metadata: Optional[List[Dict[str, str]]]
@@ -23,5 +23,6 @@ class WalletTransactionResponse(BaseResponseModel):
23
23
  amount: str
24
24
  credit_amount: str
25
25
  settled_at: Optional[str]
26
+ failed_at: Optional[str]
26
27
  created_at: str
27
28
  metadata: Optional[List[Dict[str, str]]]
@@ -0,0 +1,15 @@
1
+ from typing import ClassVar, Type
2
+
3
+ from ..base_client import BaseClient
4
+ from ..mixins import FindAllCommandMixin, FindCommandMixin
5
+ from ..models.payment_receipt import PaymentReceiptResponse
6
+
7
+
8
+ class PaymentReceiptClient(
9
+ FindAllCommandMixin[PaymentReceiptResponse],
10
+ FindCommandMixin[PaymentReceiptResponse],
11
+ BaseClient,
12
+ ):
13
+ API_RESOURCE: ClassVar[str] = "payment_receipts"
14
+ RESPONSE_MODEL: ClassVar[Type[PaymentReceiptResponse]] = PaymentReceiptResponse
15
+ ROOT_NAME: ClassVar[str] = "payment_receipt"
@@ -0,0 +1 @@
1
+ LAGO_VERSION = "1.26.0"
@@ -77,3 +77,15 @@ class WalletTransactionClient(BaseClient):
77
77
  response_model=self.RESPONSE_MODEL,
78
78
  data=get_response_data(response=api_response),
79
79
  )
80
+
81
+ def payment_url(self, resource_id: str) -> str:
82
+ api_response: Response = send_post_request(
83
+ url=make_url(
84
+ origin=self.base_url,
85
+ path_parts=(self.API_RESOURCE, resource_id, "payment_url"),
86
+ ),
87
+ headers=make_headers(api_key=self.api_key),
88
+ )
89
+
90
+ response_data = get_response_data(response=api_response, key="wallet_transaction_payment_details")
91
+ return response_data.get("payment_url", "") if isinstance(response_data, Mapping) else ""
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: lago-python-client
3
- Version: 1.22.0
3
+ Version: 1.26.0
4
4
  Summary: Lago Python API Client
5
5
  Home-page: https://github.com/getlago/lago-python-client
6
6
  Author: Lovro Colic
@@ -29,6 +29,7 @@ Provides-Extra: test
29
29
  Requires-Dist: mypy==0.971; extra == "test"
30
30
  Requires-Dist: pytest; extra == "test"
31
31
  Requires-Dist: pytest_httpx; extra == "test"
32
+ Dynamic: license-file
32
33
 
33
34
  # Lago Python Client
34
35
 
@@ -58,6 +58,7 @@ setup.cfg
58
58
  ./lago_python_client/models/organization.py
59
59
  ./lago_python_client/models/overdue_balance.py
60
60
  ./lago_python_client/models/payment.py
61
+ ./lago_python_client/models/payment_receipt.py
61
62
  ./lago_python_client/models/payment_request.py
62
63
  ./lago_python_client/models/plan.py
63
64
  ./lago_python_client/models/subscription.py
@@ -72,6 +73,8 @@ setup.cfg
72
73
  ./lago_python_client/organizations/clients.py
73
74
  ./lago_python_client/overdue_balances/__init__.py
74
75
  ./lago_python_client/overdue_balances/clients.py
76
+ ./lago_python_client/payment_receipts/__init__.py
77
+ ./lago_python_client/payment_receipts/clients.py
75
78
  ./lago_python_client/payment_requests/__init__.py
76
79
  ./lago_python_client/payment_requests/clients.py
77
80
  ./lago_python_client/payments/__init__.py
@@ -112,6 +115,7 @@ setup.cfg
112
115
  ./tests/test_organization_client.py
113
116
  ./tests/test_overdue_balance_client.py
114
117
  ./tests/test_payment_client.py
118
+ ./tests/test_payment_receipt_client.py
115
119
  ./tests/test_payment_request_client.py
116
120
  ./tests/test_plan_client.py
117
121
  ./tests/test_request_services.py
@@ -183,6 +187,7 @@ lago_python_client/models/mrr.py
183
187
  lago_python_client/models/organization.py
184
188
  lago_python_client/models/overdue_balance.py
185
189
  lago_python_client/models/payment.py
190
+ lago_python_client/models/payment_receipt.py
186
191
  lago_python_client/models/payment_request.py
187
192
  lago_python_client/models/plan.py
188
193
  lago_python_client/models/subscription.py
@@ -197,6 +202,8 @@ lago_python_client/organizations/__init__.py
197
202
  lago_python_client/organizations/clients.py
198
203
  lago_python_client/overdue_balances/__init__.py
199
204
  lago_python_client/overdue_balances/clients.py
205
+ lago_python_client/payment_receipts/__init__.py
206
+ lago_python_client/payment_receipts/clients.py
200
207
  lago_python_client/payment_requests/__init__.py
201
208
  lago_python_client/payment_requests/clients.py
202
209
  lago_python_client/payments/__init__.py
@@ -237,6 +244,7 @@ tests/test_mrr_client.py
237
244
  tests/test_organization_client.py
238
245
  tests/test_overdue_balance_client.py
239
246
  tests/test_payment_client.py
247
+ tests/test_payment_receipt_client.py
240
248
  tests/test_payment_request_client.py
241
249
  tests/test_plan_client.py
242
250
  tests/test_request_services.py
File without changes
@@ -30,6 +30,7 @@ def create_customer():
30
30
 
31
31
  return Customer(
32
32
  external_id="5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba",
33
+ billing_entity_code="test-company",
33
34
  name="Gavin Belson",
34
35
  currency="EUR",
35
36
  tax_identification_number="EU123456789",
@@ -74,6 +75,7 @@ def test_valid_create_customers_request(httpx_mock: HTTPXMock):
74
75
  response = client.customers.create(create_customer())
75
76
 
76
77
  assert response.external_id == "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba"
78
+ assert response.billing_entity_code == "test-company"
77
79
  assert response.name == "Gavin Belson"
78
80
  assert response.email == "dinesh@piedpiper.test"
79
81
  assert response.currency == "EUR"
@@ -0,0 +1,65 @@
1
+ import os
2
+
3
+ import pytest
4
+ from pytest_httpx import HTTPXMock
5
+
6
+ from lago_python_client.client import Client
7
+ from lago_python_client.exceptions import LagoApiError
8
+
9
+
10
+ def mock_response():
11
+ this_dir = os.path.dirname(os.path.abspath(__file__))
12
+ data_path = os.path.join(this_dir, "fixtures/payment_receipt.json")
13
+
14
+ with open(data_path, "rb") as payment_receipt_response:
15
+ return payment_receipt_response.read()
16
+
17
+
18
+ def mock_collection_response():
19
+ current_dir = os.path.dirname(os.path.abspath(__file__))
20
+ data_path = os.path.join(current_dir, "fixtures/payment_receipt_index.json")
21
+
22
+ with open(data_path, "rb") as payment_receipts_response:
23
+ return payment_receipts_response.read()
24
+
25
+
26
+ def test_valid_find_all_payment_receipts_request(httpx_mock: HTTPXMock):
27
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
28
+
29
+ httpx_mock.add_response(
30
+ method="GET",
31
+ url="https://api.getlago.com/api/v1/payment_receipts",
32
+ content=mock_collection_response(),
33
+ )
34
+ response = client.payment_receipts.find_all()
35
+
36
+ assert response["payment_receipts"][0].lago_id == "89b6b61e-4dbc-4307-ac96-4abcfa9e3e2d"
37
+ assert response["meta"]["current_page"] == 1
38
+
39
+
40
+ def test_valid_find_all_payment_receipts_request_with_options(httpx_mock: HTTPXMock):
41
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
42
+
43
+ httpx_mock.add_response(
44
+ method="GET",
45
+ url="https://api.getlago.com/api/v1/payment_receipts?per_page=2&page=1",
46
+ content=mock_collection_response(),
47
+ )
48
+ response = client.payment_receipts.find_all({"per_page": 2, "page": 1})
49
+
50
+ assert response["payment_receipts"][0].lago_id == "89b6b61e-4dbc-4307-ac96-4abcfa9e3e2d"
51
+ assert response["meta"]["current_page"] == 1
52
+
53
+
54
+ def test_invalid_find_all_payment_receipts_request(httpx_mock: HTTPXMock):
55
+ client = Client(api_key="invalid")
56
+
57
+ httpx_mock.add_response(
58
+ method="GET",
59
+ url="https://api.getlago.com/api/v1/payment_receipts",
60
+ status_code=404,
61
+ content=b"",
62
+ )
63
+
64
+ with pytest.raises(LagoApiError):
65
+ client.payment_receipts.find_all()
@@ -28,6 +28,14 @@ def mock_collection_response():
28
28
  return wallet_transaction_index_response.read()
29
29
 
30
30
 
31
+ def mock_payment_url_response():
32
+ this_dir = os.path.dirname(os.path.abspath(__file__))
33
+ data_path = os.path.join(this_dir, "fixtures/wallet_transaction_payment_url.json")
34
+
35
+ with open(data_path, "rb") as payment_url_response:
36
+ return payment_url_response.read()
37
+
38
+
31
39
  def test_valid_create_wallet_transaction_request(httpx_mock: HTTPXMock):
32
40
  client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
33
41
 
@@ -40,6 +48,10 @@ def test_valid_create_wallet_transaction_request(httpx_mock: HTTPXMock):
40
48
 
41
49
  assert response["wallet_transactions"][0].lago_id == "b7ab2926-1de8-4428-9bcd-779314ac1111"
42
50
  assert response["wallet_transactions"][1].lago_id == "b7ab2926-1de8-4428-9bcd-779314ac1222"
51
+ assert response["wallet_transactions"][2].lago_id == "b7ab2926-1de8-4428-9bcd-779314ac1333"
52
+ assert response["wallet_transactions"][0].status == "settled"
53
+ assert response["wallet_transactions"][2].status == "failed"
54
+ assert response["wallet_transactions"][2].failed_at == "2022-04-29T08:59:51Z"
43
55
 
44
56
 
45
57
  def test_invalid_create_wallet_transaction_request(httpx_mock: HTTPXMock):
@@ -68,3 +80,16 @@ def test_valid_find_all_wallet_transactions_request(httpx_mock: HTTPXMock):
68
80
 
69
81
  assert response["wallet_transactions"][0].lago_id == "b7ab2926-1de8-4428-9bcd-779314ac1111"
70
82
  assert response["meta"]["current_page"] == 1
83
+
84
+
85
+ def test_valid_payment_url_request(httpx_mock: HTTPXMock):
86
+ client = Client(api_key="886fe239-927d-4072-ab72-6dd345e8dd0d")
87
+
88
+ httpx_mock.add_response(
89
+ method="POST",
90
+ url="https://api.getlago.com/api/v1/wallet_transactions/5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba/payment_url",
91
+ content=mock_payment_url_response(),
92
+ )
93
+ response = client.wallet_transactions.payment_url("5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba")
94
+
95
+ assert response == "https://checkout.stripe.com/c/pay/cs_test_a1cuqFkXvH"
@@ -1 +0,0 @@
1
- LAGO_VERSION = "1.22.0"