From e8aa49868323b88ca2541a7ef11db1e7f8adbc75 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 27 Feb 2024 10:08:10 +0200 Subject: [PATCH] feat: add get endpoint for user wallets (#2299) * feat: add get endpoint for user wallets * feat: only expose relevant fields * refactor: extract `BaseWallet` * doc: add open api doc --- lnbits/core/models.py | 9 ++++++--- lnbits/core/views/api.py | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lnbits/core/models.py b/lnbits/core/models.py index 9f52a279..39efe25a 100644 --- a/lnbits/core/models.py +++ b/lnbits/core/models.py @@ -21,14 +21,17 @@ from lnbits.wallets import get_wallet_class from lnbits.wallets.base import PaymentStatus -class Wallet(BaseModel): +class BaseWallet(BaseModel): id: str name: str - user: str adminkey: str inkey: str - currency: Optional[str] balance_msat: int + + +class Wallet(BaseWallet): + user: str + currency: Optional[str] deleted: bool created_at: Optional[int] = None updated_at: Optional[int] = None diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index 2f7d70e6..8b0b9513 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -32,6 +32,7 @@ from lnbits.core.helpers import ( stop_extension_background_work, ) from lnbits.core.models import ( + BaseWallet, ConversionData, CreateInvoice, CreateLnurl, @@ -51,6 +52,7 @@ from lnbits.decorators import ( WalletTypeInfo, check_access_token, check_admin, + check_user_exists, get_key_type, parse_filters, require_admin_key, @@ -127,6 +129,15 @@ async def api_wallet(wallet: WalletTypeInfo = Depends(get_key_type)): return {"name": wallet.wallet.name, "balance": wallet.wallet.balance_msat} +@api_router.get( + "/api/v1/wallets", + name="Wallets", + description="Get basic info for all of user's wallets.", +) +async def api_wallets(user: User = Depends(check_user_exists)) -> List[BaseWallet]: + return [BaseWallet(**w.dict()) for w in user.wallets] + + @api_router.put("/api/v1/wallet/{new_name}") async def api_update_wallet_name( new_name: str, wallet: WalletTypeInfo = Depends(require_admin_key)