Source code for openbankproject_client.card

"""
Card endpoints for the OpenBankProject API Client.
"""

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


[docs] class CardEndpoints: """Card-related API endpoints."""
[docs] def __init__(self, client): """ Initialize the endpoint group. Args: client: OpenBankProjectClient instance """ self.client = client
[docs] def create_card(self, bank_id: str, data: Dict) -> Dict: """ Create a new card. Args: bank_id: Bank identifier data: Card data Returns: Dict containing created card information """ return self.client.post(f"banks/{bank_id}/cards", data=data)
[docs] def get_card_by_id(self, bank_id: str, card_id: str) -> Dict: """ Get card by ID. Args: bank_id: Bank identifier card_id: Card identifier Returns: Dict containing card information """ return self.client.get(f"banks/{bank_id}/cards/{card_id}")
[docs] def get_cards_for_bank(self, bank_id: str) -> Dict: """ Get cards for the specified bank. Args: bank_id: Bank identifier Returns: Dict containing cards information """ return self.client.get(f"banks/{bank_id}/cards")
[docs] def get_cards_for_current_user(self) -> Dict: """ Get cards for the current user. Returns: Dict containing user's cards information """ return self.client.get("cards")
[docs] def update_card(self, bank_id: str, card_id: str, data: Dict) -> Dict: """ Update an existing card. Args: bank_id: Bank identifier card_id: Card identifier data: Updated card data Returns: Dict containing updated card information """ return self.client.put(f"banks/{bank_id}/cards/{card_id}", data=data)
[docs] def delete_card(self, bank_id: str, card_id: str) -> Dict: """ Delete a card. Args: bank_id: Bank identifier card_id: Card identifier Returns: Dict containing deletion status """ return self.client.delete(f"banks/{bank_id}/cards/{card_id}")
[docs] def create_card_attribute(self, bank_id: str, card_id: str, data: Dict) -> Dict: """ Create a card attribute. Args: bank_id: Bank identifier card_id: Card identifier data: Attribute data Returns: Dict containing created attribute information """ return self.client.post(f"banks/{bank_id}/cards/{card_id}/attributes", data=data)
[docs] def update_card_attribute(self, bank_id: str, card_id: str, attribute_id: str, data: Dict) -> Dict: """ Update a card attribute. Args: bank_id: Bank identifier card_id: Card identifier attribute_id: Attribute identifier data: Updated attribute data Returns: Dict containing updated attribute information """ return self.client.put(f"banks/{bank_id}/cards/{card_id}/attributes/{attribute_id}", data=data)
[docs] def get_card_attribute_definition(self, bank_id: str) -> Dict: """ Get card attribute definition. Args: bank_id: Bank identifier Returns: Dict containing card attribute definition """ return self.client.get(f"banks/{bank_id}/attribute-definitions/card")
[docs] def create_or_update_card_attribute_definition(self, bank_id: str, data: Dict) -> Dict: """ Create or update card attribute definition. Args: bank_id: Bank identifier data: Attribute definition data Returns: Dict containing created or updated attribute definition """ return self.client.put(f"banks/{bank_id}/attribute-definitions/card", data=data)
[docs] def delete_card_attribute_definition(self, bank_id: str, attribute_definition_id: str) -> Dict: """ Delete card attribute definition. Args: bank_id: Bank identifier attribute_definition_id: Attribute definition identifier Returns: Dict containing deletion status """ return self.client.delete(f"banks/{bank_id}/attribute-definitions/card/{attribute_definition_id}")
[docs] def get_credit_card_order_status(self, bank_id: str, account_id: str) -> Dict: """ Get status of Credit Card order. Args: bank_id: Bank identifier account_id: Account identifier Returns: Dict containing credit card order status """ return self.client.get(f"banks/{bank_id}/accounts/{account_id}/cards/credit_card/orders")