class_docstr: A class for handling connections and interactions with the Plaid API.
  
  Attributes:
      plaid_env (str): Enviroment used by user [ 'sandbox'(default) OR 'development' OR 'production' ].
      client_id (str): Your Plaid API client_id. 
      secret (str): Your Plaid API secret
      access_token (str): The access token for the Plaid account.
docstr: Filters data from Plaid API's balance endpoint and returns a DataFrame with the required information.
  
  Args:
      params (dict, optional): A dictionary of options to be passed to the Plaid API.
  
  Returns:
      pandas.DataFrame: A DataFrame containing the filtered data.
docstr_tok: ["Filters","data","from","Plaid","API","'s","balance","endpoint","and","returns","a","DataFrame","with","the","required","information",".","Args",":","params","(","dict",",","optional",")",":","A","dictionary","of","options","to","be","passed","to","the","Plaid","API",".","Returns",":","pandas.DataFrame",":","A","DataFrame","containing","the","filtered","data","."]
code: def get_balance(self, params=None):
      """Filters data from Plaid API's balance endpoint and returns a DataFrame with the required information.
  
      Args:
          params (dict, optional): A dictionary of options to be passed to the Plaid API.
  
      Returns:
          pandas.DataFrame: A DataFrame containing the filtered data.
      """
  
      self.connect()
      if params.get("last_updated_datetime") is not None:
          options = AccountsBalanceGetRequestOptions(
              min_last_updated_datetime=datetime.strptime(
                  params.get("last_updated_datetime")
              )
          )
  
          response = self.api.accounts_balance_get(
              AccountsBalanceGetRequest(
                  access_token=self.access_token, options=options
              )
          )
      else:
          response = self.api.accounts_balance_get(
              AccountsBalanceGetRequest(access_token=self.access_token)
          )
  
      messages = []
      for obj in response["accounts"]:
          message_dict = {}
          for i in obj.to_dict().keys():
              if i.startswith("account_"):
                  message_dict[i] = obj[i]
              elif i == "balances":
                  dict_obj = obj[i].to_dict()
                  for j in dict_obj.keys():
                      message_dict[f"balance_{j}"] = dict_obj[j]
              else:
                  message_dict[f"account_{i}"] = obj[i]
          messages.append(message_dict)
      df = pd.DataFrame(messages)
  
      return df
  
imports: import pandas
  from mindsdb.utilities import log
  from mindsdb_sql import parse_sql
  from mindsdb.integrations.libs.api_handler import APIHandler, FuncParser
  from mindsdb.integrations.libs.response import HandlerStatusResponse, HandlerResponse, RESPONSE_TYPE
  from datetime import datetime
  import plaid
  from plaid.api import plaid_api
  from plaid.model.accounts_balance_get_request import AccountsBalanceGetRequest
  from plaid.model.accounts_balance_get_request_options import AccountsBalanceGetRequestOptions
  from plaid.model.transactions_get_request import TransactionsGetRequest
  from plaid.model.transactions_get_request_options import TransactionsGetRequestOptions
  from .plaid_tables import BalanceTable, TransactionTable
  from .utils import parse_transaction
label_desc: Use image node_id 6 for calling the PlaidHandler obj's underlying member method code with example usage: obj.get_balance(params) and returns: df