, accounts_relations: array} */ public function getUser(): array { $response = $this->client()->get('/users/me'); $response->throw(); return $response->json(); } /** * Get all accounts for the authenticated user. * * @return array */ public function getAccounts(): array { $userData = $this->getUser(); $accounts = []; foreach ($userData['accounts'] as $account) { $accountDetails = $this->getAccount($account['account_number']); $accounts[] = $accountDetails; } return $accounts; } /** * Get detailed account information. * * @return array{account_number: string, currency: string, status: string, type: string, profile: array} */ public function getAccount(string $accountNumber): array { $response = $this->client()->get("/accounts/{$accountNumber}"); $response->throw(); return $response->json(); } /** * Get performance data for an account, including current portfolio value. * * @return array{total_amount?: float, return?: float, return_percentage?: float, portfolios?: array, net_amounts?: array} */ public function getPerformance(string $accountNumber): array { $response = $this->client()->get("/accounts/{$accountNumber}/performance"); $response->throw(); return $response->json(); } private function client(): PendingRequest { return Http::baseUrl(self::BASE_URL) ->withHeaders(['X-AUTH-TOKEN' => $this->apiToken]) ->acceptJson() ->throw(function ($response, $exception) { Log::error('Indexa Capital API error', [ 'status' => $response->status(), 'body' => $response->json(), ]); }); } }