Source code for openbankproject_client.extended_bank

"""
Extended Bank endpoints for the OpenBankProject API Client.
"""

from typing import Dict, List, Optional, Union, Any


[docs] class ExtendedBankEndpoints: """Extended Bank-related API endpoints."""
[docs] def __init__(self, client): """ Initialize the endpoint group. Args: client: OpenBankProjectClient instance """ self.client = client
[docs] def get_bank_accounts(self, bank_id: str) -> Dict: """ Get accounts at a specific bank (Authenticated access). Args: bank_id: Bank identifier Returns: Dict containing account information """ return self.client.get(f"banks/{bank_id}/accounts")
[docs] def get_bank_account(self, bank_id: str, account_id: str) -> Dict: """ Get account by ID at a specific bank. Args: bank_id: Bank identifier account_id: Account identifier Returns: Dict containing account information """ return self.client.get(f"banks/{bank_id}/accounts/{account_id}")
[docs] def get_bank_account_balances(self, bank_id: str, account_id: str) -> Dict: """ Get account balances. Args: bank_id: Bank identifier account_id: Account identifier Returns: Dict containing account balance information """ return self.client.get(f"banks/{bank_id}/accounts/{account_id}/balances")
[docs] def get_bank_account_transactions( self, bank_id: str, account_id: str, params: Optional[Dict] = None ) -> Dict: """ Get transactions for an account. Args: bank_id: Bank identifier account_id: Account identifier params: Optional query parameters like from_date, to_date, limit, offset, etc. Returns: Dict containing transaction information """ return self.client.get(f"banks/{bank_id}/accounts/{account_id}/transactions", params=params)
[docs] def get_transaction(self, bank_id: str, account_id: str, transaction_id: str) -> Dict: """ Get transaction by ID. Args: bank_id: Bank identifier account_id: Account identifier transaction_id: Transaction identifier Returns: Dict containing transaction information """ return self.client.get(f"banks/{bank_id}/accounts/{account_id}/transactions/{transaction_id}")
[docs] def create_transaction_request(self, bank_id: str, account_id: str, view_id: str, data: Dict) -> Dict: """ Create a transaction request. Args: bank_id: Bank identifier account_id: Account identifier view_id: View identifier data: Transaction request data Returns: Dict containing transaction request information """ return self.client.post( f"banks/{bank_id}/accounts/{account_id}/{view_id}/transaction-request-types/SANDBOX/transaction-requests", data=data )
[docs] def get_bank_customers(self, bank_id: str) -> Dict: """ Get customers at a specific bank. Args: bank_id: Bank identifier Returns: Dict containing customer information """ return self.client.get(f"banks/{bank_id}/customers")
[docs] def get_customer(self, bank_id: str, customer_id: str) -> Dict: """ Get customer by ID. Args: bank_id: Bank identifier customer_id: Customer identifier Returns: Dict containing customer information """ return self.client.get(f"banks/{bank_id}/customers/{customer_id}")
[docs] def create_customer(self, bank_id: str, data: Dict) -> Dict: """ Create a customer. Args: bank_id: Bank identifier data: Customer data Returns: Dict containing created customer information """ return self.client.post(f"banks/{bank_id}/customers", data=data)
[docs] def update_customer(self, bank_id: str, customer_id: str, data: Dict) -> Dict: """ Update a customer. Args: bank_id: Bank identifier customer_id: Customer identifier data: Updated customer data Returns: Dict containing updated customer information """ return self.client.put(f"banks/{bank_id}/customers/{customer_id}", data=data)
[docs] def get_bank_branches(self, bank_id: str) -> Dict: """ Get branches for a bank. Args: bank_id: Bank identifier Returns: Dict containing branch information """ return self.client.get(f"banks/{bank_id}/branches")
[docs] def get_bank_atms(self, bank_id: str) -> Dict: """ Get ATMs for a bank. Args: bank_id: Bank identifier Returns: Dict containing ATM information """ return self.client.get(f"banks/{bank_id}/atms")
[docs] def get_bank_products(self, bank_id: str) -> Dict: """ Get products for a bank. Args: bank_id: Bank identifier Returns: Dict containing product information """ return self.client.get(f"banks/{bank_id}/products")
[docs] def get_bank_product(self, bank_id: str, product_id: str) -> Dict: """ Get product by ID. Args: bank_id: Bank identifier product_id: Product identifier Returns: Dict containing product information """ return self.client.get(f"banks/{bank_id}/products/{product_id}")
[docs] def get_bank_attributes(self, bank_id: str) -> Dict: """ Get attributes for a bank. Args: bank_id: Bank identifier Returns: Dict containing bank attribute information """ return self.client.get(f"banks/{bank_id}/attributes")
[docs] def add_bank_attribute(self, bank_id: str, data: Dict) -> Dict: """ Add an attribute to a bank. Args: bank_id: Bank identifier data: Attribute data Returns: Dict containing added attribute information """ return self.client.post(f"banks/{bank_id}/attributes", data=data)
[docs] def update_bank_attribute(self, bank_id: str, attribute_id: str, data: Dict) -> Dict: """ Update an attribute of a bank. Args: bank_id: Bank identifier attribute_id: Attribute identifier data: Updated attribute data Returns: Dict containing updated attribute information """ return self.client.put(f"banks/{bank_id}/attributes/{attribute_id}", data=data)
[docs] def delete_bank_attribute(self, bank_id: str, attribute_id: str) -> Dict: """ Delete an attribute from a bank. Args: bank_id: Bank identifier attribute_id: Attribute identifier Returns: Dict containing deletion status """ return self.client.delete(f"banks/{bank_id}/attributes/{attribute_id}")
[docs] def delete_bank_customer(self, bank_id: str, customer_id: str) -> Dict: """ Delete a customer at a specific bank. Args: bank_id: Bank identifier customer_id: Customer identifier Returns: Dict containing deletion status """ return self.client.delete(f"banks/{bank_id}/customers/{customer_id}")