From 85c2752f002eae308c4421f9de6f6069f341c1f4 Mon Sep 17 00:00:00 2001 From: Alexander Chebotarov Date: Thu, 18 Sep 2025 16:11:16 +0300 Subject: [PATCH 1/3] Add support for wallet top up limits --- lago_python_client/models/wallet.py | 6 ++++++ tests/fixtures/wallet.json | 3 +++ tests/fixtures/wallet_index.json | 7 ++++++- tests/test_wallet_client.py | 6 ++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lago_python_client/models/wallet.py b/lago_python_client/models/wallet.py index b1a54d5..ba19458 100644 --- a/lago_python_client/models/wallet.py +++ b/lago_python_client/models/wallet.py @@ -18,6 +18,7 @@ class RecurringTransactionRule(BaseModel): target_ongoing_balance: Optional[str] transaction_metadata: Optional[List[Dict[str, str]]] transaction_name: Optional[str] + ignore_paid_top_up_limits: Optional[bool] class RecurringTransactionRuleResponse(BaseModel): @@ -35,6 +36,7 @@ class RecurringTransactionRuleResponse(BaseModel): created_at: Optional[str] transaction_metadata: Optional[List[Dict[str, str]]] transaction_name: Optional[str] + ignore_paid_top_up_limits: Optional[bool] class RecurringTransactionRuleList(BaseModel): @@ -63,6 +65,8 @@ class Wallet(BaseModel): transaction_name: Optional[str] applies_to: Optional[AppliesTo] invoice_requires_successful_payment: Optional[bool] + paid_top_up_max_amount_cents: Optional[int] + paid_top_up_min_amount_cents: Optional[int] class WalletResponse(BaseResponseModel): @@ -88,3 +92,5 @@ class WalletResponse(BaseResponseModel): credits_ongoing_usage_balance: str applies_to: Optional[AppliesTo] invoice_requires_successful_payment: Optional[bool] + paid_top_up_max_amount_cents: Optional[int] + paid_top_up_min_amount_cents: Optional[int] diff --git a/tests/fixtures/wallet.json b/tests/fixtures/wallet.json index fd31c0b..e82c38d 100644 --- a/tests/fixtures/wallet.json +++ b/tests/fixtures/wallet.json @@ -25,12 +25,15 @@ "started_at": null, "target_ongoing_balance": "200.0", "transaction_name": "Recurring Transaction Rule" + "ignore_paid_top_up_limits": true } ], "ongoing_balance_cents": 800, "ongoing_usage_balance_cents": 200, "credits_ongoing_balance": "8.0", "credits_ongoing_usage_balance": "2.0", + "paid_top_up_max_amount_cents": 10000, + "paid_top_up_min_amount_cents": 500, "applies_to": { "fee_types": ["charge"], "billable_metric_codes": ["usage"] diff --git a/tests/fixtures/wallet_index.json b/tests/fixtures/wallet_index.json index 9538e48..265f553 100644 --- a/tests/fixtures/wallet_index.json +++ b/tests/fixtures/wallet_index.json @@ -19,6 +19,8 @@ "ongoing_usage_balance_cents": 200, "credits_ongoing_balance": "8.0", "credits_ongoing_usage_balance": "2.0", + "paid_top_up_max_amount_cents": 10000, + "paid_top_up_min_amount_cents": 500, "recurring_transaction_rules": [ { "lago_id": "12345", @@ -28,7 +30,8 @@ "paid_credits": "105.0", "granted_credits": "105.0", "started_at": null, - "target_ongoing_balance": null + "target_ongoing_balance": null, + "ignore_paid_top_up_limits": false } ], "applies_to": { @@ -55,6 +58,8 @@ "ongoing_usage_balance_cents": 200, "credits_ongoing_balance": "8.0", "credits_ongoing_usage_balance": "2.0", + "paid_top_up_max_amount_cents": null, + "paid_top_up_min_amount_cents": null, "recurring_transaction_rules": [], "applies_to": { "fee_types": ["charge"], diff --git a/tests/test_wallet_client.py b/tests/test_wallet_client.py index 1d7cb98..3836ad0 100644 --- a/tests/test_wallet_client.py +++ b/tests/test_wallet_client.py @@ -22,6 +22,7 @@ def wallet_object(): method="target", target_ongoing_balance="105.0", transaction_name="Recurring Transaction Rule", + ignore_paid_top_up_limits=True, ) rules_list = RecurringTransactionRuleList(__root__=[rule]) applies_to = AppliesTo( @@ -38,6 +39,8 @@ def wallet_object(): applies_to=applies_to, invoice_requires_successful_payment=False, transaction_name="Transaction Name", + paid_top_up_max_amount_cents=10000, + paid_top_up_min_amount_cents=500, ) @@ -102,8 +105,11 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock): assert response.recurring_transaction_rules.__root__[0].lago_id == "12345" assert response.recurring_transaction_rules.__root__[0].trigger == "interval" assert response.recurring_transaction_rules.__root__[0].interval == "monthly" + assert response.recurring_transaction_rules.__root__[0].ignore_paid_top_up_limits is True assert response.applies_to.fee_types[0] == "charge" assert response.applies_to.billable_metric_codes[0] == "usage" + assert response.paid_top_up_max_amount_cents == 10000 + assert response.paid_top_up_min_amount_cents == 500 def test_invalid_create_wallet_request(httpx_mock: HTTPXMock): From 0ea19ba3899e9de403c347b3ad160032ba766240 Mon Sep 17 00:00:00 2001 From: Alexander Chebotarov Date: Mon, 22 Sep 2025 10:07:38 +0300 Subject: [PATCH 2/3] Add ignore limits flag --- lago_python_client/models/wallet.py | 1 + lago_python_client/models/wallet_transaction.py | 1 + 2 files changed, 2 insertions(+) diff --git a/lago_python_client/models/wallet.py b/lago_python_client/models/wallet.py index ba19458..dffe34e 100644 --- a/lago_python_client/models/wallet.py +++ b/lago_python_client/models/wallet.py @@ -67,6 +67,7 @@ class Wallet(BaseModel): invoice_requires_successful_payment: Optional[bool] paid_top_up_max_amount_cents: Optional[int] paid_top_up_min_amount_cents: Optional[int] + ignore_paid_top_up_limits_on_creation: Optional[bool] class WalletResponse(BaseResponseModel): diff --git a/lago_python_client/models/wallet_transaction.py b/lago_python_client/models/wallet_transaction.py index bcdc508..8a1335d 100644 --- a/lago_python_client/models/wallet_transaction.py +++ b/lago_python_client/models/wallet_transaction.py @@ -13,6 +13,7 @@ class WalletTransaction(BaseModel): invoice_requires_successful_payment: Optional[bool] metadata: Optional[List[Dict[str, str]]] name: Optional[str] + ignore_paid_top_up_limits: Optional[bool] class WalletTransactionResponse(BaseResponseModel): From d6923c2b885a4b2d9d5607bd83acb681287d1b54 Mon Sep 17 00:00:00 2001 From: Julien Bourdeau Date: Mon, 22 Sep 2025 15:41:38 +0200 Subject: [PATCH 3/3] fix tests --- tests/fixtures/wallet.json | 2 +- tests/test_wallet_client.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/fixtures/wallet.json b/tests/fixtures/wallet.json index e82c38d..08d46c0 100644 --- a/tests/fixtures/wallet.json +++ b/tests/fixtures/wallet.json @@ -24,7 +24,7 @@ "granted_credits": "105.0", "started_at": null, "target_ongoing_balance": "200.0", - "transaction_name": "Recurring Transaction Rule" + "transaction_name": "Recurring Transaction Rule", "ignore_paid_top_up_limits": true } ], diff --git a/tests/test_wallet_client.py b/tests/test_wallet_client.py index 3836ad0..2324a1f 100644 --- a/tests/test_wallet_client.py +++ b/tests/test_wallet_client.py @@ -76,6 +76,9 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock): "granted_credits": "10", "expiration_at": None, "currency": None, + "paid_top_up_max_amount_cents": 10000, + "paid_top_up_min_amount_cents": 500, + "ignore_paid_top_up_limits_on_creation": None, "recurring_transaction_rules": [ { "lago_id": None, @@ -90,6 +93,7 @@ def test_valid_create_wallet_request(httpx_mock: HTTPXMock): "target_ongoing_balance": "105.0", "transaction_metadata": None, "transaction_name": "Recurring Transaction Rule", + "ignore_paid_top_up_limits": True, } ], "transaction_metadata": None,