Actually, the Ruby library takes this approach. Look at here for example: https://github.com/killbill/killbill-client-ruby/blob/master/lib/killbill_client/models/invoice_item.rb The `post` method takes four arguments: the path, the body, query parameters (hash) and headers (hash).

We could do something similar here (pseudo-code):

```
        if ($this->accountId) {
            # fetch by account id
            $uri = Killbill_Client::PATH_ACCOUNTS . '/' . $this->accountId;
        } else {
            # fetch by external id
            $uri = Killbill_Client::PATH_ACCOUNTS;
        }

        $params = array(
          'externalKey' => $this->externalKey,
          'accountWithBalance' => $accountWithBalance,
          'accountWithBalanceAndCBA' => $accountWithBalanceAndCBA
        );

        $response = $this->_get(Killbill_Client::PATH_ACCOUNTS, $params, $headers);

        return $this->_getFromBody('Killbill_Account', $response);
```