diff --git a/openbb_platform/providers/sec/openbb_sec/models/cik_map.py b/openbb_platform/providers/sec/openbb_sec/models/cik_map.py index ba2fccbbe34..3fa9d31d169 100644 --- a/openbb_platform/providers/sec/openbb_sec/models/cik_map.py +++ b/openbb_platform/providers/sec/openbb_sec/models/cik_map.py @@ -5,6 +5,7 @@ from typing import Any from openbb_core.provider.abstract.fetcher import Fetcher +from openbb_core.app.model.abstract.error import OpenBBError from openbb_core.provider.standard_models.cik_map import CikMapData, CikMapQueryParams from pydantic import Field @@ -48,10 +49,10 @@ class SecCikMapFetcher( # pylint: disable=import-outside-toplevel from openbb_sec.utils.helpers import symbol_map - results = {"cik": await symbol_map(query.symbol, query.use_cache)} - if not results: - return {"Error": "Symbol not found."} - return results + cik = await symbol_map(query.symbol, query.use_cache) + if not cik: + raise OpenBBError(f"Symbol '{query.symbol}' not found in SEC database.") + return {"cik": cik} @staticmethod def transform_data( diff --git a/openbb_platform/providers/sec/openbb_sec/utils/helpers.py b/openbb_platform/providers/sec/openbb_sec/utils/helpers.py index 909be677ae4..3d75c59b2e8 100644 --- a/openbb_platform/providers/sec/openbb_sec/utils/helpers.py +++ b/openbb_platform/providers/sec/openbb_sec/utils/helpers.py @@ -49,8 +49,17 @@ async def get_all_companies(use_cache: bool = True) -> DataFrame: else: response = await amake_request(url, headers=SEC_HEADERS) # type: ignore - df = DataFrame(response).transpose() + if not response or not isinstance(response, dict): + raise OpenBBError( + "Empty or invalid response from SEC company tickers endpoint." + ) + + df = DataFrame.from_dict(response, orient="index") cols = ["cik", "symbol", "name"] + if len(df.columns) != len(cols): + raise OpenBBError( + f"Unexpected SEC response format. Expected {len(cols)} fields, got {len(df.columns)}: {df.columns.tolist()}" + ) df.columns = cols return df.astype(str)